硬件实验报告.docx
- 文档编号:28924300
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:42
- 大小:142.85KB
硬件实验报告.docx
《硬件实验报告.docx》由会员分享,可在线阅读,更多相关《硬件实验报告.docx(42页珍藏版)》请在冰豆网上搜索。
硬件实验报告
综合实验报告
(2013--2014年度第二学期)
名称:
硬件设计与实践
题目:
智能风扇程序设计
院系:
班级:
学号:
学生姓名:
指导教师:
设计周数:
2
成绩:
日期:
2014年7月11日
硬件设计与实践
任务书
一、目的与要求
1.掌握8255/8253工作方式,掌握8255/8253集成电路芯片的接口电路硬件设计与连接方法。
2.掌握A/D和D/A转换的基本原理。
3.巩固和加深对微机原理基本知识的理解,学会查找资料、设计方案、以及单元电路等,进一步提高学生综合运用学过的相关软件、硬件知识,分析解决实际问题的能力。
4.要求:
(1)用4个按键来实现对“风速”、“风种”、“定时”、“停止”的不同选择。
(2)用三个发光二极管来表示风速的弱、中、强三种状态;用三个发光二极管来表示风种的正常、自然、睡眠三种状态;用二个发光二极管来表示定时30分或30分。
(3)在停止状态时,只有按风速键才有效,按其余三键无效。
(4)用8段数码管显示定时时间。
二、主要内容
设计一个电风扇,具有以下功能
1.电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速”键电扇才会响应,其初始工作状态为“风速”——弱,“风种”——正常,“定时”——连续状态,且相应指示灯亮。
2.电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状态。
弱、中、强对应电扇转速由慢到快。
3.按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。
“风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5秒,间断5秒;在:
“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转10秒,间断10秒。
4.按动定时键可循环选择连续、30分钟、60分钟、90分钟四种定时方式中的某一种。
其两指示灯全灭表示连续状态;全亮表示90分钟定时。
5.在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。
三、进度计划
序号
设计内容
完成时间
备注
1
任务需求分析
第一周周一至周二
2
软件及硬件设计
第一周周三到周五
3
调试运行
第二周周一至周三
4
验收,并撰写综合实验报告
第二周周四至周五
四、设计成果要求
1.完成实验的主要内容,设计方案优化。
2.完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。
3.实验报告中应包括硬件连线图,程序设计流程图,实验数据,软件程序,运行结果和结论等。
五、考核方式
1.平时成绩+验收答辩+实验报告;
2.五级分制:
优、良、中、合格、不合格。
学生姓名:
指导教师:
2014年6月30日
一、综合实验的目的与要求
1.掌握8255/8253工作方式,掌握8255/8253集成电路芯片的接口电路硬件设计与连接方法。
2.掌握A/D和D/A转换的基本原理。
3.巩固和加深对微机原理基本知识的理解,学会查找资料、设计方案、以及单元电路等,进一步提高学生综合运用学过的相关软件、硬件知识,分析解决实际问题的能力。
4.要求:
(1)用4个按键来实现对“风速”、“风种”、“定时”、“停止”的不同选择。
(2)用三个发光二极管来表示风速的弱、中、强三种状态;用三个发光二极管来表示
风种的正常、自然、睡眠三种状态;用二个发光二极管来表示定时30分或30分。
(3)在停止状态时,只有按风速键才有效,按其余三键无效。
(4)用8段数码管显示定时时间。
二、综合实验正文
2.1设计内容
设计一个电风扇,具有以下功能
1.电风扇处于停转状态时,所有指示灯不亮,此时只有按“风速”键电扇才会响应,其初始工作状态为“风速”——弱,“风种”——正常,“定时”——连续状态,且相应指示灯亮。
2.电扇一经启动后,再按动“风速”键可循环选择弱、中或强三种状态中的任意一种状态。
弱、中、强对应电扇转速由慢到快。
3.按动风种键可循环选择正常、自然或睡眠三种状态中的某一种状态。
“风种”在正常位置是指电扇连续运转,在“自然”位置,是表示电扇模拟产生自然风,即运转5秒,间断5秒;在:
“睡眠”位置,是产生轻柔的微风,此时风速被设为弱,电扇运转10秒,间断10秒。
4.按动定时键可循环选择连续、30分钟、60分钟、90分钟四种定时方式中的某一种。
其两指示灯全灭表示连续状态;全亮表示90分钟定时。
5.在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。
2.2设计原理
2.2.1键盘扫描
本实验仪提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。
如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的延时,防止键盘抖动。
2.2.2点阵LED显示
16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。
每个行和每个列可以选中一个发光二极管,共有256个发光二极管,采用动态驱动方式。
每次显示一行,10ms后再显示下一行。
2.3设计方案
(1)用可编程并行接口芯片8255A的PA口控制8个状态指示灯(即8个发光二极管),分别表示弱、中、强、正常、自然、睡眠、30分钟、60分钟。
(2)用实验箱上的直流电动机作为电风扇,其转速可有D/A转换芯片0832来产生不同的电压来控制电风扇。
8位D/A转换器的输入数据与输出电压的关系为
U(-5V~5V)=2Uref/256*N-5V(Uref为+5V)
(3)风种及定时的时间控制可由自定义变量计数器来实现。
每次触发中断计数器加一或做相应改变。
实验箱的时钟为1MHZ,为了降低频率,将频率输出接8253计数器0的clk,将out0接计数器1的clk,out1作为中断触发源接到8259的INT0上。
2.4设计步骤
2.4.1流程图
主程序流程图如下:
Y
N
Y
N
Y
中断服务程序流程图:
2.4.2子程序说明
(1)QIANGRUO子程序用于根据当前设置将刷新后的风速、风种以及定时显示在LED屏上,这样便于了解风扇当前的运行状态;
(2)TESTKEY及GETKEY子程序分别用于判断是否有键按下及具体哪个键被按下,相应被按下的键码存到AL寄存器中,以便在GETMODE子程序中用于比较判断具体哪个键被按下是应执行哪个相应的子程序;
(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来比较分别设置不同的风速值从而实现风扇转5s停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子程序为根据STARTNUM的值来判断执行风扇开启还是关闭,主要在定时子程序及睡眠和自然子程序中调用。
(9)GETMODE子程序是在调用了TESTKEY和GETKEY子程序后根据键码的值来跳转到相
应的编号执行相应子程序,如当键1按下时,为风速键,此时NUM1加1并转到SETFENGSU子程序中执行改变。
(10)INIT为8259初始化程序,IENTER为中断服务程序,利用8253定时功能实现1s钟产生一次中断,同时实现相应变量SECONDNUM1、SECONDNUM2、SECONDNUM5以此来实现对自然风、睡眠风以及定时时间的控制和改变,并且在定时是调用定时子程序且在数码管上显示定时时间。
2.4.3工作流程测试
<1>用四个键分别控制风速、风种、定时、停止
采用实验箱上的键盘上的一列的4个按键(0,1,4,7)分别表示停止、风速、风种、定时。
编写的程序中每次中断都检测键盘输入,调用GETMODE子程序根据不同按键执行不同操作。
如果检测到风速键按下,就转到风速状态(即弱、中、强三种状态)设置子程序,以便能够通过风速键控制这三种状态(用LED矩阵显示)。
如果没有检测到按下,则继续进行下面的风种键的检测,以此类推。
这样就可以实现四个键分别控制风速、风种、定时、停止。
<2>风速、风种、定时状态设置
因为要实现风速、风种、定时3个按键对风速(弱、中、强)、风种(正常、自然、睡眠)、定时(30min、60min、90min、连续)共8个状态的控制,就需要对这8个状态进行设置,其风速状态设置方法如下:
因为风速的3状态要保存,所以要在数据段声请一个地址来存放。
这里用风速键按下的次数来实现三种状态的变换,初始状态为按第一下表示弱状态,再按一次表示中状态,再按一次表示强状态,再按一次表示又返回到弱状态,这样依次循环下去。
当检测到风速键按下时,使用GETMODE子程序判断后转到风速风速状态设置子程序并根据判断当前NUM1的值来设置风速大小通过0832输出并在LED上显示,同时每次调用GETMODE子程序是NUM值都会发生改变,一次来实现循环改变状态。
<3>时间的控制
风种及定时的时间控制可由可编程计数器/定时器8253来实现。
因为实验箱上的时钟为1MHZ,可以使用两个计数器级联将定时时间设为1s。
用由8253的0计数器和1计数器,使0计数器为工作方式3,把1MHZ的时钟变为1KHZ,通过OUTO输出到CLK1,使1计数器为工作方式3,改变计数器1的系数,在这种方式下,当CPU输入控制字后,输出将为方波,在写入计数值后计数器将立即自动对输入时钟CLK计数,计数器减为1时,方式3时8253不可用重新设置计数值就能连续工作,保证了定时的精确。
这样就可以将定时时间设为1s。
由于要定时30min、60min、90min、5s、10s,所以需要多次调用延时子程序,所以可以写成一个DELAY程序,每次调用的时候配合CALL和RET就能往返于子程序和主程序之间从而可以很方便的实现定多个时间了。
<4>中断
中断要用8259,可将8253定时器的输出信号与8259中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。
这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。
三、综合实验总结或结论
通过本次课程设计,我理解了键盘的扫描和八段数码管的显示原理,学会了自主设计键盘按键对用的功能以及八段数码管的显示,学会了LED屏的显示会自己设计出字样并显示出来。
在智能风扇总体设计时遇到了很多问题,例如代表风速的电机的旋转速度变化怎么实现,数码管的显示,自然风和睡眠风停几秒转几秒的实现方法。
后来经过组内成员的讨论和组间借鉴以及老师的指导,逐步修改并完善了程序,功能越来越完备。
在定时部分,开始数码管只是在不停地闪并不技术加一经过修改后在第30秒能够停止(为方便测试将30分钟修改为30秒),但是定时结束后再继续按任何键都没有任何反应且不能跳转到定时60秒或者90秒分支程序处。
后来我们想到要利用标志位来控制中断的执行与否,当定时结束时赋值为1,中断程序中首先判断标志位是否为1,如果为1则中断直接结束否则计数加一。
我们认为理论上逻辑和程序是无误的,但实际测试结果还是有点问题,这让我们感到非常遗憾,但这次课设仍让我学到了很多,同时也锻炼了我的逻辑的缜密性,提高了分析问题的能力。
最后感谢老师的耐心和有力的指导。
四、参考文献
附录:
ROWLOWEQU0D002H
ROWHIGHEQU0D003H
COLLOWEQU0D000H
COLHIGHEQU0D001H
MODEEQU082H
PORTAEQU0E000H
PORTBEQU0E001H
PORTCEQU0E002H
CADDREQU0E003H
CS0832EQU0B000H
CONTROLEQU08003H;8253地址08000h
COUNT0EQU08000H
COUNT1EQU08001H
COUNT2EQU08002H
OUTBITEQU0A002H
OUTSEGEQU0A004H
IN_KEYEQU0A001H
icw1equ00010011b
icw2equ00100000b
icw4equ01h
ocw1equ11111110b
cs8259aequ09000h
cs8259bequ09001h
datasegment
BITMASKDW1
CHARINDEXDW1
DELAYCNTDW1
COLCNTDW1
FONT:
;弱
DB04H,04H,0AH,0AH,22H,22H,12H,12H
DB2AH,2AH,02H,02H,02H,02H,3EH,3EH
DB20H,20H,20H,20H,3EH,3EH,02H,02H
DB02H,02H,3EH,3EH,00H,00H,00H,00H
FONT1:
;中
DB00H,01H,00H,01H,00H,01H,00H,01H
DB00H,01H,00H,01H,0F8H,3FH,08H,21H
DB08H,21H,08H,21H,0F8H,3FH,00H,01H
DB00H,01H,00H,01H,00H,00H,00H,00H
FONT2:
;强
DB02H,04H,7EH,0AH,12H,02H,10H,02H
DB10H,02H,10H,02H,0FEH,02H,92H,3EH
DB0FEH,20H,10H,20H,10H,3EH,7CH,02H
DB54H,02H,7CH,3EH,00H,00H,00H,00H
FONT33:
;正常
DB00H,00H,00H,00H,08H,0FEH,2AH,50H
DB2AH,50H,3EH,50H,08H,50H,1CH,50H
DB14H,5EH,5DH,10H,41H,10H,7FH,10H
DB08H,10H,1CH,10H,2AH,0FEH,00H,00H
FONT3:
;自然
DB00H,00H,52H,0FDH,54H,85H,00H,84H
DB82H,0FCH,64H,84H,54H,84H,54H,0FCH
DB54H,85H,0D4H,85H,54H,0FDH,0FEH,41H
DB49H,21H,0CAH,11H,08H,01H,00H,00H
FONT4:
;睡眠
DB00H,00H,00H,00H,00H,00H,09H,0EH
DB00AH,04H,0EAH,04H,0AAH,0EEH,0EFH,0AEH
DB0AAH,0FFH,0EAH,0AEH,0AFH,0EEH,0E9H,0A4H
DB09H,0E4H,0FH,0CH,0C0H,02H,00H,00H
FONT5:
;风速
DB00H,00H,00H,00H,00H,00H,0FFH,82H
DB88H,43H,0C9H,42H,0AAH,42H,9CH,66H
DB88H,5AH,0BEH,5AH,0AAH,66H,0BEH,42H
DB0C8H,43H,88H,42H,0BEH,7EH,48H,00H
FONT6:
;风种
DB00H,00H,00H,00H,00H,00H,44H,82H
DB44H,43H,44H,42H,44H,43H,0C4H,42H
DB0C4H,66H,0DFH,5AH,0F5H,66H,0FFH,43H
DB44H,42H,44H,42H,0E4H,7EH,00H,00H
FONT7:
;定时
DB00H,00H,00H,00H,00H,00H,04H,41H
DB0AH,42H,02H,44H,02H,48H,72H,58H
DB56H,6EH,5AH,48H,7FH,3EH,52H,41H
DB52H,7FH,72H,08H,02H,10H,00H,00H
FONT8:
;30
DB00H,00H,00H,00H,00H,00H,3CH,7CH
DB42H,02H,42H,02H,42H,02H,42H,02H
DB42H,02H,42H,7CH,42H,02H,42H,02H
DB42H,02H,42H,02H,3CH,7CH,00H,00H
FONT9:
;60
DB00H,00H,00H,00H,00H,00H,3CH,3CH
DB42H,42H,42H,42H,42H,42H,42H,42H
DB42H,3CH,42H,40H,42H,40H,42H,40H
DB42H,40H,42H,40H,3CH,3CH,00H,00H
FONT10:
;90
DB00H,00H,00H,00H,00H,00H,3CH,3CH
DB42H,02H,42H,02H,42H,02H,42H,02H
DB42H,3CH,42H,42H,42H,42H,42H,42H
DB42H,42H,42H,42H,3CH,3CH,00H,00H
NUM1DB0
NUM2DB0
NUM3DB0
CHNUMDB1
KEYTABLE:
DB16H,15H,14H,0FFH
DB13H,12H,11H,10H
DB0DH,0CH,0BH,0AH
DB0EH,03H,06H,09H
DB0FH,02H,05H,08H
DB00H,01H,04H,07H
cntdb0
cndb0
LEDBUFDB6DUP(?
)
NUMDB1DUP(?
)
DELAYTDB1DUP(?
)
LEDMAP:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
STARTNUMDB0
MODENUMDB0
FENGSUNUMDB0
FENGZHONGNUMDB0
DINGSHINUMDB0
SECONDNUM1DB0
SECONDNUM2DB0
SECONDNUM3DB0
SECONDNUM4DB0
SECONDNUM5DB0
MINDINGSHIDB0
H0DB0H
H1DB0H
M0DB0H
M1DB0H
S0DB0H
S1DB0H
BIJIAODINGSHIDB0
dataends
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
QIANGRUOPROCNEAR
MAIN:
MOVAL,0
MOVDX,ROWLOW
OUTDX,AL
MOVDX,ROWHIGH
OUTDX,AL
MOVAL,0FFH
MOVDX,COLLOW
OUTDX,AL
MOVDX,COLHIGH
OUTDX,AL
MOVCHARINDEX,0
NEXTCHAR:
MOVDELAYCNT,50
LOOP1:
MOVBITMASK,1
MOVCOLCNT,16
MOVBX,CHARINDEX
MOVAX,32
MULBX
MOVBX,AX
NEXTROW:
MOVAL,0
MOVDX,ROWLOW
OUTDX,AL
MOVDX,ROWHIGH
OUTDX,AL
MOVAX,[SI+BX]
MOVDX,COLLOW
NOTAL
OUTDX,AL
MOVDX,COLHIGH
MOVAL,AH
NOTAL
OUTDX,AL
INCBX
INCBX
MOVAX,BITMASK
MOVDX,ROWLOW
OUTDX,AL
MOVDX,ROWHIGH
MOVAL,AH
OUTDX,AL
MOVAX,BITMASK
ROLAX,1
MOVBITMASK,AX
CALLDELAY
DECCOLCNT
JNZNEXTROW
DECDELAYCNT
JNZLOOP1
INCCHARINDEX
MOVAX,CHARINDEX
CMPAX,2
RET
QIANGRUOENDP
DELAYPROCNEAR
PUSHCX
MOVCX,100
DELAYL:
LOOPDELAYL
POPCX
RET
DELAYENDP
SHUIMIANPROCNEAR
PUSHAX
movAH,SECONDNUM2
CMPAH,10
JNANN1
MOVAL,0
MOVDX,CS0832
OUTDX,AL
JMPRETURN2
NN1:
MOVAL,0AFH
MOVDX,CS0832
OUTDX,AL
RETURN2:
POPAX
RET
SHUIMIANENDP
ZIRANPROCNEAR
PUSHAX
movAH,SECONDNUM1
CMPAH,5
JNANNN1
MOVAL,0
MOVDX,CS0832
OUTDX,AL
JMPRETURN3
NNN1:
MOVAL,FENGSUNUM
MOVDX,CS0832
OUTDX,AL
RETURN3:
POPAX
RET
ZIRANENDP
SETFENGZHONGPROCNEAR
MOVAH,NUM2
CMPAH,0
JNEGG1
MOVAL,FENGSUNUM
MOVDX,CS0832
OUTDX,AL
MOVSI,OFFSETFONT33
CALLQIANGRUO
MOVDX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)