C51温度采集与控制实验

上传人:woxinch****an2018 文档编号:38630903 上传时间:2018-05-05 格式:DOC 页数:20 大小:9.32MB
返回 下载 相关 举报
C51温度采集与控制实验_第1页
第1页 / 共20页
C51温度采集与控制实验_第2页
第2页 / 共20页
C51温度采集与控制实验_第3页
第3页 / 共20页
C51温度采集与控制实验_第4页
第4页 / 共20页
C51温度采集与控制实验_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C51温度采集与控制实验》由会员分享,可在线阅读,更多相关《C51温度采集与控制实验(20页珍藏版)》请在金锄头文库上搜索。

1、 电子科技大学 学院 实 验 报 告 实验名称 现代电子技术综合实验 姓名: 学号: 评分: 教师签字 电子科技大学教务处制温度采集控制的设计与实现 2 电 子 科 技 大 学 实 验 报 告 学生姓名: 学号: 指导教师: 实验地点: 331 实验时间:(双周)周二9、10、11节 一、 实验室名称: 电子技术综合实验室 二、 实验项目名称:温度采集控制的设计与实现 三、 实验学时: 32 四、 实验目的与任务: 1、 熟悉系统设计与实现原理 2、 掌握KEIL C51的基本使用方法 3、 熟悉SMART SOPC实验箱的应用 4、 连接电路,编程调试,实现各部分的功能 5、 完成系统软件的

2、编写与调试 五、 实验器材 1、 PC机一台 2、 示波器、SMART SOPC实验箱一套 六、 实验原理、步骤及内容 1、 数码管动态扫描原理 七段式LED数码管是常见的电子设备显示器件,能够显示数字09以及字 母a f,外加一个小数点,作为第八段。 数码管有静态和动态之分,每一类又有共阳和共阴之分。静态数码管驱动 方法简单、亮度高,但是连线比较多,而动态数码管常常以多位联体的形式提 供,连线较少,但是要用动态扫描的方法驱动,为了获得足够的亮度,限流电温度采集控制的设计与实现 3 阻取值常常比较小。 动态数码管扫描的具体过程如下,先把第1个数码管的显示数据送到 abcdefg和dp,同时选通

3、com1,而其它数码管的com信号禁止;延时一段时 间(通常不超过10ms),再把第2个数码管的显示数据送到abcdefg和dp,同 时选通com2,而其它数码管的comd信号禁止;延时一段时间,再显示下一 个。当扫描整个数码管的频率应当保证在50Hz以上时,就不会看到明显的闪 烁,肉眼 观察,看上去是一起亮的。原理图如下: 图 1 数码管的动态扫描原理图 2、 蜂鸣器工作原理 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动 膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小, 单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大 的电路。原理

4、图见图: 图 2 蜂鸣器的原理图 如图2所示,蜂鸣器的负极经电阻R3接地,蜂鸣器的正极接到三极管的温度采集控制的设计与实现 4 集电极C,三极管的基级B经过限流电阻R2后由单片机的P1.3引脚控制,当 P1.3输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不发声;当 P1.3输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。 因此,我们可以通过程序控制P1.3脚的电平来使蜂鸣器发出声音和关闭。程 序中改变单片机P1.3引脚输出波形的频率,就可以调整控制蜂鸣器音调,产 生各种不同音色、音调的声音。另外,改变P1.3输出电平的高低电平占空比, 则可以控制蜂鸣器的声音大小。 3、

5、 I2C工作原理 1)I2C总线概述 I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需 的包括总线裁决和高低速器件同步功能的高性能串行总线。 2)I2C信号线 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到 总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA 及SCL都是线“与”关系。 图 3 I2C总线框图 3)I2C总线的数据传送 a)数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必 须保持稳定,只有在时钟线上的信号为低电

6、平期间,数据线上的高电平或 低电平状态才允许变化。 图 4 SDA与SCL的工作时序图 温度采集控制的设计与实现 5 b) 起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号 SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起 始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的 状态;在终止信号产生后,总线就处于空闲状态。 c) I2C总线的数据传送速率 I2C总线的通信速率受主机控制,能快能慢,最高速率限制为100Kb/s d) I2C总线的数据传送格式 主机向从机发送数据 从机向主机发送数据 图 5 I2C总线的数据传送格式

7、S:起始位 SA: 从机地址,7位 W/:写标志位,1位 R:读标志位,1位 A:应答位,1位 A/:非应答位,1位 D:数据,8位 P:停止位 阴影:主机产生的信号 无阴影:从机产生的信号 4)总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号 后的第一个字节)。 寻址字节的位定义 D7D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机 向从机写数据,为“1”时表示主机由从机读数据。 温度采集控制的设计与实现 6 主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行 比较,如果相同,则认为自己正被主机寻址,根据R/位将自己确定为发送器或

8、接收器。 从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多 个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。 如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8 个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。 4、 LM75特征及应用 LM75A是一个使用了内置带隙温度传感器和模数转换技术的温度-数字转换器I2C 总线接口。工作温度范围-55oC+125 oC,精度可达0.125 oC。 LM75A可设置成工作在两种模式:正常工作模式或关断模式。在正常工作模 式中,每隔100ms执行一次温度-数字的转换,Temp寄存器保存

