硬件实验报告

上传人:jin****ng 文档编号:143812323 上传时间:2022-08-26 格式:DOC 页数:31 大小:308KB
收藏 版权申诉 举报 下载
硬件实验报告_第1页
第1页 / 共31页
硬件实验报告_第2页
第2页 / 共31页
硬件实验报告_第3页
第3页 / 共31页
资源描述:

《硬件实验报告》由会员分享,可在线阅读,更多相关《硬件实验报告(31页珍藏版)》请在装配图网上搜索。

1、华蛀电力*孑综合实验报告( 2013- 2014 年度第 二 学期 )名 称: 硬件设计与实践 题 目: 智能风扇程序设计 院 系:班 级:学 号:学生姓名:指导教师:设计周数:2成 绩:日期:2014 年 7 月 11 日硬件设计与实践任务书一、目的与要求1掌握8255/8253工作方式,掌握8255/8253集成电路芯片的接口电路硬件设计与连接方法。2. 掌握A/D和D/A转换的基本原理。3巩固和加深对微机原理基本知识的理解,学会查找资料、设计方案、以及单元电路 等,进一步提高学生综合运用学过的相关软件、硬件知识,分析解决实际问题的能力。4. 要求:(1) 用4 个按键来实现对“风速”、“

2、风种”、“定时”、“停止”的不同选择。(2) 用三个发光二极管来表示风速的弱、中、强三种状态;用三个发光二极管来表示风种的正常、自然、睡眠三种状态;用二个发光二极管来表示定时30 分或 30分。(3) 在停止状态时,只有按风速键才有效,按其余三键无效。(4) 用8 段数码管显示定时时间。二、主要内容设计一个电风扇,具有以下功能1. 电风扇处于停转状态时,所有指示灯不亮,此时只有按 “风速”键电扇才会响应,其初始工作状态为“风速”弱,“风种”正常,“定时”连续状态,且相应指示灯2.状态。3.电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种 弱、中、强对应电扇转速由慢到快。

3、按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。 “风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转 5 秒,间 断5 秒;在:“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转10 秒,间断 10 秒。4. 按动定时键可循环选择连续、30 分钟、60 分钟、90 分钟四种定时方式中的某一 种。其两指示灯全灭表示连续状态;全亮表示 90 分钟定时。5. 在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。三、进度计划序号设计内容完成时间备注1任务需求分析第一周周一至周一2软件及硬件设计第一周周三到周五3调试运行第一周周一至周三4验

4、收,并撰写综合实验报告第二周周四至周五四、设计成果要求1 完成实验的主要内容,设计方案优化。2 完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注 重对实验思路的归纳和对问题解决过程的总结。3 实验报告中应包括硬件连线图,程序设计流程图,实验数据,软件程序,运行结果 和结论等。五、考核方式1 平时成绩验收答辩实验报告;2 五级分制:优、良、中、合格、不合格。学生姓名: 指导教师: 2014 年6月 30日一、综合实验的目的与要求1掌握8255/8253工作方式,掌握8255/8253集成电路芯片的接口电路硬件设计与连接 方法。2. 掌握A/D和D/A转换的基本原理。 3巩

5、固和加深对微机原理基本知识的理解,学会查找资料、设计方案、以及单元电路 等,进一步提高学生综合运用学过的相关软件、硬件知识,分析解决实际问题的能力。4.要求:(1)用 4个按键来实现对“风速”、“风种”、“定时”、“停止”的不同选择。(2)用三个发光二极管来表示风速的弱、中、强三种状态;用三个发光二极管来表示 风种的正常、自然、睡眠三种状态;用二个发光二极管来表示定时30 分或 30 分。(3)在停止状态时,只有按风速键才有效,按其余三键无效。(4)用 8段数码管显示定时时间。二、综合实验正文2.1设计内容设计一个电风扇,具有以下功能1. 电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速

