微机原理课设(电子时钟)
微机原理课程设计电子闹钟
电子钟设计1任务要求1.1显示位置:屏幕中央.1.2日期显示格式"时:分:秒.1.312/24时制可调.1.4在显示屏上显示提示语“CURRENT TIME IS:”和当前时间.2工作原理1时钟起始时间的设置先调用DOS操作系统模块9,在显示屏上显示提示语“TIME SYSTEM IS:”,输入时制12或24后,显示“CURRENT TIME IS:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时:分:秒”。
输入的时间以字符串形式存放在已定义的存储器缓存区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓存区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放在寄存器CH、DH、DL中。
2延时程序调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。
在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。
秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。
3时间显示调用DOS操作系统模块9,可用来显示存储器内字符串。
由于显示的字符必须为ASCII码,因为要调用TRAN2转换子程序将寄存器CH、DH、DL内压缩BCD码字符串转换成ASCII字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。
调用DOS 操作系统模块9,(DS:DX)应指向字符串首址。
程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下CTRL和BREAK二键。
4程序堆图5程序清单DATA SEGMENTBUFFER DB 10 ;设置输入字符串用缓冲区 DB ?DB 10 DUP(?)TS DB 'TIME SYSTEM IS:$'CT DB 'CURRENT TIME IS:$'PM DB 'PM $'AM DB 'AM $'KEEPIP DW 0KEEPCS DW 0SR DB ?HOUR DB ?DAT ENDSSTA SEGMENT PARA STACK 'STACK'STAPN DB 100 DUP(?)TOP EQU LENGTH STAPNSTA ENDSCOD SEGMENTSTART PROC FARASSUME CS:COD,DS:DAT,SS:STAMOV AX,DATAMOV DS,AXMOV AX,STAMOV SS,AXMOV AX,TOPMOV SP,AXMOV AH,35H ;设置1CH中断MOV AL,1CHINT 21H ;段地址放入ES,偏移地址放入BXMOV KEEPIP,BX ;保偏移地址存MOV KEEPCS,ES ;保存段地址PUSH DSMOV DX,OFFSET TIMEMOV AX,SEG TIMEMOV DS,AXMOV AL,1CHMOV AH,25H ;设置中断功能调用INT 21HPOP DSMOV DX,OFFSET TS ;DOS功能模块,显示字符串MOV AH,9INT 21HMOV AH,1 ;DOS功能模块,从键盘输入字符INT 21HMOV AH,1INT 21HMOV SR,ALMOV DL,0AH ;"换行"MOV AH,2INT 21HMOV DL,0DH ;"回车"MOV AH,2INT 21HMOV DX,OFFSET CT ;DOS功能模块,显示字符串,提示从键盘输入MOV AH,9INT 21HMOV DX,OFFSET BUFFERMOV AH,10 ;DOS功能模块,从键盘输入字符串到缓冲区INT 21HMOV BX,OFFSET BUFFER+2CALL TRAN1 ;将输入的ASCII码转换为BCD码INC BXINC BXCALL TRAN1INC BXINC BXCALL TRAN1MOV BX,OFFSET BUFFER+2MOV AL,[BX]CALL MUL10 ;将BCD码转换为压缩的BCD码MOV CH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DH,ALINC BXINC BXMOV AL,[BX]CALL MUL10MOV DL,ALAGAIN: PUSH CXMOV CX,18STI ;开中断W: CMP CX,0JNE WCLIPOP CXMOV AL,DLADD AL,1 ;"秒"加1DAAMOV DL,ALCMP AL,60H ;"秒"与60比较JNE DISPY ;小于60S,转显示程序MOV DL,0 ;等于60S, "秒"值为0,"分"+1MOV AL,DHADD AL,1DAAMOV DH,ALCMP AL,60H ;"分"于60比较JNE DISPYMOV DH,0MOV AL,CHADD AL,1DAAMOV CH,ALMOV AL, SRCMP AL,32HJNE NEXTJMP DISPYNEXT: MOV AL,CHMOV HOUR,CHCMP AL,24HJNE DISPYMOV CH,0DISPY: CALL IOCLRCALL IOSET1CALL STARCALL IOSET2CALL STARCALL IOSETMOV BX,OFFSET BUFFERMOV AL,SRCMP AL,32HJNE NEXT2CALL AD12MOV AL,HOURJMP NEXT1NEXT2: MOV AL,CH ;"时"值转换成ASCII码NEXT1: CALL TRAN2 ;将压缩BCD码转换成ASCII码MOV AL,':'MOV [BX],ALINC BXMOV AL,DH ;"分"值转换成ASCII码CALL TRAN2INC BXMOV AL,':'MOV [BX],ALINC BXMOV AL,DL ;"秒"值转换成ASCII码CALL TRAN2INC BXMOV AL,'$' ;显示字符串结束码MOV [BX],ALPUSH BXPUSH CXPUSH DXMOV DX,OFFSET BUFFERMOV AH,9 ;DOS功能模块,显示字符串INT 21HPOP DXPOP CXPOP BXJMP AGAINCLIPUSH DSMOV DX,KEEPIPMOV AX,KEEPCSMOV DS,AXMOV AH,25HMOV AL,1CHINT 21HPOP DSSTIRETSTART ENDPMUL10 PROC ;将BCD码转换为压缩的BCD码ADD AL,ALDAAMOV CL,ALADD AL,ALDAAADD AL,ALADD AL,CLDAAMOV CL,ALINC BXMOV AL,[BX]ADD AL,CLRETMUL10 ENDPTRAN1 PROC ;ASCII码转换成BCD码MOV AL,[BX]AND AL,0FHMOV [BX],ALINC BXMOV AL,[BX]AND AL,0FHMOV [BX],ALRETTRAN1 ENDPTRAN2 PROC ;将压缩BCD码转换成ASCII码MOV CL,ALSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV [BX],ALINC BXMOV AL,CLAND AL,0FHOR AL,30HMOV [BX],ALRETTRAN2 ENDPIOCLR PROC ;调用BIOS,清除全屏幕PUSH CXPUSH DXPUSH BXPUSH AXMOV AX,0600HMOV BH,02SUB CX,CXMOV DX,184FHINT 10HPOP BXPOP DXPOP CXRETIOCLR ENDPTIME PROCDEC CXIRETTIME ENDP ;调用BIOS,设置屏幕光标在中央PUSH DXPUSH BXPUSH AXMOV AH,02SUB BH,BHMOV DX, 0C23HINT 10HPOP AXPOP BXPOP DXRETIOSET ENDPIOSET1 PROCPUSH AXPUSH BXPUSH DXMOV DX,0A1AHMOV BH,00MOV AH,02INT 10HPOP DXPOP BXPOP AXRETIOSET1 ENDPIOSET2 PROCPUSH AXPUSH BXPUSH DXMOV DX,0E1AHMOV BH,00MOV AH,02INT 10HPOP BXPOP AXRETIOSET2 ENDPSTAR PROCPUSH AXPUSH BXPUSH CXPUSH DXMOV AL,3DHMOV BH,0MOV BL,0CHCMP HOUR,24HJNZ XMOV HOUR,0HX: MOV CX,WORD PTR HOUR INT 10HPOP DXPOP CXPOP BXPOP AXRETSTAR ENDPAD12 PROCPUSH DXMOV HOUR,CH MOV AL,SRCMP AL,32HJNE ZHMOV AL,HOURCMP AL,24HJNE NEXT3MOV CH,0MOV HOUR,CHJMP S12NEXT3: CMP AL,12HJBE S12MOV DX,OFFSET PMMOV AH,9INT 21HMOV AL,HOURMOV DH,12HSUB AL,DHDASMOV HOUR,ALJMP ZHS12: CMP AL,12HJNE ZMOV DX,OFFSET PMMOV AH,9INT 21HJMP ZHZ: MOV DX,OFFSET AMMOV AH,9INT 21HZH: POP DXRETAD12 ENDPCOD ENDSEND STAR6设计时遇到的问题及解决方法在课程设计中遇到的最大的困难是如何利用软、硬件配合的方式产生中断,对中断向量表的装载还比较模糊,对中断的初始化、具体设置、中断返回还不是很清楚,程序设计一度陷入停滞状态,不知如何是好.于是我又重新翻阅了我们的学习课本,也就是电子工业出版社的《微机原理与接口技术(基于16位机)》,重点研究了第9章《中断》,通过对这一章的学习,我终于对中断有了详细的认识,在设计程序时也容易了很多。
微机原理课设(电子时钟)
学院:计算机科学技术专业:计算机科学与技术(工)班级:计08-1班*名:***学号:27指导教师:**2011年7月1日微机原理与汇编语言课程设计任务书一、题目:电子表二、设计的目的1. 掌握利用PC机的的中断及中断服务程序的编写方法;2. 掌握定时器/计数器8253的工作原理及编程方法。
三、设计要求编写程序,利用主机内的8253-2的计数器0产生10m的方波输出,此输出送至IRQ0使8259A每10ms产生1次中断,100次后秒加1,然后调整时、分、秒并在屏幕上显示。
程序从按下任意键开始显示数据区存放的时间值,运行中按下空格键即停止运行,并返回DOS。
要求每人独立完成课程设计。
四、设计内容采用PC系列微机现有的硬件和软件资源编写汇编语言程序,在显示器上显示XX(时):XX(分):XX(秒),每秒钟更新1次。
五、课程设计工作量一般每人的程序量应在100行有效程序行以上。
不得抄袭,否则给不及格成绩。
六、课程设计工作计划2011年6月27日1-2节指导教师讲课,学生准备文献资料;2011年6月28日~2011年7月01日每人完成自己程序并能独立演示;2011年7月01日下午验收,学生撰写课程设计报告。
指导教师签字:专业主任签章:微机原理与汇编语言课程设计指导教师评语与成绩目录第1章概述 ..................................................................................................... 错误!未定义书签。
选题来源 .............................................................................................. 错误!未定义书签。
选题目的 .............................................................................................. 错误!未定义书签。
微机原理课程设计电子闹钟
电子闹钟学院:姓名:学号:班级:一.系统的硬件设计和软件设计1.总体设计本系统采用单片机AT89S51作为本设计的核心控制元件,使得电路的可靠性比较高,功能也比较强大,利用7段共阴LED作为显示器件。
接入共阴LED显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间到,从而控制电器的起停。
电路由下列部分组成:时钟电路、复位电路、控制电路、LED显示,报警电路,芯片选用AT89S51 单片机。
系统基本框图:2.硬件设计(1).单片机AT89C51AT89C51是一个低电压,高性能CMOS型 8位单片机,片内含4KB的可反复擦写的Flash只读程序存储器(ROM)和128 B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
主要功能特性:兼容MCS-51指令系统可编程UARL通道两个16位可编程定时/计数器1个串行中断两个外部中断源共6个中断源可直接驱动LED51单片机引脚图()时钟电路单片机的时钟产生方法有两种内部时钟方式和外部时钟方式。
本系统中单片机采用内部时钟方式。
最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。
振荡晶体可在~之间。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在~之间取值。
单片机的时钟电路如图()数码管显示电路单片机中通常使用7段LED,LED是发光二极管显示器的缩写。
微机原理与接口技术课程设计报告电子钟
微机原理与接口技术课程设计报告——电子钟实验学院:计算机学院指导教师:***一实验任务及要求任务: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 ;控制时间暂停和开始。
(完整word版)微机原理课程设计(电子时钟)(word文档良心出品)
电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。
与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。
它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。
二:数字钟电路设计思路1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。
时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
2.此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。
该程序实现了准确显示秒和分,读数准确,走时精准。
此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。
3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。
在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
微机原理与接口课程设计 电子钟
一. 实验原理电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。
其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环记时。
显示时利用7段显示器显示六位十进制数据。
前两个显示小时,中间两个显示分钟,后两个显示秒。
时钟的运算是利用中断来实现的, 利用8253的模式三输出一定频率的方波作为触发中断的条件。
8253A 可编程定时/计数器的输入时钟为100KHz ,设定时/计数器0的计数初值为100,工作在方式3,即方波发生器,其输出的1KHz方波作定时/计数器2的时钟。
定时/计数器2的初值设为1000,工作在方式2,即每隔 1s输出负脉冲,取反后用作不可屏蔽中断的中断申请信号,在中断服务程序中计算时间,并通过74ls273并行输出到数码管显示。
电子时钟主要由 74ls273 锁存器、8253 定时/计数器、74ls244 反相器、LED 数码显示管和两个按键组成。
主要用 8086 的 NMI 的中断服务程序完成秒、分、时的运算即计时功能,两个开关的中断服务程序完成调时、调分功能。
8253 用来产生 1s 的脉冲信号作为 NMI 的中断请求信号。
74ls273 负责将内存里的时位和分位秒位值输出到数码管。
二.实验要求利用8253定时器设计一个电子钟,并定义一个启动键。
当按下该键时电子时钟从当前设定值开始走时。
三.实验程序.MODEL SMALL.8086.STACK.CODE.STARTUPNMI_INIT:PUSH ES;nmi不可屏蔽中断向量表初始化XOR AX,AXMOV ES,AXMOV AL,02HXOR AH,AHSHL AX,1SHL AX,1MOV SI,AX;相当于cs,ip入栈MOV AX,OFFSET NMI_SERVICE;调用中断处理程序MOV ES:[SI],AXINC SIINC SIMOV BX,CS;?MOV ES:[SI],BXPOP ES;定时器初MOV AL,00110111BMOV DX,0406HOUT DX,ALMOV DX,0400HMOV AX,0100HOUT DX,ALMOV AL,AHOUT DX,ALMOV AL,10110101BMOV DX,0406HOUT DX,ALMOV DX,0404HMOV AX,1000HOUT DX,ALMOV AL,AHOUT DX,ALLOOP0:;主任务CALL KEYCALL DISPJMP LOOP0NMI_SERVICE:;中断服务程序PUSH AXMOV AL,SECADD AL,1DAAMOV SEC,ALCMP SEC,60HJB EXITMOV SEC,0MOV AL,MINADD AL,1DAAMOV MIN,ALCMP MIN,60HJB EXITMOV MIN,0MOV AL,HOUADD AL,1DAAMOV HOU,ALCMP HOU,24JB EXITMOV HOU,0EXIT:POP AXIRETDISP PROC NEARMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV BL,SECAND BX,000FHMOV SI,BXMOV AL,SITUATION[SI] ;段码MOV DX,0200HOUT DX,ALMOV AL,0FEH;秒个位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV BL,SECAND BX,00F0HMOV CL,4SHR BX,CLMOV SI,BXMOV AL,SITUATION[SI] ; 段码MOV DX,0200HOUT DX,ALMOV AL,0FDH; 秒十位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV AL,40H;段码MOV DX,0200HOUT DX,ALMOV AL,0FBH ;秒个位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV BL,MINAND BX,000FHMOV SI,BXMOV AL,SITUATION[SI] ;段码MOV DX,0200HOUT DX,ALMOV AL,0F7H;分个位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH; 不显示OUT DX,ALMOV BL,MINAND BX,00F0HMOV CL,4SHR BX,CLMOV SI,BXMOV AL,SITUATION[SI] ; 段码MOV DX,0200HOUT DX,ALMOV AL,0EFH;分十位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV AL,40H; 段码MOV DX,0200HOUT DX,ALMOV AL,0DFH;秒个位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH;不显示MOV DX,0201HOUT DX,ALMOV BL,HOUAND BX,000FHMOV SI,BXMOV AL,SITUATION[SI] ; 段码MOV DX,0200HOUT DX,ALMOV AL,0BFH;时个位MOV DX,0201HOUT DX,ALCALL DELAYMOV AL,0FFH; 不显示MOV DX,0201HOUT DX,ALMOV BL,HOUAND BX,00F0HMOV CL,4SHR BX,CLMOV SI,BXMOV AL,SITUATION[SI] ;段码OUT DX,ALMOV AL,07FH; 时十位MOV DX,0201HOUT DX,ALCALL DELAYRETDISP ENDPKEY PROC NEARMOV DX,0600HIN AL,DXTEST AL,01HJNZ NEXTHOUCALL DISP;消抖CALL DISPCALL DISPMOV DX,0600HIN AL,DXTEST AL,01HJNZ NEXTHOUMOV AL,MINADD AL,1;分调整DAAMOV MIN,ALCMP MIN,60HJB NEXTHOUMOV MIN,0 NEXTHOU:MOV DX,0600H IN AL,DXTEST AL,02HJNZ EXITKEYCALL DISP;消抖CALL DISPCALL DISPMOV DX,0600HIN AL,DXTEST AL,02HJNZ EXITKEYMOV AL,HOUADD AL,1DAA;时调整MOV HOU,ALCMP HOU,24HJB NEXTHOUMOV HOU,0EXITKEY:RETKEY ENDPDELAY PROC NEAR;定时子程序PUSH BXPUSH CXMOV BX,1LP2:LOOP LP2DEC BXJNZ LP1POP CXPOP BXRETDELAY ENDP.DATASEC DB 00HMIN DB 00HHOU DB 23HSITUATION DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH, 40HSIT_END=$END四.实验电路图五.学习心得在这次课程设计过程中,我们逐步养成了发现、提出、分析和解决实际问题的习惯;这不但锻炼提高了我们的实践能力,更是对我们实际工作能力的具体训练和考察过程。
微机原理-数字钟(电子钟)-课程设计
8259中断矢量地址与中断信号之间的关系如表3.1所示:
中断序号
0
1
2
3
4
5
6
7
功能调用
08H
09H
0
0
0
0
0
0
矢量地址
20H
~
23H
24H
~
27H
28H
~
2
2
~
2
30H
~
33H
34H
8253有六种工作方式:
(1)方式0:计数结束中断
(2)方式1:可编程频率发生器
(3)方式2:频率发生器
(4)方式3:方波频率发生器
(5)方式4:软件触发的选通信号
(6)方式5:硬件触发的选通信号
基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;六个数码管动态显示时、分、秒的当前值。
C键:置初值,显示00:00:00
G键:显示动态变化(启动表);
D键:显示静态不变(表停止);
E键:终止程序,返回;
P键:设置时:分:秒的值四、设计所用芯片结构
1、8259A芯片的内部结构及引脚
一、设计要求
二、设计所用芯片
三、设计思想
四、设计所用芯片结构
1、8259A芯片的内部结构及引脚
2、8279芯片的内部结构及引脚
3、8253芯片的内部结构及引脚
五、系统各个模块设计
1、系统总体设计
2、主控模块
3、模块
4、定时模块
5、中断处理模块
微机课程设计电子钟
微机课程设计电子钟一、课程目标知识目标:1. 学生能理解电子钟的基本原理,掌握电子时钟系统的组成及其工作方式。
2. 学生能够运用所学的微机知识,设计并实现一个具有基本计时功能的电子钟。
3. 学生能够了解并描述常见电子时钟电路图,分析电路中各元件的作用。
技能目标:1. 学生能够运用编程软件,如Arduino或51单片机等,编写控制程序,驱动电子钟运行。
2. 学生通过实际动手操作,掌握电子元件的焊接和电路板的搭建,提高实践操作能力。
3. 学生能够通过小组合作,进行问题分析和解决方案的设计,提升团队协作和沟通能力。
情感态度价值观目标:1. 学生通过电子钟的设计与制作,培养创新思维和问题解决能力,增强自信心和成就感。
2. 学生在实践过程中,能够体会到学习的乐趣,培养对科学技术的兴趣和探索精神。
3. 学生通过小组合作,学会尊重他人意见,培养团队精神和责任感。
课程性质:本课程为实践性课程,强调理论联系实际,注重培养学生的动手操作能力和创新思维。
学生特点:学生为初中生,具有一定的微机基础,好奇心强,喜欢动手实践。
教学要求:教师应引导学生主动参与,注重启发式教学,鼓励学生提出问题、解决问题,关注学生的个体差异,促进每个学生的全面发展。
通过课程目标的分解,将学习成果具体化,便于教学设计和评估。
二、教学内容本课程教学内容紧密结合课程目标,以确保学生能够系统地掌握电子钟设计与制作相关知识。
1. 理论知识:- 电子时钟原理:介绍时钟信号、晶振、分频器等基本概念。
- 电路元件:学习并认识LED、电阻、电容、二极管、三极管等常见电子元件。
- 微控制器:了解Arduino或51单片机的基本结构、工作原理及编程方法。
2. 实践操作:- 电路设计:学习如何绘制电子钟电路图,选择合适的电子元件。
- 程序编写:根据电子钟功能需求,编写相应的控制程序。
- 电路搭建:动手焊接电路板,搭建电子钟硬件系统。
3. 教学大纲:- 第一阶段:电子时钟原理学习,认识电路元件。
微机原理课程设计电子秒表
微机原理课程设计电子秒表一、课程目标知识目标:1. 理解微机原理的基本概念,掌握电子秒表的基本工作原理;2. 学会使用微机编程实现电子秒表的计时功能;3. 掌握电子秒表中涉及的时间计算和显示方法。
技能目标:1. 能够运用微机原理设计简单的电子秒表程序;2. 能够对电子秒表进行调试和故障排查;3. 培养学生动手实践能力和团队协作能力。
情感态度价值观目标:1. 激发学生对微机原理和电子制作的兴趣,培养创新意识;2. 培养学生严谨的科学态度和良好的学习习惯;3. 增强学生的自信心,培养克服困难的意志品质。
课程性质:本课程为实践性课程,以学生动手实践为主,结合理论知识,培养学生的实际操作能力和创新能力。
学生特点:学生处于高中年级,具备一定的电子和编程基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,引导学生主动参与,提高学生的实践能力和综合素质。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
通过本课程的学习,使学生能够独立完成电子秒表的设计与制作,为后续相关课程打下坚实基础。
二、教学内容1. 理论知识:- 微机原理概述:介绍微机的基本组成、工作原理和特点;- 电子秒表原理:讲解电子秒表的计时原理、硬件组成和软件设计方法;- 编程语言:复习C语言基础知识,强调在微机编程中的应用。
2. 实践操作:- 硬件设计:指导学生设计电子秒表的硬件电路,包括时钟芯片、显示模块等;- 软件编程:教授学生使用C语言编写电子秒表的程序,实现计时、显示等功能;- 调试与优化:教授学生如何对电子秒表进行调试和优化,提高计时的准确性。
3. 教学大纲:- 第一周:微机原理概述,电子秒表原理学习;- 第二周:C语言基础知识复习,硬件设计指导和实践;- 第三周:软件编程教学与实践;- 第四周:调试与优化,总结与评价。
4. 教材章节:- 第一章:微机原理概述;- 第二章:C语言基础知识;- 第三章:电子秒表的硬件设计与软件编程;- 第四章:电子秒表的调试与优化。
微机原理实验报告电子钟
微机原理与接口技术课程设计实验报告——电子时钟(附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中断定时,电子时钟的显示格式由左到右分别为时、分、秒。
微机原理课程设计-电子钟
摘要微机控制即微型计算机原理控制。
是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
微型计算机原理控制应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡,电子宠物等,这些都离不开微型计算机原理控制。
我们组本次设计的题目是简单电子钟程序设计,用到了定时芯片8254,中断控制器8259和可编程并行芯片8255。
在编辑1毫秒定时程序时,用到了中断控制器8259。
此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成AS CII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。
该程序实现了准确显示秒和分,读数准确,走时精准。
此电子钟能准确的从0分0秒走时到59分59秒,然后能自动回复到0分0秒循环走时。
关键词:可编程并行芯片8255 定时芯片8254 中断控制器8259七段数码显示管延时计数比较定时中断1 设计任务描述1.1设计题目简单电子钟设计1.2设计内容利用微机原理试验箱的发光数码管显示单元,把时间显示在LED数码管上。
1.2.1 设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础1.2.2 设计要求利用8254定时器设计一个具有分、秒显示的电子时钟,并定义一个启动键,当按下该键时时钟从当前设定值(可在显示,缓冲区中予置)开始走时。
微机原理记时日期秒表多功能电子钟课程设计
微机课程设计用8086/8088CPU设计一个多功能时钟。
要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。
目录一、设计内容要求二、设计思想三、程序流程图(1)时间显示部分(2)日期显示部分(3)数字显示部分四、实验连线图(1)总体线路图(2)8284应用电路(3)74LS138片选部分(4)8255与七段数码管搭配部分电路图(5)8259功能选择部分(6)数据存储部分(7)计数电路(8)CPU的部分连接部分五、连线描述六、按键功能介绍七、心得体会八、参考文献一、设计内容与要求1、设计目的:1) 进一步建立微机系统概念、加深对系统理解和认识,提高微机系统的应用水平。
2) 进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高汇编语言程序的水平和学习程序调试方法。
3) 进一步熟悉接口、熟悉键盘控制和七段数码管及其他芯片的使用。
2、设计任务:用8086/8088CPU设计一个多功能时钟。
要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。
二、设计思想1. 先在数据段开辟存储单元,用来存放时、分、秒、年、月、日等的信息。
这些存储单元分别对应时、分、秒,日期的年、月、日的十位和个位。
调用子程序的清屏部分。
2. 在主程序中分别对8259、8255、8259、8253进行初始化编程。
根据系统功能要求,设置操作字与方式控制字。
3. 8255的A口工作在方式0输出,B口工作在方式0输出,为基本的输入输出方式。
这部分与七段数码管搭配,显示结果。
4. 在中断服务程序中对中断次数进行统计。
当时钟在日常状态和切换到秒表功能时,当产生1次中断时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同理对分、时做相应的处理。
该电子钟为12进制的。
当电子表切换到日期功能时,先判断是否是闰年,然后判断是否是二月,最后判断是单月份还是双月份,然后根据闰年366天,闰年2月29天,不是闰年28天,当月份31天,双月份30天进行进位。
微机原理课程设计—电子时钟
时钟控制系统设计一、设计任务及其要求………………………………………………………二、方案比较及评估论证……………………………………………………三、系统工作原理……………………………………………………………四、硬件原理及其电路图……………………………………………………五、软件思想(含流程图和程序)…………………………………………六、调试记录及结果分析……………………………………………………七、参考资料…………………………………………………………………八、芯片资料…………………………………………………………………九、总结………………………………………………………………………一、设计任务及其要求(1)设计一个时钟,可以显示时分秒,年月日,并可以调整。
(2)利用PC系列微机现有的硬件和软件资源,编写程序,使在CRT屏幕上显示XXXX 年XX月:XX日:XX时:XX分:XX秒,并且每秒钟更新一次显示。
(3)编写程序,利用主机内的8253/8254-2的计数器0产生10ms的对称方波输出,该输出送至IRQ0使8259A每10ms产生一次中断,100次中断后秒量+1,然后调整年,月,日,时,分,秒并显示在屏幕上。
程序从按下任意键考试显示数据区中存放的时间值,运行中按下空格键则停止运行返回DOS。
(4)调整程序,直至运行正常。
二、方案比较及评估论证方案一:三、系统工作原理首先在数据段开辟一显示缓冲区,用来存储系统时间。
调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。
分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号’$’。
调用DOS字符串显示功能将时间显示出来。
并利用8259A的IR0中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。
三、硬件原理及其电路图本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8259做中断控制器产生中断。
微机原理课程设计电子时钟的设计
微机原理课程设计电子时钟的设计微机原理课程是电子信息专业中非常实用和重要的一门课,它主要是培养学生对微型计算机硬件和软件的基本理论和应用技能进行掌握。
在这门课程中,学生不仅要学习如何使用微机进行编程和设计,还要学习如何进行电子产品的原理设计和制作。
其中,电子时钟的设计是一个非常典型的案例。
本文将重点介绍如何通过微机原理课程的学习,设计出一款高质量的电子时钟。
首先,电子时钟的设计需要具备一定的电子基础知识,包括原理图设计、元件选择、电路分析等方面。
在微机原理课程中,学生需要学习电子学基础知识和数字电路基础知识,掌握数字集成电路(IC)的使用方法和设计技巧。
在此基础上,学生需要深入掌握时钟电路的原理和基本组成部分,如定时器、计数器、显示器、驱动等。
其次,电子时钟的设计需要用到一些专业的软件工具,例如电路仿真软件、PCB设计软件等。
在微机原理课程中,学生需要掌握使用这些软件工具进行电路设计和分析,在软件实验中,学生可以通过仿真节约实际元件和时间成本,从而提高设计效率。
同时,对于PCB布局设计也是非常重要的一步,PCB布局的合理性能够从根本上解决干扰、热、机械制造等问题,提高电路的工作可靠性和稳定性。
最后,电子时钟的设计需要充分考虑实际的应用场景,例如设计适用于家庭、办公室或工业控制等场合的时钟。
在微机原理课程中,学生需要掌握设计电子时钟的基本模式和技巧,同时对于市场上其他电子产品的参考及实际应用方面进行掌握和学习,根据用户的使用需求设计出贴合需求的产品。
同时,还需要注意时钟的包装和美观性,为产品添加更多的设计感和人气。
总之,通过微机原理课程的学习,学生可以掌握电子时钟的设计理论和实践技巧,随着知识的广泛掌握,能够实现电子时钟的定制和精细化生产。
并且,学生还可以应用这些知识和技能,并为电子产业的快速发展做出贡献,推动电子产业的创新和进步。
微机原理课程设计---电子时钟
一、课程设计的目的对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
汇编语言程序设计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求学生能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
培养学生综合运用所学知识独立完成汇编程序课题的能力。
使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
二、设计任务与要求(一)、课题名称和内容1.电子时钟在出现的提示信息中输入大写字母“D”,可在屏幕的中央以“年\月\日”的形式显示系统当前日期,;输入大写字母“T”,可在屏幕的中央以“时:分:秒”的形式显示系统当前时间;输入大写字母“Q”,可结束程序。
(二)、设计要求1.根据设计内容设计出硬件电路图并作详细的设计说明,并绘制出电路图。
2.画出程序流程框图,用汇编语言编写相应的控制程序。
3.进行系统的调试,完成加电仿真调试。
4.写出详细的设计报告。
三、总体方案设计1.主程序设计思想此动画程序要求结构化的显示系统时间和日期。
程序要求能多次执行以上两种操作并有退出选项。
则我们可以设计三个选项以供用户选择:D-DATE、T-TIME 和Q-QUIT退出程序。
三个选项分别可以用三个过程实现其功能。
用户在出现的提示信息中输入小写字母“D”,马上显示系统当前日期;输入小写字母“T”,马上显示系统当前时间;输入小写字母“ Q”,则退出程序。
微机原理课程设计-电子时钟
一、设计的目的要求学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
该系统的要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键时时钟从当前设定值(可在显示缓冲区中予置)开始走时。
二、系统的主要功能该系统是一个简单的利用8253定时器、8255可并行通信接口和中断控制器8259设计的电子时钟系统,在该系统中设有一个启动键,启动键未按下时,显示初始化界面“HELLO”;当按下启动键时,8253定时器开始计时(8253的初值为10000,接1MHz的脉冲,即当8253计满100时正好是1S),当计时计满100时,8259便产生一次中断,在LED显示器便显示系统预先设计好的初始值“02.59.55”便开始从秒位开始加1,当加到10S时,10s位加1,加到60S 时分位加1,同时秒位清零。
该系统主要接口部件有:可并行通信接口8255一片,计数器/定时器8253一片,中断控制器8259一片,七段LED数码管显示器6个以及译码电路等。
其中各个部件的初始化如下:1、可并行通信接口8255的控制字是方式选择控制字,A口工作在方式0(即基本输入输出方式)下,并且为输出状态,B口工作在方式0下,为输出口,C口为输出口,其初始化为:8255控制口地址为20bhA端口地址为208hB端口地址为209hC端口地址为20ahmov dx,20bhmov al,10000001bout dx,al2、做为计数器的计数器/定时器8253,在设置好计数初值(即定时常数)后,便开始减1计数,为0时,输出一个信号;控制字设置:BCD为设置为计数值为二进制格式,模式选择为模式2(即为分频器,当控制字写入后,输出段OUT变为高电平作为初始状态,当计数初值写入初值寄存器后,下一个时钟脉冲时,计数初值被写到计数执行部件,然后计数执行部件做减1计数,减到1时,输出端OUT变为低电平;完成一次计数过程后,输出端OUT又变为高电平,开始一个新的计数过程,由此可以周而复始的进行下去),读写指示位为先写低8位字节,在读写高8位字节,计数器选择计数器0。
微机原理课程设计(电子时钟)
电子时钟课程设计一:设计背景电子数字钟的应用十分广泛,通过计时精度很高的石英晶振(也可采用卫星传递的时钟标准信号),采用相应进制的计数器,转化为二进制数,经过译码和显示电路准确地将时间“时”“分”“秒”用数字的方式显示出来。
与传统的机械钟相比,它具有走时准确,显示直观,无机械传动,无需人的经常调整等优点。
它广泛用于电子表、车站、码头、广场等公共场所的大型远距离时间显示电子钟。
二:数字钟电路设计思路1.选用8253计数器2进行1s的定时,其输出OUT1与8259的IRQ0相连,当定时到1s时产生一个中断服务程序进行时、分、秒的计数,并送入相应的存储单元;8255的A口接七段数码管的位选信号,B口接数码管的段选信号。
时、分、秒的数值通过对8255的编程可送到七段数码管上显示。
2.此程序主要由四部分组成:第一部分为最主要的部分定义显示界面;第二部分为利用延时程序,并将调用的二进制表示的时间数转换成ASCII码,并将时间数存入内存区;第三部分将存在系统内存区的时间数用七段数码管显示出来;第四部分利用循环程序分别对秒个位、秒十位、分个位、分十位与相应的规定值进行比较,结合延时程序来实现电子钟数字的跳变,从而形成走时准确的电子钟。
该程序实现了准确显示秒和分,读数准确,走时精准。
此电子钟能准确的从0时0分0秒走时到23时59分59秒,然后能自动回复到0时0分0秒循环走时。
3.基本工作原理:系统设计的电子时钟主要由显示模块、时钟控制模块和时钟运算模块三大部分组成。
以8086微处理器作CPU,用8253做定时器产生时钟频率提供一个频率为10kHz的时钟信号,要求每隔10ms完成一次扫描键盘的工作。
在写入控制字与计数初值后,每到10ms定时器就启动工作,即当计数器减到1时,输出端OUT0输出一个CLK周期的低电平,向CPU申请中断,当达到100次时,则输出端OUT1输出1s,向CPU申请中断,由8255控制一个数码管显示,当计数到60s时,则输出端OUT2向CPU申请中断,由另一数码管显示1min,同理由数码管显示1h.CPU处理,使数码管的显示发生变化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学院:计算机科学技术专业:计算机科学与技术(工)班级:计08-1班姓名:秦振兴学号: 27 指导教师:孙海2011年 7月 1日微机原理与汇编语言课程设计任务书一、题目:电子表二、设计的目的1. 掌握利用PC机的的中断及中断服务程序的编写方法;2. 掌握定时器/计数器8253的工作原理及编程方法。
三、设计要求编写程序,利用主机内的8253-2的计数器0产生10m的方波输出,此输出送至IRQ0使8259A 每10ms产生1次中断,100次后秒加1,然后调整时、分、秒并在屏幕上显示。
程序从按下任意键开始显示数据区存放的时间值,运行中按下空格键即停止运行,并返回DOS。
要求每人独立完成课程设计。
四、设计内容采用PC系列微机现有的硬件和软件资源编写汇编语言程序,在显示器上显示XX(时):XX(分):XX(秒),每秒钟更新1次。
五、课程设计工作量一般每人的程序量应在100行有效程序行以上。
不得抄袭,否则给不及格成绩。
六、课程设计工作计划2011年6月27日1-2节指导教师讲课,学生准备文献资料;2011年6月28日~2011年7月01日每人完成自己程序并能独立演示;2011年7月01日下午验收,学生撰写课程设计报告。
指导教师签字:专业主任签章:微机原理与汇编语言课程设计指导教师评语与成绩目录第1章概述 (1)选题来源 (1)选题目的 (1)选题意义 (1)解决问题 (1)技术要求 (2)第2章总体方案设计 (3)硬件总体设计 (3)软件总体设计 (3)第3章详细设计 (4)硬件设计 (4)显示模块 (4)时钟运算模块 (4)对时模块 (5)设计电路图 (5)软件设计 (7)程序流程图 (7)第4章调试与运行结果说明 (9)试验结果 (9)分析 (10)课程设计总结 (11)谢启 (12)参考文献 (13)附录 (14)第1章概述选题来源该课程设计是根据老师提供的三个题目选题:音乐演奏,电子琴,电子表。
我选择的是电子表选题目的设计并实现一个可以显示时间和日期的电子时钟,可以用键盘控制。
选题意义课程设计是培养学生运用有关课程的基础理论和技能解决实际问题,进一步提高学生本专业必要的基本技能、方法和创新能力的重要环节之一。
通过课程设计使学生受到设计方法的初步训练,能用文字、图形和现代设计方法简要、系统、正确地表达设计成果。
解决问题电子表一般都有显示时间和日期的功能,用汇编语言设计程序时,由于是在电脑上操作,因而不便于切换时间和日期模式,这时就需要设计一种方式,可以通过键盘来切换这种模式,从而达到设计任务所要求的内容。
设计时间时,要设计时间的计数方式,并会循环运行,符合日常的标准。
而设计日期时,同样要注意日期的计数与循环方式。
设计好时间和日期程序后,要把日期和时间值转换成ASCII码字符。
这就需要设计转换程序。
技术要求《微机接口课程设计》主要是训练学生综合运用学过的微机原理的软件和硬件知识,独立完成一个实际的微机应用设计系统,并在实验室实现。
此次课设是对个人的程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,为学习后继的基础课和专业课打下坚实的基础。
课设所用的是汇编语言,它是一种机器语言,是计算机能提供的最快最有效的语言,也是能够利用计算机所有硬件性能并能直接控制硬件的语言。
实验不仅培养了实际动手能力,也进一步学习了汇编语言的结构和使用方法,提高了汇编语言的水平。
第2章总体方案设计硬件总体设计8259A的主要功能:(1)每片8259A可管理8级优先级中断源,通过开关,最多可管理64级优先权的中断源。
(2)对任何一个级别的中断源都可单独进行屏蔽,使该级中断请求暂时被挂起,直到取消屏蔽时为止。
(3)能向CPU提供可编程的标识码。
(4)具有多种中断优先权管理方式。
有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种。
这些管理方式均可通过程序动态地进行变化。
在本设计中用到了这四种功能,电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的。
8255A的主要功能:可编程外设接口芯片可由程序改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,其负责CPU和外设之间的数据传送。
8253的主要功能:可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,设定后与CPU并行工作,不占用CPU的时间。
通道2工作在3方式下,提供计算一秒的中断请求信号。
软件总体设计电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。
其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。
这样,才能循环记时。
第3章详细设计硬件设计3.1.1显示模块利用数码管的显示功能来设计。
数码管是由八个条形发光二极管组成的,这些发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。
通过在这八个发光二极管的阳极加+5 V或0 V的电压使不同的二极管发光,形成不同的字符和数字。
电子时钟用到的是0到9十个数字,他们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。
该模块主要是将时钟运算模块和对时模块运算出来并存放在内存单元里的十六进制表示的时位和分位数据转化为十进制,并通过四个数码管显示出来。
该模块实现的硬件是TND86/88的LED-KEYBOARD UNIT。
3.1.2时钟运算模块该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。
该模块可以细分为秒定时模块和运算模块。
秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现,可以选择TND86/88实验箱中的8253定时/计数器来提供,但又因为8253所能提供的信号的周期时毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。
中断信号是8253的通道2工作方式为方式3时,产生一个40ms的脉冲信号。
运算模块负责时、分、秒的计算,该模块主要通过8259的IRQ7号中断来实现,首先将秒定时模块提供的中断信号为8259的IRQ7中断请求信号。
但由于每40ms一次中断请求。
所以在中断服务程序必须利用已申请内存单元count来统计中断请求的次数,只有当count的值为25时,才能让秒单元内的数值加1。
另外,在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1 、秒清零;当分加到60时,时加1、分清零。
当时加到24啊,直接清零。
3.1.3对时模块该模块主要功能是修改时、分内存单元的数值。
在对时的时候,秒应停止不变,并且在对分进行调整的时,时单元内的数值不变。
由以上分析可见,对时、分的调整用两个优先级高于IRQ7的中断来完成。
因此,可以用8259的IRQ2中断来实现,两个中断源的中断请求信号只需直接接在两个按键即可起到对时作用。
3.1.4设计电路图电子时钟的完整电路图如下:软件设计3.2.1程序流程图第4章调试与运行结果说明试验结果程序初始运行界面图1 开始界面这时,开始根据提示输入当前时间,出现如下界面:图 2 输入时间后单击回车键之后图 3 运行后分析将编写好的源程序输入,编译后出现很多错误,经过反复修改直到程序运行通过。
将生成的可执行程序装入TND86/88的内存里,在监控状态下运行程序,可是数码管显示的数字并不与理论计算值相符合,并且显示的数字不停地闪动,经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时,存储转化的结果的地址空间的顺序弄混了。
数字闪动的原因应该出在显示子程序里,经过分析问题出在显示子程序里缺少延时程序。
编写延时子程序,并在显示子程序调用它;编译源程序,装入生成的可执行文件,并运行。
数码管显示的数字与理论值相符合,并能正常计时,但当按动KK1+键时,却不能启动对时功能,按动KK2+时,也不能调时、调分。
问题很可能出在两键控制的中断源上,检查源程序也找不出错误,当把IRQ5换成IRQ2后,在进行调试,结果成功。
课程设计总结1. 实验过程中碰到了很多的难题和障碍,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!2. 通过这次课程设计,使我对汇编语言有了较清楚的认识,以前在看语言时,有好多地方不明白为什么这么写,这样写有什么优点。
对于某些语言句子还不清楚是什么意思。
经过这次课程设计,通过查阅资料和向同学请教,明白许多不清楚的地方,能够用汇编语言编写简单的程序,内心感到高兴。
3.有了这次课程设计的体验,使我明白了书本上的知识是死的,必须会用,用到实践中,它才算有用。
平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识的作用发挥出来。
这次设计对我将来的毕业设计有很大启示和帮助。
4.在设计过程中,遇到很多问题,通过和同学的共同研究,解决这些问题。
遇到问题时候一起探讨,使我在这次设计中获得的启示。
谢启通过本次课程设计是深深的体会到了自学能力的重要性和独立决绝问题的能力以及凝聚力的重要。
在本次课程设计当中我们遇到了很多困难,与此同时也得到了孙老师的鼓励也帮助,这让我们对自己更有信心,虽然最后我们的程序不是很完善,但是我们尽了自己最大的努力。
同时在我们遇到困难时也得到了同学的帮助,虽然她们很忙,但是仍然耐心的帮助我们解决困难,在此我们要深深的感谢她们在为期一周的微机原理课程设计中,使我们接触到了以前书本上所涉及不到的领域,让我们感到新奇!在我们完成的功能模块的背后都交织着一份辛苦与喜悦,而这份辛苦与喜悦却离不开大家的帮助和支持,当然我们最要感谢的人还有我们的孙老师,因为无论在我们什么时候遇到困难的时候,只要向老师求助,他都会在第一时间为我们解答。
虽然我们做的不是很好,但是我们组的每一位成员都在课程设计中学到了知识,希望老师还会给予我们帮助与鼓励。
通过这半年的学习,自己对这门学科有了进一步的了解。
因此,我要向老师表达我衷心的谢意。
因为她们是那么的兢兢业业、认真负责。
不管我们的问题有多幼稚,老师都能耐心的回答,认真辅导我们。
在此,我再一次地感谢大家在课程设计期间的帮助和支持参考文献[1] 李芷.微机原理与接口技术[M].2002.[2] 王爱英.计算机组成与结构[M].北京:清华大学出版社.1995.[3] 沈美明,温冬蝉.IBM-PC汇编语言程序设计[M].清华大学出版社.2003.[4] 董方武.微机接口技术[M].中国水利水电出版社.2001.[5] 宋锦河.汇编语言程序设计[M].中国水利水电出版社.2001.[6] 唐延铃,工小刚.汇编语言程序设计[M].电子科技大学.1998[7] 王元珍,韩宗芬IBM-PC汇编语言程序设计[M].华中理工大学出版社.1996.[8] 戴梅萼,史嘉权.微型计算机技术与运用[M].清华大学出版社2003.附录程序清单:DATA SEGMENTBUF1 DB 'THE TIME IS NOW:$'BUF4 DB 'LILI$'BUF2 DB 10DB 10 DUP()COUNT DB 18DATA ENDSSTACK SEGMENT STACKDB 100 DUP()STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKCURSOR MACRO ROW,CLMMOV AH,02HMOV BH,0MOV DH,ROWMOV DL,CLMINT 10HENDMWIN MACRO ROWL,CLML,ROWR,CLMR,COLORMOV AH,06HMOV AL,0MOV CH,ROWLMOV CL,CLMLMOV DH,ROWRMOV DL,CLMRMOV BH,COLORINT 10HENDMASCBCD MACRO REGINC BXINC BXMOV REG,[BX]MOV CL,4SHL REG,CLINC BXMOV AL,[BX]AND AL,0FHOR REG,ALENDMBCDASC MACRO REGINC BXINC BXMOV AL,REGMOV CL,4SHR AL,CLOR AL,30HMOV [BX],ALINC BXMOV AL,REGAND AL,0FHOR AL,30HMOV [BX],ALENDMINCBCD MACRO REG,COUNTMOV AL,REGINC ALDAAMOV REG,ALCMP AL,COUNTJNZ DISPYMOV REG,0ENDMSTRDSPY MACRO ADRSLEA DX,ADRSMOV AH,9INT 21HENDMCLOCK PROC FARSTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXWIN 0,0,24,79,7WIN 6,9,18,70,01000001BSTRDSPY BUF3CURSOR 7,9STRDSPY BUF4CURSOR 14,32STRDSPY BUF1CURSOR 15,36LEA DX,BUF2MOV AH,0AHINT 21HLEA BX,BUF2ASCBCD CHASCBCD DHASCBCD DL TIMER:CALL DELY MOV AL,18MOV COUNT,ALINCBCD DL,60HINCBCD DH,60HINCBCD CH,24H DISPY:LEA BX,BUF2 BCDASC CHBCDASC DHBCDASC DLINC BXMOV AL,'$'MOV [BX],ALPUSH DXCURSOR 15,36STRDSPY BUF2POP DXMOV AH,01HINT 16HCMP AL,1BHJZ XXOR AL,ALJMP TIMERX: MOV AH,4CH INT 21HRETDELY PROC FAR PUSH DXPUSH AXMOV AL,00010011B OUT 20H,ALMOV AL,01000000BOUT 21H,ALMOV AL,00000001BOUT 21H,AL;8259初始化MOV AL,00110110BOUT 43H,ALMOV AL,0OUT 40H,ALOUT 40H,AL;8254初始化;设置中断向量MOV AX,SEG INPPPUSH DSMOV DS,AXMOV DX,OFFSET INPP MOV AL,40HMOV AH,25HINT 21HPOP DSIN AL,21H;读IMRAND AL,0FEHOUT 21H,ALWAITT: STICMP COUNT,0JNZ WAITTPOP AXPOP DXRETDELY ENDPINPP PROCPUSH AXSTIDEC COUNTJNZ NEXTIN AL,21HOR AL,01HOUT 21H,AL NEXT:CLIMOV AL,20HOUT 20H,ALPOP AXIRETINPP ENDPCLOCK ENDP CODE ENDSEND START。