数码管那么多显示1到9 c语言,用51单片机和一块74HC164芯片来让一个数码管(阴极)从...

这篇博客介绍了一个使用C语言编写的单片机程序,通过HC595驱动164数码管显示数字和字符。程序中包含了必要的延迟函数和数据发送函数,并提供了显示0到F的数值。博主指出,虽然未实际测试,但理论上程序是正确的,适合初学者学习单片机和数码管驱动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器

#include

typedef unsigned int u16; //对数据类型进行声明定义

typedef unsigned char u8;

sbit SRCLK=P3^6; //锁存高电平有效 164CP

sbit RCLK=P3^5; //时钟 164MR

sbit SER=P3^4; //数据 164dsa dsb

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值

void delay(u16 i)

{

while(i--);

}

void Hc595SendByte(u8 dat)

{

u8 a;

SRCLK=0;

RCLK=0;

for(a=0;a<8;a++)

{

SER=dat>>7;

dat<<=1;

SRCLK=1;

_nop_();

_nop_();

SRCLK=0;

}

RCLK=1;

_nop_();

_nop_();

RCLK=0;

}

void main()

{ u8 i;

Hc595SendByte(0x81);

// P0=0x7f;

while(1)

{

for(i=0;i<16;i++) //将led左移一位

{

Hc595SendByte(smgduan[i]);

delay(50000); //大约延时450ms

}

}

}

我没测试,应该可以用的。理论上是没错的,你试下吧。MR可以不接先试下。单块164可以,多块164级联MR必须接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值