




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 名 称 微机原理及应用 目 录一、设计任务 3二、总体方案 3三、原理框图 3-4四、系统模块详细设计与调试 5五、设计总结 6六、参考文献 6七、附件材料 7-12 电子钟设计一、设计任务利用8253可编程定时/计数器、8259中断控制器、8255可编程并行接口芯片和七段数码管设计一个电子钟的电路,并编制一程序使得该电子钟能正常运行。电子钟除了能够完成正常的计时、显示功能外,还必须具备正常时、分、秒的数值显示功能、时间设定功能等。设计绘制相应的硬件电路原理图并完成接线。编制相应控制程序实现电子钟的计时、显示等功能。控制程序设计规范,应有适当的注释,表达清楚。钟的时分秒显示分别采用两个8段LED数码管实现,显示方法可根据实际情况采用动态或静态显示。二、总体方案利用8253做定时器,用定时器输出的脉冲控制8259产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循环中,采用计算机内部自带的8255芯片,利用LED显示时间。在主程序中要分别对8253、8259、8255进行初始化编程,8253的计数器1可在方式3下工作。在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。时、分、秒分别对应6个存储单元,分别存放时、分、秒的个位和十位。当中断次数满10次时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到了6,如到了则十位清零,分的个位加1,同理对分、时作相应处理。七段数码管显示作为子程序,将时、分、秒对应存储单元的内容分别取出并转换成相应的代码,利用缓冲区和延时子程序进行显示。三、原理框图 上图为主程序流程图; 下图为中断服务程序流程图; 四、系统模块详细设计与调试1在主程序中要分别对8253、8259、8255进行初始化编程。具体如下:8253的方式控制字:MOV AX,0 MOV DS,AX MOV AL,76H MOV DX,CONTROL OUT DX,AL 利用8253计数器1分频: MOV AX,62500 MOV DX,COUNT1 OUT DX,AL MOV AL,AH OUT DX,AL 8259初始化命令字和操作命令字: MOV DX,CS8259A MOV AL,ICW1 OUT DX,AL MOV DX,CS8259B MOV AL,ICW2 OUT DX,AL MOV AL,ICW4 OUT DX,AL MOV AL,OCW1 OUT DX,AL 利用计算机内部8255:MOV AL,MD8255 MOV DX,CTL8255 OUT DX,AL2 6位8段码LED显示采用动态方式显示,8位段码和6位位码是由实验箱内部的两片74LS374输出。8位段码和6位位码的输出地址有KEY/LED CS片选信号决定。显示程序中,首先将时、分、秒对应存储单元的内容分别取出并转换成相应的代码,再利用缓冲区和延时子程序进行显示。3用定时器8253输出的脉冲控制8259产生中断,在中断服务程序中对中断次数进行统计,当满10次时就进行一次时、分、秒的处理。中断服务程序详见程序中IENTER模块:IENTER PROC NEAR PUSH AX PUSH DX INC SECOND ;秒加1 MOV AL,SECOND CMP AL,60 ;秒数与60比较 JNE EXIT MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE EXIT MOV MINUTE,0 ;分清零 INC HOUR ;时加1 MOV AL,HOUR CMP AL,24 ;时数与24比较 JNE EXIT MOV HOUR,0 ;时清零4利用伟福6000系统输入完整程序后进行编译,编译正确后在实验箱上进行线路连接,具体连接方法如下:8253用计数器1,片选信号接CS4,地址为0C000H,8253时钟源CLK1接分频电路的F/64输出,分频器的PIN接4MHZ时钟,8253的GATE1接VCC,8259中断INT0接8253的OUT1,片选接CS5,地址为0DOOOH,显示电路的KEY/LED CS接CS0,地址为8000H。连接正确后打开实验箱的电源,将程序下载到实验箱,启动全速执行,便可在实验箱上了数码管上看到正确的时、分、秒的显示了。五、设计总结六、参考文献 微机原理实验与课程设计指导书,陆红伟编,中国电力出版社,2006年8086微型计算机组成、原理及接口,顾滨,机械工业出版社,2001微型计算机原理及应用,吕淑萍等,哈尔滨工程大学出版社,2004年微型计算机技术及应用,戴梅萼,清华大学出版社,2005七、附件材料完整程序如下:CONTROL EQU 0C003H ;8253控制口COUNT0 EQU 0C000HCOUNT1 EQU 0C001HCOUNT2 EQU 0C002HMD8255 EQU 82H ;8255控制字PA8255 EQU 8000H CTL8255 EQU 8003H OUTBIT EQU 08002H ;位控制口OUTSEG EQU 08004H ;段控制口ICW1 EQU 00010011B ;单片8259,上升沿中断,要写ICW4ICW2 EQU 00100000B ;中断号为20HICW4 EQU 00000001B ;工作在8086/88方式OCW1 EQU 11111110B ;只响应INT0中断CS8259A EQU 0D000H ;8259地址CS8259B EQU 0D001HDATA SEGMENTCNT DB 0LEDBUF DB 6 DUP(?) ;显示缓冲NUM DB 1 DUP(?) ;显示的数据DELAYT DB 1 DUP(?)HOUR DB 0MINUTE DB 0SECOND DB 0LEDMAP: ;八段管显示码 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATADELAY PROC NEAR ;延时子程序 PUSH AX PUSH CX MOV AL,0 MOV CX,AX LOOP $ POP CX POP AX RETDELAY ENDPDISPLAYLED PROC NEAR MOV BX,OFFSET LEDBUF MOV CL,6 ;共6个八段管 MOV AH,00100000B ;从左边开始显示DLOOP: MOV DX,OUTBIT MOV AL,0 OUT DX,AL ;关所有八段管 MOV AL,BX MOV DX,OUTSEG OUT DX,AL MOV DX,OUTBIT MOV AL,AH OUT DX,AL ;显示一位八段管 PUSH AX MOV AH,1 CALL DELAY POP AX SHR AH,1 INC BX DEC CL JNZ DLOOP MOV DX,OUTBIT MOV AL,0 OUT DX,AL ;关所有八段管 RETDISPLAYLED ENDPIENTER PROC NEAR PUSH AX PUSH DX INC SECOND ;秒加1 MOV AL,SECOND CMP AL,60 ;秒数与60比较 JNE EXIT MOV SECOND,0 ;秒清零 INC MINUTE ;分加1 MOV AL,MINUTE CMP AL,60 ;分数与60比较 JNE EXIT MOV MINUTE,0 ;分清零 INC HOUR ;时加1 MOV AL,HOUR CMP AL,24 ;时数与24比较 JNE EXIT MOV HOUR,0 ;时清零EXIT: MOV DX,CS8259A MOV AL,20H OUT DX,AL ;结束本次中断 POP DX POP AX IRETIENTER ENDPIINIT PROC ;初始化8259的命令字和操作命令字 MOV DX,CS8259A MOV AL,ICW1 OUT DX,AL MOV DX,CS8259B MOV AL,ICW2 OUT DX,AL MOV AL,ICW4 OUT DX,AL MOV AL,OCW1 OUT DX,AL RETIINIT ENDPSTART: MOV AX,DATA MOV DS,AX MOV HOUR,0 ;时、分、秒清零 MOV MINUTE,0 MOV SECOND,0 CLI ;清除中断标志位 MOV AX,0 MOV DS,AX MOV AL,76H ;8253控制字 MOV DX,CONTROL OUT DX,AL MOV AX,62500 ;利用8253计数器1分频 MOV DX,COUNT1 OUT DX,AL MOV AL,AH OUT DX,AL MOV AL,MD8255 MOV DX,CTL8255 OUT DX,AL MOV BX,4*ICW2 ;中断号 MOV AX,CODE SHL AX,4 ;*16 ADD AX,OFFSET IENTER ;中断入口地址(段地址为0) MOV BX,AX MOV AX,0 INC BX INC BX MOV BX,AX ;代码段地址为0 CALL IINIT MOV AX,DATA MOV DS,AX MOV CNT,0 ;计数值初始为0 MOV AL,CNT MOV DX,PA8255 OUT DX,AL STI ;开中断LP: MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;时的十位转换成显示码 MOV LEDBUF,AL ;显示码存入显示缓冲区 MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;时的个位转换成显示码 OR AL,80H MOV LEDBUF+1,AL ;显示码存入后一位显示缓冲区 MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;分的十位转换成显示码 MOV LEDBUF+2,AL MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 OR AL,80H MOV LEDBUF+3,AL MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL MOV CH,AH MOV AH,0 MOV BX,OFFSET LEDMAP ADD BX,AX MOV AL,BX ;秒的十位转换成显示码 MOV LEDBUF+4,AL MOV BX,OFFSET LEDMAP MOV AL,CH MOV AH,0 ADD BX,AX MOV AL,BX ;分的个位转换成显示码 OR AL,80H MOV LEDBUF+5,AL CALL DISPLAYLED JMP LPCODE ENDS END START实验中所使用的元器件的引脚图如下:实验电路接线图如下:另一个代码硬件连线:8254硬件连线: 片选CS300H A0A2 A1A3 T0:GATE0+5V CLK047KHZ OUT0IR0 T1:GATE1PC0 CLK1OUT2 OUT1蜂鸣器 8255硬件连线:CS_1CS1CS_2CS2CS_3CS3CS_4CS4PC0GATE18259硬件连线: CS23A0H INT2INTR SP/2+5V INT_AINTA IRQ08254的OUT074系列模块硬件连线: Q_0Q0 Q_1Q1 Q_2Q2 Q_3Q3 P_0P0 P_1P1 P_2P2 CS1340H CS2360H 程序代码段:.486pdata segment at 0 use16 ORG 1000h HOUR db ? MINUTE db ? SECOND db ? STOP db ? COUNT DB 0 HHOUR DB ? MMINUTE DB ? SSECOND DB ?data endscode segment use16 assume cs:code,ds:data org 1500hBEG: jmp startTAB1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh,8ch,0c1h,91h,7fh,0ffhTAB2 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhKEYCOD db 0eeh,0deh,0beh,0edh,0ddh,0bdh,0ebh,0dbh,0bbh,0e7h,0d7h,0b7hKEYVAL db 0,1,2,3,4,5,6,7,8,9,0ah,0bhstart: mov eax,60000000h mov cr0,eax mov ax,code mov ds,ax CLI MOV BYTE PTR HOUR ,23 MOV BYTE PTR MINUTE,59 MOV BYTE PTR SECOND,50 MOV BYTE PTR STOP,0;8255初始化 MOV EAX,0A0A0A0AH MOV DX,208H OUT DX,EAX ;8254初始化 MOV DX,30CH MOV AL,34H ;计数器0,16位,方式2,2进制 OUT DX,AL MOV DX,300H MOV AX,1175 ;计数器0初值为25ms*47KHZ OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,30CH MOV AL,54H ;计数器1,8位,方式2,2进制 OUT DX,AL MOV DX,304H MOV AX,40 ;计数器1初值为40,25ms*40=1s OUT DX,AL ;8259初始化 偶地址:3A0H 奇地址:3A8H MOV DX,3A0H ;写ICW1,写入偶地址 MOV AL,13H OUT DX,AL MOV DX,3A8H ;写ICW2,写入奇地址 MOV AL,08H ;IR0的中断类型号为08H OUT DX,AL MOV DX,3A8H ;写ICW4,写入奇地址 MOV AL,05H ;主片,8259工作在80X86中 OUT DX,AL ;设置8259中断向量 MOV AX,OFFSET INTER MOV BX,20H ;08H*4 MOV BX,AX MOV AX,SEG INTER MOV BX+2,AX ;开放IRQ0 MOV DX,3A8H MOV AL,11111110B ;开放IRQ0 OUT DX,AL ;判断G键或S键是否按下G: STI NOP CALL INPUT CALL DELAY CMP AL,0D7H ;判断G键是否按下,若按下同时设置闹铃时间 JNZ S NOT STOP CALL INPUT CALL DELAY CALL ALARM ;设定闹铃子程序 JMP GS: CMP AL,0B7H JNZ G MOV STOP,0FFH ;设置时间 ;设置小时 MOV CX,2 JMP H1 H2: CMP AL,SI JZ H3 INC SI INC DI LOOP H2 POP CX JMP H1 H3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ H4;CX=2设置十位,否则设置个位 CMP AL,2 JA H1 PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H ;送数码管时的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV HOUR,AL CALL DELAY JMP H6H1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP H2 H4: CALL DELAY PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,2 JNZ H5 CMP AL,4 JA H1H5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OUT DX,AL ADD HOUR,AH CALL DELAY H6: LOOP H1 ;设置分钟 MOV CX,2 JMP M1 M2: CMP AL,SI JZ M3 INC SI INC DI LOOP M2 POP CX JMP M1 M3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ M4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA M1 PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV MINUTE,AL CALL DELAY JMP M6M1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP M2 M4: CALL DELAY PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ M5 CMP AL,9 JA M1M5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL ADD MINUTE,AH CALL DELAY M6: LOOP M1 ;设置秒钟 MOV CX,2 JMP S1 S2: CMP AL,SI JZ S3 INC SI INC DI LOOP S2 POP CX JMP S1 S3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ S4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA S1 PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,202H ;送数码管秒的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV SECOND,AL CALL DELAY JMP S6S1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP S2S4: CALL DELAY PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ S5 CMP AL,9 JA S1S5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,206H ;送数码管秒的个位 OUT DX,AL ADD SECOND,AH CALL DELAYS6: LOOP S1 MOV DX,208H MOV EAX,0A0A0A0AH OUT DX,EAX MOV STOP,0 JMP G ;行扫描法读取键入值INPUT PROC PUSH BX PUSH DX WT: MOV AL,00H MOV DX,360H OUT DX,AL NOP NOP MOV DX,360H IN AL,DX AND AL,0FH CMP AL,0FH JZ WT ;al全为0,说明无键按下 NOP NOP MOV DX,360H ;再次确认是否有键按下 IN AL,DX AND AL,0FH CMP AL,0FH JZ WT MOV CX,3 MOV BL,0FEHNEXT: MOV AL,BL MOV DX,360H OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP AL,0FH JNZ KEY ROL BL,1 LOOP NEXT JMP WTKEY: SHL BL,4 OR AL,BL CALL RELEASE POP DX POP BX RETINPUT ENDP;设定闹钟ALARM PROC PUSH CX PUSH AX PUSH DX MOV CX,2 JMP HH1HH2: CMP AL,SI JZ HH3 INC SI INC DI LOOP HH2 POP CX JMP HH1 HH3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ HH4;CX=2设置十位,否则设置个位 CMP AL,2 JA HH1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H;送数码管时的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV HHOUR,AL CALL DELAY JMP HH6HH1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP HH2 HH4: CALL DELAY CMP DL,2 JNZ HH5 CMP AL,4 JA HH1HH5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OUT DX,AL CALL DELAY ADD HHOUR,AH ;将闹铃值保存在内存中 CALL DELAY HH6: LOOP HH1 ;设置分钟 MOV CX,2 JMP MM1 MM2: CMP AL,SI JZ MM3 INC SI INC DI LOOP MM2 POP CX JMP MM1 MM3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ MM4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA MM1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV MMINUTE,AL CALL DELAY JMP MM6MM1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP MM2 MM4: CALL DELAY CMP DL,5 JNZ MM5 CMP AL,9 JA MM1MM5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL CALL DELAY ADD MMINUTE,AH ;将闹铃值保存在内存中 CALL DELAY MM6: LOOP MM1 ;设置秒钟 MOV CX,2 JMP SS1 SS2: CMP AL,SI JZ SS3 INC SI INC DI LOOP SS2 POP CX JMP SS1 SS3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ SS4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA SS1 MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心协运动会策划书
- 2025年大学物理力学力学实验报告写作培训试卷
- 大数据驱动的市场营销策略研究
- 2025工会知识竞赛题库及参考答案
- 支座垫石专项施工方案
- 2025年美容化妆人员考前冲刺练习题含答案详解(培优B卷)
- 2025自考专业(会计)考试彩蛋押题及答案详解一套
- 2024-2025学年度自考专业(护理)能力检测试卷及参考答案详解【达标题】
- 2025年海南省环境科学研究院招聘事业编制专业技术人员(一)模拟试卷含答案详解(轻巧夺冠)
- 2025年美容化妆人员自我提分评估(必刷)附答案详解
- 浙教版2025-2026学年八年级上科学第1章 对环境的察觉 单元测试卷
- 纤维素基包装生物力学性能-洞察及研究
- 2025年海南省财金集团有限公司招聘笔试模拟试题及答案解析
- 2025年炭石墨负极材料项目合作计划书
- 工程施工队课件
- 2025-2026学年人教版(2024)初中生物八年级上册(全册)教学设计(附目录)
- 桥梁施工技术创新路径与工程应用研究综述
- Unit 2 Home Sweet Home Section A Grammar Focus 3a-3c课件 人教版(2024)八年级上册
- 肺结核患者护理课件
- 法律援助法普法活动方案
- 食管恶性肿瘤护理查房
评论
0/150
提交评论