| /* 99计数器C语言版本 ********************************* Create by:左秀龙 support: Tel:0755-82879296 email: cutedesign@tom.com Date: 2005/06/23 ********************************* */
#include<AT89x51.h>
void main() { unsigned char DB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~9数据 unsigned char i,upbit,lowbit,cnt=100; void delay10ms(unsigned char time);
while(1) { for(i=0;i<cnt;i++) { if(i<10) //小于10的数直接显示在个位 { P0=DB[i]; //P0口为段接位 P2_0=0; //个位的位选 delay10ms(100); P2_0=1; } else if(i>=10) //大于等于10的数分时显示在个位和十位上 { upbit=i/10; lowbit=i%10; P0=DB[lowbit]; P2_0=0; delay10ms(100); P2_0=1;
P2_0=1; //十位的位选 P0=DB[upbit]; P2_1=0; delay10ms(100); P2_1=1; } } } }
//延时程序 void delay10ms(unsigned char time) { unsigned char a,b,c; for(a=0;a<=time;a++) for(b=0;b<=10;b++) for(c=0;c<=120;c++) ; }
附录: 999计数器C语言源程序
//数码管实验 /* 999计数器C语言源程序 ********************************* Create by:左秀龙 support: Tel:0755-82879296 email: cutedesign@tom.com Date: 2005/07/4 ********************************* */
#include
void main() { unsigned char DB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~9数据 unsigned char a; unsigned int i,upbit,lowbit,hibit,cnt=1000; void delay10ms(unsigned char time);
while(1) { for(i=0;i { hibit=i/100; //提取百位 upbit=(i-hibit*100)/10; //提取十位 lowbit=i%10; //提取个位 for(a=0;a<30;a++) //调整a的大小可改变计数的显示速度 { P0=DB[lowbit]; P2_0=0; //个位的位选 delay10ms(1); P2_0=1; P0=DB[upbit]; P2_1=0; //十位的位选 delay10ms(1); P2_1=1;
P0=DB[hibit]; P2_2=0; //百位的位选 delay10ms(1); P2_2=1; } } } }
//延时程序 void delay10ms(unsigned char time) { unsigned char a,b,c; for(a=0;a<=time;a++) for(b=0;b<=10;b++) for(c=0;c<=120;c++) ; }
|