6、”键电扇才会响应,其 初始工作状态为 “风速”弱,“风种”正常, “定时”连续状态,且相应指示灯 亮。2. 电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状 态。弱、中、强对应电扇转速由慢到快。3. 按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。 “风种”在正常 位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5秒,间断5 秒;在:“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转 10 秒,间断 10 秒。4. 按动定时键可循环选择连续、30 分钟、60 分钟、90 分钟四种定时方式中的某一 种。其两指示灯全灭表示连续状态

7、;全亮表示 90 分钟定时。5. 在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。30分 60分2.2 设计原理2.2.1 键盘扫描定的延时,防止键盘1F斗动74HC2457HC374(0X001H) 1T0X002H)本实验仪提供了一个6X4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后 从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的 作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断 有键按下后,要有2.2.2 点阵 LED 显示16x16点阵需要32个驱动,分别为16个列驱动及16个行驱

8、动。每个行和每个列可以 选中一个发光二极管,共有256个发光二极管,采用动态驱动方式。每次显示一行, 10ms 后再显示下一行。2.3 设计方案(1) 用可编程并行接口芯片8255A的PA 口控制8个状态指示灯(即8个发光二极管), 分别表示弱、中、强、正常、自然、睡眠、30 分钟、60 分钟。(2) 用实验箱上的直流电动机作为电风扇,其转速可有D/A转换芯片0832来产生不同 的电压来控制电风扇。8位D/A转换器的输入数据与输出电压的关系为U(-5V5V)=2Uref/256*N-5V(Uref 为+5V)(3)风种及定时的时间控制可由自定义变量计数器来实现。每次触发中断计数器加一或做相应改

9、变。实验箱的时钟为1MHZ,为了降低频率,将频率输出接8253计数器0的elk.将outO接计数器1的elk,outl作为中断触发源接到8259的INTO上。2.4设计步骤2.4.1 流程图中断服务程序流程图:1r保护现场1F风种计数值加一1开始定时计数值加一返回子程序说明(1)QIANGRUO子程序用于根据当前设置将刷新后的风速、风种以及定时显示在LED屏 上,这样便于了解风扇当前的运行状态;(2)TESTKEY及GETKEY子程序分别用于判断是否有键按下及具体哪个键被按下,相应 被按下的键码存到AL寄存器中,以便在GETMODE子程序中用于比较判断具体哪个键被按下 是应执行哪个相应的子程序

10、;(3)SETFENGSU子程序是根据NUM1的值来对风速进行设置:0-弱风、1-中风、2-强风, 同时在LED屏上显示当前风速,并通过8255PA 口输出来控制相应指示灯的亮灭.(4)SETFENGZHOGN 子程序则是根据 NUM2 的值来对风种进行判断: 0-连续、 1-自然、2-睡眠,分别调用相关子程序,ZIRAN和SHUIMIAN,当NUM2为不同值时在LED屏上显示不 同风种名字同时控制对应的LED灯。(5)ZIRAN子程序为在SETFENGZHONG子程序中NUM2为1是调用的程序,使用SECONDNUM1 的值来控制风种的定时,将其与5来比较分别设置不同的风速值从而实现风扇转5

11、s停5s 的状态。(6)SHUIMIAN 子程序为在 SETFENGZHONG 子程序中 NUM2 为 2 是调用的程序,使用 SECONDNUM2的值来控制风种的定时,将其与10来比较分别设置不同的风速值从而实现风扇 转10s停10s且风速为弱的状态。(7)SETDINGSHI子程序则是根据NUM3的值来对定时进行判断:0-连续、1-30分钟定 时、2-60分钟定时、3-90分钟定时,当NUM2为不同值时在LED屏上显示不同风种名字同时 控制对应的LED灯,如当NUM3为1时为定时30分钟,同时在LED灯上相应显示并且用数码 管显示计时。(8)STARTFENGSHAN子程序为根据START

