一起来来了解吧 数字时钟设计飞起来 基于(数码管和LCD显示)两种显示方法

一,针对初学者的要求

1、掌握单片机定时/计数器的工作原理和控制方法。

2、熟练掌握单片机定时/计数器的几种不同工作方式特点及其选择方法。

3、掌握实验系统中数码管显示部分的电路结构和特点。

4、掌握数字时钟系统的常见构成方法和软件设计技巧。

二,基础内内容:

基本要求(必须完成):用定时/计数器完成简单时钟功能,并利用数码管显示时间,起始时间建议设置为23:59:55,方便观察到零点时显示时间的跳变。

提高部分:可在此基础上,利用独立按键K1-K4实现闹钟、调时等功能。

三,显示部分仍然可借鉴前面讲过的数码管动态显示子函数。

基本1秒的时间可通过定时计数器(如T0)产生50ms,循环20次,到达1秒;以此类推。设计思路、,但应注意电路不同,可以采用采用LCD1602显示,因此只能部分参考。

三,电路图

  1. 数码管显示电路
90f6783f8a1c4c3448787c5c0eed418e.png

2,LCD显示电路

6b8dae700de77e7780ade902d4b15275.png

废话不多说,看程序

四,基于数码管显示

  1. 代码
#include  #define uchar unsigned char #define uint unsigned int sbit DUAN=P2^6;sbit WEI=P2^7;sbit K1=P3^4;sbit K2=P3^5;sbit K3=P3^6;sbit K4=P3^7;uchar h,m,s,j=0;uchar data led[6]={5,5,9,5,3,2};uchar data ledwei[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar data displaytab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay()  /*ÑÓʱº¯Êý,Ô¼1mS*/{uchar x,y;for(x=2; x>0; x--)for(y=250; y>0; y--);}void display() /*Ö÷³ÌÐò*/{uchar i;for (i=0;i<6;i++){P0=displaytab[led[i]];DUAN=1;DUAN=0;P0=ledwei[i]; WEI = 1;WEI = 0;delay(); P0=0xff;/*ÏûÓ°2£¬Î»Ñ¡È«²¿¹Ø¶Ï*/  WEI = 1;WEI = 0;P0=0x00;/*ÏûÓ°1£¬Ï¨Ãð¶ÏÂë*/ DUAN = 1;DUAN = 0;} }void main(){ TMOD=0x01; TH0=(65536-46080)/256; TL0= (65536-46080)%256; EA=1; ET0=1; TR0=1; h=23; m=59; s=55; while(1) {  display(); }}void T0_int() interrupt 1{  j++; if(j==20) { j=0; s++; if(s==60) {  s=0;m++;}if(m==60){  m=0; h++;}if(h==24){h=0;}} led[5]=h/10;led[4]=h%10;led[3]=m/10; led[2]=m%10;led[1]=s/10; led[0]=s%10;TH0=(65536-46080)/256;TL0=(65536-46080)%256; } 

2.结果显示

fb0ed4bcc8e9bb1bc86ec3af1f31a500.png

五,基于LCD显示

1.代码

#include#include#define uchar unsigned char#define uint unsigned intuchar int_time;uchar second;uchar minute;uchar hour;uchar code date[]=" L.T.T CHINA ";uchar code time[]=" TIME 23:59:55 ";uchar second=55,minute=59,hour=23;void clock_init(){ uchar i,j; for(i=0;i<16;i++) {  write_data(date[i]); }write_com(0x80+0x40);for(j=0;j<16;j++){  write_data(time[j] ); }}void write_sfm(uchar wei,uchar date1){uchar shi,ge;shi=date1/10;ge=date1%10;write_com(0x80+wei);write_data(0x30+shi);write_data(0x30+ge);}void clock_write(uint s,uint m,uint h){ write_sfm(0x47,h); write_sfm(0x4a,m); write_sfm(0x4d,s); }void main(){ init1602(); clock_init(); TMOD=0x01; EA=1; ET0=1; TH0=(65536-46080)/256; TL0=(65536-46080)%256; TR0=1; int_time=0; second=55; minute=59; hour=23; while(1) { clock_write(second,minute,hour);}}void T0_interserve(void) interrupt 1 using 1{ int_time++;if(int_time==20){  int_time=0; second ++; } if(second==60) { second=0; minute ++; }if(minute==60){ minute=0; hour ++; } if(hour==24) {  hour=0; } TH0=(65536-46080)/256; TL0=(65536-46080)%256; }

2.结果显示

4390e054cfb34b74a44f3d8cc68d668a.png

大家有什么好的建议或者意见和在评论区留言!!!!

大家有什么好的建议或者意见和在评论区留言!!!!

更多推荐