单片机控制数码管显示1-100程序.doc
如有侵权,请联系网站删除,仅供学习与交流单片机控制数码管显示1-100程序【精品文档】第 6 页/此函数实现对数码管的控制显示个十百位数#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit duan=P26;/七段选择sbit wei=P27;/片选,选择哪个数码管uchar aa,bai,shi,ge,temp;uchar code table=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void init();void delay(uint);void display(uchar bai,uchar shi,uchar ge);void main()init();/调用初始化函数,定时器0初始化,中断开启while(1) if(aa>=20) aa=0; temp+;if(temp=100)temp=0;bai=temp/100;/百位shi=temp%100/10;/十位 ge=temp%10;/个位 display(bai,shi,ge);void delay(uint k) uint i; uchar j; for(i=k;i>0;i-) for(j=110;j>0;j-);/显示子函数void display(uchar bai,uchar shi,uchar ge) /显示百位 duan=1; P0=tablebai; duan=0; P0=0xff; /消影,下一步位选开启时,瞬间传入的是前面的P0值,所以后3个数码管有乱码wei=1;P0=0xfe;/6片全选wei=0;delay(1);/显示十位 duan=1;P0=tableshi;duan=0;P0=0xff;/消影,下一步位选开启时,瞬间传入的是前面的P0值,所以后3个数码管有乱码 wei=1; P0=0xfd; wei=0;delay(1);/显示个位duan=1;P0=tablege;duan=0;P0=0xff;/消影,下一步位选开启时,瞬间传入的是前面的P0值,所以后3个数码管有乱码wei=1; P0=0xfb;wei=0;delay(1); void display()if(aa>=20)aa=0;ge+;duan=1;P0=tablege;duan=0;wei=1;P0=0xfd;wei=0;if(ge>=10)ge=0;shi+;duan=1;P0=tableshi;duan=0;wei=1;P0=0xfe;wei=0;if(shi>=6)shi=0;void init()duan=0;wei=0;temp=0;TMOD=0x01; TH0=(65536-50000)/256; /定时器装初值50msTL0=(65536-50000)%256; EA=1;/开总中断ET0=1;/开定时器0中断TR0=1;/启动定时器0;使TR0置位=1,定时器0开始计数;停止时,使TR0=0复位;void timer0() interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa+;