12、NUM的值来判断执行风扇开启还是关闭,主要 在定时子程序及睡眠和自然子程序中调用。(9)GETMODE子程序是在调用了 TESTKEY和GETKEY子程序后根据键码的值来跳转到相 应的编号执行相应子程序,如当键1按下时,为风速键,此时NUM1加1并转到SETFENGSU 子程序中执行改变。(10)INIT为8259初始化程序,IENTER为中断服务程序,利用8253定时功能实现1s 钟产生一次中断,同时实现相应变量SEC0NDNUM1、SEC0NDNUM2、SECONDNUM5以此来实现对 自然风、睡眠风以及定时时间的控制和改变,并且在定时是调用定时子程序且在数码管上显 示定时时间。2.4.3

13、 工作流程测试用四个键分别控制风速、风种、定时、停止 采用实验箱上的键盘上的一列的4 个按键(0,1,4,7)分别表示停止、风速、风种、 定时。编写的程序中每次中断都检测键盘输入,调用GETMODE子程序根据不同按键执行不同 操作。如果检测到风速键按下,就转到风速状态(即弱、中、强三种状态)设置子程序,以 便能够通过风速键控制这三种状态(用 LED 矩阵显示)。如果没有检测到按下,则继续进行 下面的风种键的检测,以此类推。这样就可以实现四个键分别控制风速、风种、定时、停止。风速、风种、定时状态设置因为要实现风速、风种、定时3 个按键对风速(弱、中、强)、风种(正常、自然、 睡眠)、定时(30m

14、in、60min、90min、连续)共8个状态的控制,就需要对这8个状态进行 设置,其风速状态设置方法如下:因为风速的 3 状态要保存,所以要在数据段声请一个地址 来存放。这里用风速键按下的次数来实现三种状态的变换,初始状态为按第一下表示弱状态, 再按一次表示中状态,再按一次表示强状态,再按一次表示又返回到弱状态,这样依次循环 下去。当检测到风速键按下时,使用GETMODE子程序判断后转到风速风速状态设置子程序并根 据判断当前NUM1的值来设置风速大小通过0832输出并在LED上显示,同时每次调用GETMODE 子程序是NUM值都会发生改变,一次来实现循环改变状态。时间的控制风种及定时的时间控

15、制可由可编程计数器/定时器 8253 来实现。因为实验箱上的时 钟为1MHZ,可以使用两个计数器级联将定时时间设为Is。用由8253的0计数器和1计数器, 使0计数器为工作方式3,把1MHZ的时钟变为1KHZ,通过OUTO输出到CLK1,使1计数器 为工作方式3,改变计数器1的系数,在这种方式下,当CPU输入控制字后,输出将为方波, 在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,方式3时8253 不可用重新设置计数值就能连续工作,保证了定时的精确。这样就可以将定时时间设为1s。 由于要定时 30min、 60min、 90min、 5s、 10s ,所以需要多次调用延时子

16、程序,所以可以写 成一个DELAY程序,每次调用的时候配合CALL和RET就能往返于子程序和主程序之间从而 可以很方便的实现定多个时间了。中断中断要用8259,可将8253定时器的输出信号与8259中断控制器的中断请求信号相 连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序 中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。三、综合实验总结或结论通过本次课程设计,我理解了键盘的扫描和八段数码管的显示原理,学会了自主设计键 盘按键对用的功能以及八段数码管的显示,学会了 LED屏的显示会自己设计出字样并显示出 来。在智能风扇总体设计时遇到了很多问题,例如代

17、表风速的电机的旋转速度变化怎么实 现,数码管的显示,自然风和睡眠风停几秒转几秒的实现方法。后来经过组内成员的讨论和 组间借鉴以及老师的指导,逐步修改并完善了程序,功能越来越完备。在定时部分,开始数 码管只是在不停地闪并不技术加一经过修改后在第3 0秒能够停止(为方便测试将3 0分钟 修改为3 0秒),但是定时结束后再继续按任何键都没有任何反应且不能跳转到定时6 0秒 或者9 0秒分支程序处。后来我们想到要利用标志位来控制中断的执行与否,当定时结束时 赋值为1,中断程序中首先判断标志位是否为1,如果为1则中断直接结束否则计数加一。 我们认为理论上逻辑和程序是无误的,但实际测试结果还是有点问题,这

