单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- //变量unm为要显示的数,变量time为定时器计数变量、
- uint num=0,time=0;num1=0;
- //共阳极数码管字段码
- uchar code a[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
- //位选码
- uchar code b[4]={0Xfe,0Xfd,0xfb,0xf7};
- //延时函数
- void delay(uint x)
- {
- uint y;
- for(;x>0;x--)
- for(y=500;y>0;y--);
-
- }
- //定时器T0初始化函数
- void initT0()
- {
- TMOD=0x01; //定时器T0工作方式一,工作在定时模式
- TH0=(65536-50000)/256; //给定时器T0的高八位赋初值
- TL0=(65536-50000)%256; //给定时器T0的低八位赋初值
- EA=1; //开关中断
- ET0=1; //定时器T0中断允许
- TR0=1; //启动定时器T0
- }
- //主函数
- void main()
- {
- initT0();
- while(1)
- {
- while(time<20) //由于是两位数码管,因而采用动态显示方式
- {
- P1=b[0]; //送位选码
- P0=a[num%10]; //送字段码
- delay(1); //延时
- P1=b[1];
- P0=a[num/10];
- delay(1);
- P1=b[2]; //送位选码
- P0=a[num1%10]; //送字段码
- delay(1); //延时
- P1=b[3];
- P0=a[num1/10];
- delay(1);
- }
- num++;num1++;time=0;
-
- if(num==99)num=0;
- if(num1==99)num1=0;
- }
- }
- //定时器T0中断服务函数
- void T0int()interrupt 1
- {
- TH0=(65536-50000)/256; //给定时器T0的高八位赋初值
- TL0=(65536-50000)%256; //给定时器T0的低八位赋初值
- time++;
- }
复制代码
所有资料51hei提供下载:
数码管显示0-99(共阳极).rar
(22.73 KB, 下载次数: 21)
|