电子万年历原理图

合集下载

带温度显示的万年历_数码管显示(附电路图和源代码)

带温度显示的万年历_数码管显示(附电路图和源代码)

设计报告设计任务:设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。

并能准确计算闰年闰月的显示。

设计要求:通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示:图3 仿真按键4)温度采集部分:DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。

独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示:程序如下:ReadOneChar(void){unsigned char i=0;// 定义i用于循环unsigned char dat = 0;// 读取的8位数据for (i=8;i>0;i--)//8次循环{DQ = 0;// 拉低DQ总线开始读时序dat>>=1;// dat左移一位DQ = 1; //释放DQ总线if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据)//DQ=0,就跳过dat|=0x80;Tdelay(4);// 延时以完成此次读时序,之后再读下一数据}return(dat); 返回读取的dat}//写一个字节WriteOneChar(unsigned char dat){unsigned char i=0;//for (i=8; i>0; i--)//{DQ = 0;//DQ = dat&0x01;//Tdelay(5);//延时以完成此次读时序,之后再读下一数据DQ = 1;//dat>>=1;//}}//读取温度ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;//Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0x44);// 启动温度转换Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0xBE);// 写指令,读暂存存储器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;//t<<=8;//t=t|a;//tt=t*0.0625;//t= tt*10+0.5;//return(t); //获得0.01°C 的精度并返回}LED数码管的选择LED数码管分为共阴和共阳两种,以利用STC89C51的P0口作为LED显示的数据部分,以P2口的七个口作为显示部分的位选,通过三八译码器和4-16译码器扩展为17位的位选分别接在一个四位数码管和13个数码管的位选部分。

液晶显示万年历(汇编程序+原理图)

液晶显示万年历(汇编程序+原理图)

TEMPER_L EQU 40H;用于保存读出温度的高8位TEMPER_H EQU 41H;用于保存读出温度的低8位FLAG1 EQU 42H;是否检测到DS18B20标志位a_bit equ 43h ;数码管个位数存放内存位置b_bit equ 44h ;数码管十位数存放内存位置T_RST Bit P3.6 ;实时时钟复位线引脚T_CLK Bit P3.4 ;实时时钟时钟线引脚T_IO Bit P3.5 ;实时时钟数据线引脚SECOND EQU 45HMINUTE EQU 46HHOUR EQU 47HDAY EQU 48HMONTH EQU 49HWEEK EQU 4AHYEARL EQU 4BHCSA EQU p2.4CSB EQU p2.3rs EQU P2.2rw EQU P2.1E EQU P2.0COM EQU 21HDAT EQU 22Hcolumn EQU 23Hpagef EQU 24hcpage EQU 25Hccolumn EQU 26Hcodes EQU 27hcolumn2 EQU 28Hpagef2 equ 29hcpage2 EQU 2aHccolumn2 EQU 2bHcolumn3 EQU 2eHpagef3 equ 2fhcpage3 EQU 30Hccolumn3 EQU 31Hcolumn4 EQU 32Hpagef4 equ 33hcpage4 EQU 34Hccolumn4 EQU 35Hcolumn5 EQU 36Hpagef5 equ 37hcpage5 EQU 38Hccolumn5 EQU 39HORG 0LJMP STARTORG 3LJMP XX0ORG 13HLJMP XX1;*********************************************主程序开始START: MOV TMOD,#01HMOV TH0,#03CH ;置定时器初值(定时50ms)MOV TL0,#0B0HSETB TR0 ;启动定时器0MOV SP,#60H ;修改堆栈LCALL INT ;调用初始化子程序LCALL CLEAR ;调用清屏子程序;*********************************************固定显示字符mov column3,#48mov pagef3,#0mov codes,#8 ;年lcall writeleft2mov column4,#16mov pagef4,#0mov codes,#9 ;;;;;月lcall writeright2mov column4,#48mov pagef4,#0 ;;;;;;日mov codes,#10lcall writeright2mov column3,#0mov pagef3,#2 ;;;星mov codes,#11lcall writeleft2mov column3,#16mov pagef3,#2 ;;;;;;期mov codes,#12lcall writeleft2mov column4,#0mov pagef4,#2 ;;;;;; :mov codes,#13lcall writeright2mov column4,#32mov pagef4,#2mov codes,#13 ;;;;;; :lcall writeright2mov column4,#48mov pagef4,#4mov codes,#15 ;;;;;;;度lcall writeright2mov column,#16mov pagef,#0mov codes,#2 ;;;;;;;2lcall writeleftmov column,#24mov pagef,#0mov codes,#0 ;;;;;0lcall writeleftmov column4,#0mov pagef4,#4mov codes,#17 ;;;;;;;; 日lcall writeright2;************************** 笨小孩制作,860822lcall a26lcall a27lcall a28lcall a29lcall a30lcall a31lcall a32lcall a33lcall a34lcall a35lcall a36;*************************************************固定显示字符结束MOV DAY,#01H ;初始日期设为08年1月1日星期一MOV MONTH,#01HMOV YEARL,#08HLCALL SETDS1302 ;设置DS1302初始时间LCALL GET1302 ;从DS1302读取时间LCALL DISPLAY ;数码显示子程序MOV R3,#4 ;循环20次到一秒SETB EASETB EX0setb IT0SETB EX1SETB IT1LP1: JNB P3.1 ,QQ0 ;当p3.1口为低电平时跳过读取时间子程序lJMP QQ2QQ0: MOV TH0,#03CHMOV TL0,#0B0HSETB TR0MOV 93H,#0LCALL NIU ;将调整后的时间放入时分秒星期年月日寄存器中LCALL SETDS1302 ;设置DS1302初始时间LCALL GET1302 ;从DS1302读取时间LCALL DISPLAY ;用12864显示QQ2: JBC TF0,QQ1lJMP LP1QQ1: MOV TH0,#03CHMOV TL0,#0B0HLCALL GET1302 ;每过50Ms从DS1302读取一次时间LCALL DISPLAY;************************************节日控制程序开始,所有公历节日都能显示MOV A,49HCJNE A,#01H,ZZ0MOV A,48HCJNE A,#01H,VV0MOV 71H,#19LCALL A8MOV 70H,#18LCALL A7MOV 92H,#210LCALL A40MOV 91H,#210LCALL A41LJMP QQQVV0:CJNE A,#15H,SS0MOV 70H,#20LCALL A7MOV 71H,#21 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQSS0:LCALL HAHA LJMP QQQZZ0:CJNE A,#02H,ZZ1 MOV A,48HCJNE A,#14H,vv4 MOV 70H,#22 LCALL A7MOV 71H,#23 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQvv4:CJNE A,#02H,vv5 MOV 70H,#53 LCALL A7MOV 71H,#54 LCALL A8MOV 92H,#55 LCALL A40MOV 91H,#56 LCALL A41LJMP QQQvv5:CJNE A,#10H,SS99 MOV 70H,#41 LCALL A7MOV 71H,#57 LCALL A8MOV 92H,#58 LCALL A40MOV 91H,#59 LCALL A41LJMP QQQSS99:LCALL HAHA LJMP QQQYOU0:LJMP ZZ2ZZ1:CJNE A,#03H,YOU0 MOV A,48HCJNE A,#08H,VV6 MOV 70H,#24 LCALL A7MOV 71H,#25 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV6:CJNE A,#01H,VV7 MOV 70H,#41 LCALL A7MOV 71H,#57 LCALL A8MOV 92H,#60 LCALL A40MOV 91H,#61 LCALL A41LJMP QQQVV7:CJNE A,#03H,VV8 MOV 70H,#62 LCALL A7MOV 71H,#41 LCALL A8MOV 92H,#63 LCALL A40MOV 91H,#64 LCALL A41LJMP QQQVV8:CJNE A,#05H,VV9 MOV 70H,#65 LCALL A7MOV 71H,#66 LCALL A8MOV 92H,#67 LCALL A40MOV 91H,#68 LCALL A41LJMP QQQVV9:CJNE A,#12H,VV10LCALL A7MOV 71H,#70LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV10:CJNE A,#14H,VV11 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#71LCALL A40MOV 91H,#72LCALL A41LJMP QQQVV11:CJNE A,#15H,VV12 MOV 70H,#73LCALL A7MOV 71H,#74LCALL A8MOV 92H,#75LCALL A40MOV 91H,#76LCALL A41LJMP QQQVV12:CJNE A,#17H,VV13 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#77LCALL A40MOV 91H,#60LCALL A41LJMP QQQVV13:CJNE A,#21H,VV14 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#79LCALL A41LJMP QQQVV14:CJNE A,#22H,VV15 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#80LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV15:CJNE A,#23H,VV16 MOV 70H,#81LCALL A7MOV 71H,#82LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV16:CJNE A,#24H,VV17 MOV 70H,#83LCALL A7MOV 71H,#84LCALL A8MOV 92H,#85LCALL A40MOV 91H,#86LCALL A41LJMP QQQVV17:CJNE A,#25H,SS1 MOV 70H,#87LCALL A7MOV 71H,#62LCALL A8MOV 92H,#39LCALL A40MOV 91H,#88LCALL A41SS1:LCALL HAHA LJMP QQQYOU1:LJMP ZZ3ZZ2:CJNE A,#04H,YOU1 MOV A,48HCJNE A,#01H,VV1 MOV 70H,#26LCALL A7MOV 71H,#27LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV1:CJNE A,#04H,VV18 MOV 70H,#28LCALL A7MOV 71H,#29LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV18:CJNE A,#07H,VV19 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#89LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV19:CJNE A,#22H,VV20 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#56LCALL A40MOV 91H,#91LJMP QQQVV20:CJNE A,#23H,SS2 MOV 70H,#92 LCALL A7MOV 71H,#93 LCALL A8MOV 92H,#94 LCALL A40MOV 91H,#75 LCALL A41LJMP QQQSS2:LCALL HAHA LJMP QQQYOU2:LJMP ZZ4ZZ3:CJNE A,#05H,YOU2 MOV A,48HCJNE A,#01H,VV2 MOV 70H,#30 LCALL A7MOV 71H,#31 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV2:CJNE A,#04H,VV3 MOV 70H,#32 LCALL A7MOV 71H,#33 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV3:CJNE A,#11H,VV21 MOV 70H,#34 LCALL A7MOV 71H,#35 LCALL A8MOV 92H,#210 LCALL A40LCALL A41LJMP QQQVV21:CJNE A,#05H,VV22 MOV 70H,#95LCALL A7MOV 71H,#96LCALL A8MOV 92H,#83LCALL A40MOV 91H,#204 LCALL A41LJMP QQQVV22:CJNE A,#08H,VV23 MOV 70H,#97LCALL A7MOV 71H,#98LCALL A8MOV 92H,#99LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV23:CJNE A,#12H,VV24 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#100 LCALL A40MOV 91H,#101 LCALL A41LJMP QQQVV24:CJNE A,#15H,VV25 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#102 LCALL A40MOV 91H,#103 LCALL A41LJMP QQQVV25:CJNE A,#17H,VV26LCALL A7MOV 71H,#57LCALL A8MOV 92H,#119 LCALL A40MOV 91H,#120 LCALL A41LJMP QQQVV26:CJNE A,#18H,VV27 MOV 70H,#62LCALL A7MOV 71H,#41LCALL A8MOV 92H,#121 LCALL A40MOV 91H,#122 LCALL A41LJMP QQQVV27:CJNE A,#20H,VV28 MOV 70H,#123 LCALL A7MOV 71H,#90LCALL A8MOV 92H,#124 LCALL A40MOV 91H,#125 LCALL A41LJMP QQQVV28:CJNE A,#23H,VV29 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#126 LCALL A40MOV 91H,#127 LCALL A41LJMP QQQVV29:CJNE A,#31H,ss3 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#129 LCALL A41LJMP QQQSS3:LCALL HAHA LJMP QQQYOU3:LJMP ZZ10ZZ4:CJNE A,#06H,YOU3 MOV A,48HCJNE A,#15H,VV30 MOV 70H,#36LCALL A7MOV 71H,#35LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV30:CJNE A,#01H,VV31 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#131 LCALL A40MOV 91H,#132 LCALL A41LJMP QQQVV31:CJNE A,#17H,VV32 MOV 70H,#83LCALL A7MOV 71H,#204 LCALL A8MOV 92H,#133 LCALL A40MOV 91H,#134 LCALL A41LJMP QQQVV32:CJNE A,#23H,VV33 MOV 70H,#135 LCALL A7MOV 71H,#79LCALL A8MOV 92H,#136 LCALL A40MOV 91H,#137 LCALL A41LJMP QQQVV33:CJNE A,#25H,VV34 MOV 70H,#62LCALL A7MOV 71H,#41LCALL A8MOV 92H,#138 LCALL A40MOV 91H,#56LCALL A41LJMP QQQVV34:CJNE A,#26H,SS4 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#139 LCALL A40MOV 91H,#140 LCALL A41LJMP QQQSS4:LCALL HAHA LJMP QQQYOU4:LJMP ZZ5ZZ10:CJNE A,#07H,YOU4 MOV A,48HCJNE A,#01H,VV35 MOV 70H,#141 LCALL A7MOV 71H,#142 LCALL A8MOV 92H,#106 LCALL A40MOV 91H,#107 LCALL A41LJMP QQQVV35:CJNE A,#02H,VV36 MOV 70H,#143 LCALL A7MOV 71H,#88LCALL A8MOV 92H,#144 LCALL A40MOV 91H,#145 LCALL A41LJMP QQQVV36:CJNE A,#07H,VV37 MOV 70H,#146 LCALL A7MOV 71H,#147 LCALL A8MOV 92H,#67LCALL A40MOV 91H,#68LCALL A41LJMP QQQVV37:CJNE A,#11H,VV38 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#23LCALL A40MOV 91H,#148 LCALL A41LJMP QQQVV38:CJNE A,#30H,SS10 MOV 70H,#149 LCALL A7MOV 71H,#150 LCALL A8MOV 92H,#24LCALL A40MOV 91H,#25LCALL A41LJMP QQQSS10:LCALL HAHA LJMP QQQYOU5:LJMP ZZ6ZZ5:CJNE A,#08H,YOU5 MOV A,48HCJNE A,#01H,VV39 MOV 70H,#37LCALL A7MOV 71H,#38LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV39:CJNE A,#08H,VV40 MOV 70H,#153 LCALL A7MOV 71H,#153 LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV40:CJNE A,#15H,SS5 MOV 70H,#146 LCALL A7MOV 71H,#147 LCALL A8MOV 92H,#154 LCALL A40MOV 91H,#155 LCALL A41LJMP QQQSS5:LCALL HAHA LJMP QQQYOU6:LJMP ZZ7ZZ6:CJNE A,#09H,YOU6 MOV A,48HCJNE A,#10H,VV41 MOV 70H,#39LCALL A7MOV 71H,#40LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV41:CJNE A,#08H,VV42LCALL A7MOV 71H,#57LCALL A8MOV 92H,#109 LCALL A40MOV 91H,#110 LCALL A41LJMP QQQVV42:CJNE A,#16H,VV43 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#111 LCALL A40MOV 91H,#112 LCALL A41LJMP QQQVV43:CJNE A,#20H,VV44 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#63LCALL A40MOV 91H,#113 LCALL A41LJMP QQQVV44:CJNE A,#27H,VV45 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#114 LCALL A40MOV 91H,#115 LCALL A41LJMP QQQVV45:CJNE A,#28H,vv75 MOV 70H,#116 LCALL A7MOV 71H,#117 LCALL A8LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV75:CJNE A,#18H,ss6 LCALL A42LCALL A43LCALL A44LCALL A45MOV 92H,#205 LCALL A40MOV 91H,#199 LCALL A41LJMP QQQSS6:LCALL HAHA LJMP QQQYOU7:LJMP ZZ8ZZ7:CJNE A,#10H,YOU7 MOV A,48HCJNE A,#01H,VV46 MOV 70H,#41LCALL A7MOV 71H,#42LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV46:CJNE A,#04H,VV47 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#31LCALL A40MOV 91H,#118 LCALL A41LJMP QQQVV47:CJNE A,#06H,VV48 MOV 70H,#156 LCALL A7MOV 71H,#23MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV48:CJNE A,#08H,VV49 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#157 LCALL A40MOV 91H,#158 LCALL A41LJMP QQQVV49:CJNE A,#09H,VV50 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#159 LCALL A40MOV 91H,#160 LCALL A41LJMP QQQVV50:CJNE A,#10H,VV51 MOV 70H,#161 LCALL A7MOV 71H,#162 LCALL A8MOV 92H,#163 LCALL A40MOV 91H,#164 LCALL A41LJMP QQQVV51:CJNE A,#13H,VV52 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#165 LCALL A40MOV 91H,#166LJMP QQQVV52:CJNE A,#14H,VV53 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#167 LCALL A40MOV 91H,#168 LCALL A41LJMP QQQVV53:CJNE A,#15H,VV54 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#110 LCALL A40MOV 91H,#23LCALL A41LJMP QQQVV54:CJNE A,#16H,VV55 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#169 LCALL A40MOV 91H,#170 LCALL A41LJMP QQQVV55:CJNE A,#17H,VV56 MOV 70H,#73LCALL A7MOV 71H,#171 LCALL A8MOV 92H,#172 LCALL A40MOV 91H,#173 LCALL A41LJMP QQQVV56:CJNE A,#22H,VV57 MOV 70H,#174LCALL A7MOV 71H,#175 LCALL A8MOV 92H,#176 LCALL A40MOV 91H,#177 LCALL A41LJMP QQQVV57:CJNE A,#24H,VV58 MOV 70H,#178 LCALL A7MOV 71H,#179 LCALL A8MOV 92H,#41LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV58:CJNE A,#31H,SS7 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#180 LCALL A40MOV 91H,#181 LCALL A41LJMP QQQSS7:LCALL HAHA LJMP QQQYOU8:LJMP ZZ9ZZ8:CJNE A,#11H,YOU8 MOV A,48HCJNE A,#27H,VV59 MOV 70H,#43LCALL A7MOV 71H,#44LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV59:CJNE A,#08H,VV60LCALL A7MOV 71H,#41LCALL A8MOV 92H,#144 LCALL A40MOV 91H,#145 LCALL A41LJMP QQQVV60:CJNE A,#09H,VV61 MOV 70H,#73LCALL A7MOV 71H,#83LCALL A8MOV 92H,#87LCALL A40MOV 91H,#62LCALL A41LJMP QQQVV61:CJNE A,#10H,VV62 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#32LCALL A40MOV 91H,#8LCALL A41LJMP QQQVV62:CJNE A,#14H,VV63 MOV 70H,#183 LCALL A7MOV 71H,#184 LCALL A8MOV 92H,#86LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV63:CJNE A,#17H,VV64 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8LCALL A40MOV 91H,#90LCALL A41LJMP QQQVV64:CJNE A,#20H,SS8 MOV 70H,#185 LCALL A7MOV 71H,#186 LCALL A8MOV 92H,#8LCALL A40MOV 91H,#210 LCALL A41LJMP QQQSS8:LCALL HAHA LJMP QQQYOU9:LJMP SS9ZZ9:CJNE A,#12H,YOU9 MOV A,48HCJNE A,#25H,VV65 MOV 70H,#45LCALL A7MOV 71H,#46LCALL A8MOV 92H,#210 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV65:CJNE A,#01H,VV66 MOV 70H,#191 LCALL A7MOV 71H,#192 LCALL A8MOV 92H,#86LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV66:CJNE A,#03H,VV67 MOV 70H,#122 LCALL A7MOV 71H,#193MOV 92H,#23LCALL A40MOV 91H,#210 LCALL A41LJMP QQQVV67:CJNE A,#08H,VV68 MOV 70H,#131 LCALL A7MOV 71H,#132 LCALL A8MOV 92H,#194 LCALL A40MOV 91H,#157 LCALL A41LJMP QQQVV68:CJNE A,#09H,VV69 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#196 LCALL A40MOV 91H,#91LCALL A41LJMP QQQVV69:CJNE A,#10H,VV70 MOV 70H,#53LCALL A7MOV 71H,#54LCALL A8MOV 92H,#23LCALL A40MOV 91H,#197 LCALL A41LJMP QQQVV70:CJNE A,#12H,VV71 MOV 70H,#198 LCALL A7MOV 71H,#87LCALL A8MOV 92H,#205 LCALL A40MOV 91H,#199LJMP QQQVV71:CJNE A,#13H,VV72 MOV 70H,#200 LCALL A7MOV 71H,#201 LCALL A8MOV 92H,#202 LCALL A40MOV 91H,#203 LCALL A41LJMP QQQVV72:CJNE A,#20H,VV73 MOV 70H,#104 LCALL A7MOV 71H,#105 LCALL A8MOV 92H,#106 LCALL A40MOV 91H,#107 LCALL A41LJMP QQQVV73:CJNE A,#21H,VV74 MOV 70H,#41LCALL A7MOV 71H,#57LCALL A8MOV 92H,#108 LCALL A40MOV 91H,#91LCALL A41LJMP QQQVV74:CJNE A,#24H,ss9 MOV 70H,#151 LCALL A7MOV 71H,#87LCALL A8MOV 92H,#152 LCALL A40MOV 91H,#210 LCALL A41LJMP QQQri1:ljmp lp1ss9:LCALL HAHA;******************************************节日设置结束QQQ: DJNZ R3,SS100 ;未到1 S继续循环LCALL GET_TEMPER ;每过1s从DS18B20读取一次温度mov R3,#4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;整点闹铃1分钟同时在最左上角显示铃铛符号,合上闹铃开关可以提前关掉闹铃MOV A,46HCJNE A,#0,SS100LCALL NAOLCALL NAOLCALL NAOLCALL NAOLCALL NAOmov column3,#0mov pagef3,#0mov codes,#206 ;开闹铃符号lcall writeleft2SS100:MOV A,45HCJNE A,#59H,RI1mov column3,#0mov pagef3,#0mov codes,#210 ;关闹铃符号lcall writeleft2LJMP lp1;************************主程序结束,子程序开始HAHA:MOV 70H,#151LCALL A7MOV 71H,#52LCALL A8MOV 92H,#210LCALL A40MOV 91H,#210LCALL A41RETNIU:MOV A,51HSWAP AADD A,50HMOV 45H,Amov a,53hswap aadd a,52hmov 46h,amov a,55hadd a,54hmov 47h,amov a,57hswap aadd a,56hmov 48h,amov a,59hswap aadd a,58hmov 49h,amov a,5dhswap aadd a,5chmov 4bh,amov 4ah,5ahRET;********************************************中断0开始xx0:PUSH ACCclr tr0MOV A,93HCJNE A,#0,ZD0000 ;秒低位inc 50hLCALL A13mov A,50HCJNE A,#10,KK0MOV 50H,#0kk0:POP ACCRETIZD0000:CJNE A,#1,ZD001 ;秒高位inc 51hlcall a14MOV A,51HCJNE A,#10,KK1MOV 51H,#0kk1:POP ACCRETIZD001:CJNE A,#2,ZD002 ;分低位INC 52Hlcall a15MOV A,52HCJNE A,#10,KK3MOV 52H,#0kk3:POP ACCZD002:CJNE A,#3,ZD003 ;分高位INC 53Hlcall a16MOV A,53HCJNE A,#10,KK4MOV 53H,#0inc 52hkk4:POP ACCRETIzd003:CJNE A,#4,ZD004 ;时低位INC 54Hlcall a17MOV A,54HCJNE A,#10,KK5MOV 54H,#0kk5:POP ACCRETIZD004:CJNE A,#5,ZD005 ;时高位INC 55Hlcall a18MOV A,55HCJNE A,#9,KK6MOV 55H,#0kk6:POP ACCRETIZD005:CJNE A,#6,ZD006 ;星期INC 5aHlcall a19MOV A,5aHCJNE A,#7,KK7MOV 5aH,#0kk7:POP ACCRETIZD006:CJNE A,#7,ZD007 ;日低位INC 56Hlcall a20MOV A,56HCJNE A,#10,KK8MOV 56H,#0kk8:POP ACCRETIZD007:CJNE A,#8,ZD008 ;日高位INC 57Hlcall a21MOV A,57HCJNE A,#10,KK9MOV 57H,#0kk9:POP ACCRETIZD008:CJNE A,#9,ZD009 ;月低位INC 58Hlcall a22MOV A,58HCJNE A,#10,KK10MOV 58H,#0kk10:POP ACCRETIZD009:CJNE A,#10,ZD0010 ;月高位INC 59Hlcall a23MOV A,59HCJNE A,#10,KK11MOV 59H,#0kk11:POP ACCRETIZD0010:CJNE A,#11,ZD0011 ;年低位INC 5cHlcall a24MOV A,5cHCJNE A,#10,KK12MOV 5cH,#0kk12:POP ACCRETIZD0011:INC 5dHlcall a25 ;年高位MOV A,5dHCJNE A,#10,KK13MOV 5dH,#0kk13:POP ACCRETI;******************************************************中断1开始XX1:PUSH ACCINC 93HMOV A,02HCJNE A,#13,ZD10MOV 93H,#0ZD10:pop accreti;温度显示子程序------------------------------------------------------------------------------- INIT_1820: SETB P3.7CLR P3.7MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P3.7MOV R0,#25HTSR2: JNB P3.7,TSR3DJNZ R0,TSR2LJMP TSR4TSR3: SETB FLAG1LJMP TSR5TSR4: CLR FLAG1LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6TSR7: SETB P3.7RETGET_TEMPER: SETB P3.7LCALL INIT_1820JB FLAG1,TSS2RETTSS2: MOV A,#0CCHLCALL WRITE_1820MOV A,#44HLCALL WRITE_1820LCALL DISPLAY1LCALL INIT_1820MOV A,#0CCHLCALL WRITE_1820MOV A,#0BEHLCALL WRITE_1820LCALL READ_18200RETWRITE_1820: MOV R2,#8CLR CWR1: CLR P3.7MOV R3,#6DJNZ R3,$RRC AMOV P3.7,CDJNZ R3,$SETB P3.7NOPDJNZ R2,WR1SETB P3.7RETREAD_18200: MOV R5,#2 MOV R1,#41hRE00: MOV R2,#8RE01: CLR CSETB P3.7CLR P3.7SETB P3.7MOV R3,#7RE10: DJNZ R3,RE10MOV C,P3.7MOV R3,#23RE20: DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R5,RE00RETDISPLAY1:MOV A,40HJB ACC.7,ZF1mov column4,#16mov pagef4,#4mov codes,#250lcall writeright2ljmp zhijieZF1:mov column4,#16mov pagef4,#4mov codes,#16 ;;;;;;;;- lcall writeright2mov a,40hcpl amov dph,amov a,41hcpl amov dpl,ainc dptrmov 40h,dphzhijie:MOV A,40HSWAP AANL A,#0F0HMOV 40H,AMOV A,41HSWAP AANL A,#0FHADD A,40HMOV 41H,AMOV B,#10DIV ABMOV b_bit,AMOV a_bit,Bmov column2,#32mov pagef2,#4mov codes,b_bit ;;;;;;;;;十位lcall writerightmov column2,#40mov pagef2,#4mov codes,a_bit ;;;;;;;个位lcall writerightRET;--------------------------------------------------------------------------------------------------- ;数码显示子程序DISPLAY:;*******************************************;显示秒MOV A,SECONDANL A,#0FHMOV 50H,ALCALL A13MOV A,SECONDSWAP AANL A,#07HMOV 51H,ALCALL A14;*******************************************;显示分MOV A,MINUTEANL A,#0FHMOV 52H,ALCALL A15MOV A,MINUTESWAP AANL A,#07HMOV 53H,ALCALL A16;******************************************* ;显示小时MOV A,HOURANL A,#0FHMOV 54H,ALCALL A17MOV A,HOURSWAP AANL A,#03HMOV 55H,ALCALL A18;显示星期MOV A,WEEKMOV 5AH,ALCALL A19;显示日MOV A,DAYANL A,#0FHMOV 56H,ALCALL A20MOV A,DAYSWAP AANL A,#03HMOV 57H,ALCALL A21;显示月MOV A,MONTHANL A,#0FHMOV 58H,ALCALL A22MOV A,MONTHSWAP AANL A,#03HMOV 59H,ALCALL A23;显示年MOV A,YEARLANL A,#0FHMOV 5CH,ALCALL A24MOV A,YEARLSWAP AANL A,#0FHMOV 5DH,ALCALL A25RET;--------------------------------------------------------------------------------------------------- ;设置DS1302初始时间,并启动计时SETDS1302:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,#8EH ;写控制命令字LCALL INPUTBYTEMOV B,#00H ;写保护关闭LCALL INPUTBYTESETB T_CLKnopCLR T_RSTMOV R0,#SECOND ;内存中的时间首地址MOV R1,#80H ;DS1302中的时间首地址MOV R7,#7 ;字节数SETLOOP:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,R1 ;写命令字LCALL INPUTBYTEMOV A,@R0 ;设置时间MOV B,ALCALL INPUTBYTEINC R0INC R1INC R1SETB T_CLKnopCLR T_RSTnopDJNZ R7,SETLOOPCLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,#8EHLCALL INPUTBYTEMOV B,#80H ;开写保护LCALL INPUTBYTESETB T_CLKnopCLR T_RSTnopRET;---------------------------------------------------------------------------------------------------;从DS1302读取时间GET1302:MOV R0,#SECONDMOV R1,#81H ;DS1302中读时间的首地址MOV R7,#7GETLOOP:CLR T_RSTnopCLR T_CLKnopSETB T_RSTnopMOV B,R1LCALL INPUTBYTE ;写命令字LCALL OUTPUTBYTE ;读时间MOV @R0,A ;将从DS1302中读取的时间从内存中保存INC R0 ;修改地址指针INC R1INC R1SETB T_CLKnopCLR T_RSTnopDJNZ R7,GETLOOPRET;---------------------------------------------------------------------------------------------------;向DS1302写一个字节MOV R4,#8INPUTLOOP:MOV A,BRRC AMOV B,AMOV T_IO,CSETB T_CLKNOP;NOP;NOPCLR T_CLKDJNZ R4,INPUTLOOPRET;--------------------------------------------------------------------------------------------------- ;从DS1302读一个字节OUTPUTBYTE:clr aclr cMOV R4,#8OUTPUTLOOP:NOPMOV C,T_IORRC ASETB T_CLKNOPCLR T_CLKDJNZ R4,OUTPUTLOOPRETwriteleft2: ; 左半屏写入16*16汉字子程序mov dptr,#table2push column3mov cpage3,#2mov ccolumn3,#0mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0mov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alp3:mov a,#00hmovc a,@a+dptrmov dat,alcall prm1inc ccolumn3mov a,ccolumn3inc dptrcjne a,#16,lp3dec cpage3inc pagef3mov a,cpage3jz over3mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0pop column3mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn3,#0ljmp lp3over3:retwriteright2: ; 右半屏写入16*16汉字子程序mov dptr,#table2push column4mov cpage4,#2mov ccolumn4,#0mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0anl a,#3fhorl a,#40hmov com,alcall prr0mov a,codesmov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alp4:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn4mov a,ccolumn4inc dptrcjne a,#16,lp4dec cpage4inc pagef4mov a,cpage4jz over4mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0pop column4mov a,column4anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn4,#0ljmp lp4over4:retwriteleft: ; 左半屏写入8*16数字子程序mov dptr,#table1push columnmov cpage,#2mov ccolumn,#0anl a,#07horl a,#0b8hmov com,alcall prm0mov a,columnanl a,#3fhorl a,#40hmov com,alcall prm0mov a,codesmov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alOOp1:mov a,#00h movc a,@a+dptr mov dat,alcall prm1inc ccolumnmov a,ccolumn inc dptrcjne a,#8,lOOp1 dec cpageinc pagefmov a,cpagejz over1mov a,pagefanl a,#07horl a,#0b8hmov com,alcall prm0pop columnmov a,columnanl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn,#0 ljmp lOOp1over1:retwriteright: ; 右半屏写入8*16数字子程序mov dptr,#table1push column2mov cpage2,#2mov ccolumn2,#0mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0mov a,codesmov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,alOOp2:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn2mov a,ccolumn2inc dptrcjne a,#8,lOOp2dec cpage2inc pagef2mov a,cpage2jz over2mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0pop column2mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn2,#0ljmp lOOp2over2:retPRM0:CLR CSA ;写指令代码子程序(左) SETB CSBCLR rsSETB rwPRM01:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRM01CLR rwMOV P0,COMSETB ECLR ERETPRM1:CLR CSA ;写显示数据子程序(左) SETB CSBCLR rsSETB rwPRM11:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRM11SETB rsCLR rwMOV P0,DATSETB ECLR ERETPRR0:CLR CSB ;写指令代码子程序(右) SETB CSACLR rsSETB rwPRR01:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRR01CLR rwMOV P0,COMSETB ECLR ERETPRR1:CLR CSB ;写显示数据子程序(右)SETB CSACLR rsSETB rwPRR11:MOV P0,#0FFHSETB EMOV A,P0CLR EJB ACC.7,PRR11SETB rsCLR rwMOV P0,DATSETB ECLR ERETINT:MOV COM,#0C0H ;初始化子程序,设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RETCLEAR:MOV R4,#00H ;清屏子程序CLEAR1:MOV A,R4ORL A,#0B8HMOV COM,ALCALL PRM0LCALL PRR0MOV COM,#40HLCALL PRM0LCALL PRR0MOV R3,#40HCLEAR2:MOV DAT,#00HLCALL PRM1LCALL PRR1DJNZ R3,CLEAR2INC R4CJNE R4,#08H,CLEAR1RET;***********************************************节日子程序A7:mov column3,#0mov pagef3,#4mov codes,70Hlcall writeleft2RETA8:mov column3,#16mov pagef3,#4mov codes,71Hlcall writeleft2RETA40:mov column3,#32mov pagef3,#4mov codes,92Hlcall writeleft2RETA41:mov column3,#48mov pagef3,#4mov codes,91Hlcall writeleft2RETA42:mov column,#0mov pagef,#4mov codes,#9 ;;;;;;;9lcall writeleftRETA43:mov column3,#8mov pagef3,#4mov codes,#207 ;;;;;.lcall writeleft2RETA44:mov column,#16mov pagef,#4mov codes,#1 ;;;;;;;1lcall writeleftRETA45:mov column,#24mov pagef,#4mov codes,#8 ;;;;;8lcall writeleftRET;********************************************************** A13:mov column2,#56。

自己制作的单片机万年历程序+原理图

自己制作的单片机万年历程序+原理图

自己制作的单片机万年历程序+原理图单片机万年历仿真原理图如下仿真Altium Designer画的万年历原理图和PCB图如下:PCB原理图基于51单片机,可以完成时钟显示、公历显示、农历显示、温度显示、闹钟报警定时的LCD时钟PPT内容预览:本设计使用AT89C51来做主控芯片,其强大的功能足够实现我们设计的所有功能。

使用LCD1602的液晶显示器来进行显示。

使用Keil uVision5进行编程。

通过Proteus8.6来进行仿真。

点击一次K1进入时钟设置页面,通过点击K2切换时、秒、分、星期、年、月、日,通过K3与K4实现加减来完成时钟的设置点击两次K1进入闹钟设置页面,通过点击K2切换开关、时、秒、分,通过K3与K4实现加减完成闹钟的设置。

单片机源程序如下注释是很全的#include //调用单片机头文件#define uchar unsigned char //无符号字符型宏定义变量范围0~255#define uint unsigned int //无符号整型宏定义变量范围0~65535#include "eeprom52.h"#include "nongli.h"#include "intrins.h"bit flag_200ms ;bit flag_100ms ;sbit beep = P3^7; //蜂鸣器定义bit flag_beep_en;uint clock_value; //用作闹钟用的sbit dq = P3^1; //18b20 IO口的定义uint temperature ; //温度变量uchar flag_nl; //农历阳历显示标志位uchar menu_1,menu_2;uchar key_time,flag_value; //用做连加的中间变量bit key_500ms ;uchar n_nian,n_yue,n_ri; //农历显示的函数#include "ds1302.h"#include "lcd1602.h"/******************把数据保存到单片机内部eeprom中******************/void write_eeprom(){SectorErase(0x2000);byte_write(0x2000, fen1);byte_write(0x2001, shi1);byte_write(0x2002, open1);byte_write(0x2058, a_a);}/******************把数据从单片机内部eeprom中读出来*****************/void read_eeprom(){fen1 = byte_read(0x2000);shi1 = byte_read(0x2001);open1 = byte_read(0x2002);a_a = byte_read(0x2058);}/**************开机自检eeprom初始化*****************/void init_eeprom(){read_eeprom(); //先读if(a_a != 1) //新的单片机初始单片机内问eeprom{fen1 = 3;shi1 = 8;a_a = 1;write_eeprom(); //保存数据}}/***********************18b20初始化函数*****************************/void init_18b20(){bit q;dq = 1; //把总线拿高delay_uint(1); //15usdq = 0; //给复位脉冲delay_uint(80); //750usdq = 1; //把总线拿高等待delay_uint(10); //110usq = dq; //读取18b20初始化信号delay_uint(20); //200usdq = 1; //把总线拿高释放总线}/*************写18b20内的数据***************/void write_18b20(uchar dat){uchar i;for(i=0;i<8;i++){ //写数据是低位开始dq = 0; //把总线拿低写时间隙开始dq = dat & 0x01; //向18b20总线写数据了delay_uint(5); // 60usdq = 1; //释放总线}}/*************读取18b20内的数据***************/uchar read_18b20(){uchar i,value;for(i=0;i<8;i++){dq = 0; //把总线拿低读时间隙开始value >>= 1; //读数据是低位开始dq = 1; //释放总线if(dq == 1) //开始读写数据value |= 0x80;delay_uint(5); //60us 读一个时间隙最少要保持60us 的时间}return value; //返回数据}/*************读取温度的值读出来的是小数***************/uint read_temp(){uint value;uchar low; //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0x44); //启动一次温度转换命令delay_uint(50); //500usinit_18b20(); //初始化18b20write_18b20(0xcc); //跳过64位ROMwrite_18b20(0xbe); //发出读取暂存器命令EA = 0;low = read_18b20(); //读温度低字节value = read_18b20(); //读温度高字节EA = 1;value <<= 8; //把温度的高位左移8位value |= low; //把读出的温度低位放到value的低八位中value *= 0.625; //转换到温度值小数return value; //返回读出的温度带小数}/******************1ms 延时函数*******************/void delay_1ms(uint q){uint i,j;for(i=0;i<>< p=""><>for(j=0;j<120;j++);}/******************写星期函数*******************/void write_week(uchar hang,uchar add,uchar week)//写星期函数{if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);。

智能时钟万年历(详细电路图)

智能时钟万年历(详细电路图)

《嵌入式课程设计》讲义项目1 智能数字万年历一.项目指标分析项目指标要求如下:1. 显示年、月、日、时、分、秒和星期。

2. 实时显示温度。

3. 可手动调整时间。

4. 采用LCD显示。

基于以上要求,核心控制芯片选用STC89C51;时钟芯片选用DS1302;温度传感器选用DS18B20;液晶屏选用LCD1602;设置按键,以便于调整时间。

二.电路原理系统电路功能图如图1所示:图1 智能数字万年历电路功能图由图1可知,P2口控制LCD的数据端;P3.5、P3.6和P3.7控制着LCD的片选、读/写和寄存器选择信号;可调电阻RP2用于调节屏的显示对比度。

P3.4是温度传感器DS18B20的1-wire接口,即片选、时钟和数据信号均由P3.4口控制。

P0.5、P0.6和P0.7是时钟芯片DS1302的SPI接口,为使信号控制更稳定,这三个接口上都上拉了10KΩ电阻;为获得精准的时钟信号,选用频率为32.768KHz的外部晶振对DS1302提供振荡信号。

P0.0-P0.3控制着四个按键,以便于调整时间。

三.程序设计基于这个项目,程序的设计可分成各芯片驱动程序设计和控制算法程序两部分。

1.各芯片的驱动程序设计在写驱动程序时,首先通读芯片手册,以掌握主要技术指标;然后可按照以下3个步骤进行:(1)分清楚各芯片的通信属于哪种接口方式,例如:时钟芯片DS1302按照SPI 接口进行通信;温度传感器DS18B20按照1-wire接口进行通信;液晶屏LCD1602采用常规的并行数据传输方式。

(2)仔细分析芯片时序图,弄清楚片选信号是高电平有效还是低电平有效;数据是在时钟信号的上升沿还是下降沿时打入;数据前还是时钟前等。

(3)将功能程序函数化、驱动程序模块化。

2.控制算法程序设计这里的算法主要集中在如何设置按键识别程序,即便于调整时间,又不影响液晶屏的显示。

这里,提供两种思想以便参考。

(1)循环扫描方式流程图图2 循环扫描方式流程图(2图3 状态机方式流程图将图2和图3比较起来看,两种方式的最大差别在于“10ms消抖时间如何度过?”。

51单片机电子万年历设计电路图及程序

51单片机电子万年历设计电路图及程序

51单片机电子万年历设计电路图及程序(总37页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。

在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。

在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。

在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。

万年历的设计过程在硬件与软件方面进行同步设计。

硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。

在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。

显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。

7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。

为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。

74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。

软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。

程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。

毕业设计---基于单片机的多功能电子万年历的设计

毕业设计---基于单片机的多功能电子万年历的设计

基于单片机的多功能电子万年历的设计摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。

本系统的硬件部分主要由A VR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。

关键词:单片机;液晶技术;万年历;时钟芯片Design of Multifunctional digital Perpetual Calendar Based on MCUAbstractWith the development of technology,Since the concept of the sun, Baizhong, andnow the electronic bell,human beings continue to study and constant innovation record。

This paper-based Microcontroller Development of Intelligent electronic calendar, The calendar can display real-time in the calendar year, month, day, hours, minutes and seconds,a nd the correspond ing date of the Lunar New Year, 24 Solar Terms,at the same time also to real-time measurement from the ambient temperature,In addition to the user through the keyboard input years of history,for the correspond ing period of the Lunar.The system hardware from some of the major A VR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design and implementation of hardware and related circuit;Software contains some of the major Lunar calendar to the algorithm design module,dynamic digital display modules,time to read,temperature detection module,Press enter the scanning module.In this paper, the system software modules and flow chart of the list of software programs,Finally, the realization of the overall system design, simulation and debugging process, the next step is the improvement programmes.Keywords:MCU;crystal technology;Calendar;Clock chip目录引言 (1)第1章绪论 (2)1.1课题的背景与意义 (2)1.2 数字万年历的现状与发展 (2)1.3 论文的主要工作及章节安排 (3)1.4 本章小结 (3)第2章方案论证比较.............................................................................. (4)2.1 多功能数字万年历系统概述 (4)2.2计时方案 (4)2.3温度检测方案 (5)2.4显示方案 (5)2.5本章小结 (5)第3章系统硬件设计 (6)3.1 主控制器ATmega16 单片机介绍 (6)3.2 时钟电路DS1302 (6)3.3 温度检测DS18B20 (7)3.4 动态显示 (8)3.5 键盘接口 (8)3.6 语音闹铃模块 (8)3.7 电源设计 (9)3.8本章小结 (11)第4章系统软件设计 (12)4.1 公历计算显示程序设计 (13)4.1.1 DS1302 内部寄存器 (13)4.1.2 时间读取程序设计 (15)4.2 农历转换程序设计 (16)4.2.1 公历转农历算法研究 (16)4.2.2 干支纪年简介 (18)4.2.3 公历转农历程序 (18)4.3 温度测量程序设计 (20)4.3.1 DS18B20 的测温原理 (20)4.3.2 温度程序 (21)4.4 二十四节气算法研究 (23)4.5系统仿真 (24)4.6本章小结 (25)结论与展望 (26)致谢 (27)参考文献 (28)附录 A 电子万年历原理图 (29)附录 B 外文文献与译文 (30)英文原文: (30)中文译文: (33)附录 C 参考文献题录及摘要 (35)附录 D 电子万年历源程序 (37)插图清单图2-1 数字万年历系统框图 (4)图3-1 DS1302与ATmega16连接图 (7)图3-2 DS18B20与AtMEGA16连接图 (8)图3-3 报时电路 (9)图3-4 稳压电源原理图 (10)图3-5 电源电路 (10)图4-1 系统程序流程图 (13)图4-2 公历程序流程图 (14)图4-3 DS18B20测温原理 (21)表格清单表3-1 LCD12864显示内容 (8)表4-1 DS1302的寄存器及其控制字 (14)表4-2 RS位配置 (15)引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时间。

TG2518万年历原理图

TG2518万年历原理图

A B C D E F G
A B C D E F G
A B C D E F G
A B C D E F G
A B C D E F G
A B C D E F G
A B C D E F G
LED11 LED12 LED13
A F G E C E B F
A B G C E F
A B G C E F
A B G C E F
TG2518基本+生肖+星座原理图
深圳市南方泰科软件技术有限公司 XBW20050702
A
OUT
A P1 2 1 AC9V
C6 47 0u
C7 10 4
C8 47 0u
注意: 1. 此图适合1英寸以下的数码管,如有1.2英寸数码管以上的原理图要做调整。 2. P24接30K电阻到地,上电初始显示12小时制;否则为24小时制。 3. R10为10K的热敏电阻,B值为3550;R9为10K精密电阻,其精度为1%。 4. P16接30K电阻到地,星期为7个LED显示,不用数码管U19,有和弦,无中文报时。 5. P19接30K电阻到地,为越南版,星期为数码管显示2—8,不用7个LED,有和弦,无中文报时。 6. P19和P16各接30K电阻到地,为俄文版,星期为数码管显示1—7,不用7个LED,有和弦,无中文报时。 7. 如果用5V供电,喇叭应接到5V上。 8. 如果不要流水鸟叫功能,此原理图也适合经济型的TG2488芯片。
1
2 VCC
3
4
5
6
7
8
IC2 SER
VC C
VCC
P1 2 P1 1
14 11 10
16
O0 O1 O2 O3 O4 O5 O6 O7

多功能电子万年历PPT课件

多功能电子万年历PPT课件
温度
5
硬件设计
单片机最小系统有单片 机、时钟电路、复位电 路组成,时钟电路选用 了12MHZ的晶振提供时 钟,作用为给单片机提 供一个时间基准,其中 执行一条基本指令需要 的时间为一个机器周期, 单片机的复位电路,按 下复位按键之后可以使 单片机进入刚上电的起 始状态。
6
V P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7 5 + 阻 123456789 排 K 10 P1 V 5 + V P2.7P2.6P2.5P2.4P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7 5 + 12345678901234567890 22222222233333333334 A EC E LC P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 AV PSEN 21 LL AA 机 TT 片 P1.0P1.1P1.2P1.3P1.4P1.5/MOSIP1.6/MISOP1.7/SCKRESETP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7XXVSS 1 U单 12345678901234567890 11111111112 EO / P1.0P1.1P1.2P3.2P3.5CISCLK F u 2 0 K 2 1C 0 1R FF V 12 pp 5 1 00 + Y33 12MHZ 2 34 SSW-PB CC
而电子万年历作为电子类小设计不仅是市场上的宠儿, 也是是单片机实验中一个很常用的设计。数字显示的日历 钟已经越来越流行,特别是适合在家庭居室、办公室、大 厅、会议室、车站和广场等使用,壁挂式LED数码管显示 的日历钟逐渐受到人们的欢迎。LCD数字显示的日历钟显 示清晰直观、走时准确、可以进行夜视,并且还可以扩展 出多种功能。

电子万年历的设计制作

电子万年历的设计制作

电子万年历1.1 功能要求电子万年历能显示阳历年、月、日、星期、[小]时、分、秒和阴历月、日、温度、节假日,在显示阴历时间时,能标明是否为闰年。

2.1方案论证按照系统设计功能的要求,初步确定设计系统由主控模块、显示模块、键盘接口模块共4个模块组成。

主控芯片使用51系列STC89C52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。

采用DS1302作为主要计时芯片,可以做到计时准确。

更重要的是,DS1302可以在很小电流的后备电源(2.5~~5.5v电源,在 2.5v时耗电小于300nA)下继续计时,并可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。

图3.1 电子万年历电路系统构成框图显示模块采用12864液晶屏,键输入采用查询法实现调整功能。

系统由主控制器STC89C52、时钟芯片DS1302、串口显示电路及键扫描电路组成。

2.2 主控制器STC89C52台湾宏晶公司生产的STC89(:52单片机采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash 程序存储器。

它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。

主要性能特点有:·8 KB Flash ROM,可以擦除1 000次以上,数据保存10年。

·256字节内部RAM。

·电源控制模式——时钟可停止和恢复;——空闲模式;——掉电模式。

·6个中断源。

·4个中断优先级。

·4个8位I/O口。

·全双工增强型UART。

·3个16位定时/计数器,TO、T1(标准80C51)和增加的T2(捕获和比较)。

·全静态工作方式:0~24 MHz。

2.3 时钟电路DSl3021.DSl302的性能特性·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;·用于高速数据暂存的31×8位RAM;·最少引脚的串行I/O;·2.5~5.5 V电压工作范围;·2.5 V时耗电小于300 nA;·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;·简单的3线接口;·可选的慢速充电(至V CC1)的能力。

电子万年历

电子万年历

绪论近年来,电子技术和计算机应用领域不断扩大,单片机技术已经成为电子技术领域中的一个新的亮点;电子产品已应用到各个行业,电子产品也逐步人性化,以各种方式显示出来,非常醒目,让人一下就能感受到这是个电子产品。

单片机不仅体积小、成本低、可靠性高,而单片机还易于扩展,控制功能很强,使用灵活,很容易构成各种规模的应用系统,目前单片机在各个领域中都得到了广泛的应用。

MCS---51系列单片机以其优越的性能,成熟的技术及高可靠性和性能价格比迅速占领了工业测控和智能化等领域,成为国内单片机应用的主流。

万年历设计是用单片机通过外接扩展电路及必要的通道接口构成的计算机应用系统。

由于时钟芯片的出现可以将芯片与单片机结合起来,通过单片机对芯片的控制可以使走时更加的准确,也可以直接通过单片机的编写达到以上效果。

现在的单片机发展相当迅速,进而万年历所显示的功能也越来越多从而使使用的人更加方便。

对于设计者来说采用单片机来实现万年历的各种功能主要是因为单片机集成度体积小、有很高的可靠性。

单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力正是如此才使设计者能够更多的实现万年历的功能扩展。

本设计的主要设计思想是通过设计硬件控制电路和软件控制程序,从而实现能够正确地显示某年某月某日某时某分某秒,万年历应具有校时功能,定时功能,报时功能。

可能除了上边的功能还有其他的功能,如果需要还可以不断的向上加功能。

在万年历电子表的上面还有调整时间和定时用的几个功能键(复位键、选择位键、各个位数值的增大和减小两个键等)硬件控制电路主要用了80S51芯片处理器、74LS164移位寄存器、LED显示器等。

根据各自芯片的功能互相连接成万年历电子表的控制电路。

软件控制程序主要有主控程序、万年历电子表的时间控制程序。

主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是万年历电子表中比较重要的部分。

万年历程序和电路图

万年历程序和电路图

目录第一章设计方案 (1)1.1.硬件设计 (1)1.1.1设计要求 (1)1.1.2硬件框图 (1)1.1.3硬件选择 (1)1.2软件设计 (3)1.2.1编程环境及语言 (3)1.2.2程序框图 (3)第二章系统设计 (4)2.1硬件设计 (4)2.1.1振荡电路 (4)2.1.2复位电路 (4)2.1.3按键 (4)2.1.4 lcd显示电路 (5)2.1.5音乐播放电路 (5)2.1.6 P0上拉电阻计算 (6)2.2软件设计 (7)2.2.1程序流程图 (7)2.2.2流程的各个模块设计 (9)心得体会 (21)附录 1. 元器件表 (22)附录 2.程序源代码 (23)1602.c文件 (23)Clock.H文件 (27)Music.h文件 (45)LCD1602.H文件 (47)参考文献 (54)引言单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。

单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。

将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。

本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括三大功能:实时显示年、月、日、时、分、秒;实现位调;附加播放音乐功能。

本设计是基于A T89C51和LCD1602液晶显示器设计的可调式电子钟。

该单片机采用的MCU51内核,因此具有很好的兼容性,内部带有4KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。

显示器件采用通用型1602液晶,可显示32个字符,如果使用数码管来做显示器件需消耗大量的系统资源,因此采用低功耗的1602液晶,该液晶显示方便,功能强大,完全能满足数字万年历的显示要求。

通过此次设计能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。

第一章设计方案1.1.硬件设计1.1.1设计要求实现年月日、时分秒、星期的显示功能,用两个按键来实现日期和时间的调整功能,调整要求星期能自动更新,且能实现位调。

基于单片机的液晶显示“万年历”设计

基于单片机的液晶显示“万年历”设计

单片机液晶显示“万年历”一、设计任务利用STC89C52RC单片机设计一个具有如下功能的电子万年历:(一)、能够显示年、月、日、时、分、秒、星期(二)、能正确显示闰年日期(三)、用独立键盘进行校时二、硬件设计1、系统框图按照系统设计的要求和功能,将系统分为主控模块、时钟电路模块、按键扫描模块、LCD显示模块、蜂鸣器电路、电源电路、复位电路、晶振电路几个模块,系统框图如图1所示。

主控模块采用STC89C52RC单片机,按键模块用5个按键,用于调整时间和设定闹钟,显示模块采用LCD1602,时钟电路模块采用DS1302实时时钟实现对时间,日期的操作。

图1 基于AT89C52RC单片机的电子万年历系统框图2、原理图基于STC89C52RC单片机的电子万年历硬件仿真电路图如图10所示,系统由STC89C52RC单片机、按键扫描电路、显示电路、时钟电路、晶振电路、复位电路、蜂鸣器电路组成。

图2 电子万年历仿真图3、各部分介绍(1)、主控模块控制芯片使用STC89C52,控制系统如下图:图3 STC89C52RC主控模块主控制芯片采用STC89C52,系统包括晶振电路、复位电路、下载接口。

(2)、时钟芯片时钟芯片使用DS1302,该模块电路原理图如下图:图4 DS1302时钟电路时钟电路采用的是ds1302芯片,DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

工作电压与单片机的输入电压比较适合。

上面是它的一些基本的应用介绍。

下面是它的引脚的描述:图5 DS1302引脚下面是DS1302的时钟寄存器。

我们要读取的时间数据就是从下面这些数据寄存器中读取出来的。

当我们要想调整时间时,可以把时间数据写入到相应的寄存器中就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档