电子秒表动态显示仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //LED字模
- sbit P3_0=P3^0; //定义位变量
- sbit P3_1=P3^1;
- unsigned char x,y,num=60,n=0;
- void delay(unsigned int time){ //延时1ms函数
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void key() interrupt 1{ //中断函数
- TL0 = 0xB0; //初值重装
- TH0 = 0x3C;
- n++; //计时
- if(n==20) //1s到了
- {
- n=0; //每秒重置一次
- if(num==0) num=60; //每60s循环
- x=num/10; //十位
- y=num%10; //个位
- num--; //每定时1s,倒计时减一秒
- }
- }
- void main(){
- TMOD = 0x01; //T0工作在方式1
- TL0 = 0xB0; //50ms
- TH0 = 0x3C;
- ET0 = 1; //开定时器0中断允许位
- EA = 1; //开总中断
- TR0 = 1; //开定时器0
- while(1){ //数码管的动态显示
- P3_1 = 1; //个位显示
- P2 = led_mod[x];
- P3_0 = 0;
- delay(5);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
实验5.zip
(25.57 KB, 下载次数: 108)
|