stm32数码管显示数字 流程图_基于51单片机的数字时钟设计(数码管和LCD显示)...
·
一起来来了解吧 数字时钟设计飞起来 基于(数码管和LCD显示)两种显示方法
一,针对初学者的要求
1、掌握单片机定时/计数器的工作原理和控制方法。
2、熟练掌握单片机定时/计数器的几种不同工作方式特点及其选择方法。
3、掌握实验系统中数码管显示部分的电路结构和特点。
4、掌握数字时钟系统的常见构成方法和软件设计技巧。
二,基础内内容:
基本要求(必须完成):用定时/计数器完成简单时钟功能,并利用数码管显示时间,起始时间建议设置为23:59:55,方便观察到零点时显示时间的跳变。
提高部分:可在此基础上,利用独立按键K1-K4实现闹钟、调时等功能。
三,显示部分仍然可借鉴前面讲过的数码管动态显示子函数。
基本1秒的时间可通过定时计数器(如T0)产生50ms,循环20次,到达1秒;以此类推。设计思路、,但应注意电路不同,可以采用采用LCD1602显示,因此只能部分参考。
三,电路图
- 数码管显示电路

2,LCD显示电路

废话不多说,看程序
四,基于数码管显示
- 代码
#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.结果显示

五,基于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.结果显示

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


所有评论(0)