单片机实验——电子表(数码管动态显示技术)

(1. 开机时,显示12:00:00 的时间开始计时;
(2. P2.0 控制“秒”的调整,每按一次加1 秒;
(3. P2.1 控制“分”的调整,每按一次加1 分;
(4. P2.2 控制“时”的调整,每按一次加1 个小时;

 

 

(靠!proteus的7seg-mpx4-cc数码管电器特性仿真不标准,导致显示结果不正常,害我白折腾了7个小时!一直在自己的代码上找错!)

 

 

基本原理:通过计时器/计数器的中断依次使每个数码管显示其所需要的数字,当中断频率较高时,利用人的肉眼的观测延时性,使人看起来像是一直在亮着。

 

编译环境:KEIL C51 V3
仿真软件:proteus 7.4
单片机类型:AT89C52
数码管类型:7seg-mpx4-cc

开关选用:BUTTON

 

单片机上的程序如下:

 

#include char code display_data[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char light_locate[]={0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef}; unsigned dispbuf[]={1,2,0,0,0,0}; unsigned char mstcnt; unsigned char hour; unsigned char minute; unsigned char second; unsigned long int times_of_interrupt; unsigned char selected_light; sbit increase_second=P2^0; sbit increase_minute=P2^1; sbit increase_hour=P2^2; void delay20ms(); void main() { TMOD=0x02; //定时器/计数器工作方式为8位自动重装定时/计数器 //给定时器/计数器T0装入预定初值 TH0=0x06; TL0=0x06; TR0=1; //设置定时器/计数器T0为定时器状态 ET0=1; //打开定时器ET0中断允许标志位 EA=1; //打开CPU中断允许标志位 hour=12; minute=0; second=0; selected_light=0; mstcnt=0; times_of_interrupt=0; while(1) { if(increase_second==0) { delay20ms(); if(increase_second==0) { second=second+1; } while(increase_second==0); } if(increase_minute==0) { delay20ms(); if(increase_minute==0) { minute=minute+1; } while(increase_minute==0); } if(increase_hour==0) { delay20ms(); if(increase_hour==0) { hour=hour+1; } while(increase_hour==0); } } } void delay20ms() { int i,j; for(i=0;i<36;i++) { for(j=0;j<200;j++) { } } } void t0_interrupt_function() interrupt 1 { mstcnt++; if(mstcnt==100) { mstcnt=0; P3=display_data[dispbuf[selected_light]]; P1=light_locate[selected_light]; selected_light++; if(selected_light==6) { selected_light=0; } } times_of_interrupt++; if(times_of_interrupt==5000) { times_of_interrupt=0; second++; if(second>=60) { second=0; minute++; if(minute>=60) { minute=0; hour++; if(hour>=24) { hour=0; } } } dispbuf[0]=second%10; dispbuf[1]=second/10; dispbuf[2]=minute%10; dispbuf[3]=minute/10; dispbuf[4]=hour%10; dispbuf[5]=hour/10; } }

 

电路图核心部分如下:

 

你可能感兴趣的:(【嵌入式/单片机】)