您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 吉林工程技术师范学院单片机毕业论文-第四章-软件设计
第四章软件设计24第四章软件设计4.1系统软件设计方案及框图根据设计要求,首先要确定软件设计方案,即确定该软件应该完成哪些功能;其次是为了完成这些功能需要分成多少个功能模块,以及每一个程序模块的具体任务是什么。模块的划分有很大的灵活性,但也不能随意划分。划分模块时应遵守时应遵循下述原则:1、每个模块应具有独立的功能,能产生一个明确的结果。2、模块之间的控制参数应尽量简单,数据参数应尽量少。3、模块长度适中。模块语句的长度通常在20-100条较合适。4、根据模块的划分原则,将该程序划分成8个模块,如图4-1所示。主程序LED显键时全语SHT显示盘钟局音温示驱处驱变驱度服动理动量动采务模模模定模集模块块块义块模块块图4-1系统软件设计方框图吉林工程技术师范学院毕业论文254.2系统变量的分配及模块声明在系统的软件设计中我们采用的是单片机的C语言编程,利用Keil8.01软件环境进行程序设计。1、系统变量分配如下表所示:表4-1系统变量分配表变量名称变量功能存放格式及具体实现Unsignedcharg_GetTime[6]存储全局时间数据“hhmmss”unsignedcharg_GetDate[6]存储全局日期“yymmdd”unsignedcharg_TimeOver[6]存放定时时间“hhmmss”unsignedcharg_TimeOK存储定时标志当g_TimeOK=0时,系统关闭闹铃功能,当g_TimeOK=1时,系统开启闹铃功能。2、系统程序模块声明:Display.C:显示服务函数模块。DS1302.C:DS1302的驱动程序。GlobeDefine.C:定义全局变量。Key.C:存放所有的键盘处理函数。SHT10.C:SHT10温湿度传感器驱动程序。ZLG7289A.C:ZLG7289A芯片的驱动程序。ISD1420.C:ISD1420芯片的驱动程序。第四章软件设计264.3系统各主要模块应用程序设计4.3.1主程序模块的设计主程序模块的设计内容包括:头文件的使用,函数原形声明,有关单元及相关部件的初始化和一些文件数据的调用,以及闹铃和整点报时的实现。1、头文件说明在主程序的设计中我们一共采用了六个头文件,头文件中包含对主程序中所使用变量及函数的定义说明,具体定义说明如下:⑴REGX51.H:Keil8.01软件系统自定义标准变量及函数库头文件,其内部含有MCS-51单片机的所特有寄存器声明,在使用中为必选头文件。⑵ZLG7289A.H:用户自定义头文件,其中包含了ZLG7289A显示驱动芯片的各个变量及函数的定义,在使用中为可选项。⑶DS1302.H:用户自定义头文件,其中包含了DS1302时钟芯片的各个变量及函数的定义,在使用中为可选项。⑷Display.H:用户自定义头文件,其中包含了各个显示函数的定义,在使用中为可选项。⑸KEY.H:用户自定义头文件,其中包含了键盘接收函数的定义,在使用中为可选项。⑹ISD1420.H:用户自定义头文件,其中包含了ISD1420语音芯片的各个变量及函数的定义,在使用中为可选项。2、主程序的初始化内容所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始化工作状态设定。在本系统的设计中我们扩展了许多功能芯片,所吉林工程技术师范学院毕业论文27以在主程序的初始化中,我们主要对这些芯片进行初始化工作状态设定,同时对一些变量也进行了初始化工作,具体内容如下所示:⑴g_TimeOK=0:定时标志清0初始化。⑵Init_Zlg7289a():ZLG7289A初始化函数,对ZLG7289A显示驱动芯片进行初始化。⑶Init_Ds1302():DS1302初始化函数,对DS1302时钟芯片进行初始化。⑷g_TimeOver[6]:存放定时时间函数,对此函数进行初始化。3、主程序模块中的闹铃和整点报时处理在程序设计中闹铃和整点语音提示的处理主要在主程序模块中实现,通过主程序反复调用闹铃检测函数TimeOverTest(void)和整点语音提示函数IntTimeSpeak(),判断是否闹铃和整点语音提示,如果检测结果为闹铃或整点语音提示,则进入相应处理程序,否则主程序进行下一步工作。闹铃启动后,主程序还设置了了闹铃停止程序,用于在闹铃鸣响一段时间后有效停止闹铃。整点语音提示采用的是一段音乐提示,调用语音程序来完成。具体程序设计如附录所示。4、主程序模块设计流程图主程序模块设计流程图如下图所示:第四章软件设计28YNNY图4-2主程序的设计流程图主程序初始化Initialize()显示时间DisplayTime()是否闹铃TimeOverTest()整点提示IntTimeSpeak()定时标志=1?定时器次数寄存器+1定时次数=50?定时次数=0定时标志=0关闭蜂鸣器键盘扫描处理KeyIn()延时delay(s)吉林工程技术师范学院毕业论文294.3.2数码管动态显示模块程序的设计在本系统的设计中,显示模块的设计我们采用的是8位数码管显示,由显示驱动芯片ZLG7289A完成驱动工作。刷新频率为5KHz左右,采用间隔100ms对LED进行动态扫描一次。在显示模块软件的设计中我们划分了两大部分进行设计,一部分完成的是显示驱动芯片的设置,另一部分完成的是最终的显示服务设置,通过这两部分的相互结合,使得LED动态显示程序模块的设计得以实现。1、显示驱动芯片ZLG7289A的程序设计ZLG7289A显示驱动芯片在系统中主要实现从单片机中接收命令和数据,通过对命令和数据的分析处理,最终将数据送入数码管进行显示,同时完成键盘按键译码功能。主要包括以下功能函数设置:⑴staticvoiddelay(uchartime):短暂的延时函数⑵staticvoidSendByte(ucharcommand):单片机向ZLG7289A发送一个字节的数据⑶staticucharReceiveByte(void):从ZLG7289A读回一个字节存入单片机的RAM中⑷staticucharReceiveDatFromZlg7289a(void):接回由ZLG7289A返回的键盘值⑸voidSendDatToZlg7289a_s(ucharcommand):发送一条单指令的数据给ZLG7289A⑹voidSendDatToZlg7289a_d(ucharcommand,uchardat):发送一条双指令的数据给ZLG7289A⑺ucharReceiveKeyCode(void):键盘译码⑻voidInit_Zlg7289a(void):初始化ZLG7289A第四章软件设计302、显示服务函数程序设计在这块程序设计中主要提供显示函数,进行显示格式的设置,使显示数据与数码管进行匹配,达到最终能由数码管成功显示的功能。主要由以下功能函数组成:⑴voidDisplayTime(void):将时间显示在ZLG7289A上。⑵voidDisplayDate(void):将日期显示在ZLG7289A上。⑶voidDisplayTemp(void);将温度显示在ZLG7289A上。⑷voidDisplayKey(unsignedcharindex,unsignedchardat):处理-显示⑸voidSendDateBuff(unsignedchar*p):显示格式设置。4.3.3时钟模块程序的设计时钟程序模块主要用于产生系统的基准时间和日期,由单片机控制,通过对时钟芯片DS1302的一些操作,完成对系统时间设置。程序设计中主要包括对DS1302芯片的初始化、写入数据、读出数据等操作。主要包括以下功能函数实现:⑴staticvoidSendByte(ucharbyte):向DS1302发送一个字节的数据。⑵staticvoidSendDatToDs1302(ucharcommand,uchardat):向DS1302发送一个完整的数据。⑶staticucharReceiveByte(void):接收DS1302一个字节的数据。⑷ucharReceiveDatFromDs1302(ucharcommand):从DS1302接收一个指定的数据。⑸voidGetDate(void):获取日期。吉林工程技术师范学院毕业论文31⑹voidGetTime(void):获取时间。⑺voidUpdateDs1302(unsignedchar*date):更新DS1302的时钟。⑻voidInit_Ds1302(void):初始化DS1302。⑼voidUpdateDs1302Ram(unsignedchar*dat);写入RAM中数据。4.3.4语音模块程序的设计通过硬件电路原理图可知,单片机AT89S51的P0口通过地址锁存器SN74HC573直接与ISD1420连接,实现对ISD1420的多种控制与操作,其语音接口地址为P1口地址。P1.0产生一个由高到低的电平跳变或P1.1置低电平,器件进入放音状态,P1.2置低电平为录音状态。主要包括以下功能函数实现:⑴staticvoidSetStartTime(unsignedchartime):设定开始时间⑵voidSendBuffToIsd1420(unsignedchardat):将数据写入ISD1420⑶voidPlay(unsignedchartime,unsignedcharendtime):播放声音,time为起始时间,endtime为播放时间的长度。4.3.5温度采集模块程序的设计在温度采集模块的设置中我们采用的是温湿度传感器SHT10,程序设置的主要目的是对温湿度传感器SHT10进行初始化及工作状态的设置,使其能够完成对单点温度的测量及所测温度值的正确输出,并送入LED显示器进行显示。主要由以下功能函数组成:⑴staticvoiddelay(unsignedchartime):延时。第四章软件设计32⑵staticvoidSendByte(unsignedcharbyte):向SHT10发送一个字节的数据。⑶staticvoidSendStart(void):向SHT10发送开始信号。⑷staticunsignedcharReceiveByte(void):从SHT10接收一个字节的数据。4.3.6键盘程序模块的设计本系统采用的是16(4*4)键盘的硬件设置,对这16个按键功能的设置也是本系统的特色所在。键盘程序模块主要提供键盘功能实现函数。1、具体按键功能设置如下:⑴9键:此按键为定时(闹钟)显示与时间显示切换键,当按下此键后,显示器上将显示当前的定时(时钟)时间,经过一段时间后系统将自动恢复到时间显示状态。其显示格式为“hh-mm-ss”。⑵Del键:此键为日期显示与时间显示切换键,在正常时间显示模式下,按下此键显示器将显示当前的日期,显示格式为“yy-mm-dd”,经过一段时间后系统将自动恢复到时间显示状态。当进入时间日期设置模式时,按下此键可以进行时间与日期设置的切换。⑶/键:此按键为温度显示与时间显示的切换键,在正常模式下,按下此键显示器将切换到温度测量的显示,显示格式为“P□□□××.××”。当系统测量4此温度后会自动切换回时间显示模式。⑷Enter键:时间日期设置键,当按下此键后进入时间设置,时间格式中秒的最低位开始闪烁,准备接收用户设置的时间值,按键盘的换位键(+)可以移动闪烁光标进行相应位的时间设置,按下时间与日期切换键(Del)可以进入日期的设置。完成后按设置键(Enter)即可完成时间日期的设置。之后由软件进行时间与日期的合法性校对。如果符合规则,那么将日期与时吉林工程技术师范学院毕业论文33间更新到DS1302中,否则放弃此次的更新数据。当成功更新后,显示器将先显示日期,经过一定时间后返回时间的显示。否则直接更新到当前时间的显示。⑸+键:此键为光标换位键,正常模式下此键无响应。当按下Enter键后,此键功能启动,按下此键会对闪烁光标移动。当按下定时设置键(*)时,此键也是闪烁光标切换键。⑹–键:启动与停止定时(闹钟)键,当第一次按下此键后
本文标题:吉林工程技术师范学院单片机毕业论文-第四章-软件设计
链接地址:https://www.777doc.com/doc-4669703 .html