电子时钟日历
电子时钟使用说明
电子时钟使用说明电子时钟是一种现代化的时钟,它采用了电子技术来进行时间计算和显示。
相比传统的机械时钟,电子时钟更加准确、精确,并且功能更加丰富。
下面将对电子时钟的使用进行详细的说明。
一、基本操作:1.插上电源:将电子时钟插入交流电源插座,并确保电压符合时钟的要求。
电子时钟会自动启动并进入待机状态。
2.设置时间:大多数电子时钟都有时间设置功能。
通常通过按下设置按钮(可能会标有"SET"或"MODE"等字样)来进入设置模式,然后使用加减按钮或者旋转按钮设置小时和分钟。
一旦设置完成,再次按下设置按钮退出设置模式,并开始正常工作。
3.调节亮度:电子时钟通常提供了亮度调节功能,以适应不同的环境需求。
通过按下亮度调节按钮(可能会标有"BRIGHT"或"B/L"等字样)来切换亮度档位,并选择最适合的亮度。
4.设置闹钟:大多数电子时钟还具备闹钟功能。
按下闹钟设置按钮(可能会标有"ALARM"或"A/L"等字样)进入闹钟设置模式,然后使用加减按钮或者旋转按钮设置闹钟的小时和分钟。
设置完成后,再次按下闹钟设置按钮退出设置模式,闹钟将会在设定的时间响起。
5.切换显示模式:一些电子时钟还提供了多种显示模式。
通过按下模式切换按钮(可能会标有"MODE"或"DISPLAY"等字样)来切换显示模式,可以切换显示时间、日期、温度等信息。
二、高级功能:1.温度显示:一些电子时钟具备温度检测功能,在屏幕上显示当前的室内温度。
通常使用室内温度感应器来检测温度,并在屏幕特定位置显示。
2.日历功能:一些电子时钟还具有日历功能,可以显示当前的日期,以及周几信息。
有些电子时钟还能显示农历日期和重要节日信息。
3.定时开关机:少数电子时钟还具备定时开关机功能。
用户可以事先设置好开关机的时间,电子时钟将在到达设定时间时自动开关机,非常方便。
时钟和日历的使用方法
时钟和日历的使用方法时钟和日历是我们日复一日都要使用的常用工具,无论是在家里还是在工作场所,在学校还是在旅游、度假中,时钟和日历的存在都是我们生活中不可或缺的一部分。
而在2023年,随着科技的飞速发展,时钟和日历的使用方式也得到了一定的改变,下面我们就来了解一下吧。
一、电子时钟的使用方法电子时钟目前已经成为了我们生活中使用最广泛的时钟之一,它具有精准、方便等特点,下面是电子时钟的使用方法。
1. 关于电池一般的电子时钟都需要使用电池,因此在使用电子时钟之前,一定要确认电池是否充足,并确保没用长时间放置,电池电能无法达到控制时钟运行的标准。
有些电子时钟的电池更换需要特定的工具,所以在更换电池之前,一定要仔细阅读说明书。
2. 设置时间电子时钟有多种设置时间的方式,比如通过按键来设置,或者通过手机APP来同步时间。
在设置时间时,要注意时区的设置,确保时钟显示的是正确的当地时间,以防误差。
3. 闹钟设置大多数电子时钟都带有闹钟功能,这个功能可以让我们设定一个指定的时间,当时间到达时,时钟会发出闹铃提醒。
在设置闹铃时,一定要注意时间和闹铃声音的大小,以免影响到他人或者睡眠质量。
4. 备用电源有些电子时钟还具备备用电源功能,这个功能可以让时钟在停电的情况下继续提供计时服务,这对于一些需要持续计时的场合非常有用。
二、日历的使用方法日历可以让我们快速获取一年中的日期,还可以让我们方便地记录生活中的重要事件。
随着科技的发展,现在的日历已经由纸质版逐渐转向电子版,电子日历在功能和使用方面都比过去的纸质日历更加方便,下面是电子日历的使用方法。
1. 日历的显示打开日历应用之后,一般会默认显示当前月份的日历,如果需要查看其他月份的日历,可以在应用中进行设置。
一般的日历应用还会支持不同形式的日历显示,比如月视图、周视图、日视图等,用户可以根据自己的需求进行切换。
2. 添加事件日历不仅可以让我们快速查看时间,还能让我们轻松添加生活中的重要事件。
电子时钟日历课程设计
电子时钟日历课程设计一、课程目标知识目标:1. 学生能理解电子时钟日历的基本原理,掌握电子时钟日历的组成及功能。
2. 学生能描述电子时钟日历中数字电路、计数器、寄存器等关键部件的工作原理。
3. 学生掌握电子时钟日历的编程方法,能运用所学知识设计简单的电子时钟日历程序。
技能目标:1. 学生能够运用所学知识,动手搭建简单的电子时钟日历电路,并进行调试。
2. 学生能够编写简单的电子时钟日历程序,具备初步的编程能力。
3. 学生能够通过小组合作,解决电子时钟日历制作过程中遇到的问题。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发学生的学习热情和探究精神。
2. 培养学生团队合作意识,学会与他人共同解决问题,培养沟通能力和协作精神。
3. 培养学生具备时间观念,认识到时间的重要性,养成良好的时间管理习惯。
本课程针对中学生设计,结合电子技术学科特点,以实践性、操作性为主,注重培养学生的动手能力、编程能力和团队合作意识。
课程内容紧密联系课本,确保学生所学知识与实际应用相结合,提高学生的知识运用能力。
通过本课程的学习,使学生能够更好地理解电子时钟日历的原理,为今后深入学习电子技术打下基础。
二、教学内容1. 电子时钟日历基础知识:介绍电子时钟日历的组成、工作原理,包括数字电路、计数器、寄存器等关键部件的功能与应用。
- 相关教材章节:第一章 数字电路基础,第二节 计数器与寄存器。
2. 电子时钟日历电路设计:讲解如何搭建电子时钟日历电路,分析电路中各部分的作用及相互关系。
- 相关教材章节:第三章 逻辑电路设计,第四节 时序逻辑电路设计。
3. 电子时钟日历编程:教授如何编写电子时钟日历程序,包括编程语言的选择、程序结构及功能实现。
- 相关教材章节:第五章 数字电路编程,第一节 编程语言及其应用。
4. 实践操作:指导学生动手搭建电子时钟日历电路,编写程序,并进行调试。
- 相关教材章节:第六章 实践操作,第二节 电子时钟日历的制作与调试。
时钟和日历的问题解决
时钟和日历的问题解决时钟和日历是我们日常生活中常见的工具,用于记录时间和日期。
然而,有时我们可能会遇到一些与时钟和日历相关的问题,比如时间偏差、时区差异或者日期计算等。
本文将针对一些常见问题给出解决方法,帮助读者更好地应对时钟和日历的使用。
一、时间偏差问题解决在使用时钟时,我们可能会发现时钟显示的时间与实际时间有所偏差。
这可能是由于时钟电池电量不足、机械时钟的机芯出现问题或者是电子时钟的软件故障引起的。
针对这些问题,我们可以采取以下的解决方法:1. 更换电池:如果是电子时钟,首先检查电池是否电量不足,如果是,则及时更换。
如果是机械时钟,则需要联系专业的维修人员来修复时钟机芯。
2. 同步时间:对于电子时钟来说,我们可以通过设定自动同步时间的功能来确保时钟显示的时间与国际标准时间保持一致。
对于机械时钟来说,可以通过调整指针位置与标准时间对齐来修复时间偏差。
二、时区差异问题解决时区差异是由于地球不同地区的经度不同而导致的时间差异。
当我们需要与不同时区的朋友或者合作伙伴保持联系时,时区差异可能会成为问题。
以下是一些解决方法:1. 设置多个时钟:在手机、电脑或者智能手表上设置多个时钟,分别显示不同时区的时间,以便我们快速了解对方的时间。
2. 使用世界时钟:世界时钟是一种专门用于显示不同时区时间的仪器,可以直观地看到全球各地的时间。
三、日期计算问题解决在日常生活中,我们经常需要做一些日期计算,如计算两个日期之间的天数差,或者在一个日期上加上一段时间后得到新的日期等。
以下是一些解决方法:1. 使用日历工具:电子设备上的日历应用可以很方便地帮助我们进行日期计算,我们可以输入起始日期和要计算的时间间隔,系统就会给出计算结果。
2. 借助网上工具:互联网上有很多日期计算的网站或者应用,我们可以通过输入相关信息来进行日期计算,这些工具通常会给出精确的结果。
综上所述,时钟和日历是我们日常生活中必不可少的工具,同时也可能会带来一些问题。
单片机C语言电子钟显示年月日星期及时间(带注释)
#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" 2011-12-30 SA T";uchar code table1[]=" 23:59:55 ";uchar code week1[][3]={"MON","TUE","WEN","THU","FRI","SA T","SUN"}; /*uchar code week2[]="TUE";uchar code week3[]="WEN";uchar code week4[]="THU";uchar code week5[]="FRI";uchar code week6[]="SA T";uchar code week7[]="SUN"; */uchar count,shi,fen,miao,dnum,year,month,day,week,a=5;sbit rs=P2^0; //数据命令sbit rw=P2^1; //读写sbit en=P2^2; //使能sbit d1=P3^1; //独立键盘sbit d2=P3^2;sbit d3=P3^3;sbit d4=P3^4;void delay(uchar z) //延时{uint x,y;for(x=110;x>0;x--)for(y=z;z>0;z--);}void write_com(uchar com) //写指令{rs=0;rw=0;en=0;P0=com;delay(5);en=1;delay(5);en=0;}void write_date(uchar date) //写数据{rs=1;rw=0;en=0;P0=date;delay(5);en=1;delay(5);en=0;}void write_weekday (uchar a){uchar x;write_com(0x80+13);for(x=0;x<3;x++){write_date(week1[a][x]);}}void weekday(uint i){write_weekday(i%7);}void write_sfm(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void write_ymd(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void unit(){uchar num;en=0;write_com(0x38); //显示write_com(0x0c); //光标不显示write_com(0x06); //指针加1,整屏不移动write_com(0x01); //清屏write_com(0x80); //指针指向0x80for(num=0;num<16;num++) //第一行显示table数组{write_date(table[num]);delay(20);}write_com(0x80+0x40);for(num=0;num<16;num++) //第二行显示table1数组{write_date(table1[num]);delay(20);}TMOD=0X01;TH0=(65536-50000)/256; //开启中断TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;shi=23;fen=59;miao=55;year=11;month=12;day=30;}void jishu() //计数{if(count==20){count=0;miao++; //秒加if(miao==60){miao=0;fen++; //分加if(fen==60){fen=0;shi++;if(shi==24){shi=0;day++;a++;weekday(a);//时加}write_sfm(3,shi);write_ymd(9,day);if(day==31){day=0x01;write_ymd(9,day);month++;write_ymd(6,month);if(month==13){month=0x01;write_ymd(6,month);year++;write_ymd(3,year);}}}write_sfm(6,fen);}write_sfm(9,miao);}}void change(){d4=0;if(d1==0) //移光标{delay(10);if(d1==0){while(!d1);dnum++;if(dnum==1){TR0=0;write_com(0x0f);write_com(0x80+0x40+10);}if(dnum==2){write_com(0x80+0x40+7);}if(dnum==3){write_com(0x80+0x40+4);}if(dnum==4){write_com(0x80+10);}if(dnum==5){write_com(0x80+7);}if(dnum==6){write_com(0x80+4);}if(dnum==7){dnum=0;TR0=1;write_com(0x0c);}}}if(d2==0) //加数据{delay(10);if(d2==0){while(!d2);if(dnum==1){miao++;if(miao==60)miao=0;write_sfm(9,miao); //顺序不能换write_com(0x80+0x40+10); //顺序不能换}if(dnum==2){fen++;if(fen==60)fen=0;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi++;if(shi==24){shi=0;}write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day++;a++;weekday(a);if(day==31)day=1;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month++;if(month==13)month=1;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year++;write_ymd(3,year%100);write_com(0x80+4);}}}if(d3==0) //减数据{delay(10);if(d3==0){while(!d3);if(dnum==1){miao--;if(miao==-1)miao=59;write_sfm(9,miao);write_com(0x80+0x40+10);}if(dnum==2){fen--;if(fen==-1)fen=59;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi--;if(shi==-1)shi=23;write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day--;a--;weekday(a);if(day==0)day=30;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month--;if(month==0)month=12;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year--;write_ymd(3,year%100);write_com(0x80+4);}}}}void main(){unit();while(1){jishu();change();}}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include<reg52.h>#define uchar unsigned char //宏定义#define uint unsigned int //宏定义sbit rs=P3^5; //液晶数据/指令选择端:1-数据,0-指令sbit lcden=P3^4; //液晶使能控制端:1-有效,0-无效sbit shift_key=P3^2;//位置移动键sbit up_key=P3^3;//增加键uchar temp=0;//定义定时器溢出计数变量,每隔50ms产生1次溢出,temp加1uint year=2011;//定义年变量并赋初值2011年uchar month=06,day=01,week;//定义月、日、星期变量,并赋初值5月23日uchar hour=23,minute=59,second=58;//定义时、分、秒变量,并赋初值12时00分00秒uchar code week_string[7][4]={"MON","TUE","WED","THU","FRI","SA T","SUN"};//定义星期英文缩写表uchar data month_day[12]={31,0,31,30,31,30,31,31,30,31,30,31};//定义每月天数表/*--定时计数器T0及中断初始化函数--*/void init(void){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值EA=1;//开总中断ET0=1;//开启定时器0中断EX0=1;//开启外部中断,外部中断用于调整时间PT0=1;//将定时器0中断设置高优先级,调整时间期不停止计时TR0=1;//启动定时器0}/*----------1ms延时函数----------*/void delay(uint n){uint i,j;for(i=n;i>0;i--)for(j=114;j>0;j--);}/*-------LCD1602写指令函数-----*/void LCD1602_write_com(uchar com){rs=0;//rs=0,置指令输入状态P0=com;//输出指令码delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*-------LCD1602写数据函数-----*/void LCD1602_write_dat(uchar dat){rs=1;//rs=1,置数据输入状态P0=dat; //输出待显示字符的字符码(ASCII码)delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*********************公历平年的2月只有28天,公历闰年的2月有29天。
题目:电子日历时钟系统程序设计
题目:电子日历时钟系统程序设计一、功能:1.可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分、秒)。
2.在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。
3.在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。
4.在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位。
5.在闹钟显示模式,可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整。
6.调整和秒表操作不影响日期和时间的准确性。
7.可通过Q键结束程序。
二、任务与要求:1.实现方案,流程图(20分)2.实现日期的显示和调整(15分)3.实现时间的显示和调整(15分)4.实现日期和时间的准确性(5分)5.实现程序正常结束(5分)6.实现秒表功能(20分)7.实现闹钟功能,发声10秒(20分)8.基本实现前5项要求,再实现其它扩展要求,视难度加分。
答辩中误导答辩教师(由答辩教师认定,如某些同学参考其它资料但坚持声称全是自己编写的情况),视情节扣分。
n组设计雷同(由答辩教师认定),第一组正常计分,其余n-1组不计分。
设计报告总体要求:①写出主要设计思路,工作原理;②画出硬件接线图;③调试出现的问题及解决方法;④提交程序清单。
三、编程提示:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,频率f=1.1931816MHz。
定时器0输出方波的频率: f out=1.1931816/65536=18.2Hz输出方波的周期T out=1/18.2=54.945ms。
8253A每隔55ms引起一次中断,作为定时信号。
可用55945ms作基本计时单位。
用BIOS调用INT 1AH可以取得该定时单位。
例:1秒=18.2 (计时单位)。
主要利用PC机系统功能调用实现电子日历时钟。
电子时钟
8279键盘显示实验(电子秒表)一.实验要求利用实验机上提供的8279键盘电路,数码显示电路,设计一个电子钟(日历),用小键盘控制电子钟(日历)的启停及初始值的预值。
电子钟做成如下两种格式(按F键两种格式可以切换):XX -XX-XX 由左向右分别为: 时、分、秒XX -XX-XX 由左向右分别为: 年、月、日1.C键:清除,显示00-00-00.2.A键:启动,电子钟(日历)计时3.D键:停止,电子钟(日历)停止计时4.B键:设置初值:由左向右依次输入预置的时、分、秒(年、月、日)值,同时应具有判断输入错误的能力,若输入有错,则显示: 00-00-00按B键即可重新输入预置值:5.F键:实现电子钟和日历的切换5.E键:程序退出。
二试验程序//---8279键盘显示实验(电子秒表)---//-----头文件引用------#include<reg51.h>#include<absacc.h>#include<intrins.h>//-----宏声明-----#define D8279 XBYTE[0xF238] //8279 数据口地址#define C8279 XBYTE[0xF239] //8279 状态/命令口地址#define uchar unsigned char#define uint unsigned int#define TimeDisp 1#define DateDisp 0//-----变量定义-----uchar idata time[] = {0,0,0,12}; //10毫秒,秒,分,十uchar idata day[3] = {18,6,8};uchar idata diss[8]={0x20,0x20,0,0,0,0,0,0};//显示缓冲区uchar code ledseg[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5E,0x79,0x71,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0xDE,0xF9,0xF1,0x00,0x40};// LED显示常数表bit bdata sbz,wbz,kbz; //定义秒标志、键值合法标志、读键标志bit bdata flag = TimeDisp;//-----取键值函数-----uchar getkey(){uchar key;if((C8279&0x07)==0x00){kbz=0;} //无键按下,置标志else{kbz=1;C8279=0x40; //读FIFO RAM命令key=D8279;key=(key&0x3f); //取键盘数据低6位 return(key);}}//-----显示函数-----void disled(d)uchar idata *d;{uchar i;C8279=0x90;for(i=0;i<8;i++){C8279=i+0x80;D8279=ledseg[*d];d++;}}//-----显示缓冲区内容显示-----void disp(void){disled(diss);}//----8279初始化子程序-----void init8279(){C8279=0; //置8279工作方式C8279=0x2f; //置键盘扫描速率C8279=0xc1; //清除LED 显示//while(com&0x80);//等待清除结束}//-----毫秒显示-----void disms(){diss[0]=time[0]%10;diss[1]=time[0]/10;disp();}//-----显示处理-----void display(){if(flag == 1){diss[0]=time[1]%10;diss[1]=time[1]/10;diss[2]=33;diss[3]=time[2]%10;diss[4]=time[2]/10;diss[5]=33;diss[6]=time[3]%10;diss[7]=time[3]/10;}else{diss[0]=day[0]%10;diss[1]=day[0]/10;diss[2]=33;diss[3]=day[1]%10;diss[4]=day[1]/10;diss[5]=33;diss[6]=day[2]%10;diss[7]=day[2]/10;}disp();}//-----初始化-----void first(void){init8279(); //初始化8279 sbz=1; //标志TMOD=0x10;TH1=0xdc; //10毫秒的时间常数 TL1=0x00;disms();ET1=1;EA=1; //允许中断}//-----INT_T1中断服务子程序----- void Int_T1(void) interrupt 3{TR1=0;TH1=0xdc; //10毫秒定时常数TL1=0x00;TR1=1;time[0]=time[0]+1; //10毫秒数加 1 if(time[0]==100) //判断10毫秒=100 {time[0]=0;sbz=1; //置秒标志}//disms();if(time[0]==0){time[1]=time[1]+1; //秒加1if(time[1]==60) //判断秒=60{time[1]=0;time[2]=time[2]+1;//分加1if(time[2]==60) //判断分=60{time[2]=0;time[3]=time[3]+1;//时加1if(time[3]==24)//判断时=23{time[3]=0;day[0] += 1;if(day[0] == 30){day[0] = 0;day[1] += 1;if(day[1] == 12){day[1] = 0;day[2]++;}}}}}}}//-----读数子程序-----void getword(){uchar i;for(i=8;i>0;i--){do{getkey(); //读键盘}while(kbz==0);//无键输入,则再读if((getkey()>9)||(getkey()<0))//判断输入是否大于9,小于0 {wbz=0; //置非法输入标志return;}else{wbz=1; //置合法输入标志if((i == 6)||(i == 3)){i--;diss[i-1]=getkey();disp(); //显示输入的字符}else{diss[i-1]=getkey();disp(); //显示输入的字符}}}}//-----时间清零子程序-----void cleart(){TR1=0; //关计数器time[0]=0; //10毫秒清零time[1]=0; //秒清零time[2]=0; //分钟清零time[3]=0; //小时清零disms(); //显示毫秒sbz=1; //置秒标志}//-----设置初值子程序-----void sett(){getword(); //读数if(wbz==1) //判断输入合法性{if(flag == 1){time[3]=(diss[7]*10+diss[6]);if(time[3]<24)//判断输入小时值< 24 {time[2]=(diss[4]*10+diss[3]);if(time[2]<60)//判断输入分钟数< 60{time[1]=(diss[1]*10+diss[0]);if(time[1]<60)//判断输入秒值< 60{;}else{cleart();} //时间清零}else{cleart();} //时间清零}else{cleart();} //时间清零}else{day[2]=(diss[7]*10+diss[6]);if(day[2]<32)//判断输入小时值< 24{day[1]=(diss[4]*10+diss[3]);if(day[1]<13)//判断输入分钟数< 60{day[0]=(diss[1]*10+diss[0]);if(day[0]<100)//判断输入秒值< 60{;}else{cleart();} //时间清零}else{cleart();} //时间清零}else{cleart();} //时间清零}}else{cleart();} //时间清零display();//显示时间}//-----主程序-----void main(){uint counter = 0;first(); //初始化while(1) //循环{counter++;if(counter == 10000 ){//flag = !flag;counter = 0;}getkey(); //读键盘if(kbz==1) //判断是否有键输入{switch(getkey()){case 0x0c: cleart();//输入键是'C',转CLEART break;case 0x0a: TR1=1; //输入键是'A',电子钟计时break;case 0x0d: TR1=0; //输入键是'D',电子钟停止计时break;case 0x0b: TR1=0; //输入键是'B',转SETTsett();break;case 0x0e: _nop_();//输入键是'E',case 0x0f: flag = !flag;break;while(1)//等待回到监控{}}}else if(sbz==1){display();//显示时间sbz=0;//清标志}}}。
时钟和日历认识时钟和日历的基本概念
时钟和日历认识时钟和日历的基本概念时钟和日历是我们日常生活中常见的时间工具,它们帮助我们管理时间、组织生活的重要辅助工具。
本文将深入探讨时钟和日历的基本概念,帮助读者更好地认识它们。
一、时钟的基本概念和类型时钟是测量、显示时间的仪器,广泛应用于各个领域。
它不仅起到指示时间的作用,还能帮助我们安排日程和精确计时。
时钟按照运行机制的不同可以分为机械时钟、电子时钟、原子钟等类型。
1. 机械时钟机械时钟是一种利用传动齿轮和摆轮装置来测量和显示时间的时钟。
它的工作原理是通过齿轮传动使钟表指针进行运动。
机械时钟因其复杂的结构和工艺而需经常维护,但其经典的外观和独特的机械声音使得它们仍然备受人们喜爱。
2. 电子时钟电子时钟是一种通过电子元器件测量和显示时间的时钟。
它采用石英晶体振荡器作为时基,具有准确性高、结构简单、使用方便等特点。
电子时钟广泛应用于家庭、办公室和公共场所,其数字显示界面使我们更方便地读取时间。
3. 原子钟原子钟是一种以原子物理现象作为基础来测量时间的时钟。
它利用铯或气体冷却离子阱等技术来测量原子的振荡频率,并以此作为时间的基准。
原子钟的准确度非常高,误差可达到数亿分之一,是目前用于科学研究和精密实验的最佳选择。
二、日历的基本概念和类型日历是一种记录年、月、日及其相应例假日的系统。
它有助于人们了解、计算和安排时间。
在现代社会中,我们常用的日历主要有阴历和阳历。
1. 阴历阴历是以月亮的运行周期作为基础的一种日历系统。
它的计算方式是根据月亮围绕地球的运行周期,将一年分为12个阴历月。
阴历因其与农业生产和宗教习俗的关系而在一些地区仍然有广泛应用。
2. 阳历阳历是以地球绕太阳运行周期作为基础的一种日历系统。
它的计算方式是将一年按照365天划分为12个月,每月的天数不等。
阳历因其科学性和实用性而成为全球通用的日历系统。
三、时钟和日历在生活中的应用时钟和日历作为时间管理的工具,在我们的日常生活中有着广泛的应用。
电子钟说明书(福州智兴科技有限公司)
ZXTL—13A电子台历说明书一、功能简介1、公(农)历月、日、温度、时(24小时制)、分、星期显示,公历和农历的日期会自动轮换显示(有指示灯指示);2、50年万年历查询;3、日期时间记忆功能,停电时显示关闭但仍继续走时,来电时不需重新设置日期时间;4、整点报时功能(22:00~6:00不报);5、三组闹钟功能,且响铃时报时;6、六组生日提醒功能;7、即时报时功能;8、自动测试温度,温度范围:-9~50℃;9、亮度自动调整,22:00~7:00亮度降低一半。
二、操作说明1、按键名称:设置键、移动键、修改键、定闹键、报时键(轻触型电子薄膜按键)。
2、日期时间设置:①、在正常日期时间显示状态下,按设置键进入日期时间设置状态,小时和分钟位同时显示年且闪烁;②、此时按修改键修改年(若不要修改闪烁位内容,则不压修改键,下同),修改好后按移动键月闪烁,按修改键修改月,修改好后按移动键日闪烁,按修改键修改日,在设置过程中,星期和农历月日将自动跟随公历年月日而变化;③、再按移动键,则年不显示了,小时位闪烁,按修改键修改小时,按移动键,分钟位闪烁,按修改键修改分钟;④、按设置键回到正常日期时间显示状态。
3、整点报时设置:在正常日期时间显示状态下,按修改键,则可以打开/关闭整点报时功能(整点报时指示灯亮/灭)。
4、定闹时间设置:①、在正常日期时间显示状态下,按定闹键进入定闹时间查询,定闹(闹钟)指示灯亮,在温度位显示“A1”,表示当前您看到的是第一组定闹信息,在小时、分钟位显示“―∶――”表示该组定闹时间无效,显示具体时间表示该组定闹时间有效,按修改键可以切换有效或无效;②、若要修改定闹时间则按设置键进入定闹时间设置,小时位闪烁,按修改键修改小时,按移动键分钟位闪烁,按修改键修改分钟;③、按定闹键进入第二组定闹时间查询,其设置与第一组相同,用同样方法可完成第三组的查询、设置.查询、设置三组定闹时间后再按定闹键则退出定闹时间设置,进入生日提醒查询。
电子报时器万年历床头电子小闹钟中文语音报时器说明书
一、产品概述1.1产品介绍1.2主要特点1)中文语音报时功能,清晰准确;2)万年历功能,显示年、月、日;3)小闹钟功能,可设置多个闹钟;4)光感传感器,自动调节亮度;5)记忆功能,保留设置时钟信息。
二、产品外观2.1主机外观该电子报时器万年历床头电子小闹钟外观小巧玲珑,简约大方。
主机采用高质量塑料材料制作,表面涂有耐磨的亮面漆,光滑且易于清洁。
2.2显示屏该产品配有2.8寸高清彩色显示屏,能够清晰显示时间、日期以及相关设置信息。
显示屏的背光采用LED灯源,保证观察时间的清晰度,同时根据环境光线自动调节亮度。
三、产品功能3.1报时功能该电子报时器万年历床头电子小闹钟为用户提供准确的时间信息。
通过设置,每整点、半点、1分钟、5分钟或10分钟,都会发出中文语音报时。
用户也可以根据需要,选择关闭或开启报时功能。
3.2万年历功能万年历功能能够显示当前的年、月、日信息。
通过操作按钮,用户可以切换显示的日期信息,确保了准确的时间参考。
3.3小闹钟功能该产品配有多个小闹钟功能,用户可根据个人需求设置不同时间的闹钟,以提醒重要的事情。
每个闹钟都可以单独设置时间和日期,同时还可以设置闹钟的音量。
3.4光感传感器为了满足用户的不同需求,该产品采用了光感传感器。
根据环境光线的变化,自动调节背光的亮度,保证在不同光照条件下的清晰可见度。
3.5记忆功能产品具备记忆功能,可以保留设置的时钟信息。
即使断电或者关闭产品,再次打开时,之前设置的时间和日期信息仍然可以保留,方便用户的使用。
四、使用说明4.1电源该产品采用AC220V电源供电,用户只需将电源线插入家庭电源插座即可。
4.2设置时间和日期在产品的底部设置区,有相关的设置按钮,用户可以通过长按或短按不同的按钮进行设置时间和日期。
具体操作流程,请参照产品附带的说明书。
4.3设置报时功能用户可以根据个人需求设置报时功能,并选择报时的时间间隔。
同时还可以设置报时的音量大小。
具体操作流程,请参照产品附带的说明书。
电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、汇编语言)
一、题目:电子实时时钟/万年日历系统二、功能要求:1.基本要求:⑴显示准确的北京时间(时、分、秒),可用24小时制式;⑵随时可以调校时间。
2.发挥要求:⑴增加公历日期显示功能(年、月、日),年号只显示最后两位;⑵随时可以调校年、月、日;⑶允许通过转换功能键转换显示时间或日期。
三、方案考虑:1、硬件方案:⑴显示器采用6位LED数码管(共阳),可分别显示时间或日期。
⑵显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。
但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。
可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码。
⑶采用“一键多用方案”,以减少按键数目。
本方案采用了4按键。
⑷整体上要考虑:结构简单、布局美观、操作方便、成本低廉。
2、设计电路图如下:3、元件清单:(我们使用的是TX-1C开发板)⑴ 89C52 1个⑵IC座(40脚) 3个(其中1个用于接插89C51、2个用于接插LED段数码管)。
⑶ 74LS244 1个(用于驱动6个共阳的LED段数码管)。
⑷ IC座(20脚) 1个(用于接插74LS244)。
(5)显示器:LED_8段数码管(共阳型)6个三极管:(6)PNP(8550)6个(用于驱动6个共阳型LED段数码管)。
(7)微型开关:3个(其中1个用于复位电路、其它用于键盘)。
(8)晶体振荡器(12MHz):1个(用于振荡电路)。
(9)电阻器:⑴ 3KΩ 1个(用于系统复位电路)。
⑵ 1KΩ 6个(用作PNP三极管基极电阻)。
⑶ 100Ω 7个(驱动器用作74LS244输出限流电阻)。
(10)电容器:⑴ 10μF1个(用于系统复位电路)。
⑵ 30 pF 2个(用于系统振荡电路)。
(11)其它:⑴万能电路板(10×15):1块⑵焊锡条: 2米⑶带插头、座的电源端子: 1条⑷各种颜色外皮的导线:各1米(12)工具:1.电烙铁:1把2.剪钳:1把3.镊子:1把4.万用表:1个(13)设备:编程器(MEP300或TOP851)6个4、软件方案:(1)使用全汇编编写(2)时钟基准时间由单片机内部定时中断来提供,定时时间应该乘以一个整数得到,且不宜太长或太短,最长不能超过16位定时器的最长定时时间,最短不能少于定时中断服务程序的执行时间。
电子日历时钟
#define uint unsigned int
#define uchar unsigned char
uchar a,sec,hour,min,day,moon,year,week,flag,key1n,ZJL;//ZJL为中间量
#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)
SCLK=1;
SCLK=0;
ACC=ACC>>1;
}
return (ACC);
}
//----------------------------------------
void write_1302(uchar add,uchar dat)//向1302芯片写函数,指定写入地址,数据
{
write_1602dat(tab1[a]);//向液晶屏写日历显示的固定符号部分
//delay(3);
}
write_1602com(er+2);//时间显示固定符号写入位置,从第2个位置后开始显示
for(a=0;a<8;a++)
{
write_1602dat(tab2[a]);/பைடு நூலகம்写显示时间固定符号,两个冒号
Decimal=bcd>>4;
return(Decimal=Decimal*10+(bcd&=0x0F));
}
//--------------------------------------
void ds1302_init() //1302芯片初始化子函数(2012-06-17,00:00:00,week7)
宏创万年历使用说明
宏创万年历是一款以时钟、日历、温湿度、定时提醒和倒计时等功能为主的多功能电子产品。
它不仅具有简约时尚的外观设计,还集成了多种实用功能,方便人们的日常生活和办公使用。
下面将详细介绍如何正确使用宏创万年历。
一、时钟功能1.开机后,宏创万年历会显示当前时间,同时可以在屏幕上显示日期和星期几。
2.调整时间:按下“SET”键,进入时间调整模式,通过“HR”键和“MIN”键分别调整小时和分钟。
保存设置并退出时间调整模式,按下“SET”键再次即可。
3.设置日期:按下“SET”键进入日期调整模式,通过“YEAR”键、“MONTH”键和“DAY”键分别调整年、月和日。
保存设置并退出日期调整模式,按下“SET”键再次即可。
4.显示方式:按下“MODE”键可以切换时间显示方式,包括12小时制和24小时制。
5.时钟闹钟:按下“ALARM”键可以设置时钟闹钟,通过“HR”键和“MIN”键进行调整。
设置完成后,按下“ALARM”键即可启用或关闭闹钟功能。
二、日历功能1.宏创万年历可以显示当天的日期和星期几,并且支持查看其他日期的功能。
2.查看日历:按下“YEAR”键和“MONTH”键可以分别调整年和月,然后按下“DAY”键即可查看指定日期的日历。
3.查看节假日:在日历界面按下“HOLIDAY”键,即可查看当天是否是节假日。
三、温湿度功能1.宏创万年历可以实时显示当前室内的温度和湿度。
2.温度单位切换:按下“℃/℉”键可以切换温度显示单位。
3.温湿度报警:在温湿度界面按下“ALERT”键可以设置温度和湿度的报警阈值。
当超过设定阈值时,宏创万年历会发出声音和闪烁提示。
四、定时提醒功能1.宏创万年历可以设置定时提醒功能,用于提醒用户进行定时任务。
2.设置提醒:按下“TIMER”键,进入定时提醒设置模式。
通过“HR”键和“MIN”键设置提醒时间,按下“TIMER”键保存设置并退出设置模式。
3.提醒方式:在提醒时间到达时,宏创万年历会发出声音和闪烁提示。
基于日历时钟芯片DS1302的日历电子时钟
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
本设计为软件,硬件相结合的一组设计。
在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。
基本的要了解一些主要器件的基本功能和作用。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。
AT89C51是由ATMEL 公司推出的一种小型单片机。
95年出现在中国市场。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。
本文介绍了基于AT89C51单片机设计的电子万年历。
电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、PCB图、汇编语言)
摘要围绕电子钟系统的设计与开发工作进行研究和实践,详细介绍了电子钟系统的整体结构、硬件设计、软件设计,系统方案以及其的开发和具体实现。
介绍一种基于在系统可编程技术和C51编译器配有集成开发的新型电子钟的设计方法,阐述了其工作原理和软硬件设计。
在硬件上,用KEIL公司的C51大规模集成芯片对其外围电路进行集成,用1片8051实现了几十片分离元件才能实现的功能,几乎将整个系统下载于同一芯片中,实现了所谓的片上系统,从而大大简化了系统结构,增强了系统的可靠性和性价比。
该电子钟特别适用于家庭、办公大楼、公共场所等。
关键词电子钟;单片机;硬件设计;软件设计ABSTRACTAround the electronic clock system design and development of the study and practice, details the electronic clock system overall, hardware design, software design, system solutions as well as the development and implementation. Introduction of a new technology based on in-system programming and C51 compiler equipped with an integrated development of new electronic clock design method, explains how it works and software and hardware design. In the hardware companies with KEIL C51 large-scale integrated circuit chip on its surrounding, to integrate 1 tablet 8051 implementation of scores of tablets separation components to implement functionality, almost the entire system for download on the same chip, implementation of the so-called SOC, thereby greatly simplifies system structure, enhances system reliability and high performance/price ratio. The electronic clock is particularly relevant for home, office buildings and public place, etc.Key words electronic clock; single-chip; hardware; software design目录1 系统总体设计方案 (4)1.1 设计课题任务 (4)1.2 功能要求说明 (4)1.3 总体方案介绍及工作原理 (4)2 硬件系统的设计 (6)2.1 系统各功能模块介绍 (6)2.2 系统电路图 (7)2.3 系统元器件清单 (7)3 软件系统的设计 (8)3.1设计使用单片机资源介绍 (8)3.2 软件系统各功能模块介绍 (8)3.3 软件系统程序流程框图 (9)3.4 软件系统的程序 (10)4 系统的仿真分析及结论 (11)4.1 系统设计的使用说明 (11)4.2 系统设计的仿真结果 (11)4.3 系统的误差分析 (12)4.4 设计体会 (12)4.5 教学建议 (13)参考文献 (14)致谢 (15)附录(1) (16)附录(2) (17)1 系统总体设计方案1.1 设计课题任务设计一个具有特定功能的电子钟。
电子日历时钟课程设计
电子日历时钟 课程设计一、课程目标知识目标:1. 学生能够理解电子日历和时钟的基本概念,掌握其工作原理;2. 学生能够描述电子日历和时钟的组成部分及其功能;3. 学生能够运用所学知识分析电子日历和时钟的优缺点。
技能目标:1. 学生能够运用电子元件和编程软件设计简单的电子日历和时钟;2. 学生能够通过实际操作,掌握调试和优化电子日历和时钟的基本方法;3. 学生能够运用团队协作和沟通技巧,共同完成电子日历和时钟的制作。
情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,提高对科技创新的热情;2. 学生能够认识到电子日历和时钟在生活中的重要性,增强时间管理意识;3. 学生能够在团队协作中培养合作精神,尊重他人意见,提高解决问题的能力。
课程性质:本课程为实践性课程,结合理论知识与实际操作,培养学生的动手能力和创新能力。
学生特点:五年级学生对电子技术有一定的好奇心,具备基本的逻辑思维能力和动手能力,但需引导培养团队协作和沟通技巧。
教学要求:教师应注重理论与实践相结合,引导学生主动探究,关注学生个体差异,鼓励学生积极参与团队协作,提高教学效果。
通过本课程的学习,使学生达到预定的学习成果。
二、教学内容1. 电子日历和时钟的基本概念- 电子元件的认识(如LED、按钮、集成电路等)- 电子日历和时钟的组成及其功能2. 电子日历和时钟的工作原理- 时间计算方法- 硬件和软件的协同工作原理3. 电子日历和时钟的设计与制作- 设计思路与步骤- 编程软件的使用(如Arduino、Scratch等)- 电子元件的连接与调试4. 电子日历和时钟的优化与改进- 电路优化方法- 软件调试技巧- 功能拓展与创意设计5. 团队协作与沟通技巧- 项目分工与协作- 沟通表达与问题解决教学内容安排和进度:第一课时:电子元件的认识,电子日历和时钟的组成及其功能第二课时:电子日历和时钟的工作原理,时间计算方法第三课时:设计思路与步骤,编程软件的使用第四课时:电子元件的连接与调试,电路优化方法第五课时:软件调试技巧,功能拓展与创意设计第六课时:团队协作与沟通技巧,项目展示与评价教材章节关联:本教学内容与课本第四章“电子时钟与计时器”相关,涉及电子元件、电路设计、编程控制等方面的知识。
多功能电子万年历
用户可以根据自己的需求,调节闹 钟的音量大小,确保及时唤醒。
温度显示功能
01
02
03
温度传感器
多功能电子万年历内置温 度传感器,可以实时显示 室内温度,方便了解室内 环境温度情况。
温度单位切换
用户可以根据自己的需求 ,在摄氏度与华氏度之间 自由切换温度显示单位。
温度预警
根据用户设定的温度范围 ,多功能电子万年历可以 发出预警声音或提示信息 ,提醒您注意温度变化。
课外活动安排
多功能电子万年历可以记录学生 的课外活动安排,如社团活动、 义工活动等,方便学生合理安排 时间。
学习备忘录
多功能电子万年历可以作为学生 的学习备忘录,记录学习笔记、 心得体会等,方便学生随时回顾 和总结。
06
产品未来展望
技术创新方向
智能化升级
引入人工智能技术,实现万年历的语音交互 、智能推荐等功能,提升用户体验。
功能丰富
除了基本的日期和时 间显示外,还具备闹 钟、计算器、备忘录 等多种实用功能。
易于操作
配备触摸屏或按键操 作,简单易懂,方便 用户使用。
耐用性强
采用高品质材料制造 ,经久耐用,适合家 庭和办公场所使用。
产品的重要性
提高生活品质
多功能电子万年历可以提醒用 户重要日期和时间,避免错过
重要事件,提高生活品质。
计时的时间范围。
倒计时提醒
02
在倒计时结束之前,多功能电子万年历会发出提醒声音或提示
信息,避免错过重要时刻。
倒计时进度显示
03
多功能电子万年历会实时显示倒计时的剩余时间,让您可以随
时掌握时间进度。
03
产品使用说明
操作界面说明
时钟与日历知识点总结
时钟与日历知识点总结时钟与日历是我们日常生活中必不可少的工具,用于测量时间和记录日期。
了解时钟和日历的基本知识,对我们合理安排时间和把握日期至关重要。
本文将对时钟与日历的相关知识进行总结,以帮助读者更好地理解和运用这些工具。
一、时钟时钟是用于测量时间的仪器,可分为机械时钟和电子时钟两种类型。
1. 机械时钟机械时钟是通过机械装置来测量时间的,常见的有摆钟和挂钟。
其工作原理基于摆动的物理特性,通过齿轮传动、摆锤的作用和钟面上的指针来显示时间。
机械时钟通常需要定期上发条或更换电池以保持准确。
2. 电子时钟电子时钟是利用电子元器件来测量时间的,广泛应用于现代生活中。
常见的有数字时钟和指示灯时钟。
电子时钟的精确度通常更高,可以通过电池驱动或连接电源来使用。
二、日历日历是记录日期的工具,通常以一年为基本单位,包括月历和年历两种类型。
1. 月历月历是以一个月为周期的日期记录系统。
通常包括周日至周六七天,每个月的天数不同,有28、29、30或31天。
月历上标注了公历的日期、星期和节气,可以帮助人们了解和计算时间。
2. 年历年历是以一年为周期的日期记录系统。
通常包括12个月,每个月的天数不同。
年历上标注了公历的日期、星期和重要节日,可以帮助人们更好地安排活动和生活。
三、时区时区是为了统一全球范围内的时间标准而设置的,地球被划分为24个时区,分别对应地球上的不同地理区域。
各个时区的标准时间与世界协调时(UTC)存在一定的偏差。
通过划分时区,人们可以根据所在区域的时区设置来准确把握时间。
时钟与日历的相关知识对我们日常生活非常重要,它们帮助我们记录时间、安排日程并且不同国家间的时差也可以通过时钟与日历及时地计算出来。
了解时钟的不同类型和工作原理,以及掌握日历的使用方法,能够提高我们对时间的把控能力,更好地规划生活。
总而言之,时钟与日历是我们日常生活中必不可少的工具,通过良好的时间管理和日期安排,我们能够更高效地利用时间,提高工作和生活的质量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子时钟日历本实例基于51单片机为控制器,程序采用汇编语言编写。
时钟芯片使用串行通信的DS1302、温度测量采用一线式总线的数字温度传感器DL18B20、显示模块用的是深圳耀宇公司的YM12864R内带字库、NE555用于闹钟时间到时驱动轰鸣器发声。
按键用于时间和闹钟设置,进入或退出设置时需按住设置键3秒以上。
电路原理图如下:实物照片汇编源程序如下:E BIT P1.0 ;使能端脉冲下降沿锁存数据RW BIT P1.1 ;读写控制0写1读RS BIT P1.2 ;指令数据选择0指令1数据DQ BIT P3.3 ;DS18B20数据输出端SZ BIT P2.0 ;设置及退出键YW BIT P2.1 ;移位键UP BIT P2.2 ;加一键KAL BIT P2.3 ;闹钟消警键LEDKG BIT P2.4 ;LCD背光控制开关LED BIT P2.7 ;LCD背光灯SCLK BIT P3.0 ;时钟线IO BIT P3.1 ;数据线RST BIT P3.2 ;复位线FGAL4 BIT 20H.0 ;闹钟报警标志位FLAG1 BIT 20H.1 ;DS18B20复位成功标志位WCOMD EQU 21H ;存放需写入LCD 的指令WDATA EQU 22H ;存放需写入LCD 的数据TEMP_L EQU 23H ;从DS18B20中读出的温度值的低字节TEMP_H EQU 24H ;从DS18B20中读出的温度值的高字节TEMP EQU 25H ;温度值TEMPBUF EQU 26H ;温度转换过程中的暂存单元WDB EQU 27H ;温度显示的百位值WDS EQU 28H ;温度显示的十位值WDG EQU 29H ;温度显示的个位值XQS EQU 2AH ;星期值显示的十位值SECG EQU 2CH ;秒显示的个位值SECS EQU 2DH ;秒显示的十位值MING EQU 2EH ;分钟显示的个位值MINS EQU 2FH ;分钟十位HOUG EQU 30H ;小时个位HOUS EQU 31H ;小时十位DA TEG EQU 32H ;日个位DA TES EQU 33H ;日十位MONG EQU 34H ;月个位MONS EQU 35H ;月十位YERG EQU 36H ;年个位YERS EQU 37H ;年十位SHIF EQU 38H ;移位键值WDATD EQU 39H ;写DS1302的数据缓存XQ EQU 3AH ;设定星期值的缓存单元SEC EQU 3BH ;秒MIN EQU 3CH ;分HOU EQU 3DH ;时DA TE EQU 3EH ;日MON EQU 3FH ;月YER EQU 40H ;年ALMIN EQU 41H ;从DS1302RAM区中读出的闹钟分值(用于设定闹钟后的比较)ALHOU EQU 42H ;从DS1302RAM区中读出的闹钟时值(用于设定闹钟后的比较)FGAL EQU 43H ;闹钟设定标志单元,“00H”表示未设定闹钟,“FFH”表示闹钟已设定ALMING EQU 44H ;闹钟设定时用于显示的分钟个位ALMINS EQU 45H ;闹钟设定时用于显示的分钟十位ALHOUG EQU 46H ;闹钟设定时用于显示的小时个位ALHOUS EQU 47H ;闹钟设定时用于显示的小时十位LZG EQU 48H ;闹钟设定时用于显示的开或关字LZS EQU 49H ;闹钟设定时用于显示的开或关字DR0 EQU 4AH ;DR1 EQU 4BH ;用于定时子程序中的计数用DR2 EQU 4CH ;用于定时子程序中的计数用DR3 EQU 4DH ;用于一秒钟更新一次显示屏的显示DR4 EQU 4EH ;用于定时子程序中的计数用DRF EQU 4FH ;用于计数JSQ1 EQU 50H ;用于显示字符个数的计数ORG 0000HMAIN: MOV 7FH,#0CLR P3.7MOV R0,#20HCLR AM1: MOV @R0,ACJNE R0,#51H,M1MOV P2,#0FFHMOV WDATD,#0MOV A,#8EH ;写控制寄存器,允许对DS1302进行读写操作LCALL WDS1302 ;调DS1302写子程序;MOV A,#80H ;初始化DS1302时才用,即全新的或断电后无备用电源供电的情况下才用来启动DS1302工着;LCALL WDS1302MOV A,#90HMOV WDATD,#0ABHLCALL WDS1302;从此处开始的34行为初始化DS1302时才用,即全新的或断电后无备用电源供电的情况,否则DS1302内部寄存器的值将不确定;MOV XQ,#01H ;向DS1302内部初值不能为0的寄存器写入初值;MOV DATE,#01H;MOV MON,#01H;MOV YER,#10H;MOV WDA TD,XQ;MOV A,#8AH ;写星期;LCALL WDS1302;MOV WDA TD,MIN;MOV A,#82H ;写分;LCALL WDS1302;MOV WDA TD,HOU;MOV A,#84H ;写时;LCALL WDS1302;MOV WDA TD,DA TE;MOV A,#86H ;写日;LCALL WDS1302;MOV WDA TD,MON;MOV A,#88H ;写月;LCALL WDS1302;MOV WDA TD,YER;MOV A,#8CH ;写年;LCALL WDS1302;MOV WDA TD,SEC;MOV A,#80H ;写秒;LCALL WDS1302;MOV WDA TD,ALMIN;MOV A,#0C0H ;写DS1302RAM 00H单元;LCALL WDS1302;MOV WDA TD,ALHOU;MOV A,#0C2H ;写DS1302RAM 01H单元;LCALL WDS1302;MOV WDA TD,FGAL;MOV A,#0C4H ;写DS1302RAM 02H单元;LCALL WDS1302LCALL INITLCDLCALL RDS1302MOV DR3,A ;用于存放前一次的秒钟值以便于每秒钟更新一次LCD显示M2: LCALL DATADIS ;调读DS1302时间数据子程序LCALL SDATA ;调显示数据处理子程序LCALL LCDDISP ;LCD显示更新子程序LCALL DS18B20TM ;“读温度子程序”LCALL KEY ;调按键处理子程序JB LEDKG,M7 ;判断LCD背光开关是否按下LCALL TIM10MSJB LEDKG,M7JNB LEDKG,$ ;按下背光开或关CPL LEDM7: JB FGAL4,M3LCALL ALCMP ;调定时比较子程序SJMP M2M3: JB KAL,M4LCALL TIM10MSJB KAL,M4JNB KAL,$CLR P3.7 ;关闭闹铃M4: MOV A,ALMIN ;若无人按下消警键,则将闹钟设定的小时值加一分钟后与实际分钟值比较,相等后消警;MOV A,ALHOU ;若无人按下消警键,则将闹钟设定的小时值加一小时后与实际小时值比较,相等后消警;ADD A,#1;DA A;CJNE A,#24H,M5;MOV A,#00H;M5: CJNE A,HOU,M6INC ADA ACJNE A,#60H,M5MOV A,#00HM5: CJNE A,MIN,M6CLR FGAL4CLR P3.7M6: LJMP M2;LCD忙标志检测子程序;占用P0口为数据端口BUSF: CLR ECLR RSSETB RWMOV P0,#0FFHNOPSETB ENOPNOPJB P0.7,$CLR ERET;向LCD写数据子程序WDATALCD: LCALL BUSFSETB RSCLR RWMOV P0,WDATANOPNOPSETB ENOPNOPCLR ENOPNOPRET;向LCD写指令子程序WCOMDLCD: LCALL BUSFCLR RSCLR RWMOV P0,WCOMDNOPNOPSETB ENOPNOPCLR ENOPNOPRET;LCD初始化子程序INITLCD: MOV WCOMD,#30H ;使用基本指令集,8位模式LCALL WCOMDLCD ;调向LCD写指令子程序MOV WCOMD,#02H ;位址计数器AC归零MOV WCOMD,#0CH ;显示开.光标关.光标位反白关LCALL WCOMDLCDMOV WCOMD,#01H ;清屏,显示地址计数器AC归零LCALL WCOMDLCDMOV WCOMD,#06H ;写入显示数据时光标右移LCALL WCOMDLCDRET;闹钟比较子程序ALCMP: MOV A,FGAL ;先判断闹钟功能是否开启,若未开启则不进行闹钟比较CJNE A,#0FFH,CP1MOV A,MINCJNE A,ALMIN,CP1MOV A,HOUCJNE A,ALHOU,CP1SETB P3.7SETB FGAL4CP1: RET;写DS1302;WDA TD为待写入数据缓存;DRF用于计数WDS1302: CLR RSTCLR SCLKSETB RSTCLR CMOV DRF,#8WLOOP1: RRC ACLR SCLKMOV IO,CNOPSETB SCLKDJNZ DRF,WLOOP1CLR SCLKMOV A,WDA TDMOV DRF,#8CLR CWLOOP2: RRC ACLR SCLKNOPMOV IO,CNOPSETB SCLKDJNZ DRF,WLOOP2CLR RSTRET;读2DS1302;DRF用于计数RDS1302: CLR RSTCLR SCLKSETB RSTCLR CMOV DRF,#8RLOOP1: RRC AMOV IO,CNOPSETB SCLKCLR SCLKDJNZ DRF,RLOOP1SETB IOMOV DRF,#8CLR CRLOOP2: CLR SCLKMOV C,IONOPRRC ASETB SCLKDJNZ DRF,RLOOP2CLR RSTRET;DS1302数据读取及处理子程序(用于显示)DA TADIS: MOV A,#8BH ;读出DS1302中须显示的单元LCALL RDS1302MOV XQ,AMOV A,#81HLCALL RDS1302MOV SEC,AMOV B,AANL A,#0FHMOV SECG,AMOV A,BSWAP AANL A,#0FHMOV SECS,AMOV A,#83HLCALL RDS1302MOV B,AMOV MIN,AMOV MING,AMOV A,BSWAP AANL A,#0FHMOV MINS,AMOV A,#85HLCALL RDS1302MOV B,AMOV HOU,AANL A,#0FHMOV HOUG,AMOV A,BSWAP AANL A,#0FHMOV HOUS,AMOV A,#87HLCALL RDS1302MOV DATE,AMOV B,AANL A,#0FHMOV DATEG,AMOV A,BSWAP AANL A,#03HMOV DATES,AMOV A,#89HLCALL RDS1302MOV MON,AMOV B,AANL A,#0FHMOV MONG,AMOV A,BSWAP AANL A,#01HMOV MONS,AMOV A,#8DHLCALL RDS1302MOV YER,AMOV B,AANL A,#0FHMOV YERG,AMOV A,BSWAP AANL A,#0FHMOV YERS,AMOV A,#0C1H ;读DS1302RAM 00H单元LCALL RDS1302MOV B,AANL A,#0FHMOV ALMING,AMOV A,BSWAP AANL A,#0FHMOV ALMINS,AMOV A,#0C3H ;读DS1302RAM 01H单元LCALL RDS1302MOV ALHOU,AMOV B,AANL A,#0FHMOV ALHOUG,AMOV A,BSWAP AANL A,#0FHMOV ALHOUS,AMOV A,#0C5H ;读DS1302RAM 02H单元LCALL RDS1302MOV FGAL,A ;判断闹钟功能是否开启,将对应的汉字代码写入显示缓存中CJNE A,#00H,D1MOV LZS,#0B9HMOV LZG,#0D8HSJMP D2D1: CJNE A,#0FFH,D2MOV LZS,#0BFHMOV LZG,#0AAHD2: RET;将显示内容查表,转换成LCD内部所对应的字库码SDATA: MOV A,XQCJNE A,#1,S2MOV XQS,#0D2H ;星期一MOV XQG,#0BBH;SJMP S8S2: CJNE A,#2,S3MOV XQS,#0B6HMOV XQG,#0FEHS3: CJNE A,#3,S4MOV XQS,#0C8HMOV XQG,#0FDHS4: CJNE A,#4,S5MOV XQS,#0CBHMOV XQG,#0C4HMOV XQS,#0CEHMOV XQG,#0E5HS6: CJNE A,#6,S7MOV XQS,#0C1HMOV XQG,#0F9HS7: CJNE A,#7,S8MOV XQS,#0C8HMOV XQG,#0D5HS8: MOV DPTR,#TABL2 ;LCD显示代码表MOV A,MINGMOVC A,@A+DPTRMOV MING,AMOV A,MINSMOVC A,@A+DPTRMOV MINS,AMOV A,HOUGMOVC A,@A+DPTRMOV HOUG,AMOV A,HOUSMOVC A,@A+DPTRMOV HOUS,AMOV A,DATEGMOVC A,@A+DPTRMOV DATEG,AMOV A,DATESMOVC A,@A+DPTRMOV DATES,AMOV A,MONGMOVC A,@A+DPTRMOV MONG,AMOV A,MONSMOVC A,@A+DPTRMOV MONS,AMOV A,YERGMOVC A,@A+DPTRMOV YERG,AMOV A,YERSMOVC A,@A+DPTRMOV YERS,AMOV A,SECGMOVC A,@A+DPTRMOV SECG,AMOV A,SECSMOVC A,@A+DPTRMOV SECS,AMOV A,ALMINGMOVC A,@A+DPTRMOV ALMING,AMOV A,ALMINSMOVC A,@A+DPTRMOV ALMINS,AMOV A,ALHOUGMOVC A,@A+DPTRMOV ALHOUG,AMOV A,ALHOUSMOVC A,@A+DPTRMOV ALHOUS,AMOV A,WDGMOVC A,@A+DPTRMOV WDG,AMOV A,WDSMOVC A,@A+DPTRMOV WDS,ARET;LCD显示更新子程序LCDDISP: MOV A,DR3CJNE A,SEC,DISP1RETDISP1: MOV DR3,SECMOV WCOMD,#81H ;从左上第一行第二字节处开始显示LCALL WCOMDLCDMOV WDATA,#32H ;2LCALL WDATALCDMOV WDATA,#30H ;0LCALL WDATALCDMOV WDATA,YERS ;年LCALL WDATALCDMOV WDATA,YERGLCALL WDATALCDMOV WDATA,#0C4H ;年字的汉字字模LCALL WDATALCDMOV WDATA,#0EAHLCALL WDATALCDMOV WDATA,MONS ;月LCALL WDATALCDMOV WDATA,MONGLCALL WDATALCDMOV WDATA,#0D4H ;月字的汉字字模LCALL WDATALCDMOV WDATA,#0C2HLCALL WDATALCDMOV WDATA,DATESLCALL WDATALCDMOV WDATA,#0C8H ;日字的汉字字模LCALL WDATALCDMOV WDATA,#0D5HLCALL WDATALCDMOV WCOMD,#92HLCALL WCOMDLCDMOV WDATA,HOUSLCALL WDATALCDMOV WDATA,HOUGLCALL WDATALCDMOV WDATA,#3AHLCALL WDATALCDMOV WDATA,#20HLCALL WDATALCDMOV WDATA,MINSLCALL WDATALCDMOV WDATA,MINGLCALL WDATALCDMOV WDATA,#3AHLCALL WDATALCDMOV WDATA,#20HLCALL WDATALCDMOV WDATA,SECSLCALL WDATALCDMOV WDATA,SECGLCALL WDATALCDMOV WCOMD,#88HLCALL WCOMDLCDMOV WDATA,#0D0H ;星LCALL WDATALCDMOV WDATA,#0C7HLCALL WDATALCDMOV WDATA,#0C6H ;期LCALL WDATALCDMOV WDATA,#0DAHLCALL WDATALCDMOV WDATA,XQSLCALL WDATALCDMOV WDATA,XQGLCALL WDATALCDMOV WCOMD,#8CHLCALL WCOMDLCDMOV WDATA,#0CEH ;温LCALL WDATALCDMOV WDATA,#0C2HLCALL WDATALCDMOV WDATA,#0C8H ;度LCALL WDATALCDMOV WDATA,WDS ;温度的十位LCALL WDATALCDMOV WDATA,WDGLCALL WDATALCDMOV WDATA,#0A1H ;CLCALL WDATALCDMOV WDATA,#0E6HLCALL WDATALCDMOV WCOMD,#98HLCALL WCOMDLCDMOV WDATA,#0C4H ;闹LCALL WDATALCDMOV WDATA,#0D6HLCALL WDATALCDMOV WDATA,#0D6H ;钟LCALL WDATALCDMOV WDATA,#0D3HLCALL WDATALCDMOV WDATA,LZSLCALL WDATALCDMOV WDATA,LZGLCALL WDATALCDMOV WCOMD,#9CHLCALL WCOMDLCDMOV WDATA,ALHOUSLCALL WDATALCDMOV WDATA,ALHOUGLCALL WDATALCDMOV WDATA,#3AHLCALL WDATALCDMOV WDATA,#20HLCALL WDATALCDMOV WDATA,ALMINSLCALL WDATALCDMOV WDATA,ALMINGLCALL WDATALCDMOV WDATA,#20HLCALL WDATALCDMOV WDATA,#20HLCALL WDATALCDRET;向DS1302写设定数据SWDS: MOV WDA TD,XQMOV A,#8AH ;写星期LCALL WDS1302MOV WDATD,MINMOV A,#82H ;写分LCALL WDS1302MOV WDATD,HOUMOV A,#84H ;写时LCALL WDS1302MOV WDATD,DATEMOV A,#86H ;写日LCALL WDS1302MOV WDATD,MONMOV A,#88H ;写月LCALL WDS1302MOV WDATD,YERMOV A,#8CH ;写年LCALL WDS1302MOV WDATD,SECMOV A,#80H ;写秒LCALL WDS1302MOV WDATD,ALMINMOV A,#0C0H ;写DS1302RAM 00H单元LCALL WDS1302MOV WDATD,ALHOUMOV A,#0C2H ;写DS1302RAM 01H单元LCALL WDS1302MOV WDATD,FGALMOV A,#0C4H ;写DS1302RAM 02H单元LCALL WDS1302RET;按键处理子程序KEY: JB SZ,KOUTLCALL TIM1SJB SZ,KOUTMOV SHIF,#0MOV WCOMD,#0FH ;开光标,且光标位闪烁LCALL WCOMDLCD ;调写LCD指令子程序MOV DPTR,#TABL1MOV A,SHIFMOVC A,@A+DPTR ;查表后取出需显示的光标位MOV WCOMD,ALCALL WCOMDLCDJNB SZ,$KSZ: JB SZ,KYW ;若再按下设置键则退出设置功能LCALL TIM1SJB SZ,KYWLCALL SWDSMOV WCOMD,#0CH ;关光标LCALL WCOMDLCDMOV SHIF,#0MOV DR3,SECJNB SZ,$KOUT: RETKYW: JB YW,KUPLCALL TIM10MSJB YW,KUPJNB YW,$INC SHIFMOV A,SHIFCJNE A,#10,KYW1MOV SHIF,#0KYW1: MOV DPTR,#TABL1MOV A,SHIFMOVC A,@A+DPTRMOV WCOMD,ALCALL WCOMDLCDSJMP KSZKUP: JB UP,KSZLCALL TIM10MSJB UP,KSZJNB UP,$MOV R3,SHIFCJNE R3,#0,KUP1LJMP KYERKUP1: CJNE R3,#1,KUP2LJMP KMONKUP2: CJNE R3,#2,KUP3LJMP KDATEKUP3: CJNE R3,#3,KUP4LJMP KHOUKUP4: CJNE R3,#4,KUP5LJMP KMINKUP5: CJNE R3,#5,KUP6LJMP KSECKUP6: CJNE R3,#6,KUP7LJMP KXQKUP7: CJNE R3,#7,KUP8LJMP KFGALKUP8: CJNE R3,#8,KUP9LJMP KALHOUKUP9: CJNE R3,#9,KUPALJMP KALMINKUPA: LJMP KSZKYER: MOV A,YERINC ADA AMOV YER,AANL A,#0FHMOV DPTR,#TABL2MOVC A,@A+DPTRMOV YERG,AMOV A,YERSWAP AANL A,#0FHMOVC A,@A+DPTRMOV YERS,AMOV WDATA,YERSLCALL WDATALCDMOV WDATA,YERGLCALL WDATALCDMOV WCOMD,#82H ;用于将光标反回原位LCALL WCOMDLCDLJMP KSZKMON: MOV A,MONINC ADA AMOV MON,ACJNE A,#13H,K1MOV MON,#01HK1: MOV A,MONANL A,#0FHMOV DPTR,#TABL2MOVC A,@A+DPTRMOV MONG,AMOV A,MONSWAP AANL A,#0FHMOVC A,@A+DPTRMOV MONS,AMOV WDATA,MONSLCALL WDATALCDMOV WDATA,MONGLCALL WDATALCDMOV WCOMD,#84HLCALL WCOMDLCDLJMP KSZKDATE: MOV A,DATE INC ADA AMOV DATE,ACJNE A,#32H,K2 MOV DATE,#01HK2: MOV A,DATE ANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV DATEG,AMOV A,DATESWAP AANL A,#0FHMOVC A,@A+DPTR MOV DATES,AMOV WDATA,DATES LCALL WDATALCD MOV WDATA,DATEG LCALL WDATALCD MOV WCOMD,#86H LCALL WCOMDLCD LJMP KSZKHOU: MOV A,HOU INC ADA AMOV HOU,ACJNE A,#24H,K3 MOV HOU,#00HK3: MOV A,HOU ANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV HOUG,AMOV A,HOUSWAP AANL A,#0FHMOVC A,@A+DPTR MOV HOUS,AMOV WDATA,HOUS LCALL WDATALCD MOV WDATA,HOUG LCALL WDATALCD MOV WCOMD,#92H LCALL WCOMDLCD LJMP KSZKMIN: MOV A,MININC ADA AMOV MIN,ACJNE A,#60H,K4 MOV MIN,#00HK4: MOV A,MIN ANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV MING,AMOV A,MINSWAP AANL A,#0FHMOVC A,@A+DPTR MOV MINS,AMOV WDATA,MINS LCALL WDATALCD MOV WDATA,MING LCALL WDATALCD MOV WCOMD,#94H LCALL WCOMDLCD LJMP KSZKSEC: MOV A,SEC INC ADA AMOV SEC,ACJNE A,#60H,K5 MOV SEC,#00HK5: MOV A,SEC ANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV SECG,AMOV A,SECSWAP AANL A,#0FHMOVC A,@A+DPTR MOV SECS,AMOV WDATA,SECS LCALL WDATALCD MOV WDATA,SECG LCALL WDATALCD MOV WCOMD,#96H LCALL WCOMDLCD LJMP KSZKXQ: MOV A,XQ INC AMOV XQ,ACJNE A,#8,KXQ1MOV XQ,#1KXQ1: MOV A,XQCJNE A,#1,KXQ2MOV XQS,#0D2HMOV XQG,#0BBHLJMP KXQ9KXQ2: CJNE A,#2,KXQ3MOV XQS,#0B6HMOV XQG,#0FEHLJMP KXQ9KXQ3: CJNE A,#3,KXQ4MOV XQS,#0C8HMOV XQG,#0FDHLJMP KXQ9KXQ4: CJNE A,#4,KXQ5MOV XQS,#0CBHMOV XQG,#0C4HLJMP KXQ9KXQ5: CJNE A,#5,KXQ6MOV XQS,#0CEHMOV XQG,#0E5HLJMP KXQ9KXQ6: CJNE A,#6,KXQ7MOV XQS,#0C1HMOV XQG,#0F9HLJMP KXQ9KXQ7: CJNE A,#7,KXQ9MOV XQS,#0C8HMOV XQG,#0D5HKXQ9: MOV WDA TA,XQS LCALL WDATALCDMOV WDATA,XQGLCALL WDATALCDMOV WCOMD,#8AHLCALL WCOMDLCDLJMP KSZKFGAL: MOV A,FGALCPL AMOV FGAL,ACJNE A,#0,KFGAL1MOV LZS,#0B9HMOV LZG,#0D8HSJMP KFGAL2KFGAL1: CJNE A,#0FFH,KFGAL2 MOV LZS,#0BFHMOV LZG,#0AAHKFGAL2: MOV WDA TA,LZSLCALL WDATALCD MOV WCOMD,#9AH LCALL WCOMDLCD LJMP KSZKALHOU: MOV A,ALHOU INC ADA AMOV ALHOU,ACJNE A,#24H,K6MOV ALHOU,#00HK6: MOV A,ALHOUANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV ALHOUG,AMOV A,ALHOUSWAP AANL A,#0FHMOVC A,@A+DPTR MOV ALHOUS,AMOV WDATA,ALHOUS LCALL WDATALCD MOV WDATA,ALHOUG LCALL WDATALCD MOV WCOMD,#9CH LCALL WCOMDLCD LJMP KSZKALMIN: MOV A,ALMIN INC ADA AMOV ALMIN,ACJNE A,#60H,K7MOV ALMIN,#00HK7: MOV A,ALMINANL A,#0FHMOV DPTR,#TABL2 MOVC A,@A+DPTR MOV ALMING,AMOV A,ALMINSWAP AANL A,#0FHMOVC A,@A+DPTR MOV ALMINS,AMOV WDATA,ALMINS LCALL WDATALCD MOV WDATA,ALMINGLCALL WCOMDLCDLJMP KSZ;10豪秒延时子程序TIM10MS: MOV DR1,#10TD1: MOV DR2,#250TD2: NOPNOPDJNZ DR2,TD2DJNZ DR1,TD1RET;1秒延时子程序TIM1S: MOV R5,#1TD3: MOV R6,#100TD4: LCALL TIM10MSDJNZ R6,TD4DJNZ R5,TD3RET;LCD显示地址表TABL1: DB 82H,84H,86H,92H,94H,96H,8AH,9AH,9CH,9EH;LCD显示代码表TABL2: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H;“读温度子程序”DS18B20TM: LCALL STA18B20 ;调“DS18B20初始复位子程序”MOV A,#0CCHLCALL W18B20MOV A,#44HLCALL W18B20LCALL STA18B20MOV A,#0CCHLCALL W18B20MOV A,#0BEHLCALL W18B20LCALL R18B20LCALL TEMPCONVRET;“DS18B20初始复位子程序”STA18B20: SETB DQNOPNOPCLR DQLCALL T500USSETB DQNOPMOV DR4,#37STA1: JNB DQ,STA2DJNZ DR4,STA1JMP STA3STA2: SETB FLAG1JMP STA4STA3: CLR FLAG1JMP STA5STA4: MOV DR4,#100DJNZ DR4,$STA5: SETB DQRET;“写DS18B20子程序”W18B20: MOV DR1,#8CLR CYWR1: CLR DQMOV R7,#9DJNZ R7,$RRC AMOV DQ,CMOV R7,#23DJNZ R7,$SETB DQNOPDJNZ DR1,WR1SETB DQRET;“读DS18B20子程序”R18B20: MOV DR2,#2MOV R1,#TEMP_LRD1: MOV DR1,#8CLR ARD2: CLR CSETB DQNOPNOPCLR DQNOPNOPNOPSETB DQMOV R7,#9DJNZ R7,$MOV C,DQMOV R7,#23DJNZ R7,$RRC ADJNZ DR1,RD2MOV @R1,AINC R1DJNZ DR2,RD1RET;“温度转换子程序”;读出温度高字节的低四位与低字节的高四位组合成一个字节即可得到温度的整数值TEMPCONV: MOV A,TEMP_LANL A,#0F0HSWAP AMOV TEMPBUF,AMOV A,TEMP_HANL A,#0FHSWAP AORL A,TEMPBUFMOV TEMP,AMOV B,#100DIV ABMOV WDB,AMOV A,#10XCH A,BDIV ABMOV WDS,AMOV WDG,BRET;500微秒延时子程序T500US: MOV R4,#250DJNZ R4,$RETEND。