《毕业答辩演示文稿.ppt》由会员分享,可在线阅读,更多相关《毕业答辩演示文稿.ppt(23页珍藏版)》请在三一办公上搜索。
1、1,题目:电脑时钟的设计与制作 主讲:张兴平 班级:09高职机管 学号:2009401116,黔南职院机电系论文答辩,2,第一节 设计要求,设计并制作出具有如下功能的电脑时钟:自动计时,由6位LED显示器显示时、分、秒。具备校准功能,可以直接由09数字键设置当前时间。具备定时启闹功能。一天时差不超过1S。,3,一、计时方案方案一:采用实时时钟芯片实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。方案二:软件控制利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。,第二节 总体方案,4,二、键盘/显示方案 对
2、于实时时钟而言,显示是另一个重要的环节。方案1:串口扩展,LED静态显示,下面是静态显示框图。该方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。,5,方案2:直接接口,LED动态显示,下面是动态显示框图。直接使用单片机的并行口作显示接口,无需外扩接口芯片,但占用口资源较多,且动态扫描显示方式需占用CPU较多的时间,在单片机没有太多外围接口及实时测控任务的情况下可以采用。本系统选择动态显示方式。,6,第三节 硬件设计,一、电路原理图 电脑钟硬件原理图见图。电脑时钟电路的核心是AT89S51单片机,其内部带有
3、4KB的FLASH ROM,无需外扩程序存储器;电脑时钟没有大量的运算和暂存数据,现有的128B片内RAM已满足要求,也不必外扩片外RAM,系统配备6位LED显示和4X3键盘,采用单片机的并行口作为键盘/显示器接口电路。利用P0口作为6位LED显示的位选口,其中,P0.0P0.5分别对应LED0LED5,P1口则作为断选口,P2口的低3位为键盘输入口,对应02行,P0口同时用作键盘的列扫描口。由于采用共阴极数据码管,因此P0口输出低电平选中相应的位,而P1口输出高电平电量相应的段。P2.7接蜂鸣器,低电平驱动蜂鸣器叫启闹。,7,8,二、本电脑钟具备以下功能:(1)时钟显示:6位LED从左到右依
4、次显示时、分、秒,采用24小时计时。(2)键盘功能:采用4X3键盘,包括:09:数字键,键号为00H09H.C/R键:时间设定/启动计时键,键号为0AH。ALM键:闹钟设置/启闹/停闹键,键号为0BH。其工作流程如下:(1)时间显示:通电后,系统自动进入时钟显示,从00:00:00开始 计 时,此时可以设定当前时间。(2)时间调整;按下C/R键,系统停止计时,进入时间设定状态,系统 保持原有显示,等待键入当前时间。按下09数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。系统将自动由设定后 的时间开始计时显示。(3)闹钟设置/启闹/停闹:按下ALM键,系统继续计时,
5、显示00:00:00,进入闹钟设置状态,等待键入启闹时间。按下09数字键可以顺序进行相应的时间设置,并在相应在LED管上显示设置值,直至6为设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。,9,第四节 软件设计,一、系统资源分配 为方便阅读程序,先对系统的资源分配加以说明。(1)定时器:定时器0用作时钟定时,按方式1工作,每隔100ms溢出中断一次。(2)片内RAM及标志位的分配与定义见表如下:电子钟控制软件片内RAM及标志位分配表:,10,二、根据上述工作流程,软件设计可分为以下几个功能模块:(1)主程序:初始化与键盘监控。
6、(2)计时:为定时器0中断服务子程序,完成刷新缓冲区的计时功能。(3)时间设置与闹钟设置:由键盘输入数字当前时间与定时启闹时间。(4)显示:完成6位动态显示。(5)键盘扫描:判断是否有键按下,并求取键号。(6)定时比较:判断启闹时间到否,如时间到,则启动蜂鸣器鸣叫。(7)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。下面分模块进行软件设计:主程序模块MAIN:流程图1如下所示。,11,(1)主程序模块MAIN:流程图1如下所示,12,(2)计时程序模块CLOCK:流程图2如右图所示,13,如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0每隔100ms溢出中断一次,则
7、循环中断1次延时时间为1S,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00.设系统使用6MHZ的晶振,定时器0工作在方式1,则100ms定时对应的定时器初值可由下式计算得到:定时时间=(216-定时器0初值)(12/fosc)因此,定时器0初值=3CBOH,即TH0=3CH,TL0=0B0H当系统使用其它频率的晶振时,可以由上式计算相应的定时器0初值,也可以改变定时时间,例如当系统晶振为12MHZ时,同样的初值对应的定时时间为50ms,则循环中断次数为20次时,延时时间为1s。这里有两个问题需要特别重视:第一,定时器溢出产生中断请求,CPU并不一定
8、立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为38个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器0初值的方方法来减少定时器0的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器0重装初值设为3CB7H3CBFH就可以满足精度要求。第二,时间是按十进制递增的,而MCS-51单片机只有二进制加法指令,因此用加法指令计时必须进行二十进制转换。,14,(3)时间设置程序和闹钟定时程序模块MODIFY:流程图如图3所示,15,将键盘输入的6位时间合并为3位压缩BCD码(
9、时、分、秒)并送入计时缓冲区和闹钟值寄存区,作为当前计时起始时间或闹钟定时时间。该模块的入口为计时缓冲区或闹钟值寄存区的首地址,将其置入R1中。程序调用一个键盘设置子程序KEYIN(其流程图如图4所示)来将键入的6位时间值送入键盘设置缓冲区,然后用合字子程序COMB将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,并送入计时缓冲区或闹钟值寄存区。该程序同时作为时间值合法性检测程序,可完成检测功能:若键盘输入的小时值大于23,分和秒值大于59,则不合法,将取消本次设置,清0重新开始计时。(4)键盘扫描程序模块KEYSCAN:流程图如图5所示,16,判断是否有键按下:无键按下则循环等待;有键
10、按下则求取键号送入A中累加器返回。程序中的去抖延时和循环等待延时都用DISPLAY子程序来代替,从而保证随时刷新显示。(5)显示程序模块DISPLAY:流程图如图6所示,将显示缓冲区的6位BCD码用动态扫描方式显示。为此,必须首先将3字节计时缓冲中的时、分、秒压缩BCD码拆分为6字节(时、分、秒的十位、个位分别占用1字节)BCD码,这一功能由拆字子程序SEPA来实现。需要注意的是,当按下时间或闹钟设置键后,在6位设置完成之前,应显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标志位F0,在时间/闹钟设置期间F0=1,不调用SEPA,即调用SEPA刷新显示缓冲区的前提条件是F0
11、=0。动态显示程序在第6章中已给出,在此不在傲述。,17,(6)定时比较程序模块ALARM:流程图如图7所示,将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)进行比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。返回后,带重新按下ALM键停闹,并清0闹钟标志。,18,第七节 系统调试与脱机运行,(7)拆字程序SEPA与合字出现COMB:如前所述,拆字程序的功能是将3字节计时缓冲区中的时、分、秒压缩BCD码拆分为6字节(时、分、秒的十位、个位分别占用1字节)BCD码并刷新显示缓冲;合字程序的功能是将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟
12、值寄存区,同时检测时间值得合法性。,完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个计算机系统,其运行是软、硬件相结合的,因此,软、硬件的调试也是不可能绝对分开的。硬件的调试常常需要利用调试软件,软件的调试也可能需要通过对硬件的测试和控制来进行。,19,一、硬件调试 硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。(1)脱机检测。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的链接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开
13、关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(优先是电源端)点位进行检查,确定其无误后再插入芯片检查。(2)联机调试。暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检查键盘/显示接口电路是否满足设计要求。可以通过一些简单的软件来查看接口工作是否正常。例如,我们可以设计一个软件,使P1、P2口输出55H或AAH,同时读P0口,运行后用万用表检查相应端口电平是否一高一低,在仿真器中检查读入的P0口低3位是否为1,如果正常则说明8155工作正常。还可设计一个使所有LED全显示“8.”的静态显示程序来检验LED的好坏
14、。如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取相应措施排除故障。,20,二、软件调试 软件调试的任务是利用开发工具进行在线仿真,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应一个模块地进行,首先单独调试各功能子程序,检验程序是否实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各出现模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。调试的基本步骤如下:(1)用仿真器修改刑事缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。例如将DISP0DISP5单元置为“012345”,应能在LED上从左到右显示“012345”
15、。若显示不正确,可在DISP子程序相应位置断点,调试检查。然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY.例如,将HOUR、MIN、SEC单元置为“123456”检查是否能正确显示“12:34:56”。若显示不正确,应在SEPA子程序相应位置设置断点,调试检查。(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:00:00开始正确计时。若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。然后屏蔽缓冲初始化部分,用仿真器修改计时缓冲区内容为23:58:48,运行主程序(不按下任何键),检验能否
16、正确进位。,21,(3)调试键盘扫描模块KEYSCAN,先用延时10MS子程序代替显示子程序延时消抖,在求取建号后设置断点,中断后观察A累加器的键号是否正确;然后用恢复用显示子程序延时消抖,检测与DISPLAY模块能否正确连接。(4)调试时间设置/闹钟定时模块MODIFY。首先屏蔽COMB子程序单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示,然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,运行程序后查看时间设置缓冲区HOUR、MIN、SEC
17、单元和闹钟值寄存区AHOUR、AMIN、ASEC单元的内容是否正确。最后联调MODIFY模块。(5)运行主程序联调,检查能否用键盘修改当前时间以及设置闹钟,能否正确计时、启闹、停闹。,22,(1)脱机工作软、硬件调试成功之后,可以将程序固化到AT89S51的Flash ROM中,插入AT89S51芯片,接上电源脱机运行。既然软、硬件都已调试成功,那么脱机运行似乎肯定成功,然而事实往往并非如此,仍有可能出现以下故障:,(2)系统不工作。其原因主要有晶振不起振(晶振损坏、晶振电路布正常导致晶振信号太弱等),或脚没有接高电平(接地或悬空)等。,(3)系统工作时好时坏。这主要是由于干扰引起的。由于本系统没有传感输入道通和控制输出通道,干扰源相对较少且简单,因此,在电源、总线处对地接滤波电容一般可以解决问题。,23,完毕!谢谢各位老师!,