18、让我们感到非常遗 憾,但这次课设仍让我学到了很多,同时也锻炼了我的逻辑的缜密性,提高了分析问题的能 力。最后感谢老师的耐心和有力的指导。四、参考文献附录:ROWLOW EQU 0D002HROWHIGH EQU0D003HCOLLOW EQU0D000HCOLHIGH EQU0D001HMODE EQU 082HPORTA EQU 0E000HPORTB EQU 0E001HPORTC EQU 0E002HCADDR EQU 0E003HCS0832 EQU 0B000HCONTROL EQU 08003H ;8253 地址 08000hCOUNT0 EQU 08000HCOUNT1 EQU

19、08001HCOUNT2 EQU 08002HOUTBIT EQU 0A002HOUTSEG EQU 0A004HIN_KEY EQU 0A001Hicw1equ00010011bicw2equ00100000bicw4equ01hocw1equ11111110bcs8259aequ09000hcs8259bequ09001hdata segmentBITMASK DW 1CHARINDEX DW 1DELAYCNT DW 1COLCNT DW 1FONT: ;弱DB 04H,04H,0AH,0AH,22H,22H,12H,12HDB 2AH,2AH,02H,02H,02H,02H,3EH,3

20、EHDB 20H,20H,20H,20H,3EH,3EH,02H,02HDB 02H,02H,3EH,3EH,00H,00H,00H,00H FONT1:;中DB 00H,01H,00H,01H,00H,01H,00H,01HDB 00H,01H,00H,01H,0F8H,3FH,08H,21HDB 08H,21H,08H,21H,0F8H,3FH,00H,01HDB 00H,01H,00H,01H,00H,00H,00H,00HFONT2:;强DB 02H,04H,7EH,0AH,12H,02H,10H,02HDB 10H,02H,10H,02H,0FEH,02H,92H,3EHDB 0FE

21、H,20H,10H,20H,10H,3EH,7CH,02HDB 54H,02H,7CH,3EH,00H,00H,00H,00HFONT33:;正常DB 00H,00H,00H,00H,08H,0FEH,2AH,50HDB 2AH,50H,3EH,50H,08H,50H,1CH,50HDB 14H,5EH,5DH,10H,41H,10H,7FH,10HDB 08H,10H,1CH,10H,2AH,0FEH,00H,00HFONT3:;自然DB 00H,00H,52H,0FDH,54H,85H,00H,84HDB 82H,0FCH,64H,84H,54H,84H,54H,0FCHDB 54H,85

22、H,0D4H,85H,54H,0FDH,0FEH,41HDB 49H,21H,0CAH,11H,08H,01H,00H,00HFONT4:;睡眠DB 00H,00H,00H,00H,00H,00H,09H,0EHDB 00AH,04H,0EAH,04H,0AAH,0EEH,0EFH,0AEHDB 0AAH,0FFH,0EAH,0AEH,0AFH,0EEH,0E9H,0A4HDB 09H,0E4H,0FH,0CH,0C0H,02H,00H,00HFONT5:;风速DB 00H,00H,00H,00H,00H,00H,0FFH,82HDB 88H,43H,0C9H,42H,0AAH,42H,9CH

23、,66HDB 88H,5AH,0BEH,5AH,0AAH,66H,0BEH,42HDB 0C8H,43H,88H,42H,0BEH,7EH,48H,00HFONT6:;风种DB 00H,00H,00H,00H,00H,00H,44H,82HDB 44H,43H,44H,42H,44H,43H,0C4H,42HDB 0C4H,66H,0DFH,5AH,0F5H,66H,0FFH,43HDB 44H,42H,44H,42H,0E4H,7EH,00H,00HFONT7:;定时DB 00H,00H,00H,00H,00H,00H,04H,41HDB 0AH,42H,02H,44H,02H,48H,72

