《智能仪表设计实验》
报告
小组成员: 实验时间: 建筑工程学院 建筑环境与设备工程专业
0
一 实验目的
1. 了解智能仪表的原理、组成、功能,加深对智能仪表结构、设计方法的认识。 2. 加深对生产过程控制系统的认识,掌握DDC设计方法。
3. 掌握MCS—51硬件电路的设计和软件编程方法,熟悉C51的编程调试。 4. 了解PID算法及其参数整定方法,加深对控制过程的理解。 5. 培养独立工作能力和相互间协调工作能力。
二 实验装置
装置 Insight ME-52仿真器 计算机 万用表 数量 1套 1台 1只 装置 风机盘管自控实验台 温度计 多用插座 数量 1套 1支 1个
三 实验原理及性能指标要求
1.实验原理
设计一控制系统,将风机盘管的送风温度控制在某一设定值。系统利用PT100的温度特性,转变成电压信号(0~5V),经A/D转换后变成数字量,传送给单片机MCS-51,经过数据处理和PID算法计算得控制量,控制固态继电器的闭合时间,从而控制送风温度。在完成基本控制回路的基础上,加入键盘显示功能,形成一个简单的智能化仪表。
2.系统框图 S+MC脉宽A
固态继热敏电阻线性化电T 1
实验一
采用12MHz晶振,在P1.0脚上输出周期为3s,占空比为50%的脉冲信号。
1.步骤
<1>计算定时器初值及相关参数。
对于12Hz晶振,机器周期为12*1/12=1us 定时器1工作方式1,定时30ms,设计数初值为x
16316则2-x?1us=30?10us,所以x=2-30000
??1616所以,TH0=2-30000/256,TL0=2-30000%6
????周期为3s,则中断100次,占空比为50%,高电平为50次中断 <2>编写程序
中断服务程序:定义一个定时器0工作方式1的中断服务程序,起名为timer?1616定时器高八位赋初值2-30000/256,低八位赋初值2-30000%6
?,给
????主函数:T/C0工作方式为仅受TR0控制的16位定时器,所以TMOD=0x01,给定时器高八位和低八位赋初值。中断的允许受两级控制,所以要定义CPU开中断和定时器中断源开中断,最后设置开始计时。
<3>观察实验现象
程序编写无误,正常运行后,每3秒,加热指示灯亮一次。
2.程序
# include
sbit P1_0=P1^0; /*加热信号受P1.0管脚控制*/ uchar period=100; /*定义周期中断次数*/ timer0() interrupt 1 using 1 { /*中断服务程序*/ TH0=(65536-30000)/256; /*重载计数初值*/ TL0=(65536-30000)%6;
if(++time==high)P1=0; /*高电平时间到变低*/ else if (time==period) { /*周期时间到变高*/ time=0; P1=1;}} main(){
TMOD=0x01; /*定时器0方式1*/ TH0=(65536-30000)/256; /*预置计数初值*/ TL0=(65536-30000)%6;
EA=1; /*开CPU中断*/
2
ET0=1; /*开T/C0中断*/ TR0=1; do{
if(time==high) P1_0=0;
if(time==period) P1_0=1;
} while(1); } /*占空比50%*/
3.流程图
中断程序 开始 重载计数初值TH0/TL0 ++time>=high N Y P1=0 time==period N Y time=0; P1=1; 结束 主函数 开始 预置计数初值; 开中断; time==high Y P1_0=0 N time==period N Y P1_0=1
3
4.问题
1.大小写问题
在编写程序的过程中,由于粗心大意出现的将大小写混淆的情况。如,错将P1^0错写成p1^0,再如前边定义了变量P_0后边却写成了p1_0,致使出现了为定义变量的情况。
2.占空比概念不清晰
要求占空比50%,但学习时未对一些基本概念做比较清楚的了解,导致主程序编写的时候出现思路混乱。
4