1、题目:电脑钟的设计与制作姓名:学号:1设计任务分为以下几个部分设计任务分为以下几个部分一、设计要求一、设计要求二、总体方案二、总体方案三、硬件设计三、硬件设计四、软件设计四、软件设计五、系统调试与脱机运行五、系统调试与脱机运行六、结束语六、结束语2一一 设计要求设计要求设计并制作出具有如下功能的电脑时钟:设计并制作出具有如下功能的电脑时钟:设计并制作出具有如下功能的电脑时钟:设计并制作出具有如下功能的电脑时钟:一、具备校准功能,可以直接由一、具备校准功能,可以直接由0 09 9数字键设置当前时间。数字键设置当前时间。二、具备定时启闹功能。二、具备定时启闹功能。三、自动计时,由三、自动计时,由6
2、 6位位LEDLED显示器显示时、分、秒。显示器显示时、分、秒。四、一天时差不超过四、一天时差不超过1S1S。3 二二 总体方案总体方案 一、一、一、一、计时计时计时计时方案方案方案方案方案一:采用方案一:采用方案一:采用方案一:采用实时时钟实时时钟实时时钟实时时钟芯片芯片芯片芯片实实实实时时时时时时时时钟钟钟钟芯芯芯芯片片片片具具具具备备备备年年年年、月月月月、日日日日、时时时时、分分分分、秒秒秒秒计计计计时时时时功功功功能能能能和和和和多多多多点点点点定定定定时时时时功功功功能,计时数据的更新每秒自动进行一次,不需程序干预。能,计时数据的更新每秒自动进行一次,不需程序干预。能,计时数据的更
3、新每秒自动进行一次,不需程序干预。能,计时数据的更新每秒自动进行一次,不需程序干预。方案二:方案二:方案二:方案二:软软软软件控制件控制件控制件控制利利利利用用用用MCS-51MCS-51内内内内部部部部的的的的定定定定时时时时/计计计计数数数数器器器器进进进进行行行行中中中中断断断断定定定定时时时时,配配配配合合合合软软软软件件件件延延延延时时时时实实实实现现现现时、分、秒的计时。时、分、秒的计时。时、分、秒的计时。时、分、秒的计时。4 二、二、二、二、键盘键盘键盘键盘/显显显显示方案示方案示方案示方案 对于实时时钟而言,显示是另一个重要的环节。对于实时时钟而言,显示是另一个重要的环节。对于
4、实时时钟而言,显示是另一个重要的环节。对于实时时钟而言,显示是另一个重要的环节。方案一:串口扩展,方案一:串口扩展,方案一:串口扩展,方案一:串口扩展,LEDLED静态显示静态显示静态显示静态显示 ,下面是静态显示框图。该,下面是静态显示框图。该,下面是静态显示框图。该,下面是静态显示框图。该方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有方案占用口资源少,利用串口扩展并口,实现静态显示,显示亮度有保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行保证,
5、但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行保证,但硬件开销大,电路复杂,信息刷新速度慢,比较适用于并行口资源较少的场合。口资源较少的场合。口资源较少的场合。口资源较少的场合。串行口8031P1口LED1LED2移位寄存器移位寄存器44键盘5 方案二:直接接口,方案二:直接接口,方案二:直接接口,方案二:直接接口,LEDLED动态显示,下面是动态显示框图。动态显示,下面是动态显示框图。动态显示,下面是动态显示框图。动态显示,下面是动态显示框图。直接使用单片机的并行口作显示接口,无需外扩接口芯片,但占直接使用单片机的并行口作显
6、示接口,无需外扩接口芯片,但占直接使用单片机的并行口作显示接口,无需外扩接口芯片,但占直接使用单片机的并行口作显示接口,无需外扩接口芯片,但占用口资源较多,且动态扫描显示方式需占用用口资源较多,且动态扫描显示方式需占用用口资源较多,且动态扫描显示方式需占用用口资源较多,且动态扫描显示方式需占用CPUCPU较多的时间,在单片较多的时间,在单片较多的时间,在单片较多的时间,在单片机没有太多外围接口及实时测控任务的情况下可以采用。本系统选择机没有太多外围接口及实时测控任务的情况下可以采用。本系统选择机没有太多外围接口及实时测控任务的情况下可以采用。本系统选择机没有太多外围接口及实时测控任务的情况下可
7、以采用。本系统选择动态显示方式。动态显示方式。动态显示方式。动态显示方式。8031LED显示44键盘6三三 硬件设计硬件设计一、电路原理图一、电路原理图一、电路原理图一、电路原理图 电脑钟硬件原理图见图。电脑时钟电路的核心是电脑钟硬件原理图见图。电脑时钟电路的核心是电脑钟硬件原理图见图。电脑时钟电路的核心是电脑钟硬件原理图见图。电脑时钟电路的核心是AT89S51AT89S51AT89S51AT89S51单片机,单片机,单片机,单片机,其内部带有其内部带有其内部带有其内部带有4KB4KB4KB4KB的的的的FLASH ROM,FLASH ROM,FLASH ROM,FLASH ROM,无需外扩程
8、序存储器;电脑时钟没有大量无需外扩程序存储器;电脑时钟没有大量无需外扩程序存储器;电脑时钟没有大量无需外扩程序存储器;电脑时钟没有大量的运算和暂存数据,现有的的运算和暂存数据,现有的的运算和暂存数据,现有的的运算和暂存数据,现有的128B128B128B128B片内片内片内片内RAMRAMRAMRAM已满足要求,也不必外扩片外已满足要求,也不必外扩片外已满足要求,也不必外扩片外已满足要求,也不必外扩片外RAMRAMRAMRAM,系统配备,系统配备,系统配备,系统配备6 6 6 6位位位位LEDLEDLEDLED显示和显示和显示和显示和4X34X34X34X3键盘,采用单片机的并行口作为键盘键盘
9、,采用单片机的并行口作为键盘键盘,采用单片机的并行口作为键盘键盘,采用单片机的并行口作为键盘/显示器接口电路。利用显示器接口电路。利用显示器接口电路。利用显示器接口电路。利用P0P0P0P0口作为口作为口作为口作为6 6 6 6位位位位LEDLEDLEDLED显示的位选口,其中,显示的位选口,其中,显示的位选口,其中,显示的位选口,其中,P0.0P0.0P0.0P0.0P0.5P0.5P0.5P0.5分别对应分别对应分别对应分别对应LED0LED0LED0LED0LED5LED5LED5LED5,P1P1P1P1口则作为断选口,口则作为断选口,口则作为断选口,口则作为断选口,P2P2P2P2口
10、的低口的低口的低口的低3 3 3 3位为键盘输位为键盘输位为键盘输位为键盘输入口,对应入口,对应入口,对应入口,对应0 0 0 02 2 2 2行,行,行,行,P0P0P0P0口同时用作键盘的列扫描口。由于采用共阴极数口同时用作键盘的列扫描口。由于采用共阴极数口同时用作键盘的列扫描口。由于采用共阴极数口同时用作键盘的列扫描口。由于采用共阴极数据码管,因此据码管,因此据码管,因此据码管,因此P0P0P0P0口输出低电平选中相应的位,而口输出低电平选中相应的位,而口输出低电平选中相应的位,而口输出低电平选中相应的位,而P1P1P1P1口输出高电平电量相口输出高电平电量相口输出高电平电量相口输出高电
11、平电量相应的段。应的段。应的段。应的段。P2.7P2.7P2.7P2.7接蜂鸣器,低电平驱动蜂鸣器叫启闹。接蜂鸣器,低电平驱动蜂鸣器叫启闹。接蜂鸣器,低电平驱动蜂鸣器叫启闹。接蜂鸣器,低电平驱动蜂鸣器叫启闹。78 二、本电脑钟具备以下功能:二、本电脑钟具备以下功能:二、本电脑钟具备以下功能:二、本电脑钟具备以下功能:(1 1 1 1)时钟显示:)时钟显示:)时钟显示:)时钟显示:6 6 6 6位位位位LEDLEDLEDLED从左到右依次显示时、分、秒,采用从左到右依次显示时、分、秒,采用从左到右依次显示时、分、秒,采用从左到右依次显示时、分、秒,采用24242424小时计时。小时计时。小时计时
12、。小时计时。(2 2 2 2)键盘功能:采用)键盘功能:采用)键盘功能:采用)键盘功能:采用4X34X34X34X3键盘,包括:键盘,包括:键盘,包括:键盘,包括:0 0 0 09 9 9 9:数字键,键号为:数字键,键号为:数字键,键号为:数字键,键号为00H00H00H00H09H.09H.09H.09H.C/R C/R C/R C/R键:时间设定键:时间设定键:时间设定键:时间设定/启动计时键,键号为启动计时键,键号为启动计时键,键号为启动计时键,键号为0AH0AH0AH0AH。ALMALMALMALM键:闹钟设置键:闹钟设置键:闹钟设置键:闹钟设置/启闹启闹启闹启闹/停闹键,键号为停闹
13、键,键号为停闹键,键号为停闹键,键号为0BH0BH0BH0BH。其工作流程如下:其工作流程如下:其工作流程如下:其工作流程如下:(1 1 1 1)时间显示:通电后,系统自动进入时钟显示,从)时间显示:通电后,系统自动进入时钟显示,从)时间显示:通电后,系统自动进入时钟显示,从)时间显示:通电后,系统自动进入时钟显示,从00000000:00000000:00000000开始开始开始开始 计计计计 时,此时可以设定当前时间。时,此时可以设定当前时间。时,此时可以设定当前时间。时,此时可以设定当前时间。(2 2 2 2)时间调整;按下)时间调整;按下)时间调整;按下)时间调整;按下C/RC/RC/
14、RC/R键,系统停止计时,进入时间设定状态,系统键,系统停止计时,进入时间设定状态,系统键,系统停止计时,进入时间设定状态,系统键,系统停止计时,进入时间设定状态,系统 保持原有显示,等待键入当前时间。按下保持原有显示,等待键入当前时间。按下保持原有显示,等待键入当前时间。按下保持原有显示,等待键入当前时间。按下0 0 0 09 9 9 9数字键可以顺序设置时、分、数字键可以顺序设置时、分、数字键可以顺序设置时、分、数字键可以顺序设置时、分、秒,并在相应秒,并在相应秒,并在相应秒,并在相应LEDLEDLEDLED管上显示设置值,直至管上显示设置值,直至管上显示设置值,直至管上显示设置值,直至6
15、 6 6 6位设置完毕。系统将自动由设定后位设置完毕。系统将自动由设定后位设置完毕。系统将自动由设定后位设置完毕。系统将自动由设定后 的时间开始计时显示。的时间开始计时显示。的时间开始计时显示。的时间开始计时显示。(3 3 3 3)闹钟设置)闹钟设置)闹钟设置)闹钟设置/启闹启闹启闹启闹/停闹:按下停闹:按下停闹:按下停闹:按下ALMALMALMALM键,系统继续计时,显示键,系统继续计时,显示键,系统继续计时,显示键,系统继续计时,显示00000000:00000000:00000000,进入闹钟设置状态,等待键入启闹时间。按下,进入闹钟设置状态,等待键入启闹时间。按下,进入闹钟设置状态,等
16、待键入启闹时间。按下,进入闹钟设置状态,等待键入启闹时间。按下0 0 0 09 9 9 9数字键可以顺序进行数字键可以顺序进行数字键可以顺序进行数字键可以顺序进行相应的时间设置,并在相应在相应的时间设置,并在相应在相应的时间设置,并在相应在相应的时间设置,并在相应在LEDLEDLEDLED管上显示设置值,直至管上显示设置值,直至管上显示设置值,直至管上显示设置值,直至6 6 6 6为设置完毕。这将为设置完毕。这将为设置完毕。这将为设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重启动定时启闹功能,并恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重启动定时启闹功能,并
17、恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重启动定时启闹功能,并恢复时间显示。定时时间到,则蜂鸣器鸣叫,直至重新按下新按下新按下新按下ALMALMALMALM键停闹,并取消闹钟设置。键停闹,并取消闹钟设置。键停闹,并取消闹钟设置。键停闹,并取消闹钟设置。9四四 软件设计软件设计一、系一、系一、系一、系统资统资统资统资源分配源分配源分配源分配 为方便阅读程序,先对系统的资源分配加以说明。为方便阅读程序,先对系统的资源分配加以说明。为方便阅读程序,先对系统的资源分配加以说明。为方便阅读程序,先对系统的资源分配加以说明。(1 1 1 1)定时器:定时器)定时器:定时器)定时器:定时器)定时器:定时
18、器0 0 0 0用作时钟定时,按方式用作时钟定时,按方式用作时钟定时,按方式用作时钟定时,按方式1 1 1 1工作,每隔工作,每隔工作,每隔工作,每隔100ms100ms100ms100ms溢出溢出溢出溢出中断一次。中断一次。中断一次。中断一次。(2 2 2 2)片内)片内)片内)片内RAMRAMRAMRAM及标志位的分配与定义见表如下:及标志位的分配与定义见表如下:及标志位的分配与定义见表如下:及标志位的分配与定义见表如下:电子钟控制软件片内电子钟控制软件片内电子钟控制软件片内电子钟控制软件片内RAMRAMRAMRAM及标志位分配表:及标志位分配表:及标志位分配表:及标志位分配表:10二、根
19、据上述工作流程,软件设计可分为以下几个功能模块:二、根据上述工作流程,软件设计可分为以下几个功能模块:二、根据上述工作流程,软件设计可分为以下几个功能模块:二、根据上述工作流程,软件设计可分为以下几个功能模块:(1 1 1 1)主程序:初始化与键盘监控。)主程序:初始化与键盘监控。)主程序:初始化与键盘监控。)主程序:初始化与键盘监控。(2 2 2 2)计时:为定时器)计时:为定时器)计时:为定时器)计时:为定时器0 0 0 0中断服务子程序,完成刷新缓冲区的计时功中断服务子程序,完成刷新缓冲区的计时功中断服务子程序,完成刷新缓冲区的计时功中断服务子程序,完成刷新缓冲区的计时功能。能。能。能。
20、(3 3 3 3)时间设置与闹钟设置:由键盘输入数字当前时间与定时启闹时)时间设置与闹钟设置:由键盘输入数字当前时间与定时启闹时)时间设置与闹钟设置:由键盘输入数字当前时间与定时启闹时)时间设置与闹钟设置:由键盘输入数字当前时间与定时启闹时间。间。间。间。(4 4 4 4)显示:完成)显示:完成)显示:完成)显示:完成6 6 6 6位动态显示。位动态显示。位动态显示。位动态显示。(5 5 5 5)键盘扫描:判断是否有键按下,并求取键号。)键盘扫描:判断是否有键按下,并求取键号。)键盘扫描:判断是否有键按下,并求取键号。)键盘扫描:判断是否有键按下,并求取键号。(6 6 6 6)定时比较:判断启
21、闹时间到否,如时间到,则启动蜂鸣器鸣叫。)定时比较:判断启闹时间到否,如时间到,则启动蜂鸣器鸣叫。)定时比较:判断启闹时间到否,如时间到,则启动蜂鸣器鸣叫。)定时比较:判断启闹时间到否,如时间到,则启动蜂鸣器鸣叫。(7 7 7 7)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性)其它辅助功能子程序,如键盘设置、拆字、合字、时间合法性检测等。检测等。检测等。检测等。下面分模块进行软件设计:下面分模块进行软件设计:下面分模块进行软件设计:下面分模块进行软件设计:主程序模块主程序模
22、块主程序模块主程序模块MAINMAINMAINMAIN:流程图:流程图:流程图:流程图1 1 1 1如下所示。如下所示。如下所示。如下所示。11(1 1)主程序模块)主程序模块)主程序模块)主程序模块MAINMAIN:流程图:流程图:流程图:流程图1 1如下所示如下所示如下所示如下所示12(2 2)计计计计时时时时程程程程序序序序模模模模块块块块C CL LOOC CK K:流流流流程程程程图图图图2 2如如如如右右右右图图图图所所所所示示示示132024/3/6 周三14如前所述,系统定时采用定时器与软件循环相结合的方法。定时器如前所述,系统定时采用定时器与软件循环相结合的方法。定时器如前所
23、述,系统定时采用定时器与软件循环相结合的方法。定时器如前所述,系统定时采用定时器与软件循环相结合的方法。定时器0 0 0 0每隔每隔每隔每隔100ms100ms100ms100ms溢出中断一次,则循环中断溢出中断一次,则循环中断溢出中断一次,则循环中断溢出中断一次,则循环中断1 1 1 1次延时时间为次延时时间为次延时时间为次延时时间为1S1S1S1S,上述过程重复,上述过程重复,上述过程重复,上述过程重复60606060次为次为次为次为1 1 1 1分,分计时分,分计时分,分计时分,分计时60606060次为次为次为次为1 1 1 1小时,小时计时小时,小时计时小时,小时计时小时,小时计时2
24、4242424次则时间重新回到次则时间重新回到次则时间重新回到次则时间重新回到00000000:00000000:00.00.00.00.设系统使用设系统使用设系统使用设系统使用6MHZ6MHZ6MHZ6MHZ的晶振,定时器的晶振,定时器的晶振,定时器的晶振,定时器0 0 0 0工作在方式工作在方式工作在方式工作在方式1 1 1 1,则,则,则,则100ms100ms100ms100ms定时对应的定时器初定时对应的定时器初定时对应的定时器初定时对应的定时器初值值值值可由下式计算得到:可由下式计算得到:可由下式计算得到:可由下式计算得到:定时时间定时时间定时时间定时时间=(216-216-216
25、-216-定时器定时器定时器定时器0 0 0 0初值初值初值初值 )(12/fosc12/fosc12/fosc12/fosc)因此,定时器因此,定时器因此,定时器因此,定时器0 0 0 0初值初值初值初值=3CBOH=3CBOH=3CBOH=3CBOH,即,即,即,即TH0=3CHTH0=3CHTH0=3CHTH0=3CH,TL0=0B0HTL0=0B0HTL0=0B0HTL0=0B0H当系统使用其它频率的晶振时,可以由上式计算相应的定时器当系统使用其它频率的晶振时,可以由上式计算相应的定时器当系统使用其它频率的晶振时,可以由上式计算相应的定时器当系统使用其它频率的晶振时,可以由上式计算相应
26、的定时器0 0 0 0初值,也可以初值,也可以初值,也可以初值,也可以改变定时时间,例如当系统晶振为改变定时时间,例如当系统晶振为改变定时时间,例如当系统晶振为改变定时时间,例如当系统晶振为12MHZ12MHZ12MHZ12MHZ时,同样的初值对应的定时时间为时,同样的初值对应的定时时间为时,同样的初值对应的定时时间为时,同样的初值对应的定时时间为50ms50ms50ms50ms,则循环中断次数为则循环中断次数为则循环中断次数为则循环中断次数为20202020次时,延时时间为次时,延时时间为次时,延时时间为次时,延时时间为1s1s1s1s。这里有两个问题需要特别重视:这里有两个问题需要特别重视
27、:这里有两个问题需要特别重视:这里有两个问题需要特别重视:第一,定时器溢出产生中断请求,第一,定时器溢出产生中断请求,第一,定时器溢出产生中断请求,第一,定时器溢出产生中断请求,CPUCPUCPUCPU并不一定立即响应中断,而可能需要延并不一定立即响应中断,而可能需要延并不一定立即响应中断,而可能需要延并不一定立即响应中断,而可能需要延迟一个中断响应时间之后才能响应中断,中断响应时间大约为迟一个中断响应时间之后才能响应中断,中断响应时间大约为迟一个中断响应时间之后才能响应中断,中断响应时间大约为迟一个中断响应时间之后才能响应中断,中断响应时间大约为3 3 3 38 8 8 8个机器周期。个机器
28、周期。个机器周期。个机器周期。显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精显然,这将在定时时间中加入额外的延时时间,导致计时误差。为了保证计时精度,必须采取措施进行补偿。我们采用增大重装的定时器度,必须采取措施进行补偿。我们采用增大重装的定时器度,必须采取措施进行补偿。我们采用增大重装的定时器度,必须采取措施进行补偿。我们采用增大重装的定时器0 0 0 0初值的方方法来减少初值的方方法来减少初值的方方法来减少初值的方方法来减少定时
29、器定时器定时器定时器0 0 0 0的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,的定时时间。具体应调整为多大,一般需要通过调试来确定。经测试,定时器定时器定时器定时器0 0 0 0重装初值设为重装初值设为重装初值设为重装初值设为3CB7H3CB7H3CB7H3CB7H3CBFH3CBFH3CBFH3CBFH就可以满足精度要求。就可以满足精度要求。就可以满足精度要求。就可以满足精度要求。第二,时间是按十进制递增的,而第二,时间是按十进制递增的,而第二,时间是
30、按十进制递增的,而第二,时间是按十进制递增的,而MCS-51MCS-51MCS-51MCS-51单片机只有二进制加法指令,因此用单片机只有二进制加法指令,因此用单片机只有二进制加法指令,因此用单片机只有二进制加法指令,因此用加法指令计时必须进行二加法指令计时必须进行二加法指令计时必须进行二加法指令计时必须进行二十进制转换。十进制转换。十进制转换。十进制转换。15(3 3)时间设置程序和闹钟定时程序模块)时间设置程序和闹钟定时程序模块)时间设置程序和闹钟定时程序模块)时间设置程序和闹钟定时程序模块MODIFYMODIFY:流程图如图流程图如图流程图如图流程图如图3 3所示所示所示所示16将将将将
31、键键键键盘盘盘盘输输输输入入入入的的的的6 6位位位位时时时时间间间间合合合合并并并并为为为为3 3位位位位压压压压缩缩缩缩B BC CD D码码码码(时时时时、分分分分、秒秒秒秒)并并并并送送送送入入入入计计计计时时时时缓缓缓缓冲冲冲冲区区区区和和和和闹闹闹闹钟钟钟钟值值值值寄寄寄寄存存存存区区区区,作作作作为为为为当当当当前前前前计计计计时时时时起起起起始始始始时时时时间间间间或或或或闹闹闹闹钟钟钟钟定定定定时时时时时时时时间间间间。该该该该模模模模块块块块的的的的入入入入口口口口为为为为计计计计时时时时缓缓缓缓冲冲冲冲区区区区或或或或闹闹闹闹钟钟钟钟值值值值寄寄寄寄存存存存区区区区的的的
32、的首首首首地地地地址址址址,将将将将其其其其置置置置入入入入R R1 1中中中中。程程程程序序序序调调调调用用用用一一一一个个个个键键键键盘盘盘盘设设设设置置置置子子子子程程程程序序序序K KE EY YI IN N(其其其其流流流流程程程程图图图图如如如如图图图图4 4所所所所示示示示)来来来来将将将将键键键键入入入入的的的的6 6位位位位时时时时间间间间值值值值送送送送入入入入键键键键盘盘盘盘设设设设置置置置缓缓缓缓冲冲冲冲区区区区,然然然然后后后后用用用用合合合合字字字字子子子子程程程程序序序序C COOMMB B将将将将键键键键盘盘盘盘设设设设置置置置缓缓缓缓冲冲冲冲区区区区中中中中的
33、的的的6 6位位位位B BC CD D码码码码合合合合并并并并为为为为3 3位位位位压压压压缩缩缩缩B BC CD D码码码码,并并并并送送送送入入入入计计计计时时时时缓缓缓缓冲冲冲冲区区区区或或或或闹闹闹闹钟钟钟钟值值值值寄寄寄寄存存存存区区区区。该该该该程程程程序序序序同同同同时时时时作作作作为为为为时时时时间间间间值值值值合合合合法法法法性性性性检检检检测测测测程程程程序序序序,可可可可完完完完成成成成检检检检测测测测功功功功能能能能:若若若若键键键键盘盘盘盘输输输输入入入入的的的的小小小小时时时时值值值值大大大大于于于于2 23 3,分分分分和和和和秒秒秒秒值值值值大大大大于于于于5
34、59 9,则则则则不不不不合合合合法法法法,将将将将取取取取消消消消本本本本次次次次设设设设置置置置,清清清清0 0重重重重新新新新开开开开始始始始计计计计时时时时。(4 4)键键键键盘盘盘盘扫扫扫扫描描描描程程程程序序序序模模模模块块块块K KE EY YS SC CA AN N:流流流流程程程程图图图图如如如如图图图图5 5所所所所示示示示17 判断是否有键按下:无键按下则循环等待判断是否有键按下:无键按下则循环等待判断是否有键按下:无键按下则循环等待判断是否有键按下:无键按下则循环等待;有键按下则求取键号送入有键按下则求取键号送入有键按下则求取键号送入有键按下则求取键号送入A A A A
35、中累加器返回。程序中的去抖延时和循环等待延时都用中累加器返回。程序中的去抖延时和循环等待延时都用中累加器返回。程序中的去抖延时和循环等待延时都用中累加器返回。程序中的去抖延时和循环等待延时都用DISPLAYDISPLAYDISPLAYDISPLAY子程序来子程序来子程序来子程序来代替,从而保证随时刷新显示。代替,从而保证随时刷新显示。代替,从而保证随时刷新显示。代替,从而保证随时刷新显示。(5 5 5 5)显示程序模块)显示程序模块)显示程序模块)显示程序模块DISPLAYDISPLAYDISPLAYDISPLAY:流程图如图:流程图如图:流程图如图:流程图如图6 6 6 6所示所示所示所示
36、将显示缓冲区的将显示缓冲区的将显示缓冲区的将显示缓冲区的6 6 6 6位位位位BCDBCDBCDBCD码用动态扫描方式显示。为此,必须首先将码用动态扫描方式显示。为此,必须首先将码用动态扫描方式显示。为此,必须首先将码用动态扫描方式显示。为此,必须首先将3 3 3 3字字字字节计时缓冲中的时、分、秒压缩节计时缓冲中的时、分、秒压缩节计时缓冲中的时、分、秒压缩节计时缓冲中的时、分、秒压缩BCDBCDBCDBCD码拆分为码拆分为码拆分为码拆分为6 6 6 6字节(时、分、秒的十位、个位字节(时、分、秒的十位、个位字节(时、分、秒的十位、个位字节(时、分、秒的十位、个位分别占用分别占用分别占用分别占
37、用1 1 1 1字节)字节)字节)字节)BCDBCDBCDBCD码,这一功能由拆字子程序码,这一功能由拆字子程序码,这一功能由拆字子程序码,这一功能由拆字子程序SEPASEPASEPASEPA来实现。来实现。来实现。来实现。需要注意的是,当按下时间或闹钟设置键后,在需要注意的是,当按下时间或闹钟设置键后,在需要注意的是,当按下时间或闹钟设置键后,在需要注意的是,当按下时间或闹钟设置键后,在6 6 6 6位设置完成之前,应位设置完成之前,应位设置完成之前,应位设置完成之前,应显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标显示键入的数据,而不显示当前时间。为此,我们设置了一个
38、计时显示允许标显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标显示键入的数据,而不显示当前时间。为此,我们设置了一个计时显示允许标志位志位志位志位F0F0F0F0,在时间,在时间,在时间,在时间/闹钟设置期间闹钟设置期间闹钟设置期间闹钟设置期间F0=1,F0=1,F0=1,F0=1,不调用不调用不调用不调用SEPASEPASEPASEPA,即调用,即调用,即调用,即调用SEPASEPASEPASEPA刷新显示缓冲区刷新显示缓冲区刷新显示缓冲区刷新显示缓冲区的前提条件是的前提条件是的前提条件是的前提条件是F0=0F0=0F0=0F0=0。18(6 6 6 6)定时比较程序模块
39、)定时比较程序模块)定时比较程序模块)定时比较程序模块ALARM:ALARM:ALARM:ALARM:流程图如图流程图如图流程图如图流程图如图7 7 7 7所示所示所示所示将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的将当前时间(计时缓冲区的值)与预设的启闹时间(闹钟设置寄存区的值)进行比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。值)进行比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。值)进行比较,二者完全相同时,启动蜂鸣器鸣叫,并置位
40、闹钟标志位。值)进行比较,二者完全相同时,启动蜂鸣器鸣叫,并置位闹钟标志位。返回后,带重新按下返回后,带重新按下返回后,带重新按下返回后,带重新按下ALMALMALMALM键停闹,并清键停闹,并清键停闹,并清键停闹,并清0 0 0 0闹钟标志。闹钟标志。闹钟标志。闹钟标志。19(7 7 7 7)拆字程序)拆字程序)拆字程序)拆字程序SEPASEPASEPASEPA与合字出现与合字出现与合字出现与合字出现COMBCOMBCOMBCOMB:如前所述,拆字程序的功能是将如前所述,拆字程序的功能是将如前所述,拆字程序的功能是将如前所述,拆字程序的功能是将3 3 3 3字节计时缓冲区中的时、分、秒压缩字
41、节计时缓冲区中的时、分、秒压缩字节计时缓冲区中的时、分、秒压缩字节计时缓冲区中的时、分、秒压缩BCDBCDBCDBCD码拆分为码拆分为码拆分为码拆分为6 6 6 6字节(时、分、秒的十位、个位分别占用字节(时、分、秒的十位、个位分别占用字节(时、分、秒的十位、个位分别占用字节(时、分、秒的十位、个位分别占用1 1 1 1字节)字节)字节)字节)BCDBCDBCDBCD码并刷新显示码并刷新显示码并刷新显示码并刷新显示缓冲;合字程序的功能是将键盘设置缓冲区中的缓冲;合字程序的功能是将键盘设置缓冲区中的缓冲;合字程序的功能是将键盘设置缓冲区中的缓冲;合字程序的功能是将键盘设置缓冲区中的6 6 6 6
42、位位位位BCDBCDBCDBCD码合并为码合并为码合并为码合并为3 3 3 3位压缩位压缩位压缩位压缩BCDBCDBCDBCD码,送入计时缓冲区或闹钟值寄存区,同时检测时间值得合法性。码,送入计时缓冲区或闹钟值寄存区,同时检测时间值得合法性。码,送入计时缓冲区或闹钟值寄存区,同时检测时间值得合法性。码,送入计时缓冲区或闹钟值寄存区,同时检测时间值得合法性。五五 系统调试与脱机运行系统调试与脱机运行 完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常完成了
43、硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个计算机系统,其运行是软、硬件相结合的,因此,软、硬件的调试也作为一个计算机系统,其运行是软、硬件相结合的,因此,软、硬件的调试也作为一个计算机系统,其运行是软、硬件相结合的,因此,软、硬件的调试也作为一个计算机系统,其运行是软、硬件相结合的,因此,软、硬
44、件的调试也是不可能绝对分开的。硬件的调试常常需要利用调试软件,软件的调试也可能是不可能绝对分开的。硬件的调试常常需要利用调试软件,软件的调试也可能是不可能绝对分开的。硬件的调试常常需要利用调试软件,软件的调试也可能是不可能绝对分开的。硬件的调试常常需要利用调试软件,软件的调试也可能需要通过对硬件的测试和控制来进行。需要通过对硬件的测试和控制来进行。需要通过对硬件的测试和控制来进行。需要通过对硬件的测试和控制来进行。20一、硬件调试一、硬件调试一、硬件调试一、硬件调试 硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。
45、硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。(1 1 1 1)脱机检测。用万用表逐步按照电路原理图检查印制电路板中所有器件)脱机检测。用万用表逐步按照电路原理图检查印制电路板中所有器件)脱机检测。用万用表逐步按照电路原理图检查印制电路板中所有器件)脱机检测。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的链接是否正确;检查数据总线、地址总线和控制总线是的各引脚,尤其是电源的链接是否正确;检查数据总线、地址总线和控制总线是的各引脚,尤其是电源的链接是否正确;检查数据总线、地址总线和控制总线
46、是的各引脚,尤其是电源的链接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。为了保护芯片,应先对各确;各限流电阻是否短路等。为了保护芯片,应先对各确;各限流电阻是否短路等。为了保护芯片,应先对各确;各限流电阻是否短路等。为了保护芯片,应先对各ICICICIC座(优先是电源端)点座(优先是电源端)点
47、座(优先是电源端)点座(优先是电源端)点位进行检查,确定其无误后再插入芯片检查。位进行检查,确定其无误后再插入芯片检查。位进行检查,确定其无误后再插入芯片检查。位进行检查,确定其无误后再插入芯片检查。(2 2 2 2)联机调试。暂时拔掉)联机调试。暂时拔掉)联机调试。暂时拔掉)联机调试。暂时拔掉AT89S51AT89S51AT89S51AT89S51芯片,将仿真器的芯片,将仿真器的芯片,将仿真器的芯片,将仿真器的40404040芯仿真插头插入芯仿真插头插入芯仿真插头插入芯仿真插头插入AT89S51AT89S51AT89S51AT89S51的芯片插座进行调试,检查键盘的芯片插座进行调试,检查键盘
48、的芯片插座进行调试,检查键盘的芯片插座进行调试,检查键盘/显示接口电路是否满足设计要求。可以显示接口电路是否满足设计要求。可以显示接口电路是否满足设计要求。可以显示接口电路是否满足设计要求。可以通过一些简单的软件来查看接口工作是否正常。例如,我们可以设计一个软件,通过一些简单的软件来查看接口工作是否正常。例如,我们可以设计一个软件,通过一些简单的软件来查看接口工作是否正常。例如,我们可以设计一个软件,通过一些简单的软件来查看接口工作是否正常。例如,我们可以设计一个软件,使使使使P1P1P1P1、P2P2P2P2口输出口输出口输出口输出55H55H55H55H或或或或AAHAAHAAHAAH,同
49、时读,同时读,同时读,同时读P0P0P0P0口,运行后用万用表检查相应端口电平是否口,运行后用万用表检查相应端口电平是否口,运行后用万用表检查相应端口电平是否口,运行后用万用表检查相应端口电平是否一高一低,在仿真器中检查读入的一高一低,在仿真器中检查读入的一高一低,在仿真器中检查读入的一高一低,在仿真器中检查读入的P0P0P0P0口低口低口低口低3 3 3 3位是否为位是否为位是否为位是否为1 1 1 1,如果正常则说明,如果正常则说明,如果正常则说明,如果正常则说明8155815581558155工作工作工作工作正常。还可设计一个使所有正常。还可设计一个使所有正常。还可设计一个使所有正常。还
50、可设计一个使所有LEDLEDLEDLED全显示全显示全显示全显示“8.8.8.8.”的静态显示程序来检验的静态显示程序来检验的静态显示程序来检验的静态显示程序来检验LEDLEDLEDLED的好坏。的好坏。的好坏。的好坏。如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取相应如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取相应如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取相应如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取相应措施排除故障。措施排除故障。措施排除故障。措施排除故障。21二、软件调试二、软件调试二、软件调试二、