LCD显示电子日历
- 格式:doc
- 大小:2.41 MB
- 文档页数:61
1 课设所需软件简介1.1 Keil uVision4的简要介绍2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
Keil C51开发系统基本知识Keil C51开发系统基本知识1. 系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍Keil C51开发系统各部分功能和使用。
2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
使用独立的Keil仿真器时,注意事项:* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
JIU JIANG UNIVERSITYDSP技术与应用课程设计题目 LCD显示电子日历英文题目LCD display electronic calendar院系电子工程学院专业电子信息工程姓名刘祥班级A1121学号 11111010133 指导教师杨世永二零一四年六月摘要传统的液晶显示往往采用单片机控制。
但在系统有大量高速实时数据的情况下,单片机由于受到处理速度的限制就显得力不从心。
为了解决这些问题,本文提出了一种基于DSP控制的液晶显示屏的设计,有效地解决以上所遇到的问题。
本文提出了一种基于DSP控制的液晶显示数字日历的设计。
通过对DSP芯片 TMS320L VC5416PGE和液晶模块 LCM12864ZK 的分析和研究 ,利用TMS320L VC5416PGE的 DSP最小系统板构建了一个时间显示系统 ,采用 LCM12864ZK液晶模块显示时间 ,用按键调整时间。
该时钟系统包括硬件电路的实现和系统程序设计两部分。
对液晶显示时钟系统的硬件原理和主程序流程图进行了介绍 ,并给出了定时器的初始化程序和按照液晶显示模块接口读写时序编写的在 DSP芯片TMS320L VC5416PGE上的液晶显示初始化程序。
关键词: DSP ; TMS320L VC5416PGE ;LCM12864ZK液晶模块AbstractElectronic calendar with stable performance, high precision, low cost, convenient and practical, and easy-to-product and other characteristics. Suitable for families, companies and institutions, and many other places, for people's daily life, travel rrangements provided for convenience only.This paper presents a DSP-based control LCD electronic calendar design. Through the DSP chip and LCD modules TMS320L VC5416PGE analysis and research, the use of TMS320L VC5416PGE the DSP minimum system board to build a time display system that uses a liquid crystal display module time, with buttons to adjust the time. Theclock system implementation and system programs, including hardware circuit design in two parts. On the LCD hardware principle and the main clock system flowchart were introduced, and gives the timer initialization procedure and in accordance with the liquid crystal display module interface to read and write timing in the preparation of a liquid crystal display DSP chip TMS320L VC5416PGE initialization procedure.[Keywords]dsp TMS320L VC5416PGE LCD Module目录摘要 (Ⅰ)Abstract (Ⅱ)第一章绪论 (1)1.1 LCD及电子日历的简述 (1)1.2 本设计任务及要求..................................................2. 第二章系统硬件的组成 (2)2.1 DSP模块 (2)2.1.1 TMS320C5416的特点和硬件组成框图32.2 液晶显示模块42.2.1显示数据控制方法52.2.2发送控制命令:52.2.3写显示数据:62.2.4其它问题:62.3 键盘模块 (7)第三章程序设计73.1 设计思路73.2主程序8第四章总结50参考文献:52第一章绪论DSP芯片,也称数字信号处理器,是一种特别适合与数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
D S P实现液晶显示电子日历画册JIU JIANG UNIVERSITYDSP技术与应用课程设计题目 LCD显示电子日历英文题目LCD display electronic calendar院系电子工程学院专业电子信息工程姓名刘祥班级A1121学号 11111010133 指导教师杨世永二零一四年六月摘要传统的液晶显示往往采用单片机控制。
但在系统有大量高速实时数据的情况下,单片机由于受到处理速度的限制就显得力不从心。
为了解决这些问题,本文提出了一种基于DSP控制的液晶显示屏的设计,有效地解决以上所遇到的问题。
本文提出了一种基于DSP控制的液晶显示数字日历的设计。
通过对DSP芯片 TMS320L VC5416PGE和液晶模块 LCM12864ZK 的分析和研究 ,利用TMS320L VC5416PGE的 DSP最小系统板构建了一个时间显示系统 ,采用 LCM12864ZK液晶模块显示时间 ,用按键调整时间。
该时钟系统包括硬件电路的实现和系统程序设计两部分。
对液晶显示时钟系统的硬件原理和主程序流程图进行了介绍 ,并给出了定时器的初始化程序和按照液晶显示模块接口读写时序编写的在DSP芯片TMS320L VC5416PGE上的液晶显示初始化程序。
关键词: DSP ; TMS320L VC5416PGE ;LCM12864ZK液晶模块AbstractElectronic calendar with stable performance, high precision, low cost, convenient and practical, and easy-to-product and other characteristics. Suitable for families, companies and institutions, and many other places, for people's daily life, travel rrangements provided for convenience only.This paper presents a DSP-based control LCD electronic calendar design. Through the DSP chip and LCD modules TMS320LVC5416PGE analysis and research, the use of TMS320L VC5416PGE the DSP minimum system board to build a time display system that uses a liquid crystal display module time, with buttons to adjust the time. The clock system implementation and system programs, including hardware circuit design in two parts. On the LCD hardware principle and the main clock system flowchart were introduced, and gives the timer initialization procedure and in accordance with the liquid crystal display module interface to read and write timing in the preparation of a liquid crystal display DSP chip TMS320L VC5416PGE initialization procedure.[Keywords]dsp TMS320L VC5416PGE LCD Module目录摘要 (Ⅰ)Abstract (Ⅱ)第一章绪论 (1)1.1LCD及电子日历的概述 (1)1.2 本设计任务及要求 (2) (2)第二章系统硬件组成 (2)2.1 DSP模块 (2)2.1.1 TMS320C5416的特点和硬件组成框图 (3)2.2 液晶显示模块 (4)2.2.1显示数据控制方法 (5)2.2.2发送控制命令: (6)2.2.3写显示数据: (6)2.2.4其它问题: (7)2.3 键盘模块 (7)第三章程序设计 (8)3.1 设计思路 (8)3.2主程序 (10)第四章总结 (60)参考文献: (62)第一章绪论DSP芯片,也称数字信号处理器,是一种特别适合与数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
基于利用时钟芯片DS实现万年历LCD显示电子表电子设计大赛培训第二阶段第^组报告《基于利用时钟芯片DS1302实现万年历,1602LCD显示电子表》成员姓名:槿学号: ******成员姓名:HG**学号:******成员姓名:槿学号:一、主要功能1 v在1602液晶上显不年\月、日\星期' 时、分' 秒以及实时温度,并且实时更新显示;2、通过按键随时调节各显示参数,分别实现光标定位、数值增大、数值减小、闹钟和温度上下限查看的功能;3•在时间出现乱码的情况下,具有一键初始化时间的功能。
路图三、实物图1 •开关模块2、显ZE模块3、at89c52 模块4、总体连接图四、心得体会本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,在软' 硬件设计和调试中遇到了不少的困难,在同学的帮助才逐一克服了难题,学习到了不少的专业知识。
在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。
后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。
在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。
在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面。
总之,这次设计给我的最大感触就是,在以后的学习中勤动脑,多动手。
附录: 1、元件清单AT89C52 —块LCD —个排阻3个DS1302 —个DS18B20 一个开关5个晶振2个瓷片电容2个,30PF电解电容一个,33Uf插针若干杜邦线若干2、程序#include<REG51 .H> #include<intrins.h> //#include H LCD1602.h"//#include M DS1302.h n#defi neuint unsignedint #defi neuchar unsign edcharsbitDS1302_CLK=PM7; 〃sbitDS1302 J 0=PM6; 〃sbitDS1302_RST=PM5; 〃sbitwireless_ 仁P3A0; 实时时钟时钟线引脚sbitwireless_2=P3A1; 实时时钟数据线引sbitwireless_3=P3A2;sbitwireless_4=P3A3;sbitACC0=ACC9 sbitACC7=AC f,7;charhide_sec5hide_mi n,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,时到日月,年位闪的计数模式切换键加法按钮sbitSet=P2A0;//减法按钮立刻跳出调整模式按钮温度传送数据sbitUp=P2M; 〃10 口sbitDowchard on e,co un t,temp,flag,up_flag,down_flag;n=P2A2; 〃uchartemp_value;// 温度值sbitout=P2A3;//ucharT empBuffer[5],week_value[2];voidshow_time();// 液晶显ZF程序//PortDefinitions*/** 1602 液晶显示部分子程序****************/sbitLcdRs=P2A5;sbitLcdRw=P2A6;sbitLcdEn=P2A7;数据端口sfrDBPort=0x80;//P0=0x805P1=0x90,P2=0xA0,P3=0xB0.〃内部等待函*********************************************************************** unsignedcharLCD_Wait(void){ _LcdRs=0;LcdRw=1 ;_nop_();LcdEn=1 ;_nop_();LcdEn=O;returnDBPort;}〃向LCD写入命令或数★it**********************************************************#defineLCD_COMMANDO//Command#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01// 清屏#defineLCD_HOMING0x02// 光标返回原点voidLCD_Write(bitstyle,u nsign edchari nput){LcdE n=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();// 注意顺序LcdEn=1 ;_nop_();// 注意顺序LcdEn=0;_ nop_();LCD_Wait();}〃设置显示#defineLCD_SHOW0x04// 显示开#defineLCD_HIDEOxOO// 显示关#defineLCD_CURSOR0x02// 显示光标#defineLCD_NO_CURSOROxOO// 无光标#defineLCD_FLASHOxO1// 光标闪动#defineLCD_NO_FLASHOxOO// 光标不闪动voidLCD_SetDisplay(unsignedcharDisplayMode)(LCD_Write(LCD_COMMAND,0x08|DisplayMode);}〃设置输入************************************************************#defineLCD_AC_UP0x02#defineLCD_AC_DOWNOxOO//default#defineLCD_MOVE0x01// 画面可平移#defineLCD_NO_MOVEOxOO//default voidLCD_Setl nput(un signedcharl nputMode) 模式 模式LCD_Write(LCD_COMMAND,0x04|lnputMode);//D ************************************************************LcdEn=0;LCD_Write(LCD_COMMAND,Ox38);//8 位数据端口LCD_Write(LCD_COMMAND5Ox38);,2行显示月7点LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);// 阵LCD_Write(LCD_COMMAND 丄CD_CLEAR_SCREEN);〃LCD_Setlnput(LCD_AC_UP|LCD_NO_MOVE);//AC开启显示,无光voidPri nt(un signedchar*str) 标清屏〃液晶字符输入的位晝一voidGotoX Y(un signedcharx,u nsignedchary){if(y==O)LCD_Write(LCD_COMMAND50x80|x);if(y==i)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}〃将字符输出到液晶显示while(*str!=,\O,)LCD_Write(LCD_DATA,*str);str++;}}/***********DS1302 时钟咅E分子稈库typedefstruct_SYSTEMTIME_{unsignedcharSecond; unsignedcharMinute; unsignedcharHour; unsignedcharWeek; unsignedcharDay; unsignedcharMonth; unsignedcharYear; unsignedcharDateString[11]; unsignedcharTimeString[9];}SYSTEMTIME;//定义的时间类型SY STEMTIMECurrentTime;#defineAM(X)X #definePM(X)(X+12)// 转成24 小时制#defineDS1302_SECOND0x80//时钟芯片的寄存器位置,存放时间#defineDS1302_MINUTE0x82#defineDS1302_HOUR0x84#defineDS1302_WEEK0x8A#defineDS1302_DAY0x86#defineDS1302_MONTH0x88#defineDS1302_YEAR0x8CvoidDS1302lnputByte(unsignedchard)// 实时时钟写入一字节(内部函数){un signedchari;ACC=d;for(i=8;i>0;i-){DS1302_IO=ACC0;//相当于汇编中的RRCDS1302_CLK=1;DS1302_CLK=0;ACC=ACC»1;}}unsignedcharDS1302OutputByte(void)// 实时时钟读取一字节(内部函数) un signedchari;for(i=8;i>0;i-)ACC=ACC»1;//相当于汇编中的RRCACC7=DS1302JO;DS1302_CLK=1;DS1302_CLK=0;)return(ACC);>voidWrite1302(u nsign edcharucAddr,u nsignedcharucDa)〃ucAddr:DS 1302地址.ucData:要写的数据{DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302lnputByte(ucAddr);// 地址,命令DS1302lnputByte(ucDa);// 写1Byte 数据DS1302_CLK=1;DS1302_RST=0;unsignedcharReadl 302(u nsignedcharucAddr)//读取DS1302某地址的数据{un signedcharucData;DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302lnputByte(ucAddr|0x01);// 地址,命令ucData=DS1302OutputByte();// 读 1 Byte 数据DS1302_CLK=1;DS1302_RST=0;return(ucData);}voidDS1302_GetTime(SYSTEMTIME*Time)//获取时钟芯片的时钟数据到自定义的结构型数组{un signedcharReadValue;ReadValue=Read1302(DS1302_SECOND);Time->Second=((ReadValue&0x70)»4)*10+(ReadValue&OxOF);ReadValue=Read1302(DS1302_MINUTE);Time->Hour=((ReadValue&0x70)»4)*10+(ReadValue&0x0F); ReadValue=Read1302(DS1302_DA Y);Time->Week=((ReadValue&0x70)»4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_MONTH);Time->Month=((ReadValue&0x70)»4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_YEA 旳;Time-> Year=((ReadValue&0x70)>>4 门O+(ReadValue&OxOF);}voidDateToStr(SYSTEMTIME*Time)//将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString[]{if(hide_year<2)//这里的if.else语句都是判断位闪烁,<2显示数据,>2就不显示,输出字符串为2007/07/22{Time->DateString[0]=,2';Time->DateString[1 ]=f0';Time->DateString[2]=Time-> Year/10+'0‘;Time->DateString[3]=Time-> Year%10+0;}elseTime->DateString[O]=n;Time->DateString[2]=n;}Time->DateString[4]=7,;if(hide_ mon th<2){Time->DateString[5]=Time->Month/10+,0'; Time->DateString[6]=Time->Month%10+'0'; }else{Time->DateString[5]=n;Time->DateString [6]=H;}Time->DateString[7]=7,;if(hide_day<2)Time->DateString[8]=Time->Day/10+,0'; Time->DateString[9]=Time->Day%10+,0,; else{Time->DateString [8]=H;Time->DateString[9]=n;> if(hide_week<2)week_value[0]=Time->Week%10+,0,;// 星期的数据另夕卜放到week_value[]数组里,跟年月,日的分开存放,因为等一下要在最后显示}else{week_value[O]=";}week_value[1]='\0*;Time->DateString[10]=,\0,;//字符串末尾加9,判断结束字符}voidTimeToStr(SYSTEMTIME*Time)//将时,分,秒数据转换成液晶显示字符放到数组TimeString[];{if(hide_hour<2){Time・>TimeString[0]=Time・>Hour710+'0‘;Time->TimeString[1]=Time->Hour%10+0;}else{Time->TimeString[O]=H;Time->TimeString[1 ]=H;}Time->TimeString[2]=,:';Time->TimeString[3]=Time->Minute/10+,0';Time->TimeString[4]=Time->Minute%10+,0,;}else{Time->TimeString[3]=H;Time->TimeString[4]=H;}Time->TimeString[5]=,:';if(hide_sec<2)Time・>TimeString[6]=Time・>Second/10+'0:Time->TimeString[7]=Time->Second%10+,0,;}elseTime->TimeString[6]=H;Time->TimeString[7]=H;}Time->DateString [8]=,\0,;> voidlnitial_DS1302(void)// 时钟芯片初始化{unsignedcharSecond=Read1302(DS1302_SECOND); if(Second&0x80)//判断时钟芯片是否关闭Write1302(0x8e,0x00);// 写入允许Write1302(0x8c,0x07);//以下写入初始化时间日期:07/07/25.星期:3•时I、可:23:59:55Writel 302(0x88,0x07);Writel 302(0x86,0x25);Writel 302(0x8a,0x07);Writel 302(0x84,0x23);Writel 302(0x82,0x59);Writel 302(0x80,0x55);Writel302(0x8e,0x80);// 禁止写入>}/***********ds18b20了不早*************************//***********ds18b20 延迟子函数(晶振12MHz)*******/voiddelay_18B20(unsignedinti){while(i-);}y**********^jg-| g[^20 ^71 力台d" 孝(7 **********************/ voidlnit_DS18B20(void) unsig nedcharx=O;DQ=1;//DQ 复位delay_18B20(8);// 稍做延时DQ=O;//单片机将DQ拉低delay_18B20(80);// 精确延时大于480usDQ=1;//拉高总线delay_18B20(14);x=DQ;〃稍做延时后如果x=0则初始化成功x=1则初始化失败delay_18B20(20);**********读一个字节ds[ 8b20**★*★*★*★*★*** IunsignedcharReadOneChar(void) uchari=0;uchardat=O;for(i=8;i>0;i-) DQ=0;//给脉冲信号dat»=1;DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4);return (dat);voidWriteOneChar(uchardat) unsign edchari=0;for(i=8;i>0;i-)*********** *ds 〔 8b20 写一个字节 ***************DQ=O;DQ=dat&OxO1; delay_18B20(5);DQ=1;dat»=1;}/** 读取ds18b20 当前温度************/voidReadTemp(void) unsig nedchara=O;unsig nedcharb=O;unsign edchart=0;lnit_DS18B20();WriteOneChar(OxCC);//跳过读序号列号的操作WriteOneChar(Ox44);// 启动温度转换delay_18B20(100);//thismessageisweryimportantlnit_DS18B20();WriteOneChar(OxCC);//跳过读序号列号的操作WriteOneChar(OxBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度delay_18B20(100);a=ReadOneChar();//读取温度值低位b=ReadOneChar();//读取温度值高位temp_value=b«4;temp_value+=(a&0xf0)>>4;}voidtemp_to_str()//温度数据转换成液晶字符显示{ TempBuffer[0]=temp_value/10+'O*;// 十位TempBuffer[1 ]=temp_value%10+'0*;// 个位TempBuffer[2]=0xdf;// 温度符号TempBuffer[3]=C*;TempBuffer[4]=,\0,;}voidDelayl ms(un signedi ntcount){unsig nedin tij;for(i=0;i<co un t;i++)for(j=0;j<120;j++);}/* 延时子程序7 voidmdelay(uintdelay) {uinti;for(;delay>0;delay-){for(i=0;i<62;i++)//1 ms 延时,{:}}}voidoutkey()//跳出调整模式,返回默认显示{ucharSecond;if(out==0||wireless_1 ==1){mdelay(8);count=0;hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=05hide_ mon th=O,hide_year=O;Second=Read1302(DS1302_SECOND);Writel 302(0x8e,0x00);// 写入允许Writel 302(0x80,Second&0x7f);Writel302(0x8E,0x80);// 禁止写入done=0;while(out==0);while(wireless_1 ==1);}lllllllllllllllllllllllllllllllllll/////////////////////////////////////////////////////////////////////////voidllpkey()// 升序按键{Up=1;if(Up==O| |wireless_2==1)< mdelay(8);switch (count){easel:temp=Read1302(DS1302_SECOND);// 读取秒数temp=temp+1;// 秒数力口 1 up_flag=1;//数据调整后更新标志if((temp&0x7f)>0x59)//超过59秒,清零temp=0;break;case2:temp=Read1302(DS1302_MINUTE);// 读取分数temp=temp+1;// 分数力口 1 up_flag=1;if(temp>0x59)// 超过59 分,清零temp=0;break;case3:temp=Read1302(DS1302_HOUR);// 读取小时数temp=temp+1;// 小时数加 1up_flag=1;if(temp>0x23)// 超过23小时,清temp=O;break;case4:temp=Read1302(DS1302_WEEK);// 读取星期数temp=temp+1;// 星期数加 1 up_flag=1;if(temp>0x7)temp=1;break;case5:temp=Read1302(DS1302_DAY);// 读取日temp=temp+1;// H 数加 1 数up_flag=1; if(temp>0x31) temp=1;break;se 。
大屏幕日历电子钟图1 电路图一、主板简介1、可以同时显示年、月、日、星期、时、分、秒、及秒点,农历月、日、温度等22位数码显示的电子日历电子钟。
2、公历大小月、润月自动调整,星期、农历月、日勿需用户调整,电路可根据公历年、月、日自动计算。
3、对用户输入的不合理数据能自动纠错。
有较强的抗干扰能力,万一程序跑飞,能在65ms内恢复正常。
4、温度范围,-55℃至+125℃四位显示,精确度0.1℃。
5、显示方式,P1.2高电平为24小时显示,低电平为12小时显示.AM由F段引出,PM由E段引出。
6、时间从1961年1月1日至2060年12月31日,带100年农历。
资料最新最远。
7、电子钟走时准确,日误差≤1秒。
8、市电停电后,后备电源耗电0.5MA。
二、硬件设计XY-06T大屏幕日历电钟子硬件设计22位数码管分为3组,第一组有年、月、日八位数码管组成;第二组有星期、时(秒点)、分、秒七位数码管组成;第三组有农历、月、日、温度十位、个位、小数七位数码管组成。
温度小数点由温度个位数码管P点经限流电阻接地成常亮状态。
每组所有数码管的阴极七段码a、b、c、d、e、f、g分别连在一起,电路如图1所示。
平时市电经变压器、整流、滤波、稳压后向XY-06T芯片供电,市电中断后由后备电源E(三节5号充电电池)供电,二极管D3检测市电停电用。
当芯片XY-06T的P1.1脚检测到市电停电后,保持内部时钟继续运行外,关闭显示驱动,最大限度降低芯片的功耗。
时钟采用3.579545MHZ石英晶体,用频率计在测试端测量,调整微调电容C6,可以把时钟走时调整到十分精确的程度。
温度传感器采用美国DALLAS公司18B20芯片,外形如同普通三极管,数字12-bit传送,稳定可靠,免调整,免维护。
如将18B20直接焊在电路板上,测出温度会稍高于外界。
建议将传感器延长在外边。
显示部分,XY-06T的八路输出信号经达林顿TIP127放大,提供所有22位共阳极数码管的阳极电流。
液晶万年历作品简介本款作品基于AT89S51主控芯片和DS18B20时钟芯片,采用液晶显示屏1602显示,使用温度传感器采集周围环境温度实现功能:显示年月日时分秒温度准确显示可通过按键进行校时操作定时响铃作品特点:采用双电源供电,停电时可自动切换到电池供电:工作稳定,低功耗,寿命长,外形简洁大方,方便携带、摆放。
1.本设计的主要设计思想是两方面:1、通过设计硬件控制电路和软件控制程序,从而实现能够正确地显示某年某月某日某时某分某秒,万年历应具有校时功能、定时功能、报时功能。
可能除了上边的功能还有其他的功能,如果需要还可以不断的向上加功能。
在万年历电子表的上面还有调整时间和定时用的几个功能键(复位键、选择位键、各个位数值的增大和减小两个键等)硬件控制电路主要用了AT89S51芯片处理器、LCD1602液晶显示器、DS1302时钟芯片等。
根据各自芯片的功能互相连接成万年历电子表的控制电路。
2、软件控制程序主要有主控程序、万年历电子表的时间控制程序。
主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是万年历电子表中比较重要的部分。
时间控制程序体现了年、月、日、小时、分钟、秒及星期的计算方法。
设计中使用的时钟芯片是美国DALLAS公司推出的与MC146818兼容,寄存器存取速度快,在主机掉电时可用来保存重要数据的实时时钟芯片DS1302,采用DS1302作为主要计时芯片,可做到计时准确。
对它的控制,主要是对其的初始化和对其数据的读取。
采用连续工作制,一般无需每次都初始化,即使系统复位也是如此。
但初始化时,首先应禁止芯片内部的更新周期操作。
所以,应先将它状态寄存器B中的SET位置1,然后初始化。
DS1302处于正常工作状态时,每秒即产生一个更新周期。
在该周期内,微处理器不能读时标寄存器中的内容,否则将得不到确定数据。
为了采样时标寄存器中的数据,采用两种避开在更新周期内访问时标寄存器的方法。
如何使用智能电视的电子日历功能智能电视的电子日历功能是其提供的一个方便实用的功能。
通过电子日历,我们可以快速地查看日期、时间、天气信息,还可以设置备忘提醒等功能。
本文将介绍如何合理使用智能电视的电子日历功能,以提高我们的生活效率。
以下是关于如何使用智能电视的电子日历功能的详细信息。
一、了解电子日历功能的基本操作在开始使用智能电视的电子日历功能之前,我们首先需要了解如何操作它。
通常,电子日历功能会以一个图标的形式呈现在智能电视的主界面上。
我们只需用遥控器导航到该图标上,然后按下确认键即可进入电子日历功能页面。
进入之后,我们可以看到当前日期、时间以及一些相关的信息。
二、查看日期和时间智能电视的电子日历功能提供了一个快速查看日期和时间的方式。
通过它,我们可以不用再去找手机或手表,而是直接在电视屏幕上获取到准确的时间信息。
在日历页面的顶部,我们可以清晰地看到当前的日期和时间。
这对于我们安排日程和掌握时间非常有帮助。
三、了解天气信息除了日期和时间,智能电视的电子日历功能还能够提供天气信息。
这项功能可以让我们随时了解到当前所在地的实时天气状况,包括温度、湿度、风力等等。
这对于我们出门时选择适合的衣物或者安排户外活动十分有帮助。
四、设置备忘提醒电子日历功能还可以用作备忘提醒的工具。
我们可以通过它设置重要的活动、会议或者日常提醒事项,以便在相应的时间收到通知。
设置提醒非常简单,只需点击日期,并在弹出的窗口中输入内容和提醒时间即可。
当提醒的时间到达时,电视会发出声音和弹窗提示,提醒我们注意事项。
五、与其他设备同步智能电视的电子日历功能通常可以与其他设备同步。
比如,我们可以将手机中的日历事件同步到电视上,这样无论是手机还是电视,在日程设置方面都会保持一致。
这对于家庭成员之间的协作和信息同步非常有帮助。
六、注意保护个人隐私在使用智能电视的电子日历功能时,我们需要注意保护个人隐私。
尽管电子日历功能提供了方便的备忘提醒,但是我们不建议将一些敏感的个人信息直接输入到电视上。
#include<reg52.h>#include<intrins.h>#include <math.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="--Figo"。
//uchar code table1[]=""。
sbit lcden=P3^4。
sbit lcdrs=P3^5。
sbit dula=P2^6。
sbit wela=P2^7。
sbit ds=P1^7。
sbit key1=P1^0。
sbit key2=P1^1。
sbit key3=P1^2。
sbit key4=P1^3。
int tempValue。
int s_1=1000。
unsigned char FunKeyFlag=6,keypress。
#define key_vaule1 0x01#define key_vaule2 0x02#define key_vaule3 0x03#define key_vaule4 0x04uchar num。
int ms_10=10。
int flag=0。
int s_1_1=1000。
uint sec=55。
uint min=9。
uint hour=22。
uint nian=2014。
uint yue=8。
uint ri=20。
uint xingqi=3。
//延时函数, 对于11.0592MHz时钟, 例i=10,则大概延时10ms. void delay_wendu(unsigned int i){unsigned int j。
while(i--){for(j = 0。
j < 125。
j++)。
}}//初始化DS18B20//让DS18B20一段相对长时间低电平, 然后一段相对非常短时间高电平, 即可启动void dsInit(){//对于11.0592MHz时钟, unsigned int型的i, 作一个i++操作的时间大于?usunsigned int i。
LCD显示的电子万年历的设计摘要:电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间计数,还能够对日期,温度,阴历等进行计数,所以在现代社会中受到了广泛推行。
本设计的硬件设计是以STC89C52单片机为核心,构成了整个系统的控制电路,STC89C52单片机性能卓越,保密性好,烧写方便,烧写速度快,可重复烧写10万次!是普通51单片机的100倍。
它结合DS1302时钟芯片和DS18B20芯片完成时间的自动调整、掉电保护以及温度的采集,可计算到2100年前的秒、分、小时、星期、日、月、年七种日历信息并带闰年补偿,断电后能运行10年之久不丢失数据,DS18B20是数字式温度传感器,具有测量精度高,电路连接简单特点。
设计的输出系统采用LCD数码液晶显示屏显示,简单、明朗。
时间、日期调整由3个按键来实现。
最终达到显示年、月、日以及星期、时、分、秒。
关键词:电子万年历;DS1302;DS18B20;STC89C52LCD shows the design of the electronic calendarAbstract:Electronic calendar is a very wide range of daily timing tool, it can not only count on the time, but also on the date, temperature, etc. to count the lunar calendar, so in modern society has been widely implemented.The design of the hardware design is based on STC89C52 microcontroller as the core, constitute the entire system, the control circuit, STC89C52 MCU performance, security and good, easy programming, the programming speed and programming can be repeated 10 million times! An ordinary 51 MCU SCM is 100 times the normal 51. It combines the DS1302 clock chip and chip DS18B20 completion time of the automatic adjustment, power-down protection, and the temperature of the collection, calculated to 2100 seconds, minutes, hours, weeks, days, months and years seven and calendar information with leap year compensation. Power to run 10 years after the loss of long-suppressed data, DS18B20 a digital temperature sensor with high accuracy, a simple electrical connection characteristics.Ultimately show year, month, day and week, hours, minutes, seconds.Keywords:E-calendar;DS1302;DS18B20;STC89C52目 录第1章 概 述 (1)1.1电子万年历的设计背景 (1)1.2电子万年历的设计意义 (2)1.3电子万年历的应用 (2)第2章 系统总体方案设计 (3)2.1设计要求 (3)2.2系统硬件总体分析 (3)2.2.1时钟电路的方案论证 (3)2.2.2显示电路的方案论证 (4)2.2.3单片机电路的方案论证 (4)2.2.4温度采集电路的方案论证 (5)2.2.5键盘电路的方案论证 (5)2.2.6电路设计最终决定方案 (6)第3章 系统的硬件设计 (7)3.1单片机模块的设计 (7)3.1.1单片机原理 (7)3.1.2单片机主控制模块 (7)3.2时钟电路模块的设计 (10)3.3液晶显示电路模块的设计 (12)3.3.1 LCD1602引脚功能说明 (12)3.3.2 LCD1602的指令说明及时序 (14)3.3.3 LCD1602的介绍 (16)3.4温度采集电路模块的设计 (17)3.5复位电路模块的设计 (24)3.6蜂鸣器报警电路 (25)3.6.1蜂鸣器的介绍 (25)3.6.2蜂鸣器的结构原理 (25)第4章 系统的软件设计 (27)4.1主程序流程图 (28)4.2温度采集程序显示流程图 (30)4.3阴历显示流程图 (30)4.4液晶显示流程图 (31)第5章 系统调试 (34)5.2软件调试 (35)5.3综合调试 (35)5.4测试结果分析 (35)第6章 结论 (37)参考文献 (38)致 谢 (40)附 录 (41)附录一:电子万年历原理图 (41)附录二:电子万年历实物图 (42)附录三:程序清单 (43)附录四:中英文资料 (61)第1章概述随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。
#include <reg52.h>sbit RS=P2^6;sbit rw=P2^5;sbit LCDE=P2^7;unsigned char n;unsigned char shi,ge,fen,miao,count;unsigned int year,yue,ri;//unsigned char code table[]=" 2011-8-4 MON "; void delay(unsigned int xms){unsigned int i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void write_com(unsigned char com){RS=0;rw=0;LCDE=0;P0=com;delay(5);LCDE=1;delay(5);LCDE=0;}void write_date(unsigned char date){RS=1;rw=0;LCDE=0;P0=date;delay(5);LCDE=1;delay(5);LCDE=0;}void write_sfm(unsigned char add,unsigned char date) {unsigned char shi,ge;shi=date/10;ge=date%10;write_date(shi+0x30);write_date(ge+0x30);}void write_n(unsigned int add1,unsigned int date1) {unsigned int q,b,s,g;q=date1/1000;b=date1/100%10;s=date1/10%10;g=date1%10;write_com(0x80+add1);write_date(q+0x30);write_date(b+0x30);write_date(s+0x30);write_date(g+0x30);}void write_yr(unsigned char add2,unsigned char date2) {unsigned char s1,g1;s1=date2/10;g1=date2%10;write_com(0x80+add2);write_date(s1+0x30);write_date(g1+0x30);}void init(){LCDE=0;fen=35;miao=34;shi=15;ri=4;yue=8;year=2011;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80+7);write_date('-');delay(5);write_date('-');write_n(3,year);write_yr(8,yue);write_yr(11,ri);delay(5);write_com(0x80+0x40+6);write_date(':');delay(5);write_com(0x80+0x40+9);write_date(':');delay(5);write_sfm(10,miao);write_sfm(7,fen);write_sfm(4,shi);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;TR0=1;ET0=1;}void main(){init();while(1);}void time0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;miao++;if(miao==60){ miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;ri++;switch(yue){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(ri==32){ ri=1;yue++;}break;case 4:case 6:case 9:case 11:if(ri==31){ri=1;yue++;}break;case 2:if(year%4==0){if(ri==30){ri=1;yue++;}}else{if(ri==29){ri=1;yue++;}}break;}if(yue==13){yue=1;year++;}write_n(3,year);write_yr(8,yue);}write_yr(11,ri);}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}。
学习情境5-可调式数字钟之用DS1302与12864LCD设计的可调式中文电子日历☆点名,复习1、DS1302的引脚及其功能,以及DS1302与单片机的硬件连接?2、如何编写基于1602LCD的显示驱动程序?☆新课讲授5.3 基于DS1302与LCD12854设计的可调数字钟上节课我们详细介绍了LCD1602的显示控制指令,掌握了如何编写该种型号的LCD的显示驱动程序。
这节课我们学习另外一种液晶显示模块—12864(KS0108)5.3.1 LCD12864技术资料5.3.1.1 12864(KS0108)字符型LCD简介12864D使用KS0108(或其兼容芯片)作为控制器,适配M6800系列时序,具有8位标准数据总线。
6条控制线及电源线可显示各种字符及图形。
每个KS0108拥有64×64位(512字节)的显示RAM,12864D显示屏上的64×64点,显示RAM中的数据直接作为显示驱动信号。
具有操作指令简单,低功耗的特点。
5.3.1.2、引脚说明管脚号管脚电平说明1 CSA H/L 片选择信号,低电平时选择前64列。
2 CSB H 片选择信号,低电平时选择后64列。
3 GND 0V 逻辑电源地。
4 VCC 5V 逻辑电源。
5 VEE -10V LCD驱动电源。
6 D/I H/L 数据\指令选择,高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行。
7 R/W H/L 读\写选择,高电平:读数据;低电平:写数据。
8 E H.H/L 读写使能,高电平有效,下降沿锁定数据。
9-16 DB0 H/L 数据输入输出引脚。
5.3.1.3、12864LCD的指令说明1、指令列表2、指令功能详解(1)读状态字(read status)格式BUSY 0 ON/OFF RESET 0 0 0 0★BUSY=1,表示KS0108正在处理计算机发来的指令或数据。
此时接口电路被封锁,不能接受除读状态字以外的任何操作。
1 课设所需软件简介1.1 Keil uVision4的简要介绍2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealViewMD K开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
KeilC51开发系统基本知识KeilC51开发系统基本知识1. 系统概述KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51for Windo ws和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
使用独立的Keil仿真器时,注意事项:* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
*********************************#include<>#include<>#define LCD_Data P0#define uchar unsigned charunsigned charsec,min,hour,day,month,year,cen,week, next,aa,bb,cc,dd,mm,temp0,LunarMonth, LunarDay,LunarYear;int temp;uchar tt=1;bit c_moon;bit cenbit=1;bit w;sbit LCD_RS=P2^0;sbit LCD_RW=P2^1;sbit LCD_E=P2^2;sbit PSB=P2^3;sbit DS1302_CLK=P3^7;sbit DS1302_IO=P3^6;sbit DS1302_RST=P3^5;sbit DS18B20=P2^5;sbit speak=P2^7;sbit SetKey=P1^4; // 按键功能:设置sbit SureKey=P1^5; // 按键功能:确认sbit PlusKey=P1^6; // 按键功能:加sbit ReduceKey=P1^7; // 按键功能:减sbit scl=P1^1;sbit sda=P1^0;void DisplayShengXiao(void);void delay(unsigned int a)// 延时 1MS/ 次{unsigned char i;while(--a){for(i=0;i<125;i++) ;}}void delayb(unsigned int count){while(count--);}void delays(){ ; ;}void start(){sda=1;scl=1;delays();sda=0;delays();}void stop(){sda=0;scl=1;delays();sda=1;delays();}void response(){uchar i;while((sda==1)&&i<255)i++; //给应答信号 sda=0 ;错误( while (( sda==0 )|i<255 ) i++ ;)程序进入 while 死循环scl=1;delays();scl=0; // 没有这一步出错,如果没有 sda 将保持 0 状态,一直处于应答中。