您好,欢迎访问三七文档
综合实验报告(2013--2014年度第二学期)名称:硬件设计与实践题目:智能风扇程序设计院系:班级:学号:学生姓名:指导教师:设计周数:2成绩:日期:2014年7月11日1硬件设计与实践任务书一、目的与要求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.在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。三、进度计划2序号设计内容完成时间备注1任务需求分析第一周周一至周二2软件及硬件设计第一周周三到周五3调试运行第二周周一至周三4验收,并撰写综合实验报告第二周周四至周五四、设计成果要求1.完成实验的主要内容,设计方案优化。2.完成综合实验报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对实验思路的归纳和对问题解决过程的总结。3.实验报告中应包括硬件连线图,程序设计流程图,实验数据,软件程序,运行结果和结论等。五、考核方式1.平时成绩+验收答辩+实验报告;2.五级分制:优、良、中、合格、不合格。学生姓名:指导教师:2014年6月30日3一、综合实验的目的与要求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.在电扇任间工作状态下,按停止键,电扇停止工作,所有指示灯熄灭。弱中强正常自然睡眠30分60分风速风种定时停止42.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)5(3)风种及定时的时间控制可由自定义变量计数器来实现。每次触发中断计数器加一或做相应改变。实验箱的时钟为1MHZ,为了降低频率,将频率输出接8253计数器0的clk,将out0接计数器1的clk,out1作为中断触发源接到8259的INT0上。2.4设计步骤2.4.1流程图主程序流程图如下:中断服务程序流程图:开始初始化8255、8259设置风速为停止,风种为正常,定时为连续状态风速键?有键按下吗风扇运行子程序风速状态设置子程序风种键?风种状态设置子程序定时键?定时状态设置子程序YYYNN保护现场风种计数值加一开始62.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以此来实现对自然风、睡眠风以及定时时间的控制和改变,并且在定时是调用定时子程序且在数码管上显定时计数值加一返回7示定时时间。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中断控制器的中断请求信号相连,每个定时周期可产生一次中断响应作为风种和定时的时间基准。这样可在中断服务程序中设计计数单元,对此时间基准作为计数,以生成所需的定时时间。三、综合实验总结或结论8通过本次课程设计,我理解了键盘的扫描和八段数码管的显示原理,学会了自主设计键盘按键对用的功能以及八段数码管的显示,学会了LED屏的显示会自己设计出字样并显示出来。在智能风扇总体设计时遇到了很多问题,例如代表风速的电机的旋转速度变化怎么实现,数码管的显示,自然风和睡眠风停几秒转几秒的实现方法。后来经过组内成员的讨论和组间借鉴以及老师的指导,逐步修改并完善了程序,功能越来越完备。在定时部分,开始数码管只是在不停地闪并不技术加一经过修改后在第30秒能够停止(为方便测试将30分钟修改为30秒),但是定时结束后再继续按任何键都没有任何反应且不能跳转到定时60秒或者90秒分支程序处。后来我们想到要利用标志位来控制中断的执行与否,当定时结束时赋值为1,中断程序中首先判断标志位是否为1,如果为1则中断直接结束否则计数加一。我们认为理论
本文标题:硬件实验报告
链接地址:https://www.777doc.com/doc-7217480 .html