9、着最后一次更新 的结果;但是,在该模式下,器件的I2C接口仍然有效,寄存器读/写操作纠结 执行。器件的工作模式通过配置寄存器可编程位B0业设定。当器件上电或从关 断模式进入正常工作模式时启动温度转换。 LM75A可配置成不同的工作条件。它可设置成在正常工作模式下周期性地对 环境温度进行监控或进入关断模式来将器件功耗降至最低。OS输出有2种可选 的工作模式:OS比较器模式和OS中断模式。OS输出可选择高电平或低电平有 效。 图表 6 LM75A工作原理图 温度寄存器(Temp) Temp寄存器存放着每次A/D转换的或监控到的数字结果。包含2 个8位的 数据字节,由一个高数据字节(MS)和一个低数

10、据字节(LS)组成。其中,只 有11位用来存放分辨率为0.125 oC的Temp数据(以二进制补码数据的形式) 对于正的温度值,D100 T=Temp *0.125oC 对于负的温度值,D101 T=-Temp的补码*0.125oC 温度采集控制的设计与实现 7 LM75A主要应用于系统温度管理、个人计算机、电子设备和工业控制器等地 方,典型应用实例为: 图 7 LM75A典型应用 5、 步进电机驱动原理 步进电机是一种将电脉冲转化为角位位移的执行机构。通俗一点讲: 当步进驱动器接收到一个脉冲从头到尾,它就驱动步进电机按设定的方向转 动一个固定的角度(即步进角)。所以,我们可以通过控制脉冲个数

11、来控制角 位移量,从而达到准确定位的目的,同时也可以通过控制脉冲频率来控制电 机转动的速度和加速度,从而达到调整的目的。本实验中驱动电机的信号仍 由PWM脉冲方波控制。原理图如图8所示。 图 8 步进电机驱动原理图 6、 程序框图 温度采集控制的设计与实现 8 主程序 初始化 SysInit() 开启16位定时器T0 DispInit() 数据管显示初始化 开启中断T1 I2C_Init() I2C总线协议初始化 设定PWM,温度初值 读取温度 显示温度 扫描键盘 判断是否有键按下 +,温度cnt+ 更新DispBuf 设置延时标志flag的值 中断时间到蜂鸣器响0.5s -, 温度cnt-

12、判断k 更新温度值 判断是否有键抬起 扫描键盘 有 无 无 每1ms进入一次中断(T1) 中断服务程序开始 有 更新扫描数据 判断延时标志 flag 为0 ,BUZZER取反 比较cnt与temp,设置 PwmValue值为差的绝对值 若大则致热灯亮 若小则致冷灯亮 相等则送风灯亮 中断服务程序结束 PwmValue的值控制脉冲宽度 tPwmValue PWM = 0 tPWM_MAX t = 0 温度采集控制的设计与实现 9 思考题: 设定温度的按键改用外部中断模式,电路如何修改(画示意图)?程序如何修改,写出中断服务程序。 答:将KEY1与KEY2键通过跳线分别接到INT0与INT1接口上

13、。 开启中断: SysInit() EA=0; /禁止总中断 EX1=1; /使能/INT1中断 EX0=1; /使能/INT0中断 EA1; /使能总中断 中断服务程序: void INT0SVC () interrupt 0 if(cnt=17) cnt-; 示意图 七、 总结及心得体会 通过本实验课程,我对中断和定时有了较深入的了解,对单片机的 认识也 进一步的提高。在编程的过程中,遇到了一些问题,本质原因是因为对单片机的认识不足,对工作机理不清楚,望文生义,从而导致一些程序行不通,不过最终还是在老师和同学的帮助下,顺利的完成了实验。我想,对于语言来说,要想机器懂你,就必须遵守规则,所以

14、,先弄懂是怎么运行的,再着手编程,会更顺理成章一点。 八、 对本实验过程及方法、手段的改进建议 无 九、 附录 1、 学号+秒表+按键+电机的程序 2、 温度采集控制(数码管+直流电机)程序 温度采集控制的设计与实现 10 附录1:学号+秒表+按键+电机的程序 /* main.c 加减计数器 */ #include #include #include /定义按键 sbit KEY1 = P20; /按键1 sbit KEY2 = P21; /按键2 sbit BUZZER = P32; sbit PWM =P33; /定义PWM最大级数 #define PWM_MAX 50 /定义PWM级数,

15、分为0PWM_MAX-1级 unsigned char cnt = 18; /定义计数器变量 int flag=1; unsigned char PwmValue; unsigned char sec = 0; unsigned int count = 998; code unsigned char Tab = /定义0123456789AbCdEF的数码管字型数据 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F ; unsigned char DispBuf8; /* 函数:KeyScan() 功能:键盘扫描 返回:扫描到的键值 */ unsigned char KeyScan() unsigned char k = 0; if ( KEY1 = 0 ) k = +; if ( KEY2 = 0 ) k = -; return k; 温度采集控制的设计与实现 11 /* 函数:T1INTSVC() 功能:定时器T1的中断服务函数 */ void T1INTSVC() interrupt 3 code unsigned char com = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; static u

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号