24、H,58HDB 56H,6EH,5AH,48H,7FH,3EH,52H,41HDB 52H,7FH,72H,08H,02H,10H,00H,00HFONT8: ;30DB 00H,00H,00H,00H,00H,00H,3CH,7CHDB 42H,02H,42H,02H,42H,02H,42H,02HDB 42H,02H,42H,7CH,42H,02H,42H,02HDB 42H,02H,42H,02H,3CH,7CH,00H,00HFONT9: ;60DB 00H,00H,00H,00H,00H,00H,3CH,3CHDB 42H,42H,42H,42H,42H,42H,42H,42HDB

25、42H,3CH,42H,40H,42H,40H,42H,40HDB 42H,40H,42H,40H,3CH,3CH,00H,00HFONT10: ;90DB 00H,00H,00H,00H,00H,00H,3CH,3CHDB 42H,02H,42H,02H,42H,02H,42H,02HDB 42H,3CH,42H,42H,42H,42H,42H,42HDB 42H,42H,42H,42H,3CH,3CH,00H,00HNUM1 DB0NUM2 DB0NUM3 DB0CHNUM DB 1KEYTABLE:DB 16H ,15H,14H,0FFHDB 13H,12H,11H,10HDB 0DH,

26、0CH,0BH,0AHDB 0EH,03H,06H,09HDB 0FH,02H,05H,08HDB 00H,01H,04H,07Hcnt db 0cn db 0LEDBUFDB6 DUP(?)NUMDB1 DUP(?)DELAYTDB1 DUP(?)LEDMAP:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HSTARTNUM DB0MODENUMDB 0FENGSUNUM DB 0 FENGZHONGNUM DB 0 DINGSHINUM DB 0 SECONDNUM1 DB 0 SECONDNUM2 DB

27、0 SECONDNUM3 DB 0 SECONDNUM4 DB 0 SECONDNUM5 DB 0 MINDINGSHI DB 0H0DB 0HH1DB 0HM0DB 0HM1DB 0HS0DB 0HS1DB 0HBIJIAODINGSHI DB 0 data endsCODE SEGMENTASSUME CS:CODE,DS:DATAQIANGRUO PROC NEARMAIN:MOVAL,0MOVDX,ROWLOWOUTDX,ALMOVDX,ROWHIGHOUTDX,ALMOVAL,0FFHMOVDX,COLLOWOUTDX,ALMOVDX,COLHIGHOUTDX,ALMOVCHARIN

28、DEX,0NEXTCHAR:MOVDELAYCNT,50LOOP1: MOVBITMASK,1MOVCOLCNT,16MOVBX,CHARINDEXMOVAX,32MULBXMOVBX,AXNEXTROW: MOV AL,0MOVDX,ROWLOWOUTDX,ALMOVDX,ROWHIGHOUTDX,ALMOVAX,SI+BXMOVDX,COLLOWNOTALOUTDX,ALMOVDX,COLHIGHMOVAL,AHNOTALOUTDX,ALINCBXINCBXMOVAX,BITMASKMOVDX,ROWLOWOUTDX,ALMOVDX,ROWHIGHMOVAL,AHOUTDX,ALMOVAX

29、,BITMASKROL AX,1MOV BITMASK,AX CALL DELAY DEC COLCNT JNZ NEXTROW DEC DELAYCNT JNZ LOOP1 INC CHARINDEX MOV AX,CHARINDEX CMP AX,2RETQIANGRUO ENDPDELAY PROC NEARPUSH CXMOV CX,100DELAYL:LOOP DELAYLPOP CXRETDELAY ENDPSHUIMIAN PROC NEARPUSH AXmov AH,SECONDNUM2 CMP AH,10JNA NN1 MOV AL,0MOV DX,CS0832 OUT DX

30、,AL JMP RETURN2NN1:MOV AL,0AFHMOV DX,CS0832OUT DX,ALRETURN2: POP AXRETSHUIMIAN ENDPZIRAN PROC NEARPUSH AX mov AH,SECONDNUM1 CMP AH,5 JNA NNN1MOV AL,0MOV DX,CS0832OUT DX,ALJMP RETURN3NNN1:MOV AL,FENGSUNUMMOV DX,CS0832OUT DX,ALRETURN3:POP AXRETZIRAN ENDPSETFENGZHONG PROC NEARMOV AH,NUM2CMP AH,0JNE GG1

