微机原理数字钟课程设计报告
- 格式:doc
- 大小:307.50 KB
- 文档页数:20
微机原理课程设计设计题目:电子时钟班级:08电信系机电五班姓名及学号:薛鹏(***********)目录一、摘要二、引言三、电子时钟的设计:1.设计目的2.设计任务3.电路原理图四、程序设计(1)设计思路(2)设计流程图(3) 源代码五、软件调试六、设计总结和心得体会摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。
一、引言单片机是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。
它是一种集计数和多中接口于一体的微控制器,被广泛应用在智能产品和工业自动化中。
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
8086是Inter系列的16位微处理器,芯片上有2.9万个晶体管,采用HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz。
目录一、课程设计要求及目的 (2)二、开发环境及设备 (2)1、设计环境 (2)2、设计所用设备 (2)三、设计思想与原理 (2)1、设计思想 (2)2、设计原理 (3)1、容 (3)2、要求 (3)3、设计环境 (4)4、设计所用设备 (4)三、设计所用芯片结构 (4)1、8259A芯片的部结构及引脚 (4)2、8255芯片的部结构及引脚 (5)3、8255端口地址 (6)4、8254芯片的部结构及引脚 (6)5、8254引脚图如图3示,各引脚功能如下。
(7)四、具体模块设计 (8)1、概述 (8)2、主程序模块 (8)3、小键盘模块 (9)4、显示模块 (10)5、定时模块 (10)6、中断处理模块 (10)7、芯片引脚 (11)五、程序流程图 (12)1、主程序流程图如图6所示 (12)2、键盘扫描程序流程图:(KEY)如图7所示 (13)3、中断处理程序流程图如图8所示: (14)六、心得体会 (15)附录一:参考书目 (15)附录二相关程序 (16)一、课程设计要求及目的1、用8255的A口驱动六个七段数码管(LED)的字段,C口驱动六位七段数码管(LED)的为控制端,右侧两位显示分值,左侧两位显示秒值,2、数码管采用动态扫描方式,用8253做定时器(采用查询方式),每位显示的时间<5ms,扫描频率>50HZ。
3以5ms为基本时间单位,计数产生秒时间值,秒计数到60时对分计数,分计数到60时对时计数。
二、开发环境及设备1、设计环境PC机一台、windows XP系统、实验箱、导线若干。
2、设计所用设备8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。
8255并口:用做接口芯片,和小键盘相连。
8259中断控制器:用于产生中断。
LED:七个LED用于显示时:分:秒值。
小键盘:用于控制设置。
三、设计思想与原理1、设计思想本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断。
1.设计目的培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。
通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
掌握8255、8259、8253等芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8086微处理器完成了电子秒表系统的独立设计。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
2.设计内容设计一个可任意启动/停止的电子秒表,要求用6位LED数码显示,计时单位为1/100秒。
利用功能键进行启/停控制。
其功能为:上电后计时器清0,当第一次(或奇数次)按下启/停键时开始计数。
第2次(或偶数次)按下该键时停止计时,再一次按启/停键时清零后重新开始计时。
可用开关控制,也可用按键控制。
(开关控制☆)(按键控制★)3.设计要求一.基本要求1)设计可以显示1~60秒的无存储功能的秒表,最小单位为毫秒。
2)通过键盘按键控制秒表清零、暂停、继续,退出等。
其中数字0控制清零,数字1控制继续和退出二.提高要求:1)秒表可以分组存储、批量显示、倒计时等。
2)采用图像显示,界面精美,设置报警声等4.设计原理与硬件电路一.整体设计思想使用8253工作在方式0计数,对1/100S计数,并讲计数值写入bl中并与100比较若不相等,则将计数值装换为10进制后送8255控制端显示,如相等则1S计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则1min计数程序加1之后并与59比较若不相等则将计数值装换为10进制后送8255控制端显示,如相等则计数程序加1之后产生溢出,跳转清零程序将计数清零,同时数码管清零。
二.使用各芯片的作用及工作原理1、定时器/计数器8253用系统8253定时器提供的55ms定时单位,设计秒表定时程序。
微机原理与接口技术课程设计报告——电子钟实验学院:计算机学院指导教师:***一实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。
要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。
分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。
用小键盘控制时钟的启停和时钟的设置,键的定义参见上图键值具体定义如下:G键(启停键)——程序启动后,按下该键时钟启动;再次按下该键,暂停计时,显示当前时间。
S键(设置键)——按下S键后,为时钟设置时、分、秒初始值。
二硬件连线键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。
74芯片的片选信号CS1接地址译码信号340H, CS2接地址译码信号360H。
时间的精确定时:用8254定时器0产生25ms的中断信号;8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K输出端,OUT0连接到8259的IRQ0整点报时控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V, 8259的IRQ0连接到8254的OUT0。
三、程序流程图主程序初始化各阶段寄存器及相关变量初始化8254、8259、8255芯片设置中断向量、开放8259中断屏蔽开放处理器中断中断服务程序保护现场判断时间是否不小于59分55秒报时扫描键盘G 键?调用启停子程序S COUNT COUNT=40? ADDONE 子程序COUNT 清0显示时间,调用显示时间子程序结束中断(发EOI 命令)恢复现场中断返回四、实验源代码.486pDATA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?Y YN YMIN DW ?SEC DW ?SLL DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0~F 的共阴极七段译码表00H表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1 EQU 340H ;数码管段选端口PORT2 EQU 360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOV CR0,EAXMOV AX,DATAMOV DS,AXMOV HOUR,0203H ;小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502HLEA BX,TABMOV SLL,0 ;开始暂停标志位置0MOV COUNT ,0 ;中断次数计数初始值为0;8255初始化,用于产生报时的脉冲MOV EAX,80808080H;控制字MOV DX,20CH ;后面的是4个8255的控制端口20C-20F (这个地址由实验台决定)OUT DX,EAX ;初始化8255,A、B、C口均为方式0输出MOV DX,20BHMOV AL,0FFHOUT DX,AL;8254初始化,用于产生周期为25ms的中断MOV AL,00110110B ;计数器0,先低后高,方式三,二进制MOV DX,32cH ;写往控制口OUT DX,ALMOV DX,320H ;计数器0写初值:47KHz*25msMOV AX,1175OUT DX,ALMOV AL,AHOUT DX,AL;8259初始化CLI :关中断MOV DX,300H ;ICW1MOV AL,00010011BOUT DX,ALMOV DX,308H ;ICW2MOV AL,08H ;IR0中断类型号为08HOUT DX,ALMOV AL,00000001B ;ICW4OUT DX,ALMOV AL,0FEH ;IR0开屏蔽OUT DX,ALXOR AX,AX ;装载中断向量MOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:[DI],AXMOV AX,SEG INTSRMOV ES:[DI+2],AXSTI ;开中断JMP $INTSR PROC ;中断服务程序CMP MIN,0509H ;比较当前时间是否在59分55秒~00分00秒之间JL NEXT1CMP SEC,0505HJL NEXT1MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3MOV DX,20BHMOV AL,00H ;蜂鸣器低有效,报时OUT DX,ALJMP NEXT2NEXT3: MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT2: CMP COUNT,20 ;用8255产生0.5ms的蜂鸣JLE NEXT4MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT4:CMP SLL,0JZ LOBCALL TSTARTLOB: CALL KEYCHECK ;检测有无键按下CMP AL,0AH ;启停键按下,调用启停程序JNZ NEXT5CALL TSTARTJMP NEXT6NEXT5: CMP AL,0BH ;设置键按下,调用设置时间程序JNZ NEXT6CALL SETTIMENEXT6: INC COUNT ;当COUNT直为40时,加一秒,之后置0 CMP COUNT,40 ;25ms*40=1sJB NEXT7CALL ADDONEMOV COUNT,0NEXT7: CALL SHOW ;显示时间MOV AL,20H ;发EOI命令,结束中断MOV DX,300HOUT DX,ALIRETINTSR ENDPTSTART PROC ;控制时间暂停和开始。
微机原理闹钟实验报告实验名称:微机原理闹钟实验报告实验目的:1. 了解单片机的基本工作原理和编程方法;2. 学习如何使用单片机设计并实现闹钟功能;3. 掌握数字时钟显示技术。
实验器材:1. 单片机实验箱;2. AT89C52单片机;3. LED数码管;4. 4位开关;5. 电源线;6. 连线线缆。
实验原理:本次实验使用单片机AT89C52来设计和实现闹钟功能。
单片机是一种微型电子计算机系统,具有高度集成、功能强大等特点。
数码管是一种常见的数字显示装置,适用于时钟、计时器等场合。
实验步骤:1. 将AT89C52单片机与LED数码管通过连接线连接起来,保证电源线的正负极连接正常。
2. 编写C程序,实现显示当前时间的功能。
通过编程可以将当前时间在数码管上显示出来。
3. 设定闹钟时间和闹铃的功能,通过编程实现。
当闹钟时间到达时,数码管上会显示闹钟时间,并通过蜂鸣器发出声音。
4. 调试程序,确保闹钟功能正常运行。
5. 完成闹钟的相关操作,包括设置闹钟时间、启动闹钟、关闭闹钟等功能。
实验结果:经过编程和调试,我们成功实现了微机原理闹钟的功能。
我们能够通过设置闹钟时间并启动闹钟来实现报时的功能。
当闹钟时间到达时,数码管上会显示相应的时间,并通过蜂鸣器发出声音,起到提醒作用。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法。
同时,我学会了使用单片机设计和实现闹钟功能,并掌握了数字时钟显示技术。
这次实验让我对单片机的应用有了更深刻的认识,并提高了我对数字电路设计和编程的能力。
同时,我还发现了实验过程中可能存在的问题和改进的空间。
例如,我可以进一步完善闹钟功能,加入更多的定时和报时功能,提高闹钟的多样化和实用性。
此外,我还可以优化程序的运行效率,提高系统的稳定性和响应速度。
总之,本次实验对我的学习和提高具有重要意义。
通过实践操作,我深入理解了微机原理闹钟的设计与实现,拓宽了我的知识面和实践能力。
我将继续深入学习和掌握微机原理和相关技术,为以后的学习和研究打下坚实的基础。
课程设计报告课程设计名称:数字时钟系:三系学生姓名:梁文化阿龙班级:通信班学号: ************ 成绩: 100 指导教师: * * 开课时间: 2013-2014 学年 1 学期一.设计题目:数字时钟二.主要内容:编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
三.具体要求:在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。
学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。
学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。
设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。
考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。
成绩评定:优,良,中,及格,不及格。
特别说明:如发现抄袭,按照不及格处理。
目录一.课题的功能模块的划分 (4)二.主要功能实现 (5)三.心得体会 (7)四.源程序 (8)五.上机调试 (10)六.主要参考资料 (10)一.课题的功能模块的划分显示系统时间程序可以大致分为三个模块:1.利用1ch号功能来重定位中断程序的入口地址2.调用21号中断的31h程序结束并驻留功能,使得显示时间的子程序常驻内存3.显示系统时间模块功能模块图如下:Y二.主要功能实现1.重定位入口地址;重定位中断程序的入口地址lea dx,showtimemov ax,seg showtimemov ds,axmov ax,251chint 21h2.程序驻留并结束;调用21号中断的31h程序结束并驻留功能mov ax,3100hmov dx,proclenint 21h3.显示系统时间showtime procpush axpush bxpush dspush esmov ax,csmov ds,axmov ax,0b800hmov es,axmov ax,2c00h ;调用21h号中断的2ch功能int 21h;输出时钟mov bl,':'mov bh,chcall adjustmov es:[120],almov es:[120+2],ahmov es:[120+4],bl;输出分钟mov bh,clcall adjustmov es:[120+6],almov es:[120+8],ahmov es:[120+10],bl;输出秒钟mov bh,dhcall adjustmov es:[120+12],almov es:[120+14],ahpop espop dspop bxpop axiretshowtime end显示系统时间的流程图如下:三.心得体会为期一周的课程设计就要结束了,回想这一周,我经历了许多,懂得了许多。
微机原理课程设计说明书学院:电力学院姓名:学号:专业:______________________指导老师:目录一、设计意义 (1)二、设计任务 (1)1、设计要求 (1)2、设计原理 (1)三、硬件设计 (2)四、软件设计 (4)1、设计过程 (5)2、程序流程图 (5)3、功能模块 (5)五、设计心得 (8)附录 (9)1.设计意义“微机原理与接口技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。
本课程设计是配合“微机原理与接口技术”课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。
2.设计任务一、设计要求1.从键盘输入闹铃时间(如09:45)2.程序开始记时,并在屏幕上显示时间(如08: 30: 21)并实时刷新3.时间到,则发出闹铃声,声音维持数秒,同时屏幕显示响铃提示;同时时间停止刷新;4.能处理输入错误(如闹钟响铃时间应为数字,但用户错误输入非数值型的字符)二、设计原理分析1.显示系统时间1)使用DOS功能调用(INT 21H)中的2CH中断截取系统时间,再调用显示时间的子程序把时间显示出来(例如显示当前时间为16:30:45并且如果时间数少于两位数就要在其前面加0后显示出来如04: 07: 03);2)利用端口61H中的PB4每15.08微秒触发一次的特点,通过适当的循环次数进行循环从而实现延时1秒钟;3)在延时后再循环执行步骤1从而实现时间每一秒的刷新,在屏幕上不断显示当前的时间;2.设置闹钟响铃时间与输入时的容错处理方法1)在数据段定义好字型变量HOUR、MINUTE分别用于存放响铃时的小时数与分钟数;2)设置闹钟响铃时间由于形式为12:45 (小时:分钟)为了方便进行容错处理,可以分别用一段代码实现每一位数的输入,总共需要输入五位数字。
例如,输入前两位的小时数时,在输入第一位时,判断输入的是否是从0到2范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入小时的第二位数时,判断输入的是否是0到9范围里的一个数字,如果不是就显示错误信息并停止程序的运行;在输入第三位时(应该是冒号)再判断是否是冒号,如果不是就显示错误信息并停止程序的运行;输入第四位(即分钟数的第一位)判断输入的是否是0到5数字里的一个,如果不是就显示错误信息并停止程序的运行;输入最后一位判断是否是0到9的范围中的一个数字,如果不是就显示错误信息并停止程序的运行等等;3)每次输入如果确定输入无误就使用书本中处理输入一个十进制数常用的方法把输入的数存储到寄存器中,再把它存入相应的变量中如小时数存到变量HOUR中,分钟数存入变量MINUTE中;3.当到达闹钟响铃时间时响铃1)每次在截取系统时间前先把寄存器BX清零,截取时间后把截取到的系统时间分别与变量HOUR与变量MINUTE进行比较,如果相等,就使寄存器BX加1,这样再执行完截取系统时间后检查BX是否为2,如果是2就表示已经到达设定好的闹铃时间,就跳出显示时间的死循环,跳到响铃的循环去;2)响铃是使用DOS功能调用(INT 21H)中的2H,同时把7H放到DL寄存器中,执行一次后延时三秒(延时的方法同显示时间时所用延时方法一样)再执行一次共循环执行40次从而实现了响铃几秒钟的功能;3 .硬件设计音乐播放1. 8253功能结构:Intel8253是8086/8088微机系统常用的定时器/计数器芯片,它具有定时计数两大功能。
INTEL 8086/8088系列微型计算机原理及接口技术课程名称:微型计算机原理及接口技课程设计设计题目:具有年月日时分秒功能的时钟显示院系:电气工程学院班级:设计者:学号:同组者:指导教师:设计时间:目录一、设计内容与要求 (2)二、设计思路 (3)三、流程图 (4)四、程序 (7)五、运行结果 (12)六、硬件设计…………………………………………………………………………………………………七、调试步骤 (13)八、心得体会 (14)九、参考文献 (14)一、设计内容与要求:用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间****年**月**日**时**分**秒。
在程序启动后,微机屏幕上显示当前时间,按下a键开始计时,按下b键停止计时,按下c键退出程序。
二、设计思路:利用BIOS的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD 码)送入寄存器。
其中CH 和CL中保存的是小时数和分钟数;DH中保存的是秒钟数。
利用除法命令DIV,若进行字节操作,16位被除数隐含在AX中,8位除数就是源操作数,结果的8位商在AL中,8位余数在AH中,即(AL)(AH)/(SRC)的商(AL)(AH)/(SRC)的余数若进行字操作,32位被除数低16位隐含在AX中,高16位8位隐含在DX中,16位除数就是源操作数,结果的16位商在AX中,16位余数在DX中,即(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数通过以上方法将二进制表示的年月日时分秒转换为BCD码,再将BCD码表示的时,分,秒转换成AS CⅡ码并送入屏幕显示。
能调用子程序,若显示时间与当前时间不符,则校准显示时间,并用INT 21H 的7号功能调用判断输入回车并清屏。
若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示。
详细过程见程序注释。
三、流程图:四、程序:GB MACRO X ;宏定义MOV AX,0200HMOV BX,0000HMOV CX,0000HMOV DX,XINT 10HENDMXIANSHI MACRO Y,Z,WMOV BP,OFFSET YMOV AH,13HMOV AL,0BMOV BX,0EHMOV CX,ZMOV DX,WINT 10HENDMDATA SEGMENTBUFFER1 DB 11 DUP (?)BUFFER2 DB 9 DUP (?)SECOND DB ?SIGN DB ?STR1 DB 'THE CURRENT TIME: $'STR4 DB 'PRESS C TO EXIT:$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP ('S')STACK ENDSCODE SEGMENT PARA 'CODE'ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA STA PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,0600HMOV BX,0754HMOV CX,0000HMOV DX,194FHINT 10HXIANSHI STR1,17,0416H ;显示‘ THE CURRENT TIME:’XIANSHI STR4,16,1016H ;显示‘ PRESS C TO EXIT:’BEGIN: CMP SIGN,3 ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE TUI1MOV AH,2AHINT 21H ;取日期LEA BX,BUFFER1PUSH DX ;保护寄存器MOV AX,CX ;利用除法产生商和余数,把以二进制形式保存的年号转换为BCD码MOV DX,0000H ;年号除以1000得到商即为年号的千位MOV CX,1000DIV CXOR AL,30H ;年号的千位转换为其ASCII码并存入BUFFER1第1存储单元中MOV [BX],ALMOV AX,DX ;年号的百位转换为其ASCII码并存入BUFFER1第2存储单元中MOV CL,64HDIV CLOR AL,30HINC BXMOV [BX],ALMOV AL,AHMOV AH,00H ;年号的十位转换为其ASCII码并存入BUFFER1第3存储单元中MOV CL,10DIV CLOR AL,30HINC BXMOV [BX],ALOR AH,30H ;年号的千位转换为其ASCII码并存入BUFFER1第4存储单元中INC BXMOV [BX],AHPOP DX ;年号转换完毕INC BXMOV CL,2DH ;“—”号的ASCII码存入BUFFER1第5存储单元中MOV [BX],CL ;月数除以10得到商即为月数的十位MOV AL,DH ;月数的十位转换为其ASCII码并存入BUFFER1第6存储单元中CMP AL,10JAE L1JMP L2L1: ADD AL,6L2: PUSH AXAND AL,0F0HSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HINC BXMOV [BX],ALPOP AXAND AL,0FHOR AL,30HINC BXMOV [BX],AL ;月数的十位转换为其ASCII码并存入BUFFER1第7存储单元中INC BX ;月数转换完毕MOV CL,2DH ;“—”号的ASCII码存入BUFFER1第8存储单元中 MOV [BX],CL ;日期除以10得到商即为日期的十位MOV AL,DL ;日期的十位转换为其ASCII码并存入BUFFER1第9存储单元中MOV AH,00HMOV CL,10DIV CLOR AL,30HINC BXMOV [BX],AL ;日期的个位转换为其ASCII码并存入BUFFER1第10存储单元中OR AH,30HINC BX ;年月日转换完毕MOV [BX],AHMOV CL,'$' ;“$”号的ASCII码存入BUFFER1第11存储单元中 INC BXJMP NEXTTUI1:JMP TUI2NEXT:MOV [BX],CLXIANSHI BUFFER1,10,0616H ;用9号功能显示年月日MOV AH,2CHINT 21H ;取时间LEA BX,BUFFER2MOV AL,CH ;小时数除以10得到商即为小时数的十位MOV AH,00HMOV CH,10DIV CHOR AL,30H ;小时数的十位转换为其ASCII码并存入BUFFER2第1存储单元中MOV [BX],ALOR AH,30H ;小时数的个位转换为其ASCII码并存入BUFFER2第2存储单元中INC BXMOV [BX],AHINC BXMOV CH,3AH ;“:”号的ASCII码存入BUFFER2第3存储单元中 MOV [BX],CH ;分钟数除以10得到商即为分钟数的十位MOV AL,CLMOV AH,00HMOV CL,10DIV CLOR AL,30H ;分钟数的十位转换为其ASCII码并存入BUFFER2第4存储单元中INC BXMOV [BX],AL ;分钟数的个位转换为其ASCII码并存入BUFFER2第5存储单元中OR AH,30HINC BXMOV [BX],AHINC BXMOV CL,3AH ;“:”号的ASCII码存入BUFFER2第6存储单元中 MOV [BX],CLMOV AL,DH ;秒数除以10得到商即为秒数的十位MOV AH,00HMOV CL,10DIV CLOR AL,30H ;秒数的十位转换为其ASCII码并存入BUFFER2第7存储单元中INC BXMOV [BX],ALOR AH,30H ;秒数的个位转换为其ASCII码并存入BUFFER2第8存储单元中INC BXMOV [BX],AHINC BX ;时分秒转换完毕MOV CL,'$' ;“$”号的ASCII码存入BUFFER2第9存储单元中 MOV [BX],CLXIANSHI BUFFER2,8,0716H ;用9号功能显示时分秒CALL DELY ;调用子程序,若显示时间与当前时间不符,则校准显示时间JMP BEGINTUI2: RETSTA ENDPDELY PROCPUSH CXPUSH DXMOV AH,2CHINT 21HMOV SECOND,DHRE: MOV AH,2CHINT 21HPUSH DXMOV AH,6MOV DL,0FFHINT 21HPOP DXCMP AL,63H ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE Z3JMP CONTINZ3: MOV SIGN,3CONTIN: CMP SECOND,DHJE RECMP SIGN,1JMP EXITEXIT: POP DXPOP CXRETDELY ENDPCODE ENDSEND STA五、运行结果:程序运行后如下图所示:按下c键,则会出现下图界面:(此时按下任意键即可退出该程序)(注意,若没按下任何键或按下的不是c键,则不会出现下图所示界面)六、硬件设计:1、硬件设计说明:由8284产生系统脉冲送8253的CLK1,通过CPU置计数初值使计数器2输出1KHZ方波。
微机原理与接口技术课程设计实验报告——电子时钟(附8251串口通讯部分实验报告)通过设置8251的数据位和方式字,通过示波器测量输出波形。
在实验中,8251选择异步通讯方式,修改自发自收程序,通过测量TXD引脚观察波形。
观察波形&分析:1.数据位:6AH,方式字:7EH(1个停止位,偶校验)可知:输出为00101011001,数据为可以推断出是加粗部分,则前一位为起始位,后两位01分别为偶校验位和停止位。
实验结果与结果相符。
2.数据位:0C4H,方式字:7EH(1个停止位,偶校验)可知:输出为00010001111,数据为可以推断出是加粗部分,则前一位为起始位,后两位11分别为偶校验位和停止位。
实验结果与结果相符。
一、课程设计目的和意义通过本次课程设计掌握多种芯片使用的方法,灵活地综合运用课本知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解。
了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程。
二、开发环境及设备PC机一台、实验箱、导线若干8254定时器:用于产生秒脉冲,其输出信号可作为中断请示信号8255并口:用做接口芯片,和数码管相连8259中断控制器:用于产生中断LED:六个LED用于显示时:分:秒值三、设计思想与原理1、设计思想本系统设计的电子时钟用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟,8259做中断控制器产生中断。
在此系统中,8254的功能是定时,接入8254的CLK信号为周期性时钟信号。
8254采用计数器0,先读写低字节后读写高字节,方式2,二进制计数,以18.432kHz为输入时钟,4800H分频后为1Hz,即1s产生上升沿,此信号接8259的中断请求信号输入端,CPU即处理中断,使液晶显示器上的时间发生变化。
2.设计原理利用实验台上提供的定时器8254和扩展板上提供的8259和数码显示电路,设计一个电子时钟,由8254中断定时,电子时钟的显示格式由左到右分别为时、分、秒。
课程名称微机原理与接口技术任课教师设计题目数字钟设计班级姓名学号日期2010年12月5日目录计时时钟的设计 (3)1 设计需求分析与解决方案 (3)1.1 设计需求分析 (3)1.1.1 题目要求 (3)1.1.2 根据要求提出的问题 (3)1.2 解决问题方法及思路 (3)1.2.1 硬件设计选择部分 (3)1.2.2 软件设计分析 (5)2 硬件设计 (5)2.1 选择芯片8255 (5)2.1.1 芯片8255 A在本设计中的功能作用 (5)2.1.2 芯片8255的功能分析 (5)2.1.3 8255部分技术参数 (6)2.1.4 8255与外设相连的逻辑图(见图2-3) (7)2.2 选择器件LED (7)2.2.1 LED在本设计中的作用 (7)2.2.2 LED功能分析 (7)2.2.3 LED技术参数 (8)2.3 硬件设计思路及连接图 (9)2.3.1 硬件设计思路 (9)2.3.2 硬件接线原理图(见图2-7) (9)3 软件设计思路及程序控制流程框图 (10)3.1 软件设计思路 (10)3.2 程序流程图的相关说明 (10)3.3 程序控制流程框图(见图3-1) (10)3.4 程序清单 (12)4 上机调试过程 (17)4.1 硬件调试 (17)4.2 软件调试 (17)4.3 联机调试 (17)4.4 调试结果及问题的提出 (18)4.4.1 调试结果 (18)4.4.2 提出问题 (18)5 设计结果分析、问题讨论及总结体会 (18)5.1 课程设计结果及分析 (18)5.2 问题讨论 (18)5.3 总结体会 (19)6 参考文献 (20)计时时钟的设计1 设计需求分析与解决方案1.1 设计需求分析1.1.1 题目要求设计一个接口与七段LED显示器,显示一个计时时钟,显示初值为0,每隔一秒改变一次显示值,60s为一分钟,60min为一小时,LED显示器循环显示时、分、秒的动态值。
1.1.2 根据要求提出的问题1、选择用于显示时间的显示器;2、怎样使显示器实现显示时间;3、如何实现计时功能,是用软件还是硬件实现;4、选择何种接口芯片以及考虑该接口芯片及LED显示器的技术参数,考虑最大工作电流,需不需要其他辅助芯片等;5、对设计题目功能的扩展,在设计中加入其他功能;6、可否用不同的设计方法完成设计,与其他计算机语言设计相比的异同之处。
1.2 解决问题方法及思路1.2.1 硬件设计选择部分1、接口芯片的选择秒位设置完毕后,如何将时间信息传送到外设中,即选择何种芯片用于CPU 与外设之间传送信息。
接口芯片是微型机系统中实现输入输出的常用器件,是CPU与外设之间的界面,一方面要接收CPU进行输入/输出所发出的一系列信息,另一方面又要与外设交换数据以及一些联络信号等。
为增加本设计的灵活性,在接口的选择上要求是可编程的输入/输出接口8255A芯片或8251A芯片。
8255A芯片:它是一种可编程通用并行接口芯片,它有24条可编程的I/O 引脚,采用40脚双列直插式封装,单一+5V电源,全部输入/输出均与TTL电平兼容。
在8255A中有A、B、C三个并行输入/输出端口,其功能全部由程序设定,每个端口都有自己的特点。
A口、B口通常作为独立的I/O端口使用,C口也可以作为一般的I/O端口使用,但当A口、B口作为应答式的I/O端口使用时,C口分别以来为A口、B口提供应答控制信号。
如果采用8255A作为计时时钟的输入/输出接口,那么8255A的三个端口设置如下:A口工作与方式0,作为输出口,其PA0~PA6分别与外设的段选码相连,用以确定在何时显示时间的哪一位;B口工作与方式0,作为输出口,其PB0~PB7分别与外设相连,作为位选线;C口用来为A口、B口提供应答控制信号。
8251A芯片:它是一种可编程通用串行接口芯片,是通用的同步异步接收/发送器,它的作用是把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,它可以通过编程选用同步/异步通信方式,它具有独立的发送器和接收器,能够以单工、半双工或全双工方式进行通信,并提供相应的控制信号。
最佳解决方案:如果采用8251A作为计时时钟的输入/输出接口,那么就需要把计算机的并行数据转换成串行数据发送出去,把接收到的外部串行数据转换成并行数据送入计算机内部,这个过程是需要时间的,所以从时间效率方面来说并没有8255A芯片合适;另外,可编程并行接口芯片(8255A)数据传输速度快,虽然使用的通信线多,但是传输距离并不算远,所以在解决接口问题时,采用可编程并行接口芯片8255A是比较合适的。
2、时间显示为实现计时时钟的显示,可选择芯片LCD或LED,表1-1为两种芯片的比较:LCD 液晶显示器,通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,具有零辐射,低耗能,散热小,纤薄轻巧,精确还原图象,显示字符锐利,屏幕调节方便,可视角度小,响应时间过慢,亮度可对比度低等特点。
LED 发光二极管,是由发光二极管排列组成的显示器件,它采用低电压扫描技术,具有耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远的特点。
表1-1 LCD与LED的比较通过分析和对比以及实验室实验条件可知LED显示器要较优于LCD显示器,因此本实验选择LED来实现时间的显示。
3、秒钟设计秒钟的设计有两种解决方案:硬件实现、软件实现:(1)硬件分析:可选择8253A芯片,8253A是一种定时准确、使用方便、灵活性大的可编程定时器/计数器,其定时的时间长度可以通过软件来设置,对芯片设置处置初值后,计数器开始工作,微处理器就可以去做其他工作,定时时间到,电路会产生一个信号,向微处理器提出中断请求,告诉处理器定时时间已到。
(2)软件分析:为实现1秒长度的设定,可执行一个循环程序,通过循环次数和循环嵌套的层数来调节计时时间的长短,该方法的优点是不需要专用的硬件,从而成本低,方法简单灵活,使用起来也比较容易。
(3)最佳解决方案:通过以上分析,硬件实现1秒的设定虽然较准确,但用软件来实现可以极大的节约成本,而且通过周密的计算循环的次数和循环嵌套的层数也可以将计时的准确度提高,所以在实现计时时间方面选择软件是比较好1.2.2 软件设计分析1、初始值设置在程序中的数据段定义秒位数据second,分位数据minute,时位数据hour,初始值都设为00H,并在LED显示器上显示初值。
2、8255初始化设置8255的工作方式:B口和C口都用于输出,且都工作在方式0。
3、计时过程从初始值开始显示,当显示了1s时,秒位加1,并判断秒位是否为60,若不是,则直接显示时间;若是,则将秒位置0,分位加1,接着判断分位是否为60,若不是,则直接显示;若是,则将分位置0,时位加1,然后判断时位是否为25,若不是,则直接显示;若是,则将时位置0,日期加1,并判断日期是否加到31,若是,则将日期清零,重新计时。
如此循环。
4、1秒时间的设定执行一个循环程序,通过循环次数和循环嵌套的层数来调节计时时间的长短,该循环次数处定为0100h。
2 硬件设计2.1 选择芯片82552.1.1 芯片8255 A在本设计中的功能作用8255是并行的I/0接口芯片,内部有三个相互独立的8位数据端口。
8255实现了外设与8086之间的数据传输。
8255的B口工作于方式0,作为输出口,其PB0~PB7分别与LED数码管显示器的显示器的八段a,b,c,d,e,f,g,dp相连,C 口作为输出口,其PC7~PC0与LED数码管显示器的LED0~LED7相连,作为位选。
2.1.2 芯片8255的功能分析1、8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A 口、B口和C口。
三个端口都可以作为输入端口或输出端口。
A口有三种工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口通常作为联络信号使用。
8255的工作只有当片选CS有效时才能进行工作,而控制逻辑端口实现对其他端口的控制。
当8255工作在方式0时,即基本输入输出方式时,可将三个数据端口划分为四个独立的部分:A口和B口作为两个8位端口,C口的高4位和低4位可以用作两个4位的输入输出口,各个端口都可独立地用作输2、数据总线缓冲器是一个8位双向三态缓冲器,三态是由读/写控制逻辑控制的,它可与系统的DB直接相连,实现CPU和8255A之间的信息传送;读写控制器用于管理数据、控制字或状态字的传送,接收来自CPU的地址信息及一些控制信号,然后向A组、B组控制电路发送命令,控制端口数据的传送方向。
2.1.3 8255部分技术参数1、8255A的方式控制字(见图2-1)图2-1 8255A的方式控制字2、8255A的部分技术参数(见表2-2)标识符最小最大测试条件输入低电平(VIL)-0.5V 0.8V输入高电平(VIH) 2.0V 5V输出低电平(VOL)DB 0.45V IOL=2.5mA输出低电平(VOL)PER 0.45V IOL=1.7mA输出高电平(VOH)DB 2.4V IOH=-400μA输出高电平(VOH)PER 2.4V IOH=-200μA 驱动电流-1.0mA -4.0mA REXT=750ΩVEXT=1.5V 供应电流120 mAIIL(INPUT LOAD CURRENT ±10μA VIN=0V~5VIOFL(Output float leakage ±10μA VOUT=0.45~5V表2-2 8255A的部分技术参数技术参数分析:8255A工作的最低输入电压-0.5~0.8V,最高输入电压是2.0~Vcc电压,从这两者之间的区域来看,逻辑电平的差值还是比较大的;另外在数据总线上的逻辑电平是 2.4V,输入的负载电流为在最大电流为±10mA,电源的电流是120mA,驱动电流在-1.0 mA ~-4.0 mA之间。
2.1.4 8255与外设相连的逻辑图(见图2-3)图2-3 8255与外设相连的逻辑图PA7~PA0:A口数据信号线;PB7~PB0:B口数据信号线;PC7~PC0:C口数据信号线。
2.2 选择器件LED2.2.1 LED在本设计中的作用LED发光二级管(Light-Emitting Diode),在本设计中采用7段数字发光二级管,是作为终端用来显示计时时钟的时、分、秒值的。
2.2.2 LED功能分析LED发光二级管分为共阳极和共阴极两种,共阳就是7段的显示字码共用一个电源的正极,原理示意图如下:(见图2-4)图2-4 LED原理图LED数码管采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。