单片机——数码管循环显示

1.头文件和定义,代码还使用了 sbit 定义来声明了两个变量 duan 和 wei,它们实际上是 P2.6 和 P2.7 端口的别名,用于控制数码管的段选和位选信号。这种方法可以使代码更具可读性,并提高代码的可维护性。

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit duan=P2^6;		//段选信号的锁存器控制
sbit wei=P2^7;		//位选信号的锁存器控制

2.使用一个 16 个元素的数组 table,该数组包含了 0-15 的数字在数码管中对应的段码值。

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
						//0-F的码表

3.延时函数部分
(数码管的显示主要依靠于人的视觉暂存和数码管的余辉),前面亮灯灭灯里面提到过链接: link

void delay(uint k)
 {
 uint i,j;

 for(i=0;i<k;i++)
 {
 for(j=0;j<113;j++)
 {
 ;
 }
 }
 }

4.主函数部分
在主函数 main() 中,通过一个 while 循环,不断地执行以下操作:

使用 for 循环遍历 table 数组,将当前数字的段码值写入到 P0 口,这个数字的范围是 0-15。

使 duan 信号为高电平,将当前数字的段码值锁存到数码管中。

将 duan 信号置为低电平,使段选信号锁存器不再控制数码管。

将 P0 置为 0xdf,使所有位选信号都为低电平,让所有数码管都处于被选中状态。

使 wei 信号为高电平,选中当前的数码管。

将 wei 信号置为低电平,取消对数码管的选择,完成一次数码管的显示。

使用 delay() 函数延时一秒钟,然后继续循环显示下一个数字。
main()
{
uchar num;
while(1)
{
for(num=0;num<16;num++)
{
P0=table[num];
duan=1;
duan=0;
P0=0xdf;
wei=1;
wei=0;
delay(1000);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值