《单片机数码管显示程序.docx》由会员分享,可在线阅读,更多相关《单片机数码管显示程序.docx(3页珍藏版)》请在三一办公上搜索。
1、单片机数码管显示程序#include #include #include #define uchar unsigned char #define uint unsigned int uint AD_DATE; sbit LE1=P20; /位选573锁存器使能 sbit LE2=P21; /段选573锁存器使能 uchar code dis10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, / 0 1 2 3 4 5 6 7 0x7F,0x6F; / 8 9 void delay(uint time) /int型数据为16位,所以最大值为65535 uint
2、 i,j; /定义变量i,j,用于循环语句 for(i=0;itime;i+) /for循环,循环50*time次 for(j=0;j100;j+); /for循环,循环50次 void smg_show(uint n) /显示千位 P0=0xef; /0xbf=1011 1111,即选通个位 LE1=1; /锁存位 LE1=0; /断开锁存,位选573的Q7Q0仍保持 P0=disn/1000; /disn/10为09的编码 LE2=1; /锁存段码 LE2=0; /断开锁存,段选573的Q7Q0仍保持 delay(10); P0=0x00;LE2=1;LE2=0; /清除P1口数据,以免造
3、重影 /显示百位 P0=0xdf; /0xbf=1011 1111,即选通个位 LE1=1; /锁存位 LE1=0; /断开锁存,位选573的Q7Q0仍保持 P0=disn%1000/100; /disn/10为09的编码 LE2=1; /锁存段码 LE2=0; /断开锁存,段选573的Q7Q0仍保持 delay(10); /延时保持一下,延时过大会闪动,延时过小会有重影 P0=0x00;LE2=1;LE2=0; /清除P1口数据,以免造重影 /延时保持一下,延时过大会闪动,延时过小会有重影 /显示十位 P0=0xbf; /0xbf=1011 1111,即选通个位 LE1=1; /锁存位 LE
4、1=0; /断开锁存,位选573的Q7Q0仍保持 P0=disn%100/10; /disn/10为09的编码 LE2=1; /锁存段码 LE2=0; /断开锁存,段选573的Q7Q0仍保持 delay(10); /延时保持一下,延时过大会闪动,延时过小会有重影 P0=0x00;LE2=1;LE2=0; / /显示个位 P0=0x7f; /0xbf=0111 1111, LE1=1; / LE1=0; / P0=disn%10; /09 LE2=1; / LE2=0; / delay(10); / P0=0x00;LE2=1;LE2=0; / main while(1) AD; AD_DATE=ee; smg_show(AD_DATE); 清除P1口数据,以免造重影 即选通十分位 锁存位 断开锁存,位选573的Q7Q0仍保持 的编码 锁存段码 断开锁存,段选573的Q7Q0仍保持 延时保持一下,延时过大会闪动,延时过小会有重影 清除P1口数据,以免造重影