仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar m;
- void delay(uint k);
- uchar code table[]={
- 0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};//A为高位的共阴数码表
- void delay(uint k){
- unsigned char a,b ;
- for(;k>0;k--)
- for(b=142;b>0;b--)
- for(a=2;a>0;a--);//延时函数
- }
- void main()
- {
- TMOD=0x05;
- TH0 = (65536-1)/256;
- TL0 = (65536-1)%256;
- EA=1;
- ET0=1;
- m=0;
- P1=0xff;
- TR0=1;
- while(1)
- {
- uchar sw,gw;
- sw=m/10; //十位
- gw=m%10; //个位
- P1=0xfe; //选择个位的显示数码管
- P2=table[gw];//显示个位 ,将高电平传到数码管个位
- delay(10); //延时
- P1=0xfd; //选择十位显示的数码管
- P2=table[sw]; //显示十位
- delay(10);//延时
-
- }
- }
- void timer0() interrupt 1
- {
- TH0 = (65536-1)/256;
- TL0 = (65536-1)%256;
- m++;
- if(m==100)m=0;
- }
复制代码
Keil代码与Proteus仿真下载:
maichong.zip
(33.97 KB, 下载次数: 106)
|