1、微机原理 课程设计报告题 目: 畜舍通风换气风机自动控制设计 学生姓名: 刘桂奇 学 号: 200817010121 专业班级: 计算机科学与技术 08101 班 同组姓名: 王国策 指导教师: 杨红杰 设计时间: 2011 年上学期第 19 周 指导老师意见:评定成绩: 签名: 日期: 年 月 日 1目录一、设计前言 .21.1 设计目的意义 .21.2 设计任务 .21.3 设计要求 .2二、总体设计 .22.1 温度数据采集模块 .32.2 温度转换及显示模块 .32.3 LED 显示控制模块 .42.4 蜂鸣器控制模块 .42.5 直流电机控制模块 .4三、课程设计过程 .53.1 硬
2、件设计 .53.2 软件设计 .5四、系统测试 .64.1 系统调试 .64.2 过程调试 .6五、程序代码清单 .7六、课程设计总结 .152一、设计前言1.1 设计目的意义随着智能畜禽农业规模的不断扩大,环境的好坏对农业产品健康的影响逐步地体现出来,只有创造一个空气新鲜,温、湿度适宜,干暖舒适的环境条件,才能让农业产品更好的生长,保持旺盛,发病率降低,获得较高的增长速度和转换率,创造较高的经济效益。因此,调控好室内空气、湿度和温度等环境,是农业产品管理的最根本问题 。1.2 设计任务通过 A/D 采集并存储蓄舍温度,根据蓄舍温度要求,通过 D/A 输出控制信号,控制风机的转速及风机的启动、
3、停止,实现蓄舍温度及空气的自动调节。1.3 设计要求(1)当 温度18,风机不转动,并且四个红灯闪烁。(2)当 18 温度 20,启动风机低速转动。(3)当 20 温度 25,启动风机中速转动。(4)当 25 温度 30,启动风机高速转动。(5)当温度超过 30,红色发光二极管全亮、喇叭连续发声报警。(6)用直流电机带动风机,计算机输出的数字量经 D/A 转换后变为高、中、低三种电压,控制直流风机的三种转速。二、总体设计 使用可编程并行接口 8255 对实验箱上的温度检测芯片 DS18B20 进行控制和数据传输,编写程序对数据进行读取并转换为相应的 BCD 码,判断从外界采集的温度并根据此温度
4、与所在的不同区间的温度来调用的相应的子程序,并利用DA0832 进行数模转换来控制风机的转动。利用 8255PA 端口控制 LED 灯的显示、3PC 端口(C1)进行蜂鸣器的控制,并提取温度转换为非压缩的 BCD 码,显示到八段数码管上。该设计主要分为以下几个主要功能模块:2.1 温度数据采集模块本模块利用实验箱自带的数字温度计 DS18B20 测量温度,程序通过可编程并行接口 8255 的 PC0 口对 DS18B20 写读写命令,并将读到的温度数据从 PC0 口按位读取出来,存放在 AX 寄存器内。2.2 温度转换及显示模块本模块将数据采集模块得到的温度数值首先转换为 BCD 码,提取温度
5、数据,转换为非压缩型 BCD 码。具体转换过程可参考附录 II 的核心代码的 BCD 转换部分。转换完后调用 Display8 在八段数码管上显示温度。42.3 LED 显示控制 模块根据此次课程设计的目的与要求,当温度超过 30时,红色发光二极管闪烁。用 8255 的 PA 端口来控制红灯亮,中间再调用一个延时,可以从视觉上看出红灯闪烁。具体过程可参考附录中的程度代码。2.4 蜂鸣器控制模块根据此次课程设计的目的与要求,当温度值大于 30时,要控制蜂鸣器做出报警。本程序是利用 8255PC 端口(PC1)来控制蜂鸣器发出报警声音。2.5 直流电机控制模块根据此次课程设计的目的与要求,当温度超
6、过 20小于 25时,要控制风机低速转动。当温度超过 25小于 30时,要控制风机中速转动,当温度超过30时,要控制风机高速转动。设计中通过不同区间数据的比较,给低、中、高三种不同的转速赋予不同的电压值传送给 DA0832,利用 DA0832 控制直流电机转动,由于输出高电平功率较小,导致无法自动驱动电机转动,所以在输出5之后接试验箱的功放模块,放大功率后,输出高电平可自动驱动直流电机转动。三、课程设计过程3.1 硬件设计3.1.1 硬件电路连线表 1 硬件连线E5:B、C - G5: B、CA3:CS1 - B4:CSA3:CS2 - B4:CSA3:CS5 - E5:CSA3:A0 - E
7、5:A0A3:A1、A0 - B4:A1、A0G1:TOUT - B4:PC0G6:发光二极管 - B4:JP56B2:2M - G1:TCTRLE2:IN1 - B3:OUTE2:OUT1 - F1:CTRLB4:PC1 - D1:CTRL63.2 软件设计软件部分利用实验箱为运行平台,运用汇编指令编写。控制程序主要包括温度数据采集模块、温度转换及显示模块、LED 显示控制模块、蜂鸣器控制模块、风机控制模块等。初始化程序包含:8255 初始化程序、18B20 初始化子程序。四、系统测试4.1 系统调试按照硬件连线连接电路,为方便调试,将程序内的温度区间作了调整。将原来设计要求里的CS1; 8
8、255.PC.018B20.TOUT; A0A0; A1A1;18B20 18B20.TOUT8255.PC.7CON_8255 EQU 0F003HPC_8255 EQU 0F002HPB_8255 EQU 0F001HPA_8255 EQU 0F000H8DA0832 EQU 0D000HEXTRN DISPLAY8:NEAR.STACK 300.DATAVOLTAGE DB 0BUFFER DB 8 DUP(0) ;温度临时存放区.CODESTART: MOV AX,DATAMOV DS,AXMOV ES,AXNOPCALL INIT8255MAIN: CALL START_TEMPER
9、ATURE ;向 DS18B20 发送读温度指令JB MAINCALL DELAYTIMECALL RD_TEMPERATURE ;读出温度值,并转换为 BCD 码CALL TEMPERATURE_CASECALL DELAYTIMECALL DAC0832CALL DIS_BCD ;提取温度数据,转换为非压缩型BCD 码,并显示JMP MAIN;判断温度控制电机速度TEMPERATURE_CASE PROC NEARPUSH AX;写 1(8255.PC.1=1)MOV DX,PC_8255 ;蜂鸣器不响MOV AL,03HOUT DX,ALMOV BX,AXCMP BX,0120H ;18
10、JB CASE1CMP BX,0140H ;20JB CASE29CMP BX,0190H ;25JB CASE3CMP BX,01E0H ;30JB CASE4;写 0(8255.PC.1=0)MOV DX,PC_8255 ;超过 30时,驱动蜂鸣器响MOV AL,02HOUT DX,ALJMP CASE5RETURN: POP AXRETCASE1: MOV VOLTAGE,0FHJMP RETURNCASE2: MOV VOLTAGE,0FHJMP RETURN CASE3: MOV VOLTAGE,20H ;2025间风机开始低速转动JMP RETURNCASE4: MOV VOLTAGE,55H ;2530间风机中速转动JMP RETURNcase5: MOV DX,PA_8255 ;超过 30时风机高速转动,此时红灯闪烁MOV AL,0CCH OUT DX,AL CALL DELAYTIMEMOV DX,PA_8255MOV AL,00HOUT DX,ALMOV VOLTAGE,99HJMP RETURN