31、MOV AL,FENGSUNUMMOV DX,CS0832OUT DX,ALMOV SI,OFFSET FONT33CALL QIANGRUO MOV DX,PORTA IN AL,DXAND AL,11110011B OR AL,00010000B OUT DX,ALJMP YRETURNGG1:CMP AH,1JNE GG2CALL ZIRANMOV SI,OFFSET FONT3CALL QIANGRUO MOV DX,PORTA IN AL,DXAND AL,11101011B OR AL,00001000B OUT DX,ALJMP YRETURNGG2:CMP AH,2JNE YR

32、ETURNCALL SHUIMIANMOV SI,OFFSET FONT4 CALL QIANGRUOMOV DX,PORTAIN AL,DXAND AL,11100111B OR AL,00000100B OUT DX,AL YRETURN: RET SETFENGZHONG ENDPTESTKEY PROC NEAR MOV DX,OUTBIT MOV AL,0 OUT DX,AL MOV DX,IN_KEY IN AL,DX NOT AL AND AL,0FH RETTESTKEY ENDPGETKEY proc near mov ch,00100000b mov cl,6 kloop:

33、 mov dx,outbit mov al,ch not al out dx,al shr ch,1 mov dx,in_key in al,dx not al and al,0fh jne goon_ dec cl jnz kloop mov cl,0ffh jmp exit1 goon_: dec cl shl cl,2 mov ch,4 loopc: test al,1 jnz exit1 shr al,1 inc cl dec ch jnz loopcexit1: mov dx,outbitmov al,0out dx,almov ch,0mov bx,offset keytablea

34、dd bx,cxmov al,bxmov bl,al waitrelease:mov dx,outbitmov al,0out dx,alcall testkeyjne waitreleasemov al,blretGETKEY endpGETSHURU PROC NEAR;从 8255 B 口得到输入送 ALMOV AL,MODEMOV DX,CADDROUT DX,ALMOV DX,PORTBIN AL,DXRETGETSHURU ENDPSTARTFENGSHAN PROC NEAR;开启风扇CMP STARTNUM,0JNE NEXTSTARTINC STARTNUMMOV AL,0F

35、FHMOV FENGSUNUM,ALMOV DX,CS0832OUT DX,ALMOV DX,PORTAMOV AL,10010000BOUT DX,ALJMP STARTEND NEXTSTART:DEC STARTNUMMOV AL,0MOV FENGSUNUM,ALMOV DX,CS0832OUT DX,ALMOV DX,PORTAMOV AL,0OUT DX,ALSTARTEND:RETSTARTFENGSHAN ENDPSETFENGSU PROC NEAR;设置风速MOV AH,NUM1CMP AH,0JNE SS1MOV AL,0AFHMOV FENGSUNUM,ALMOV DX

36、,CS0832OUT DX,ALMOV SI,OFFSET FONTCALL QIANGRUOMOV DX,PORTAIN AL,DXAND AL,10011111BOR AL,10000000BOUT DX,ALJMP SRETURNSS1:CMP AH,1JNE SS2MOV AL,0DFHMOV FENGSUNUM,ALMOV DX,CS0832OUT DX,ALMOV SI,OFFSET FONT1CALL QIANGRUOMOV DX,PORTAIN AL,DXAND AL,01011111BOR AL,01000000BOUT DX,ALJMP SRETURNSS2:CMP AH,

37、2JNE SRETURNMOV AL,0FFHMOV FENGSUNUM,ALMOV DX,CS0832OUT DX,ALMOV SI,OFFSET FONT2CALL QIANGRUOMOV DX,PORTAIN AL,DXAND AL,00111111BOR AL,00100000BOUT DX,ALSRETURN: RETSETFENGSU ENDPGETMODE PROC NEARCMP AL,0JNE L1CALL STARTFENGSHANJMP GETOVERL1:CMP AL,1JNE L2INC NUM1MOV CH,NUM1CMP NUM1,3JB FF1MOV CL,0M

