1 / 26

咸阳职业技术学院电子信息系

项目二 电子打铃装置. 第 7 讲 电子时钟. 《 单片机原理及应用 》. 咸阳职业技术学院电子信息系. 1 电子时钟总体设计. 2. 电子时钟硬件设计. 3. 电子时钟软件设计. 本讲主要内容. 1 电子时钟总体设计. 1.1 明确任务. 根据课题的要求确定系统的工作原理。如电脑时钟的工作原理为:每百分之一秒对计数一次,满 100 次秒加一,秒满 60 次分加一 …… ;并在数码管上显示时、分秒当前值。. 如果需要还要提出相应的技术指标。如电脑时钟要求显示的最小单位为秒,还是百分之一秒. 1.2 硬件和软件功能的划分.

gratia
Download Presentation

咸阳职业技术学院电子信息系

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 项目二 电子打铃装置 第7讲 电子时钟 《单片机原理及应用》 咸阳职业技术学院电子信息系

  2. 1 电子时钟总体设计 2.电子时钟硬件设计 3.电子时钟软件设计 本讲主要内容

  3. 1电子时钟总体设计 1.1明确任务 根据课题的要求确定系统的工作原理。如电脑时钟的工作原理为:每百分之一秒对计数一次,满100次秒加一,秒满60次分加一……;并在数码管上显示时、分秒当前值。 如果需要还要提出相应的技术指标。如电脑时钟要求显示的最小单位为秒,还是百分之一秒

  4. 1.2 硬件和软件功能的划分 系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性。多用硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。因此,总体设计时,应综合考虑,合理划分硬件和软件的功能。 本课题要求实现的功能比较简单。百分之一秒的控制由89C51的定时器T0完成;百分之一秒寄存器的内容加一由T0中断完成;动态显示和键盘管理由8255完成。

  5. 2 硬件设计 A 系统扩展 根据总体设计要求,确定系统扩展与功能接口,设计出系统的电路原理图。 为考虑今后功能的扩展,最小系统由89C51、地址锁存器74LS373、8255A构成 程序存储器和数据存储空间宽裕,目前暂不考虑扩展。

  6. 2 硬件设计 B 功能接口 本课题只要求键盘和显示接口。显示设备为6位数码管。为了保证数码管的亮度,必须保证输入电流的大小,因此,选用74LS244作为驱动放大器。 键盘(6个)定义如下:SETB:设置键;↑键:向上翻转或者加一;shift键:为设置的时候切换键;↓键:向下翻转或者减一;ENTER键:确认键。如果还有闹钟功能的话,就用ALARM键表示设置闹铃。

  7. 8255A AT89C51 K1 74LS 373 A0 P10 74LS 244 P0 A1 PA P16 P17 74LS 04 蜂鸣器 ALE PB 2 硬件设计 C 系统的组成及统一编址 汇集各芯片及数码管的技术资料,绘制系统原理图。

  8. 2 硬件设计 芯片8255工作方式为:定时器不工作,禁止PA、PB中断,PC口为输入方式(方式0),PA口、PB口为输出方式。因此,工作方式字为03H。

  9. 2 硬件设计

  10. 2 硬件设计 D 绘制系统系统原理图(详细接线图)

  11. 单片机应用技术

  12. 3 软件设计 3.1 系统定义 3.1.1 各种数据类型的定义 是定点数还是浮点数; 是有符号数还是无符号数; 是十六进制数还是BCD码。 本课题中: 时、分、秒采用BCD码, 10毫秒计数采用16进制。

  13. 3 软件设计 3.1 系统定义 3.1.2 定义和分配存储空间、定义标志位 堆栈区安放在片内RAM的高端60H~7FH; 0区为工作寄存器; 1区为显示程序的工作寄存器; 为了调整走时的快慢,设置时间常数初值寄存器,变量名为SJH、SJL,地址为41H、40H。

  14. 3.2 软件结构设计 软件设计有两种方法: 一种是自上而下,逐步细化; 一种是自下而上,先设计出每一个具体的模块(子程序), 然后再慢慢扩大,最后组成一个系统。 建议: 两种方法结合运用。主程序采用自上而下的方法,将它分成若干个功能相对独立的较小的程序模块。然后再采用自下而上的方法,设计一个模块,调试一个模块,加入主程序调试;再进行下一个模块设计和调试。所以在这一步骤就是设计主程序的框架。

  15. 3.3 模块设计 步骤一 建立入口条件和出口条件,明确模块功能 根据问题的定义,描述出各个输入变量的存放地址(入口条件)和各个输出变量的存放地址(出口条件)。 例如输入量是经A/D转换后的8个数字量,存入在以30H为首的数据块中,输出量是这8个数字量的平均值,存放在40H中。为方便起见,用R0存放输入量数据块首地址,用R1存放输出量地址。则入口条件为R0,出口条件为R1。 步骤二 绘制程序框图 步骤三 编写程序

  16. 3.3 模块设计 编写程序要注意: ①一定要严格根据框图编程。 ②一定要写注释。 ③通过编译后,只表明语法没错,并不表明逻辑正确,一 定要用不同的数据对模块进行测试。完全符合预定结果,方可确认通过。 ④将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。 ⑤必须注意随时保存调试通过的副本。以便当新程序出现故障时,随时可返回前面的正确点重新开始。

  17. 初始化 初始化置堆栈指针sp CZ拆字子程序 时,分,秒存储单元清零 DISPLAY显示子程序 标志位清零 KEYSCAN键扫描子程序 否 (A)=非0? 有键按下吗? 8255初始化 定时器初始化 是 KEYRES键处理子程序 中断初始化 1.主程序框图 2.初始化框图

  18. LED0 EQU 3AH LED1 EQU 3BH LED2 EQU 3CH LED3 EQU 3DH LED4 EQU 3EH LED5 EQU 3FH CSEC EQU 30H SEC EQU 31H MINI EQU 32H HOUR EQU 33H SETV BIT 01H SJH EQU 0C5H SJL EQU 68H BCDCODE EQU 35H CURSHIF EQU 36H CURTIME EQU 37H DELms1 EQU 38H DELms2 EQU 39H ORG 0000H LJMP MAIN ORG 000BH LJMP TIMECOUNT ORG 0050H MAIN: MOV SP,#60H ;堆栈初始化 MOV CSEC,#00H MOV SEC,#00H MOV MINI,#00H MOV HOUR,#00H MOV BCDCODE,#00H MOV CURTIME,#00H MOV DELms1,#00H MOV DELms2,#00H CLR SETV MOV DPTR,#7FFFH ;8255A初始化 MOV A,#80H MOVX @DPTR,A ;置8255A控制字 MOV TMOD,#01H ;设定时/计数器工作方式1 MOV TH0,#SJH ;装入定时初值 MOV TL0,#SJL SETB PT0 SETB EA ;开中断 SETB ET0 SETB TR0 ;开始计时

  19. ;~~~~~~~~~~~~~~中断服务子程序~~~~~~~~~~~~~~~~~~~ LOOP0:LCALL CZ ;调拆字子程序 LCALL DISPLAY ;调显示子程序 LCALL KEYSCAN ;调键盘扫描 JNZ LOOP1 ;是否有键按下? LJMP LOOP0 LOOP1:LCALL KEYRES ;有键按下,调键处理子程序 LJMP LOOP0

  20. 保护现场 N MINI=?#60 重置TH0,TL0初值 Y MINI #00H HOUR HOUR+1 十进制调整 CSEC CSEC+1 N CSEC=?#100 Y N HOUR=?#24 CSEC #00H SEC SEC+1 十进制调整DA Y HOUR #0 SEC=?#60 恢复现场 Y SEC #00H MINI MINI+1 十进制调整 中断返回 3.中断子程序TIMECOUNT

  21. ;~~~~~~~~~~~~~~中断服务子程序~~~~~~~~~~~~~~~~~~~ TIMECOUNT:CLR EA ;关中断 PUSH ACC ;现场保护 PUSH PSW SETB EA ;开中断 MOV TH0,#SJH ;重状计时初值 MOV TL0,#SJL MOV A,CSEC ADD A,#1 MOV CSEC,A CJNE A,#64H,TIMERET ;是否到100ms MOV CSEC,#00H ……. RETI

  22. 置工作寄存器1区 R0 #LED5; R7 #06H; R4 #20H A @R0; 查(A)的字形码 PB口 #LED5; PC口 R4 延时1毫秒 R4循环右移1位 N R7-1=#0? Y DISPLAY显示子程序 恢复工作寄存器0区

  23. ACC.2=1? 键 ACC.3=1? Alarm #00H SETV #0 开定时器 @R0 #00H R0 #HOUR @R0 #FH @R0 @R0+1 R0 #HOUR R0 #00H @R0 #AAH 熄灭数码管 @R0 @R0+1 KEYRES键处理子程序 有键按下 SET键 ACC.0=1? N shift键 ACC.1=1? N N N ENTER键 ACC.6=1? N Y Y Y Y Y SETV=1? N SETV=1? N 关定时器 SETV #01 Y Y @R0<#60? R0=#HOUR? N R0=#sec? N N Y Y Y @R0<?#24 R0减1 N Y 返回

  24. ;~~~~~~~~~~~~~~~~~~键处理子程序 ~~~~~~~~~~~~~~~~~ LOOP4: PUSH ACC ;去抖动 LOOP4E: LCALL CZ LCALL DISPLAY LCALL KEYSCAN JNZ LOOP4E POP ACC JB ACC.0 ,LOOP40 JB ACC.1, LOOP41 JB ACC.2, LOOP42 JB ACC.3 ,LOOP43 JB ACC.6, LOOP46 LJMP KEY_RET LOOP40: LJMP KEY_SET LOOP41: LJMP KEY_SHIFT LOOP42: LJMP KEY_UP LOOP43: LJMP KEY_DOWN LOOP46: LJMP KEY_ENTER KEY_SET:JB SETV,KEY_SET_RET ……..

  25. 3.4 编写设计说明书 由于设计时间紧迫,读者不要在完成全部设计后再编写设计说明书。而应在设计过程中逐步完成。一开始不可能设计出满意的主程序框图。因此,总体设计部分在完成全部设计任务后再写。而硬件部分和软件部分可以在设计过程同步完成。

More Related