1、硬件课程设计模拟温度控制硬 件 课 程 设 计(C语言)姓 名: 赵 都 督 学 号:_08143086_班 级:计算机科学与技术14-02班题 目:室内环境监控 指导老师: 张 莉中国矿业大学计算机科学与技术学院摘 要温度是生产生活中最基本的物理量之一,它反映出了物体的冷热程度,在自然界中有很多的物理、化学过程都与温度有着紧密的联系。目前随着信息技术的发展,传感器技术的广泛应用,温度的测量与控制已向自动化、智能化的方向发展。数字温度计相对于传统的温度计有读书更为方便且准确的优点。目前,在很多生产过程中,温度的测量和控制都直接和安全生产、提高生产效率、节约能源等重大技术指标密切联系。所以,温度
2、的测量与控制在生产生活的各个领域中都受到了高度的重视。在许多情况下,在实际生活生产活动要考虑温度的影响 和对温度的精确控制,如食物的存储、自动控制的空调和房屋防火装置等。因为集成电路制造技术的不断提高,出现了高性能、高可靠的集成芯片。温度控制系统在工业领域得到了广泛的应用。温度控制系统在性能方面具有精度高,实时性好,易于测量环境温度并控制。而且,温度控制系统在很大程度上节约了人力资源,改善了传统温度测量的繁琐和效率低。这些使得温度控制系统的研究和开发得到的各方面的广泛关注和支持。关键词:温度控制;8255芯片;AD0809;DA0832;模数转换;红外线传感器;LCD液晶显示器 1设计任务与要
3、求1.1 选题报告这次所选择的实验是温度控制实验,要求利用可编程并行接口元件8255A,模数转换器AD0809,数模转换器DA0832,直流电机,红外线传感器模拟环境温度和人数统计。1.2 提出问题1) 如何实时反映外部温度的变化?2) 如何将模拟量转变成数字量?3) 如何将采集到的数据显示在液晶显示器上?2需求分析 目前在很多领域的一些特殊地方,对环境的要求非常苛刻,要有严格的控制,例如,在一个大企业的计算机数据中心,它们的温度有严格限制范围,这就需要一个可靠地温度控制系统时刻监管着环境的温度,因此各种各样的温度控制系统孕育而生。利用微机接口技术实验系统设计制作一个温度控制系统。由于硬件条件
4、有限,所以只能实现上下限温度的控制,要求是能够利用实验箱中的LCD液晶屏显示实时温度,同时当温度高于上限温度时,启动直流电机模拟散热系。当温度低于下限温度时,启动继电器模拟加热系统。实现的功能与流程如下所述:2.1 设计思想 该温度控制系统设计的思想是通过一个模拟温度变化的感应设备,将检测到的模拟温度转换成数据保存起来,并用相应传感器对室内人数进行统计,执行相应的控制设备,同时还将检测到的温度数据和人数数据显示在LCD液晶屏上。2.1.1模拟温度要求(1)实时反映外部温度的变化;(2)将采集到的温度数据显示在LCD液晶显示屏上;(3)将采集到的人数显示在LCD液晶显示屏上;当人数高于设置的人数
5、上限时, 自动启动直流电机模拟散热;3硬件方案3.1 设备器材硬件课程设计实践TPC-ZK实验箱一个PC电脑一台,红外线传感器一台3.2 硬件的选择以及芯片说明3.2.1系统所需硬件设计所需芯片:8255A、AD0809、DA0832所需设备:LCD液晶显示器、直流电机、红外线传感器。将8255A的A口与LCD液晶屏的八为数据口相连,对8255A进行初始化编程,控制LCD液晶屏显示,8255A的B口的PB0口作为输入接受传感器的输入。将AD0809的IN0、IN1与电位器相连,编程启动AD0809实时采集外部温度变化的数据。将DA0832的Ua口与直流电机相连,编程启动AD0832,对直流电机
6、的控制。 3.2.2 8255A芯片介绍 图3-1 8255A引脚图 图3-2 8255A内部电路图图3-3 方式选择控制字格式图引脚功能:(只记述用到的引脚)CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C
7、可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。3.2.3 AD0809芯片介绍图3-4 AD0809引脚信号图(1)主要特性1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100s(时钟为640kHz时),130s(时钟为500kHz时) 4)单个+5V电源供电 5)模拟输入电压范围0+5V,不需零点和满刻度校准。 6)工作温度范围为-40+85摄氏度7)低功耗,约15mW。(2)内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如
8、图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。IN0IN7:8路模拟量输入端。2-12-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC:A/D转换结束信号,输出,当A/D转换结束时,此端
9、输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。REF(+)、REF(-):基准电压。Vcc:电源,单一+5V。GND:地。实验连线图 图3-5 AD0809引脚及连线图(3)工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D
10、转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 (EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受3.2.3 AD0832芯片介绍 图3-6 DA0832引脚信号图(1)主要特性: DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。运算放大器输出
11、的模拟量V0为: 图3-7 DA0832内部运算放大器电路 1)特点: 一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。 D0D7:数字信号输入端。 ILE:输入寄存器允许,高电平有效。 CS:片选信号,低电平有效。 WR1:写信号1,低电平有效。 XFER:传送控制信号,低电平有效。 WR2:写信号2,低电平有效。 IOUT1、IOUT2:DAC电流输出端。 Rfb:是集成在片内的外接运放的反馈电阻。 Vref:基准电压(-10
12、10V)。 Vcc:是源电压(+5+15V)。 AGND:模拟地 NGND:数字地,可与AGND接在一起使用。 DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。实验线路如图 图3-8 DA0832内部电路 IN0IN7:8路模拟信号输入端。 A1、A2、A0 :地址输入端。ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。 START:启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。 EOC:转换结束输出信号(转换
13、接受标志),高电平有效。 OE:输入允许信号,高电平有效。 CLOCK(CP):时钟信号输入端,外接时钟频率一般为640kHz。 Vcc:+5V单电源供电。 、 Vref(+),Vref(-):基准电压的正极、负极。一般Vref(+)接+5V电源,Vref(-)接地。 D7D0:数字信号输出端。 由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。3.3 硬件电路 图3-9 实验硬件电路连接图3.4 实验连线图 图3-10 温度控制实验连线图3.4.1硬件连接图描述:8255A引脚接线: CS -288H-28BHA口:PA0-PA7 -LCD液晶屏八位数据口B口:PB0
14、 红外线传感器C口:PC0 -液晶屏的D/I口 PC1-液晶屏的RW口PC2- -液晶屏的E口 AD0809引脚接线CS -298H IN0 -电位器 DA0832引脚接线 CS-280H Ua-直流电机 4软件方案4.1 功能模块图4-1 软件功能模块图4.2 系统各模块程序流程图4.2.1 8255初始化模块: 8255A的初始化: 图4-2 8255初始化流程图4.2.2人数过多启动直流电机模块:启动直流电机 4.2.5显示程序模块:液晶屏显示5源程序清单和注释 #include #include #include ApiExusb.h#pragma comment(lib,ApiExu
15、sb.lib)char num10=0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39;/GBK 温CEC2 度B6C8 :A3BA 数字0-9的GBK编码void clear();void cmdsetup();void datasetup();void main() int b; int x=0; int p=0; byte data;/温度数据 byte data1;/人数数据 float temperature;/温度 char out16;/存放温度信息的字符串 char pout16;/存放人数信息的字符串 int
16、temp ; printf(Press any key to begin!nn); getch(); if(!Startup() /*打开设备*/ printf(ERROR: Open Device Error!n); return; PortWriteByte(0x28b,0x82);/55为方式0,C口输出,A口输出,B口输入 clear(); PortWriteByte(0x288,0x90); cmdsetup(); Sleep(10);while(!kbhit() PortWriteByte(0x298, 0x00);/ 初始化AD0809 Sleep(10); PortWriteB
17、yte(0x288,0x90);/重定位LCD显示 cmdsetup(); PortReadByte(0x298, &data);/AD0809 转化为数字量存入data中 temperature = 20.0 + 5.0 * data / 255.0; temp=(int)(temperature * 100);/类型转换 int w1, w2, w3, w4; w1 = temp / 1000;/分位操作 w2 = temp %1000 / 100;/分位操作 w3 = temp% 100 / 10;/分位操作 w4 = temp % 10;/分位操作 out0 = 0xce, out1
18、= 0xc2;/温 out2 = 0xb6, out3 = 0xc8;/度 out4 = 0xa3, out5 = 0xba;/: out6 = numw1+1, out7 =numw2+1; out8 = 0x2e, out9 = numw3+1, out10 = numw4+1; for (int j=0;j11; j+) PortWriteByte(0x288,outj);/LED屏显示当前温度 datasetup(); PortWriteByte(0x288,0x88); cmdsetup(); Sleep(10);PortWriteByte(0x289,0x00);/8255清零Po
19、rtReadByte(0x289,&data1);/红外线传感器将采集到的信号输入给 8255B口b=data1;if(b!=0)x=1;if(b=0&x=1)p+;x=0;/传感采集过程中的停顿标志 int v1,v2,v3; v1 = p / 100;/分位操作 v2 = p% 100 / 10;/分位操作 v3 = p% 10;/分位操作 pout0 = 0xB5, pout1 = 0xB1;/当 pout2 = 0xC7, pout3 = 0xB0;/前 pout4 = 0xC8, pout5 = 0xCB;/人 pout6 = 0xCA, pout7 = 0xFD;/数 pout8
20、= 0xA3, pout9 = 0xBA;/: pout10 = numv1; pout11 = numv2; pout12 = numv3; for (int i=0;i 30) PortWriteByte(0x280, 0xff); /0832置为0xff 控制电机转动,人数大于上限30时转动 Cleanup(); /*关闭设备*/void clear() PortWriteByte(0x288,0x0c); cmdsetup();void cmdsetup() PortWriteByte(0x28a,0x00); Sleep(1); PortWriteByte(0x28a,0x04);
21、Sleep(1); PortWriteByte(0x28a,0x00); Sleep(1); void datasetup() PortWriteByte(0x28a,0x01); Sleep(1); PortWriteByte(0x28a,0x05); Sleep(1); PortWriteByte(0x28a,0x01); Sleep(1); 6运行结果 注:1)温度:36.11 2)人数:016 图6-1 结果图 7结论结论:本次模拟温度控制实验所设计的芯片有8255A,AD0809,DA0832,红外线传感器,LCD液晶显示屏,直流电机,导线若干。实验的设计思路是通过电位器模拟温度变化
22、,AD0809不断地采集模拟电压,然后转换成数字量保存在数据区的一个单元里,再利用红外线传感器采集相应信号作为人数信息,经过人数判断然后依次调用电机子程序,直流电机做出反应,接下来调用数据分离子程序使A采集到的数据量分离成对应的个,十,百位,并将其存入数据区,然后调用显示子程序在LCD液晶屏上显示相应的温度信息。1) 温度的模拟量是以AD0809获得的;2) 人数是由红外线传感器模拟获得的;3) LCD液晶屏是以芯片8255A来控制的;4) 直流电机是以芯片DA0832来控制的8设计体会体会: 通过本次硬件课程设计的学习,我对计算机微机原理与接口这门课有了新的认识,以前学习这门课的时候只是书面
23、作业没有做过相关实验,这就从根本是导致了我对这门课的学习仅仅处于理论范围,本次实践课程的学习,让我对0809,0832,8255,8253等芯片有了更深的认识,搞清楚了他们的工作原理,这对于我以后的学习帮助很大!在本次课程设计,我学会了独立思考学会了如何与同学交流学习 共同协作,计算机软件设计是一项庞大的工程,只有团队间密切的配合才能创造出好的产品。还加强了我的编程能力。我相信在以后的学习中,硬件课程设计肯定能带给我很大好处!参考文献1 周荷琴、冯焕清编著.微型计算机原理与接口技术.中国科学技术大学出版社:第5版2微机原理及接口技术.赵志诚,段中兴.清华大学出版社.第二版 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1