历史上的今天
今天是:2025年06月25日(星期三)
2018年06月25日 | 电子时钟(51单片机定时器,1602液晶)
2018-06-25 来源:eefocus
电路图:

代码:
#include
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
uint num,A_num,x=0;
uint h,m,s,year=2012,month=1,day=22,lcd_x=0,lcd_y=0;
uchar code Zifu[]="0123456789";
sbit beep = P2^3;
sbit LCD_EN = P3^4;
sbit LCD_RS = P3^5;
sbit duan = P2^6;
sbit wei = P2^7;
sbit key_A = P3^6;
sbit key_B = P3^7;
void delay_1ms(uchar x){
uchar i,j;
for(j=0;j for(i=0;i<110;i++); } void write_command(uchar command){ LCD_RS = 0; LCD_EN = 0; P0 = command; delay_1ms(2); LCD_EN = 1; //EN 由1 -- 0 完成 有效数据 的 锁存 delay_1ms(2); LCD_EN = 0; } void write_data(uchar fuck){ LCD_RS = 1; LCD_EN = 0; P0 = fuck; delay_1ms(2); LCD_EN = 1; delay_1ms(2); LCD_EN = 0; } void lcd_post(int X,int Y){ //0,1表征 第一行 和 第二行 write_command(0x80+X*(0x40)+Y); } void init(){ h=m=s=0; num=A_num=0; LCD_EN=0; write_command(0x38); write_command(0x0c); //write_command(0x06); //写字符后地址指针加一 write_command(0x01); TMOD = 0x02; TH0 = 6; TL0 = 6; EA = 1; ET0 = 1; TR0 = 1; /*时分秒*/ lcd_post(0,0); write_data(Zifu[h/10]); lcd_post(0,1); write_data(Zifu[h%10]); lcd_post(0,2); write_data(':'); lcd_post(0,3); write_data(Zifu[m/10]); lcd_post(0,4); write_data(Zifu[m%10]); lcd_post(0,5); write_data(':'); lcd_post(0,6); write_data(Zifu[s/10]); lcd_post(0,7); write_data(Zifu[s%10]); /*年月日*/ lcd_post(1,6); write_data(Zifu[year/1000]); lcd_post(1,7); write_data(Zifu[(year%1000)/100]); lcd_post(1,8); write_data(Zifu[(year%100)/10]); lcd_post(1,9); write_data(Zifu[year%10]); lcd_post(1,10); write_data('-'); lcd_post(1,11); write_data(Zifu[month/10]); lcd_post(1,12); write_data(Zifu[month%10]); lcd_post(1,13); write_data('-'); lcd_post(1,14); write_data(Zifu[day/10]); lcd_post(1,15); write_data(Zifu[day%10]); } void di(){ beep=0; delay_1ms(100); beep=1; } void keyscan(){ if(key_A==0){ delay_1ms(3); if(key_A==0){ A_num++; di(); switch(A_num){ case 1: //时 TR0=0; lcd_post(0,1); write_command(0x0f); break; case 2:lcd_post(0,4);break; //分 case 3:lcd_post(0,7);break; //秒 case 4:lcd_post(1,6);break; //年 case 5:lcd_post(1,7);break; case 6:lcd_post(1,8);break; case 7:lcd_post(1,9);break; case 8:lcd_post(1,12);break; //月 case 9:lcd_post(1,15);break; //日 case 10: A_num=0; write_command(0x0c); TR0=1; break; } } while(!key_A); } if(A_num!=0){ if(key_B==0){ delay_1ms(3); if(key_B==0){ di(); switch(A_num){ case 1: h=(++h)%24; lcd_post(0,0); write_data(Zifu[h/10]); lcd_post(0,1); write_data(Zifu[h%10]); break; //时 case 2: m=(++m)%60; lcd_post(0,3); write_data(Zifu[m/10]); lcd_post(0,4); write_data(Zifu[m%10]); break; //分 case 3: s=(++s)%60; lcd_post(0,6); write_data(Zifu[s/10]); lcd_post(0,7); write_data(Zifu[s%10]); break; //秒 case 4: //年 lcd_post(1,6); write_data(Zifu[(++x)%10]); break; case 5: lcd_post(1,7); write_data(Zifu[(++x)%10]); break; case 6: lcd_post(1,8); write_data(Zifu[(++x)%10]); break; case 7: lcd_post(1,9); write_data(Zifu[(++x)%10]); break; case 8: month=(++month)%13; lcd_post(1,11); write_data(Zifu[month/10]); lcd_post(1,12); write_data(Zifu[month%10]); break; //月 case 9: day=(++day)%32; lcd_post(1,14); write_data(Zifu[day/10]); lcd_post(1,15); write_data(Zifu[day%10]); break; //日 case 10:break; }write_command(0x10); } while(!key_B); } } } void main() { init(); while(1){ if(num==3686){ num=0; s++; if(s==60){ s=0; m++; if(m==60){ m=0; h++; if(h==24)h=0; lcd_post(0,0); write_data(Zifu[h/10]); lcd_post(0,1); write_data(Zifu[h%10]); } lcd_post(0,3); write_data(Zifu[m/10]); lcd_post(0,4); write_data(Zifu[m%10]); } lcd_post(0,6); write_data(Zifu[s/10]); lcd_post(0,7); write_data(Zifu[s%10]); } keyscan(); } } void T0_time() interrupt 1 { num++; }
史海拾趣
|
linux下 vivi的下载命令load flash 的路径是什么! 比如我要用vivi下载内核,用“load flash kernel x”命令,但是这个内核映像文件要放在哪里,我用的是minicom? … 查看全部问答> |
|
我是一个新人,对飞思卡尔单片机使用的不是很熟,最近在使用飞思卡尔128单片机和nrf905之间做一个无线传输的小协议,选择飞思卡尔为主机模式,并且作为接收终端,用于接收我的发送数据。我的发送端是用51做到已经好使了,没有问题了(发送端暂且不 ...… 查看全部问答> |
|
请求 继续团购 MSP430 LaunchPad MSP-EXP430G2 25元不用包邮啊 请求 继续团购 MSP430 LaunchPad MSP-EXP430G2 25元不用包邮啊 30元 也可以试试 [ 本帖最后由 ppiicc 于 2012-5-3 22:53 编辑 ]… 查看全部问答> |
|
富士通的板子我是第一次接触。给我印象最深的是。富士通的用户手册写的十分特别。条理特别清楚。 通过这次活动我学到了富士的AD及屏幕显示相关。明白了点显示。知道了示波显示的基本原理。 这个芯片十分复杂。不是一天两天就可完全拿下的。日后还 ...… 查看全部问答> |
|
这个算是个遗憾帖吧。 本来还准备了两个实验,但鉴于时间问题,不能在活动结束前完成了。不过等做完我会来让大家看看的。 其中一个是GPS的实验,模块已经买回来了,只 ...… 查看全部问答> |
|
寻求AD13中如何在同个内电POWER层中划分多个电源网络? 新手第一次画4层PCB板,目前已初步弄懂了plane和layer的区别,但看到一些高手绘制的多层板中,可以在同一个power内电层上划分不同的电源网络,比如在power内电层上,划分+3.3v,+5v,+12v等电源。但在实际练习中,新增一个power层,导入PCB封装后,双 ...… 查看全部问答> |
|
本帖最后由 wugx 于 2016-7-27 17:54 编辑 项目又开始构想了,大概是数据采集,存储,分析统计,显示等方面的,主要硬件载体是移动终端,目的是为了减轻负担,方便办公,搞研究等,由用户自己定义显示什么、如何计算(我们提供类似模型),我们只是 ...… 查看全部问答> |




