CompanyLOGO多功能万年历的设计CompanyLogo目录2系统总体设计3硬件设计4软件设计5总结1设计目的及意义CompanyLogo目的和意义随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头。而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的设计。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LCD数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。CompanyLogo系统总体设计本系统以单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、液晶显示、时间读取、测温等功能的控制,起到总控和协调各模块之间工作的作用。单片机通过驱动蜂鸣器发响声。主控模块单片机时钟模块DS1302温度测量模块DS18B20按键模块液晶显示模块LCD1602蜂鸣器模块CompanyLogo硬件设计最小系统设计P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1单片机P1.0P1.1P1.2P3.2P3.5+5VP2.7P2.6P2.5P2.4P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5V12Y112MHZ30pFC330pFC410uFC210KR2+5VS2SW-PB123456789P110K排阻+5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7CEI/OSCLK单片机最小系统有单片机、时钟电路、复位电路组成,时钟电路选用了12MHZ的晶振提供时钟,作用为给单片机提供一个时间基准,其中执行一条基本指令需要的时间为一个机器周期,单片机的复位电路,按下复位按键之后可以使单片机进入刚上电的起始状态。CompanyLogo硬件设计液晶显示模块设计P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8RESET9P3.010P3.111P3.212P3.313P3.414P3.515P3.616P3.717XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1单片机P1.0P1.1P1.2P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7+5VP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5V12Y1XTAL30pFC330pFC410uFC210KR2+5VS2SW-PB123456789P110K排阻+5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7VSS1VCC2VEE3RS4RW5EN6DB07DB18DB29DB310DB411DB512DB613DB714A15K16LCD1lcd1602+5V+5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.2P1.110KR1+5VCEI/OSCLKP1.6如图3-5所示。用STC89C52的P0口作为数据线,用P1.2、P1.1、P1.0分别作为LCD的EN、R/W、RS。其中EN是下降沿触发的片选信号,R/W是读写信号,RS是寄存器选择信号CompanyLogo硬件设计键盘模块蜂鸣器模块设计S1SW-PBS3SW-PBS4SW-PBS5SW-PBP2.7P2.6P2.5P2.4键模块使用的是多位独立按键,按键一端接IO口,一端接地,由于单片机的IO口都有内部上拉,因此当按键没有按下的时候,IO检测到的时候高电平,当按键按下的时候,相当于IO短接地,因此这时候单片机检测到的电平为低电平,通过检测不同时刻的IO口状态就可以判断按下的是那个按键。CompanyLogo硬件设计键盘模块蜂鸣器模块设计1KR4+5VP3.2LS1蜂鸣器Q18550蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,所以要利用三极管开关电路来驱动。本处选用的是8550三极管,它是一个PNP型的三极管,当基极给低电平的时候三极管导通,这时候蜂鸣器发声,当给高电平的时候,三极管关闭,蜂鸣器不发声。CompanyLogo硬件设计时钟模块温度检测模块设计VCC21X12X23GND4CE5I/O6SCLK7VCC18U2DS1302+5V12Y2XTALBT1BatterySCLKI/OCE10KR3+5V实时时钟芯片DS1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32.768Hz晶振。单片机通过时序可以读出时钟芯片内部的相关时间信息。CompanyLogo硬件设计时钟模块温度检测模块设计GND1DQ2VCC3U3DS18B20VCC10KR5+5VP3.5其中DQ口为该芯片的数据口,单片机通过读取改口的信息可以得出实时的温度值,由于DS18B20是单线通信,即发送和接收都是通过通信脚来进行。其接收时高阻输入,其发送时是开漏输出,即输出0时通过三极管下拉为低电平,而输出1时,则为高阻,需要外接上拉电阻将其拉为高电平,因此是需要外接上拉电阻,否则无法输出1。CompanyLogo软件设计主程序设计单片机上电后先进行初始化,清除一些参数的初值,然后把当前的一些时间信息,例如年月日时间等参数,然后判断当前时间是否与所设定一致,一致则驱动闹钟发声,接着读取温度信息,最后把时间信息显示在液晶屏幕上,单片机在每个循环都会检测用户是否按键按键,按下则进入按键扫描子程序进行相关参数的设定。开始系统初始化系统显示相关时间温度信息是否按下按键按键扫描子程序否是读取时钟芯片的相关时间信息读取温度参数是否和设定的闹钟时间一致驱动闹钟发声是否CompanyLogo软件设计时钟模块设计一开始先让时钟芯片的复位引脚置高进而启动一次数据传送工作,接着写一位命令字节,接着给SCLK发送脉冲信号,一致循环直到发送8个命令字节为止。接着是写数据进时钟芯片,首先先写入一位数据字节,然后给SCLK引脚发送脉冲,一致循环写入8次,这样就可以把数据写入,最终使复位引脚变低,这样就可以完成一次时钟芯片的一次操作。开始复位端变高启动一次数据传送工作写命令字节一位SCLK发脉冲够8次吗?写数据字节一位SCLK发脉冲够8次吗?复位端变低结束否是否是CompanyLogo软件设计键盘扫描程序设计当进入到扫描子函数以后,先后判断按下的按键是按键1~4的哪个,进行相应的操作,如果是按下按键一的时候,首先单片机判断现在是否处于闹钟闹铃状态,如果是的话,则清楚闹钟标志位,相当于取消闹钟发声,如果不是则令变量gFunctioncount加1,进入时间设置界面。按键1是否按下按键2是否按下按键3是否按下时间设定闹铃设定切换对应菜单增加相应值YNNYYYNY按键扫描子函数松手检测松手检测闹铃标志位清零YgFunctioncount=0按键4是否按下YgFunctioncount==2?gFunctioncount==3?NNgFunctioncount==1?NgFunctioncount==0&&Beep==0?gFunctioncount++N清除屏幕显示松手检测减少相应值松手检测N结束gFunctioncount==4?N重置时间YCompanyLogo软件设计LCD1602初始化首先先调用液晶自定义的字库,设置好DDRAM地址后在第一行显示,根据程序中的数据设置显示数据的首地址并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同一行的显示过程一样,两行显示完毕后便结束子程序。调用自定义字库设置DDRAM地址,在第一行显示设置显示数据首地址循环量设置取字符代码循环完?设置DDRAM地址,在第一行显示设置显示数据首地址循环量设置取字符代码循环完?结束CompanyLogo软件设计温度检测进入温度读取子函数的时候,首先初始化DS18B20的参数,单片机发送跳过ROM命令给DS18B20,然后发送温度转换命令等待转换完毕后,单片机在再次初始化DS18B20,发送跳过ROM命令后把得到的温度放到缓冲区,最后调用温度处理子程序存储温度值。开始初始化DS18B20发送跳过ROM命令到DS18B20发送温度转换命令等待转换完成初始化DS18B20发送跳过ROM命令到18B20读取温度值到缓冲区调用温度处理子程序结束CompanyLogo总结通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。经过我长时间的设计及调试,本系统基本能实现万年历系统的所有功能。不足之处有:1.硬件的稳定性有待进一步提高2.系统界面人性化还不足。我的综合设计主要涉及硬件和软件两方面的内容,通过这些我的硬件和软件开发能力都获得了提高。首先硬件方面,基本掌握了Protel99SE原理图的方法,并设计了一个单片机最小系统。通过开发板的设计和硬件搭建的过程,使我对51系单片机的接口有了更深层次的理解,熟悉了一些单片机常用的外围电路引脚和连接方法,如LCD液晶,键盘等。并且我学会了分析问题解决问题的能力,加深了对所学理论知识的理解和运用。CompanyLogo系统仿真图P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7P3.5P1.0P1.1P1.2P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7ALEP1.5P1.3P1.4P2.4P2.6P2.7P2.5XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52234567891RP1RESPACK-8X1CRYSTALC130pFC230pFC310uR110K42.0DQ2VCC3GND1U2DS18B20R24k7D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LRST5SCLK7I/O6X12X23VCC18VCC21U7DS1302X2CRYSTALCompanyLogo系统原理图P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/M