38、OV NUM1,CLFF1:CALL SETFENGSUMOV SI,OFFSET FONT5CALL QIANGRUOJMP GETOVERL2:CMP AL,4JNE L3INC NUM2MOV CH,NUM2CMP CH,3JB FFF1MOV CL,0MOV NUM2,CLFFF1:MOV SI,OFFSET FONT6CALL QIANGRUOCALL SETFENGZHONGJMP GETOVERL3:CMP AL,7JNE GETOVERCALL QLINC NUM3 MOV CH,NUM3 CMP NUM3,4 JB FFFF1MOV CL,0MOV NUM3,CLFFFF1:

39、;CALL SETDINGSHIMOV SI,OFFSET FONT7 CALL QIANGRUOMOV AH,0MOV MINDINGSHI,AHMOV SECONDNUM5,AH GETOVER:RETGETMODE ENDPSETDINGSHI PROC NEARMOV AH,NUM3CMP AH,0JNZ AA1MOV DX,PORTAIN AL,DXAND AL,11111100BOUT DX,ALJMP NXTAA1:CMP AH,1JNZ AA2MOV SI,OFFSET FONT8 CALL QIANGRUOMOV AH,SECONDNUM5 CMP AH,30JNA AAA1

40、MOV DX,CS0832MOV AL,0OUT DX,ALCALL QLMOV SECONDNUM5,0 JMP NXTAAA1:MOV DX,PORTA IN AL,DXLEDBUFAND AL,11111101B OR AL,00000001B OUT DX,ALMOV BX,OFFSETMOV CH,H0 CALL FILLMOV CH,H1 CALL FILL MOV CH,M0 CALL FILL MOV CH,M1 CALL FILL MOV CH,S0 CALL FILL MOV CH,S1 CALL FILLMOVDELAYT,20DISPAGAIN:CALLDISPLAYL

41、EDDECDELAYTJNZDISPAGAINJMP NXTAA2:CMP AH,2JNZ AA3MOV SI,OFFSET FONT9 CALL QIANGRUOMOV AH,SECONDNUM5CMP AH,60JNA AAA2MOV DX,CS0832MOV AL,0OUT DX,ALCALL QLMOV SECONDNUM5,0JMP NXTAAA2:MOV DX,PORTA IN AL,DX AND AL,11111110B OR AL,00000010B OUT DX,ALMOV BX,OFFSET MOV CH,H0 CALL FILL MOV CH,H1 CALL FILL M

42、OV CH,M0 CALL FILL MOV CH,M1 CALL FILL MOV CH,S0 CALL FILL MOV CH,S1 CALL FILLMOV DELAYT,20DISPAGAIN2:CALL DISPLAYLED DEC DELAYT JNZ DISPAGAIN2 JMP NXTAA3:CMP AH,3 JNZ NXT MOV AH,SECONDNUM5 CMP AH,90 JNA AAA3 MOV DX,CS0832 MOV AL,0 OUT DX,ALMOV SECONDNUM5,0 CALL QL JMP NXTAAA3:MOV DX,PORTAIN AL,DX O

43、R AL,00000011B OUT DX,ALLEDBUFLEDBUFMOV BX,OFFSETMOV CH,H0 CALL FILLMOV CH,H1CALL FILLMOV CH,M0CALL FILL MOV CH,M1CALL FILLMOV CH,S0CALL FILLMOV CH,S1CALL FILLMOV DELAYT,20DISPAGAIN1:CALL DISPLAYLEDDEC DELAYTJNZ DISPAGAIN1JMP NXTNXT:RETSETDINGSHI ENDPDELAY1 PROC NEARPUSHAXPUSHCXMOVAL,0MOVCX,AXLOOP$P

