1,目标
使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推,反复循环上述过程。
2,设计方式
使用P0输出段码,P2输出位码,因为单片机的电流不足以点亮数码管,因此,我们可以通过使用由8个NPN型三极管组成的位驱动电路来对数码管进行位驱动和位控制扫描,话不多说,上程序
3,代码如下
#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};//共阳数码管段码表 01234567//0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc07~0void delay(uint t)//延时子函数{uchar i;while(t--) for(i=0;i<200;i++);}void main(){uchar i,j=0x80;//10000000while(1){for(i=0;i<8;i++){j=_crol_(j,1);//_crol_(j,1)——将j循环左移1位P0=dis_code[i];//P0口输出段码P2=j; //P2口输出位控码delay(200);P0=0x00;}}}
4,仿真图如下
5,小结
由于数码管的余晖和人眼的“视觉暂留”,只要控制好数码管的显示时间并减小延时时间,即可实现8位数码管“同时点亮”的效果。
如果觉得《三 51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)》对你有帮助,请点赞、收藏,并留下你的观点哦!