微机原理课设-电子秒表
- 格式:doc
- 大小:150.00 KB
- 文档页数:39
电子技术秒表课程设计一、课程目标知识目标:1. 学生能理解并掌握电子秒表的基本原理,包括计时电路、控制电路和显示电路的组成及功能。
2. 学生能够运用所学知识,分析并设计简单的电子秒表电路。
3. 学生了解电子秒表中涉及的电子元器件,如晶体管、电容、电阻等,并掌握其作用及使用方法。
技能目标:1. 学生能够运用protel或其他电路设计软件绘制电子秒表的原理图和PCB 图。
2. 学生能够根据电路图,正确搭建和调试电子秒表电路,实现计时、清零、启动等功能。
3. 学生能够通过小组合作,共同解决问题,提高团队协作能力和沟通能力。
情感态度价值观目标:1. 学生培养对电子技术的兴趣和热情,激发创新意识和探索精神。
2. 学生通过实践操作,体会电子技术的实用性和趣味性,增强学习自信心。
3. 学生在课程学习中,树立正确的价值观,认识到技术对生活的改变和影响。
本课程针对高中年级学生,结合电子技术课程内容,注重理论与实践相结合,提高学生的动手操作能力和实际应用能力。
课程目标具体、可衡量,旨在帮助学生全面掌握电子秒表的相关知识,为后续深入学习电子技术打下坚实基础。
二、教学内容本章节教学内容主要包括以下三个方面:1. 电子秒表基本原理:- 计时电路原理,包括振荡器、分频器、计数器等组成部分;- 控制电路原理,包括启动、停止、清零等功能实现;- 显示电路原理,涉及LED数码管、LCD显示屏等显示器件。
2. 电子元器件及其应用:- 晶体管、电容、电阻等基本元器件的作用及使用方法;- 集成电路、门电路等在电子秒表中的应用;- 电池、电源模块为电子秒表提供稳定电源。
3. 实践操作与电路设计:- 使用protel软件绘制电子秒表原理图和PCB图;- 根据原理图,搭建和调试电子秒表电路,实现计时、清零、启动等功能;- 小组合作,共同解决电路设计及调试过程中遇到的问题。
教学内容依据课程目标,参照教材相关章节进行组织。
具体安排如下:- 第一周:电子秒表基本原理学习,了解各部分电路功能;- 第二周:电子元器件学习,掌握其在电路中的应用;- 第三周:实践操作,绘制原理图、PCB图,搭建电路;- 第四周:电路调试与优化,小组合作解决问题。
沈阳航空航天大学课程设计报告课程设计名称:微机系统综合课程设计课程设计题目:电子秒表院(系):计算机学院专业:计算机科学与技术班级:04010101学号:2010040101024姓名:指导教师:訾学博完成日期:2013年7月5日目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2设计原理 (1)1.3设计思路 (2)1.4实验环境 (3)第2章详细设计方案 (4)2.1主程序设计 (4)2.2功能模块的设计与实现 (5)2.3程序连线图 (7)第3章结果测试及分析 (9)3.1结果测试 (9)3.2结果分析 (9)参考文献 (10)附录 (11)第1章总体设计方案1.1 课程设计的内容和要求一、课程设计内容:设计一个带时间显示的电子秒表,具体内容如下:1.电子秒表的初始状态为零,分别显示分、秒、毫秒;2.设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;3.有时间显示的功能,当不用电子秒表的功能时,显示当先的时间,分别为时、分、秒形式。
二、课程设计要求:1.独立完成课程设计任务;2.通过老师当场验收;3.交出完整的课程设计报告。
1.2 设计原理根据课程设计任务书的内容与要求,要设计一个带时间显示的电子秒表,设计一个按钮带有计时开始、计时暂停、计时清零功能,还要可以进行时钟显示。
在本次设计中主要使用了8253定时/计数器芯片、8259A中断控制芯片以及8279键盘/显示芯片来完成电子秒表的计时过程和时钟显示过程的模拟。
程序开始时扫描键盘判断是否按键,如有则读出相应的控制键,来决定做什么操作,例如开始计时、暂停计时、停止计时、时钟显示等等。
利用8253定时/计数器芯片实现分频功能,使其产生100HZ(10毫秒)的方波,使计时周期为10ms;利用8259A中断控制芯片产生中断响应,通过8253控制8259每10毫秒产生一次中断,使秒表加1,实现计时功能;利用8279键盘/显示芯片在数码管上进行显示,将秒表的计时过程、时钟的当前时间显示在数码管上。
电子秒表设计课程设计一、课程目标知识目标:1. 学生能理解电子秒表的基本原理和功能,掌握计时器的工作流程。
2. 学生能够运用所学的电子元件和电路知识,设计并搭建一个简易的电子秒表。
3. 学生能够解释电子秒表中涉及的时间单位,如秒、分、时,并掌握它们之间的换算关系。
技能目标:1. 学生能够运用问题解决和团队合作的能力,完成电子秒表的电路设计和组装。
2. 学生通过实际操作,提升动手能力和实验技能,能够准确使用工具进行电子电路的搭建。
3. 学生能够通过编写简单程序或使用相关软件,实现对电子秒表的编程和功能调试。
情感态度价值观目标:1. 学生培养对电子技术和创新实践的热爱,增强对科学探究的兴趣。
2. 学生在学习过程中,发展耐心、细心和责任感,认识到精确计时在科学研究和技术发展中的重要性。
3. 学生通过小组合作,培养团队协作精神,尊重他人意见,学会共同解决问题。
课程性质:本课程是一门实践性与理论性相结合的综合性课程,旨在通过实际操作,使学生理解电子计时器的原理和应用。
学生特点:考虑到学生年级特点,他们已经具备一定的物理知识和动手能力,但需进一步培养创新思维和实际应用技巧。
教学要求:教学中应注重理论与实践的结合,鼓励学生主动探索,注重培养学生解决实际问题的能力和科学探究精神。
通过具体的学习成果,将课程目标转化为可观察、可评估的指标,为教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下几部分:1. 电子秒表原理介绍:讲解计时器的基本工作原理,如振荡器、计数器、时钟脉冲等,关联课本第三章关于数字电路的内容。
2. 电子元件认知:学习常用电子元件如电阻、电容、二极管、三极管等,并了解它们在电子秒表中的作用,对应课本第二章电子元件的知识点。
3. 电路设计与搭建:根据电子秒表的功能需求,设计电路图,选用合适的电子元件进行电路搭建,结合课本第四章的电路设计原理。
4. 程序编写与调试:学习编写简单的程序或使用相关软件,实现对电子秒表的编程和功能调试,关联课本第五章关于微控制器的基础知识。
微机原理秒表时钟课程设计一、课程目标知识目标:1. 学生能理解微机原理中秒表时钟的基本工作原理,掌握其硬件组成和软件编程方法。
2. 学生能够掌握秒表时钟的设计思路,了解其功能模块的划分和实现。
3. 学生能够了解微机原理在实际应用中的重要性,认识到秒表时钟在日常生活和工程领域的应用价值。
技能目标:1. 学生能够运用所学知识,设计并实现一个简单的秒表时钟程序,具备基本的编程能力。
2. 学生能够通过分析问题、解决问题,培养创新思维和动手实践能力。
3. 学生能够熟练使用相关硬件设备,提高实际操作能力。
情感态度价值观目标:1. 学生通过本课程的学习,培养对微机原理的兴趣,激发学习热情,形成积极的学习态度。
2. 学生能够认识到团队合作的重要性,学会与他人协作,培养团队精神和沟通能力。
3. 学生能够在实际操作过程中,培养耐心、细心和责任心,养成良好的学习习惯。
课程性质:本课程为实践性课程,注重理论联系实际,培养学生的动手能力和创新意识。
学生特点:本年级学生已具备一定的微机原理基础知识,具有较强的学习能力和求知欲,喜欢动手实践。
教学要求:结合学生特点,以实际操作为主线,注重培养学生的编程能力和团队协作能力,提高学生的实际应用能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的达成。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. 微机原理基础知识回顾:引导学生复习已学过的微机原理基础知识,如微处理器、存储器、输入输出接口等,为后续学习秒表时钟设计打下基础。
相关教材章节:第一章 微机原理概述2. 秒表时钟硬件组成:讲解秒表时钟的硬件组成,包括时钟芯片、微处理器、显示模块等,分析各部分的功能和相互关系。
相关教材章节:第三章 微机接口技术3. 秒表时钟软件编程:介绍秒表时钟的软件编程方法,包括编程语言选择、程序结构设计、功能模块划分等。
相关教材章节:第五章 嵌入式系统编程4. 实践操作:安排学生进行实际操作,设计并实现一个简单的秒表时钟程序,培养学生的动手能力和编程技巧。
微机原理电子秒表课程设计电子秒表设计报告设计要求:用89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电 子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间 (如10S, 20S, 60S),并启动倒计时功能。
能用按键选择以上两功能 之一。
实现原理:利用12M 晶振的一个机器周期为 1微秒,经过循环产生1秒时 间延迟,扫描单片机中所存放的时间的值 (可正记时,也可倒计时), 并经过输出显示在数码管上。
电路图:PO.O — P0.7对应了两个接数码管的A,B,C,D,E,F,G 和小数点位P2.6接显示个位数的数码管的 3、8引角,P2.7则接十位数的。
P3. &F3. VITIL1C1C王晶掘P3.6、P3.7分别接按键 流程框图:ZZE : |Y|初疏<_按键2圣否按下?”>灌气計时. ADC "丸?程序代码:A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H ;数码管十位数存放内存位置 TEMP EQU 22H ;计数器数值存放内存位置ZEE功能:初箱化¥ J 功能2 IF杖结化 按键1是否按下?〉 按谴z 星否按下?^按堤1是否按下?;显示題序 * ~计贬开始 「 伽1是否初?;开机初始化MOV P3,#0FFH; 对P3 口初始化,设置为高电平,用于按键输入MOV P0,#0FFH; 使显示时间数码管熄灭;等待按键输入;根据按键的输入判断执行什么功能;按键1 按下则执行功能1START:JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10; 延时10 毫秒触点消抖JB P3.6,START1;如果是干扰就返回JNB P3.6,$;等待按键松开LJMP GN15按键 2 按下则执行功能2START1: JB P3.7,$;循环判断开始按钮K2是否按下?ACALL DELAY10; 延时10 毫秒触点消抖JB P3.7,START;如果是干扰就返回JNB P3.7,$LJMP GN2;数码管显示秒表时间的程序GN1: ; 先初始化MOV P3,#0FFH; 对P3 口初始化,设置为高电平,用于按键输入MOV P0,#0FFH; 使显示时间数码管熄灭MOV A,#0MOV TEMP,AGOON1: MOV R2,#2JS1: MOV R3,#250TIME1: MOV A,TEMP ; 将TEMP 中的十六进制数转换成10 进制MOV B,#10 ;10 进制/10=10 进制DIV ABMOV B_BIT,A ; 十位在AMOV A_BIT,B ; 个位在BMOV DPTR,#NUMTAB ; 指定查表启始地址MOV R0,#4DPL1: MOV R1,#250 ;DPLOP1: MOV A,A_BIT ; 取个位数MOVC A,@A+DPTR ; 查个位数的7 段代码MOV P0,A ; 送出个位的7 段代码MOV P0,A ; 送出个位的7 段代码CLR P2.7 ; 开个位显示ACALL DELY1; 显示1 毫秒SETB P2.7; 关闭个位显示,防止鬼影MOV A,B_BIT ; 取十位数MOVC A,@A+DPTR ; 查十位数的7 段代码MOV P0,A ; 送出十位的7 段代码CLR P2.6 ; 开十位显示ACALL DELY1; 显示1 毫秒SETB P2.6; 关闭十位显示,防止鬼影; 插入一段判断定时过程中是否有按键输入的程序段C1: JB P3.6,B1ACALL DELAY10; 延时10 毫秒消抖JB P3.6,C1JNB P3.6,$; 等待按键松开ZT1: MOV P3,#0FFH;对P3 口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10; 延时10 毫秒触点消抖JB P3.6,ZT1;如果是干扰就返回JNB P3.6,$;等待按键松开B1: JB P3.7,LOOP1ACALL DELAY10; 延时10 毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP1: DJNZ R3,TIME1 ;2 毫秒循环执行250次,时间约0.5秒DJNZ R2,JS1 ;循环执行2次,时间为1 秒钟INC TEMP; 满一秒钟对时间加1MOV A,TEMPCLR CSUBB A,#60JNZ GOON1; 判断TEMP 的数值是否为60?不为60循环ACALL OVERRETGN2: MOV A,#14H ; 设定倒计时的时间20SMOV TEMP,A;数码管显示倒计时时间的程序; 初始化MOV P3,#0FFH; 对P3 口初始化,设置为高电平,用于按键输入MOV P0,#14H; 使显示时间为设定的倒计时时间GOON2: MOV R2,#2JS2: MOV R3,#250TIME2: MOV A,TEMP ; 将TEMP 中的十六进制数转换成10 进制MOV B,#10 ;10 进制/10=10 进制DIV ABMOV B_BIT,A ; 十位在AMOV A_BIT,B ; 个位在BMOV DPTR,#NUMTAB ; 指定查表启始地址MOV R0,#4DPL2: MOV R1,#250 ;DPLOP2: MOV A,A_BIT ; 取个位数MOVC A,@A+DPTR ; 查个位数的7 段代码MOV P0,A ; 送出个位的7 段代码MOV P0,A ; 送出个位的7 段代码CLR P2.7 ; 开个位显示ACALL DELY1; 显示1 毫秒SETB P2.7; 关闭个位显示,防止鬼影MOV A,B_BIT ; 取十位数MOVC A,@A+DPTR ; 查十位数的7 段代码MOV P0,A ; 送出十位的7 段代码CLR P2.6 ; 开十位显示ACALL DELY1; 显示1 毫秒SETB P2.6; 关闭十位显示,防止鬼影; 插入一段判断定时过程中是否有按键输入的程序段C2: JB P3.6,B2ACALL DELAY10; 延时10 毫秒消抖JB P3.6,C2JNB P3.6,$; 等待按键松开ZT2: MOV P3,#0FFH;对P3 口初始化,设置为高电平,用于按键输入JB P3.6,$;循环判断开始按钮K1是否按下?ACALL DELAY10; 延时10 毫秒触点消抖JB P3.6,ZT2;如果是干扰就返回JNB P3.6,$;等待按键松开B2: JB P3.7,LOOP2ACALL DELAY10; 延时10 毫秒消抖JB P3.7,B1JNB P3.7,$;等待按键松开AJMP OVERLOOP2: DJNZ R3,TIME2 ;2 毫秒循环执行250 次,时间约0.5秒DJNZ R2,JS2 ;循环执行2次,时间为1 秒钟DEC TEMP; 满一秒钟对时间加1MOV A,TEMPJNZ GOON2; 判断TEMP 的数值是否为0?不为0 循环ACALL OVERRET;结束定时OVER: AJMP START; 退到开机初始化状态;1 毫秒延时子程序DELY1: MOV R4,#2D1:MOV R5,#248DJNZ R5,$DJNZ R4,D1RET;10 毫秒延时子程序DELAY10: MOV R4,#20D2:MOV R5,#248DJNZ R5,$DJNZ R4,D2RET;实验板上的两位一体的数码管0〜9各数字的显示代码NUMTAB:DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24HEND。
微机原理课程设计报告(电⼦秒表)⼀、设计⽬的培养和锻炼在学习完本门课后综合应⽤所学理论知识,解决实际⼯程设计和应⽤问题的能⼒。
通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的⽅法、设计步骤,得到微机开发应⽤⽅⾯的初步训练。
掌握8255、8259、8253等芯⽚使⽤⽅法和编程⽅法,通过本次课程设计,学以致⽤,进⼀步理解所学的相关芯⽚的原理、内部结构、使⽤⽅法等,学会相关芯⽚实际应⽤及编程,系统中采⽤8086微处理器完成了电⼦秒表系统的独⽴设计。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试⽅法,掌握⼀般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
⼆、设计内容设计⼀个可任意启动/停⽌的电⼦秒表,要求⽤6位LED数码显⽰,计时单位为1/100秒。
利⽤功能键进⾏启/停控制。
其功能为:上电后计时器清0,当第⼀次(或奇数次)按下启/停键时开始计数。
第2次(或偶数次)按下该键时停⽌计时,再⼀次按启/停键时清零后重新开始计时。
可⽤开关控制,也可⽤按键控制三、设计要求1、基本要求:1)设计可以显⽰1~60秒的⽆存储功能的秒表,最⼩单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。
其中数字0控制清零,数字1控制继续和退出。
2、提⾼要求:1)秒表可以分组存储、批量显⽰、倒计时等。
2)采⽤图像显⽰,界⾯精美,设置报警声等四、设计原理与硬件电路1、整体设计思想使⽤8253⼯作在⽅式0计数,对1/100S计数,并讲计数值写⼊bl中并与100⽐较若不相等,则将计数值装换为10进制后送8255控制端显⽰,如相等则1S计数程序加1之后并与59⽐较若不相等则将计数值装换为10进制后送8255控制端显⽰,如相等则1min计数程序加1之后并与59⽐较若不相等则将计数值装换为10进制后送8255控制端显⽰,如相等则计数程序加1之后产⽣溢出,跳转清零程序将计数清零,同时数码管清零。
2、使⽤各芯⽚的作⽤及⼯作原理1)定时器/计数器8253⽤系统8253定时器提供的55ms定时单位,设计秒表定时程序。
目录一、设计内容与要求 -----------------------------------------21.1 设计要求1.2 附加功能二、设计原理 -----------------------------------------------22.1 原理概述2.2 延时原理2.3 字符及字符串显示原理2.4 压缩BCD码转为ASCII原理2.5 动态扫描键盘原理2.6 整分报时原理2.7 记忆功能原理三、程序流程图 ---------------------------------------------43.1 主程序流程图3.2 各子程序流程图四、源程序及运行结果----------------------------------------- 7五、程序调试 -----------------------------------------------7六、心得体会 -----------------------------------------------8七、参考资料 ----------------------------------------------10八、附录(源程序代码)---------------------------------------10一、设计内容与要求1.1设计要求1. 具有秒和百分之一秒计时并显示于图案中央2. 具有启/停、复位功能1.2附加功能1. 具有记忆功能,可实现分别记时功能2.具有正分报时功能二、设计原理2.1 原理概述通过调用INT 21H的8号功能实现控制字符的输入, 2号功能实现字符的输出,9号功能实现字符串的输出。
通过调用INT 10H 的2号功能实现光标定位,AH=0H号功能设置显示方式、AH=7H号功能实现向下滚屏、AH=13H号功能实现彩色输出。
利用系统执行指令的时钟周期,编写延时程序,通过调用延时程序实现一秒的计时。
微机原理课程设计电子秒表一、课程目标知识目标:1. 理解微机原理的基本概念,掌握电子秒表的基本工作原理;2. 学会使用微机编程实现电子秒表的计时功能;3. 掌握电子秒表中涉及的时间计算和显示方法。
技能目标:1. 能够运用微机原理设计简单的电子秒表程序;2. 能够对电子秒表进行调试和故障排查;3. 培养学生动手实践能力和团队协作能力。
情感态度价值观目标:1. 激发学生对微机原理和电子制作的兴趣,培养创新意识;2. 培养学生严谨的科学态度和良好的学习习惯;3. 增强学生的自信心,培养克服困难的意志品质。
课程性质:本课程为实践性课程,以学生动手实践为主,结合理论知识,培养学生的实际操作能力和创新能力。
学生特点:学生处于高中年级,具备一定的电子和编程基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生主动参与,提高学生的实践能力和综合素质。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
通过本课程的学习,使学生能够独立完成电子秒表的设计与制作,为后续相关课程打下坚实基础。
二、教学内容1. 理论知识:- 微机原理概述:介绍微机的基本组成、工作原理和特点;- 电子秒表原理:讲解电子秒表的计时原理、硬件组成和软件设计方法;- 编程语言:复习C语言基础知识,强调在微机编程中的应用。
2. 实践操作:- 硬件设计:指导学生设计电子秒表的硬件电路,包括时钟芯片、显示模块等;- 软件编程:教授学生使用C语言编写电子秒表的程序,实现计时、显示等功能;- 调试与优化:教授学生如何对电子秒表进行调试和优化,提高计时的准确性。
3. 教学大纲:- 第一周:微机原理概述,电子秒表原理学习;- 第二周:C语言基础知识复习,硬件设计指导和实践;- 第三周:软件编程教学与实践;- 第四周:调试与优化,总结与评价。
4. 教材章节:- 第一章:微机原理概述;- 第二章:C语言基础知识;- 第三章:电子秒表的硬件设计与软件编程;- 第四章:电子秒表的调试与优化。
目录中文摘要ﻩ错误!未定义书签。
方案论证.................................................... 错误!未定义书签。
总体设计方案............................................ 错误!未定义书签。
硬件系统设计....................................... 错误!未定义书签。
软件系统设计....................................... 错误!未定义书签。
硬件系统原理图ﻩ错误!未定义书签。
程序清单.................................................... 错误!未定义书签。
总结体会.................................................... 错误!未定义书签。
参考文献.................................................... 错误!未定义书签。
中文摘要微机原理与接口技术是一门实践性很强的电子信息工程专业的技术基础课程。
因此,微机接口课程设计是一项实践性很强的实训环节,结合运用所学的汇编语言及8086微处理芯片设计一个电子秒表,通过实践能够加深对汇编语言的理解以及对8086微处理器、8253可编程定时器、8259A可编程中断控制器、8255A可编程并行I/O接口芯片等的基本功能的认识。
本实验利用8253可编程定时器等芯片的定时和记数的原理,结合实验箱上的集成电路芯片8086、LED数码管以及实验箱上的按键来设计秒表。
将软、硬件有机地结合起来,要求实现计时单位为1/100秒,利用功能键进行启/停控制,上电后计时器清0,当第一次按下KEY1启/停键时开始计数,按一下KEY2键清零,重新开始计时,在系统能够正确地进行计时,使5位LED数码管能够正确地显示时间。
湖南文理学院芙蓉学院微机原理课程设计报告课程名称:电子秒表专业班级:学生学号:学生姓名:指导教师:完成时间:目录第1章总体设计方案 01.1课程设计的内容和要求 01.2课程设计原理 01.3课程设计思路 (1)1.4设计环境 (2)第2章详细设计方案 (3)2.1实现方法 (3)2.2模块的设计与实现 (5)2.2.1主程序模块 (5)2.2.2初始化模块 (6)2.2.3时钟模块 (6)2.2.4秒表模块 (7)2.3程序连线图 (9)第3章调试及结果分析 (10)3.1调试步骤及方法 (10)3.1.1程序的语法错误 (10)3.1.2时钟模块调试过程 (10)3.1.3秒表模块调试过程 (12)3.2实验结果 (13)参考文献 (15)附录(源程序) (17)第1章总体设计方案1.1 课程设计的内容和要求一、课程设计内容:设计一个带时间显示的电子秒表,具体内容如下:1.电子秒表的初始状态为零,分别显示分、秒、毫秒;2.设计一个按钮,按第一次开始计时,按第二次计时暂停,显示当前记录的时间,按第三次计时停止,回到初始态;3.有时间显示的功能,当不用电子秒表的功能时,显示当先的时间,分别为时、分、秒形式。
二、课程设计要求:1.独立完成课程设计任务;2.通过老师当场验收;3.交出完整的课程设计报告。
1.2 课程设计原理题目要求实现电子秒表功能和显示当前时间的功能。
这两部分的共同点是都需要实现时间显示和时间运行功能。
除此之外,电子秒表还需要有开始计时和停止计时功能。
因此电子秒表是本次课程设计的主要部分。
在本次设计中主要使用了8255A并行接口芯片,8253定时/计数器,8259A 中断控制器,8279键盘/显示芯片。
具体原理和功能如下:1.利用8255A芯片实现时钟和秒表之间的切换。
将其连接到一个开关上,读取开关的电位,以此来判断是时钟模式还是秒表模式。
2.利用8253芯片计时。
用8253的分频功能使其产生周期为1s和1ms的方波,分别为时钟和秒表计时。
3.利用8259A芯片接收中断。
中断分为三种类型,分别是一秒一次的时钟计时中断,一毫秒一次的秒表计时中断和控制秒表开始和停止的中断。
4.利用8279芯片在数码管上显示当前时间或秒表时间。
1.3 课程设计思路由于要求实现时钟和秒表两种功能。
因此需要设计时钟和秒表两个模式。
时钟模式下,以秒为计时单位,计时功能和显示当前时间功能。
秒表模式下,以毫秒为计时单位,有开始、停止和显示计时结果的功能。
首先,将8255A芯片的PC0接口连接到开关。
读C端口的值。
判断是0还是1。
0代表时钟模式,1代表秒表模式。
然后,根据判断结果调用相应模式下的显示功能。
这样不停地读8255A芯片,然后判断,最后显示。
构成一个死循环。
若在这个过程中有中断,则会执行中断服务程序。
时间中断由8253芯片产生,周期分别为1s和1ms。
时钟的最大时间为23时59分59秒,超过后从零开始重新计时。
秒表最大时间为59分59秒999毫秒。
当计数大于这个值时,秒表不再更新。
对秒表的控制中断由一个手动脉冲产生。
将按键次数保存在名为pad的内存空间中。
pad只能有0、1、2三个值,分别代表清零、开始计时和停止计时。
8259芯片接收中断,并调用相应模式下的中断服务程序。
在时钟模式下,直接将时间加一秒。
在秒表模式下,或清零(重新开始,pad=0),或将时间加一毫秒(开始计时,pad=1),或不做任何处理(停止计时,pad=2)。
要实现以上分析的功能,可以设计4个模块。
模块名和作用见表1.1。
表1.1 模块划分及功能描述1.4 设计环境硬件环境:AEDK实验箱软件环境:LCT88EA应用软件、WindowXP操作系统、PC机第2章 详细设计方案2.1 实现方法1. 内存分配程序中所需定义的内存单元含义如下:timer0:存放当前时钟的值,共6个字节。
时、分、秒各占两个字节; timer1:存放秒表的计数值,共7个字节。
分和秒各占两个字节,毫秒占三个字节;pad :存放秒表的按键次数,共1个字节。
可以有三种取值,0代表清零,1代表开始计时,2代表停止计时。
当计数值大于2时,变为0重新开始计数; tab :存放0~9在数码管上显示的编码,共10个字节。
2. 按键设置秒表有一个按钮,接手动脉冲和8259A 芯片的中断引脚。
每次按键,pad 都做相应改变。
按第一次开始计时(pad=1),按第二次计时暂停(pad=2),显示当前记录的时间,按第三次计时停止(pad=0),回到初始态。
3. 时钟频率选择CPU 的频率为HZ 5103.072 。
用8253芯片产生方波。
计数器1的1CLK 接CPU 时钟脉冲,计数初值为307,使0OUT 产生周期为1ms 的方波。
计数器0的0CLK 接1OUT ,计数初值为1000,使0OUT 产生周期为1s 的方波。
4. 中断设置8259A 芯片的中断引脚0IR 、1IR 、2IR 分别接8253芯片的0OUT 、1OUT 和手动脉冲。
5.显示设置显示功能由8279芯片和数码管实现。
显示分为两种情况。
时钟模式下的显示规则是(时-分-秒),即(00-00-00)。
秒表模式下的显示规则是(分-秒.毫秒),即(00-00.000)。
6.端口地址分配本次课程设计共使用了4种芯片,他们的端口号设置如表2.1所示。
表2.1 端口地址分配表7.子程序子程序名称和功能如表2.2所示。
表2.2 子函数表2.2 模块的设计与实现2.2.1主程序模块主程序的主要功能是初始化各芯片,模式选择以及调用显示函数。
在初始化结束后,程序进入死循环,不断检测8255A芯片C端口的状态,CUP随时响应中断,更新时钟状态,把应显示的结果送入time0和time1中,以备显示。
主程序的流程如图2.1。
图2.1 主程序流程图2.2.2初始化模块初始化模块主要用于初始化各芯片,设定芯片工作方式,以及装入中断向量等。
各芯片初始化情况如表2.3所示。
表2.3 芯片的初始化2.2.3时钟模块时钟模块主要是为了实现时钟的计时和显示功能。
时钟的计时功能由int_timer0子程序实现,属于中断服务程序。
显示功能由display0程序实现,由主程序调用。
1.int_timer0这个中断服务程序的中断类型号为30H。
8253芯片产生周期为1s的方波,当其上升沿到达8259A芯片的IR引脚后,进入中断服务程序int_timer0。
进入int_timer0后,首先从内存中读出前一秒的时间的最后一位,即time0的最后一位,然后加1。
若有进位,则把当前这一位置零,然后读出前一位再加一,再判断是否有进位。
以此类推,直到没有进位或者达到计数最大值为止。
把修改后的时间存回内存中,以备显示。
2.display0这是时钟模式的显示程序。
在时钟模式下会反复被主程序调用。
首先设置8279A芯片的显示方式。
然后读取time0的最后一位,用XLAT命令查tab表,将得到的结果输出到8279A芯片,然后在数码管上显示。
每显示两位数字,就在中间显示一条横线以分隔时分秒。
2.2.4秒表模块与时钟模式类似,秒表模式也需要计时和显示功能。
除此之外,秒表模式还需要有按键控制功能用于开始、暂停计时和清零。
计时功能由int_timer1实现,属于中断服务程序。
显示功能由display1子程序实现。
按键功能由int_pad实现,属于中断服务程序。
1.int_timer1这个中断服务程序的中断类型号为31H。
8253芯片产生周期为1ms的方波,当其上升沿到达8259芯片的IR引脚后,进入中断服务程序int_timer1。
1进入int_timer1后,首先从内存pad中读出按键次数。
若pad中的值为2,说明现在秒表处于停止状态,计时停止,不将秒表的计时值刷新,所以直接中断返回。
若pad中的值为1,说明秒表正在计时,应将秒表的计时值加1ms。
加1的方法与时钟加1的方法类似。
先读出time1的最低位,加1后判断进位。
最后中断返回。
若pad中的值为0,说明秒表要重新开始计时,需要将秒表清零。
即把time0中的每一位都改为零。
最后中断返回。
2.display1这是秒表模式的显示程序,在秒表模式下会反复被主程序调用。
显示方法与display1类似。
不同的是,秒表的显示格式是00-00.000,即在显示秒的最后一位时,需要加一个小数点。
实现的方法是,先将这一位查表转化为可在数码管上的编码,由于数码管是否显示小数点是由编码的最高位指示的,所以只需将编码和80H进行或运算即可添加小数点。
最后将结果输出到数码管显示。
3.int_pad这个中断服务程序的中断类型号为32H。
当手动脉冲被按下的时候,进入这个中断服务程序。
将pad中的值加1。
pad中的初始值为0,当加到3时,将其变为0。
2.3 程序连线图图2.2 程序连线图第3章调试及结果分析3.1 调试步骤及方法由于程序比较大,要整体调试会非常困难,不容易找出哪里有问题。
所以必须分而治之,将程序拆分开来调试。
由于整个程序被化分为了几个模块,所以,调试可以按模块来进行。
我将调试分为时钟模块和秒表模块。
因为时钟模块相对简单,所以先调试时钟模块,后调试秒表模块。
3.1.1程序的语法错误由于对汇编语言还不熟悉,所以出现了较多的语法错误。
主要错误有以下一些。
程序格式错误。
例如,子程序最后应写RET。
寄存器寻址方式错误。
例如,在装中断向量的时候,应该是寄存器间接寻址,要加中括号。
跳转错误。
跳转的最大值不能超过一定的限度。
而且跳转的标号不能重复。
写地址错。
例如,在向某个端口送数据的时候,不能直接写地址,而必须将端口地址放入寄存器DX中,再送数据。
3.1.2时钟模块调试过程时钟模块又分为显示模块和计数模块。
先调试显示模块,再调试计数模块。
1.显示模块调试中的问题及解决方案问题1:数码管没有任何反应问题分析:在初始化8279时,数码管就应该被清除显示,即会不显示任何东西,但是先在数码管上的数并没有被清除,说明了可能是8279工作错误。
检查程序后发现,8279的控制端口是231H,但是正确的应该为232H。
解决方案:将控制端口号改为232H。
问题2:数码管显示乱码问题分析:8279在初始化时已经清除了显示,但是还是显示乱码,说明是后送入的数有错。
解决方案:检查程序后发现,在初始化各芯片的时候没有关中断和开中断,8259A可能错误的响应的中断。
问题3:显示顺序颠倒问题分析:由于设置的是从左到右的八位显示,所以应该是送显示数的顺序不对。
解决方案:将display0中的送显顺序颠倒。
2.计数模块调试中的问题及解决方案问题1:数码管显示结果一直为初始值问题分析:可能的原因是8253芯片没有产生方波或是8259A芯片没有响应中断。