44、OPCXPOPAXRETDELAY1 ENDPQL PROC NEARMOV H1,0MOV H0,0MOV M1,0MOV M0,0MOV S1,0MOV S0,0RETQL ENDP ienter proc near push ax push dx mov dx,PORTBinc cntcmp cnt,0ahjnz P1mov cnt,0inc cnmov al,cnout dx,alP1:mov dx,cs8259amov al,20hout dx,alinc SECONDNUM1CMP SECONDNUM1,10JNE NXT00MOV AH,0MOV SECONDNUM1,AHNXT

45、00:inc SECONDNUM2CMP SECONDNUM2,20JNE NXT02MOV AH,0MOV SECONDNUM2,AH NXT02:inc SECONDNUM3inc SECONDNUM4inc SECONDNUM5N1: inc s1MOV AH,0 MOV AL,S1 CMP AL,10JB NEXT01 MOV S1,AH INC S0MOV AL,S0CMP AL,6 JB NEXT01INC M1MOV S0,AH MOV AL,M1 CMP AL,10JB NEXT01INC M0 MOV M1,AH MOV AL,M0CMP AL,6JB NEXT01 MOV

46、M0,AH INC H1 MOV AL,H0 CMP AL,2 JB NOVER MOV AL,H1 CMP AL,4 JB NEXT01 MOV H1,AH MOV H0,AH MOV M0,AH NOVER: MOV AL,H1CMP AL,10 JB NEXT01 INC H0 MOV H1,AH NEXT01:CALL SETDINGSHI pop dx pop ax iret ienter endp init proc nearLEDMAPmov dx,cs8259a mov al,icw1 out dx,al mov dx,cs8259b mov al,icw2 out dx,al

47、 mov al,icw4 out dx,al mov al,ocw1 out dx,al ret init endp FILL PROC NEAR MOV AH,0 MOV SI,OFFSET MOV AL,CH AND AL,0FH ADD AX,SI MOV SI,AX MOV AL,SIMOVMOV BX,AL INC BXRETFILL ENDPDISPLAYLED PROC NEARMOVMOVMOVBX,OFFSET LEDBUFCL,6AH,00100000BDLOOP:MOV DX,OUTBITMOV AL,0 OUT DX,AL MOV AL,BX MOV DX,OUTSEG

48、 OUT DX,ALMOV DX,OUTBIT MOV AL,AH OUT DX,AL PUSH AXMOV AH,1 CALL DELAY1 POP AX SHR AH,1 INC BX DEC CL JNZ DLOOP MOV DX,OUTBIT MOV AL,0 OUT DX,ALRETDISPLAYLED ENDPSTART:MOV AX,DATAMOV DS,AX;初始化 8253,使其产生 1s 每次的高电平中断信号MOV AL,36HMOV DX,CONTROLOUT DX,ALMOV AL,0E8HMOV DX,COUNT0OUT DX,ALMOV AL,03HOUT DX,A

49、LMOV AL,76HMOV DX,CONTROLOUT DX,ALMOV AL,0E8HMOV DX,COUNT1OUT DX,ALMOV AL,03HOUT DX,ALMOV AL,00000000BMOV DX,CONTROLOUT DX,ALMOV DX,COUNT0IN AL,DXMOV BL,ALIN AL,DXMOV AH,ALMOV AL,BL;初始化8259,使其对8253 产生的中断进行计数mov dx,CADDRmov al,modeout dx,alclimov ax,0mov ds,axmov bx,4*icw2mov ax,offset ientermov bx,axmov ax,codeinc bxinc bxmov bx,axcall initmov ax,datamov ds,axmov cn,0mov al,cnmov dx,PORTBout dx,alsti;初始化 0832,让电扇关闭MOV AL,FENGSUNUMMOV DX,CS0832OUT DX,AL;循环判断有无按键按下R:CALL TESTKEY JE NEXT CALL GETKEYCALL GETMODENEXT:CALL SETFENGZHONGCALL SETDINGSHIJMP RCODE ENDSEND START

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!