51单片机单个数码管滚动显示数字(51单片机学习17-数码管动态显示)
51单片机单个数码管滚动显示数字(51单片机学习17-数码管动态显示)uchar smg_dm[]={0x3f 0x06 0x5B 0x4F 0x66 0x6D 0x7D 0x07 0x7F 0x6F 0x63 0x39 0x00}; //共阴数码管0-9 O C 全灭 段码表#define uchar unsigned char源程序:#include<reg52.h>#define uint unsigned int
这篇讲数码管动态显示 ,四位一体共阴数码管动态显示信息。
要求数码管动态显示1 2 3 4,动态显示就是一个一个显示过去,只是速度比较快,眼睛看上去像一起显示的样子。
仿真图:
程序:
源程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar smg_dm[]={0x3f 0x06 0x5B 0x4F 0x66 0x6D 0x7D 0x07 0x7F 0x6F 0x63 0x39 0x00}; //共阴数码管0-9 O C 全灭 段码表
uchar smg_wm[]={0Xef 0Xdf 0xbf 0x7f}; //位选
uchar Display_buffer[4]={0 0 0 0}; //数码管显示缓存
void delay_ms(uint z); //延时子程序; //延时子程序
void main()
{
uint temp;
uchar i;
while(1)
{
temp=1234;
Display_buffer[0]=temp/1000;
Display_buffer[1]=temp00/100;
Display_buffer[2]=temp000/10;
Display_buffer[3]=temp;;
for(i=0;i<=3;i )
{
P2=smg_wm[i];//选位码
P1=smg_dm[Display_buffer[i]];//选段码
delay_ms(5);
}
}
}
void delay_ms(uint z) //延时子程序
{
uint x y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
仿真结果: