智仪器设计基础
课
程
设
计
报
学 院:
专业班级: 动化
姓 名:
学 号:
题 目 号: 27
题 目:27 试设计智仪表
实现智数字显示仪表求8位数码显示(4位显示测量值4位显示设定值)4输入钮(功选择数码选择数字增加数字减少)设定限报警(蜂鸣器报警)适配PT100热电阻测温范围0℃~300℃采例控制晶闸脉宽调制驱动1000W电加热器(电源电压AC220V)
摘
运单片机原理应基51高速学知识做智仪器含微型计算机者微型处理器测量仪器拥数存储运算逻辑判断动化操作等功出现极扩充传统仪器应范围智仪器体积功强功耗低等优势迅速家电器科研单位工业企业中广泛应
传感器取测参量信息转换成电信号滤波干扰送入路模拟开关单片机逐路选通模拟开关输入通道信号逐送入程控增益放器放信号A/D转换器转换成相应脉信号送入单片机中单片机根仪器设定初值进行相应数运算处理(非线性校正等)运算结果转换相应数进行显示印时单片机运算结果存储片FlashROM(闪速存储器)EPROM(电擦存贮器)设定参数进行运算较根运算结果控制求输出相应控制信号(报警装置触发继电器触点等)外智仪器PC机组成分布式测控系统单片机作位机采集种测量信号数通串行通信信息传输位机——PC机PC机进行全局理
通Keil软件编译连接
关键字:A/D转换器 EPROM PC机 STC89C51 铂金属电阻
目录
设计目原理 5
11设计题目目 5
111设计题目 5
112设计目 5
12设计基求 5
13设计原理 6
二.硬件设计 7
11系统原理框图 7
111 STC89C51简介 8
12基模块简介 11
121 Pt100温度测量接口技术 11
122热电阻PT100信号调理电路设计 12
123功率输出电路 12
124 420mA电流输出电路 13
125数码显示指示电路 13
126键电路 15
127报警电路 15
温度超报警限时单片机相应脚输出定频率电蜂鸣器发出响声128载电路 15
129 通信电路 16
1210输出驱动电路 16
1211电源电路 17
1212例控制算法 17
1113热非线性校正算法 18
131基STC89C51单片机实现智测温仪表软件设计 19
132基STC89C51单片机智测温仪表程序框架 21
三.系统流程图 25
四总电路图 26
五体会心 27
六参考文献 27
软件c语言 28
设计目原理
11设计题目目
111设计题目
实现智数字显示仪表求8位数码显示(4位显示测量值4位显示设定值)4输入钮(功选择数码选择数字增加数字减少)设定限报警(蜂鸣器报警)适配PT100热电阻测温范围0℃~300℃采例控制晶闸脉宽调制驱动1000W电加热器(电源电压AC220V)
112设计目
涉智仪表硬件软件设计智仪器课程设计智仪器课程教学重环节根设计智仪表产品课程改革目特选择型智仪表产品作课设题目满足教学需求单片机综合练项综合性专业实践活动目学生学基础理专业知识运具体工程实践中培养学生综合运知识力实际动手力工程实践力
12设计基求
(1)正确理解设计题目查阅资料出正确设计方案画出详细仪表原理框图(功部分方框表示块间实际信号线连接)
互连网收集题目中器件资料例传感器(热偶分度表等)信号调理电路AD转换器单片机继电器电源显示器件等
互连网收集相关单片机显示AD转换显示控制算法等程序
充分研究资料基础出设计方案(选择信号调理电路单片机显示键输入继电器驱动电源等简说明选择理)
(2)Protel99SE软件设计仪表详细原理图
求正确标记元件序号元件数值封装名
(3)设计PCB图
画PCB前应该购买元件元件知道封装尺寸购买元件元件商店测量实际元件尺寸画封装图
(4)熟悉单片机部资源学会ADCSPI接口定时器中断串口IO引脚等模块编程
(5)采C语言开发设计仪表程序
题目求确定仪表需完成务(功)然分编制务程序程序应该说明详细注释
13设计原理
热电阻传感器送电信号测量桥路进行冷端动补偿送入放器面信号进行放时非线性信号校正线性信号线性放信号路A/D转换电路模拟量转换成数字信号进行数字显示路传输调节网络进行规定较运算时输出需控制信号进行工作状态指示
二.硬件设计
11系统原理框图
STC89C51单片机
键
报
警
指示显示
热电阻输入
载
通
信
设计智温度数显表温度监测信号处理输出控制三部分组成系统框图图1示通Pt100热电阻传感器获取绕组温度值信号调理电路处理直接送入控制器AD转换输入端微控制器根信号数设定种控制参数嵌入软件控制规律执行计算处理动显示智仪表数显表测温度范围根前状态输出正常设定线报警等
111 STC89C51简介
STC89C51系列单片机引脚核完全兼容标准8051单片机PDIP40PLCC44PQFP44三种封装形式
Intel公司MCS51单片机基结构图14示该单片机具资源:
(1)8位算术逻辑单元(CPU)
(2)4组32IO口口8引脚单独寻址中P0P2口具址数总线功
(3)两16位定时计数器(简称定时器)
(4)全双工串行通信口
(5)5中断源具两中断优先级
(6)128B置RAM
(7)具64KB寻址数代码区
(8)模块采三总线(址数控制)连接
(9)开放总线接口P0口分时作8位数总线8位址总线P2口作址总线高8位
MCS51单片机处理周期包括12时钟周期(称机器周期)12时钟(机器)周期完成操作例取指令等指令执行时间时钟频率12取倒数果系统时钟12MHz相执行条指令需时间1μs
1IO端口
IO端口0123驱动器锁存器
2存储器部分
RAM:51单片机具128字节片RAM
FLASH:片ROM保存代码等片ROM采FLASH结构存储器构成具ISP功容量型号AT89S51单片机FLASH容量4KB
SP:栈指针
3算术逻辑运算部分
寄存器B:等操作寄存器常保存运算第2操作数
ACC:累加器
TMP1TMP2:暂存器暂时保存数
ALU:8位算术逻辑单元ALU
PSW:程序状态字
4指令处理部分
程序址寄存器:保存程序址
缓器:缓总线数
PC+1:程序计数器加1处理模块
PC:保存条指令址16位址寄存器寻址范围64K
DPTR:双数指针DPTR两8位缓存器(DPHDPL)组成16位缓存器
5时序控制指令寄存部分
定时控制单元:
指令寄存器:保存指令指令译码定时控制单元配合CPU执行种操作
WDT:门狗程序运行时动复位单片机
OSC:时钟振荡器外接石英晶体起组成时钟振荡器
6ISP部分
ISP端口:通该端口PC通信实现系统编程(ISP)
编程逻辑:控制ISP操作
7外围模块部分
该单片机外围模块包括两定时器串行接口4IO口外中断模块
12基模块简介
121 Pt100温度测量接口技术
(1)铂金属热电阻简介
铂金属电阻精度高稳定性具定非线性温度越高电阻变化率越常铂电阻0℃时电阻值分R010ΩR0100ΩR01000Ω等种称Pt10Pt100Pt1000
铂电阻阻值温度间关系呈非线性
Rt R0 ( I +αt +βt2 ) (t0~630℃间)
式中 Rt铂热电阻电阻值单位Ω
R0铂热电阻0℃时电阻值PT100R0 100Ω
α阶温度系数α 3912 ×10 3 (℃)
β二阶温度系数β 6179 ×10 7 (℃)
铂热电阻PT100阻值温度间关系称分度表分度表出温度变化10℃应阻值
温度 ℃
PT100 阻值 Ω
传感两端电压 mV
0
10000
12438
1
10039
1248
50
11940
14779
100
13851
17064
150
15733
19293
200
17586
21468
250
19410
23590
300
21205
25659
122热电阻PT100信号调理电路设计
基PT100传感器测温智测温仪表
试采STC89C51单片机实现智测温仪表求8位数码显示(排4位显示测量值排4位显示设定值)4输入钮(功选择数码选择数值增加数值减少)设定限报警(蜂鸣器报警)值传感器PT100热电阻测温范围0℃~300℃采例 控制晶闸零驱动1000W电加热器(电源电压220VAC)输出温度成正420mA电流远传仪表
题目知该测温仪表需电路模块:
(1)单片机电路(包括单片机系统ADC数码显示键LED灯电源等)
(2)热电阻PT100信号调理电路
(3)4~20mA输出电路加热功率驱动电路
123功率输出电路
晶闸零驱动电路
124 420mA电流输出电路
125数码显示指示电路
A:显示电路
SM1显示热电阻测电加热器实际温度值SM2显示工设计电加热器期温度值数码HC595芯片驱动HC595接SPI通信3接口
B:指示电路
指示电路指示键输入状态D1D2D3D4S1S2S3S4应某键时单片机相应引脚置低电该键相应二极发光
126键电路
4键单片机接线图键作图示单片机引脚输入低电时表示该引脚应键单片机实现相应功
127报警电路
温度超报警限时单片机相应脚输出定频率电蜂鸣器发出响声128载电路
载程序代码SPI接口ISP电缆单片机进行编程
129 通信电路
该模块跳线通信时D0D1口作常规IO口通信时作通信口实现单片机单片机位机通信
1210输出驱动电路
采光控零驱动晶闸进控制电加热器通断电
1211电源电路
1212例控制算法
例控制(P)种控制算法输出量out温度偏差eSVPV成例关系写成数学公式:
out kp * e+out0
式中e测量温度值PV设定温度值SV间偏差Kp例系数out输出量out0应e0时控制量工确定通常取输出控制量
例系数Kp象温度变化示意图
假设例带pb控制量out设偏差值温度设置值伪代码:
ePVSV
kp1pb
outkp*e+out0
if(out>outm)
outoutm
if(out<0)
out0
1113热非线性校正算法
温度范围0~200℃热电阻PT100表格:
unsigned char code R_TABLE[21]{100 11940
13851 15733 175861941021205}
热电阻方法计算测量RX
假设Ri代表应温度Ti热电阻测量热电阻值Rx查表知位(RiTi)[R(i+1)T(i+1)]两标定点间热电阻Rx应温度值Tx式求算法示意图102示
两相邻电阻间差50℃(Ri+1-Ri)50直线斜率
RiRX温度差:
T(Rx-Ri)(50(Ri+1-Ri))*(Rx-Ri)
线性标度变换前提条件传感器输出信号测参数间呈线性关系
Ax 实际测量值(工程量)
A0 次测量仪表限(测量范围值)
Am 次测量仪表限(测量范围值)
N0 仪表限应数字量
Nm仪表限应数字量
Nx 实际测量值应数字量
131基STC89C51单片机实现智测温仪表软件设计
(1)初始化务
IO引脚初始化(钮LED灯ADCDACE2PROMSPI引脚初始化)
定时器0初始化
中断初始化
(2)钮务:检测钮执行钮动作需软件消抖动
功选择钮:循环选择功例正常运行设置报警限值设置报警限值设置温度定值设置例控制回差值等功数值设置状态次钮排4位数码显示功码排显示设置值正常运行状态排显示测量值排显示设定温度值
数码选择钮:选择需设置数值数码
数值增加钮:设置数值增加次数值加1
数值减少钮:设置数值减少次数值减1
钮设置值应该时保存24C02中
(3)扫描显示务:数码位选择段码输出显示缓区容发送数码显示显示数组合成数组转换成十进制数字发送74HC595需程序循环发送显示务定时器0中断中设置显示务执行标记标记1时执行显示务显示容钮选择功功选择钮务中应该出显示控制标记控制显示容
(4)TLC1549数获取务需读TLC1549程序写成函数定时器0中设置ADC务执行标记该标记1时执行ADC数获取务求连续读取8数然取均值完成滤波数存入显示数组
(5)24C02读写务需编制读写24C02函数单片机软件控制引脚实现I2C接口电时应该读出保存24C02中数数组中设置种数时应该时设置数字节写入24C02
(6)TLC5615务该务温度转换成代表电流数字写入TLC5615实现电流输出该务定时器0出标记控制执行
(7)定时器0中断务该务产生间隔定时信号ADC转换扫描显示DAC输出采样周期数计算等需定时器0出标记标记1时执行务
(8)数处理务
①TLC1549输出数字通标度变换转成温度值PT100电阻值温度间呈非线性需查表法矫正
②具回差例控制算法实现根温度值控制晶闸接触器电失电加热器加热加热谓回差例控制温度达超设定值时停止加热温度低设定值时开始加热回差例控制两设定值测温度高设定值时停止加热低设定值时开始加热设定值间温度差称回差回差例控制防止接触器频繁动作
③实现报警算法限报警限报警分出报警声
④计算TLC5615需数字温度值转换成电流值
132基STC89C51单片机智测温仪表程序框架
基STC89C51单片机智测温仪表程序框架
#include
定义数码译码数组
定义数码位选数组
定义保存24C02中数数组
定义时间标记变量 display_timesample_timecontrol_timeDAC_time等
定义全局数组变量
声明函数原型(TLC1549TLC561524C02等函数)
void main(void)
{
定时器初始化
引脚初始化 钮LED灯ADCDACE2PROM软件SPI引脚初始化
初始化语句
24C02读数组语句保存数读数组次单片机电该数组中数
while(1)
{
键处理语句
{
功选择控制周期设定值回差值报警值等输入
数组写入24C02语句 键输入数保存数组
}
数码显示语句:
if(display_time 1) 果显示标记display_time1执行显示务完成位数码显示
{
数码扫描显示语句采两片74HC595扫描数码
display_time 0
}
ADC转换数字滤波语句:
if(sample_time 1) 果数采样标记sample_time1执行ADC转换务
{
TLC1549转换数字滤波非线性校正程序
sample_time 0
}
ADC输出数值判断报警例算法运算控制量输出:
if (control_time 1) 果控制周期标记control_time1实现控制算法
{
温度值判断报警语句
例算法运算语句
控制量输出语句(引脚赋值语句)
control_time0
}
DAC转换语句:
if (DAC_time 1) 果DAC转换标记DAC_time1数写入DAC
{
TLC5615数输出语句
DAC_time0
}
}
定时器0中断服务程序产生显示ADC转换控制周期标记
void Timer0() interrupt 1
{
static unsigned char nmkh
n++ m++k++h++
if(n display_time0) display_time0显示周期
{n0 display_time1
}
if(m sample_time0) sample_time0ADC转换周期
{m0 sample_time1
}
if(k control_time0) control_time0控制周期
{k0 control_time1
}
if(h DAC_time0) DAC_time0DAC转换周期
{h0 DAC_time1
}
}
三.系统流程图
初始化
开始
AD转换程序
滤波程序
数值转换
报警
数码输出
控制输出
数码转换
四总电路图
五体会心
设计实现温度测量达设计求时具备定扩展性通简单软件修改实现温度限控制越限报警功次设计更加深刻认知智仪表控制现代仪表控制中实性重性学中加智仪表设计学课设中认知整系统结构紧凑简单操作灵活功强性价格高较满足现代生产科研需
六参考文献
单片机原理应 夏路易
单片机初级教程 张迎新杜樊桂花等
智仪器设计基础 赵新民王祈
传感器单片机接口实例 清民
微型计算机原理应 侯晓霞王建宇戴跃伟
测控电路设计 周严
软件c语言
#include < AT89X51h > Atmega16单片机头文件
#include
Flash unsigned char SHUMA[]{0xC00xF90xA40XB00x990x92 0x820xF80x800x900x880x830xC60xA10x860x8E}定义数码译码数组
定义数码位选数组
{
SPI初始化
Void SPI_MasterInit(void)
{DDRB|(1〈〈5)|(1〈〈7)
SPCR(1〈〈6)|(1〈〈4) |(1〈〈5)|(1〈〈1)| (1〈〈0)
}
Void SPI_595_Out(unsigned char i)
{SPDRi
While(SPDR&(1<<7))){}
}
Void main(void)
{unsigned char saomiao0
Unsigned char w[10]
DDRA0x00
PORTA0X00
DDRB0XB0
PORTB0Xff
DDRC0XFC
PORTC0XFF
PORTD0X00
DDRD0XFF
SPI_Masterlnit()
While(1)
{{data[0]1234data[1]5678
W[0]data[0]50
W[1]data[0]5050
W[2]data[0]10050
W[3]data[0]100050
W[4]data[0]50
W[5]data[0]5050
W[6]data[0]10050
W[1]data[0]100050
}
PORTB&~(1<<4)
SPI_595_Out(weizhi[saomiao])
SPI_595_Out(disp[w[saomiao]]
PORTB|(1<<4)
saomiao++
if(saomiao>8
saomiao0
while(1)
{uchar j0
uint i
DDAR0xFF
DDRB0XFF
PORTD0XFF
DDRD0X00
While(1)
{if((PIND|0XEE)0XEF)
For(i0i<1000i++)
If((PIND|0XEF)0XEF)
{j++
If(j>99)j0
}
While(PIND|0XEF)0XEF)
PORTBSHUMA[j50]
PORTCSHUMA[j50]
PORTA~j
}}
{while(1)
PORTCSHUMA[counter]
}
数码LED灯显示语句:
if(display_time 1) 果显示标记display_time1执行显示务完成位数码显示
{
数码扫描显示语句采两片74HC595扫描数码
display_time 0
}
ADC转换数字滤波语句:
if(sample_time 1)
{ADC转换数字滤波非线性校正程序
sample_time 0
}
ADC输出数值判断报警位式算法运算控制量输出:
if (control_time 1)
{温度值判断报警语句
具例算法运算语句:
{Error SetPoint – temp_value 求偏差
LastError Error
outProportion*Error 例算法
}
control_time0
}
DAC转换语句:
if (DAC_time 1)
{DAC数输出语句
DAC_time0
}
}
PCA0中断服务程序产生PWM输出(高优先级中断)
void PCA0_ISR (void) interrupt 11 定时器0溢出作时钟源
{PWM输出语句
unsigned int duty 定义占空变量5000μs应5V1000μs应1V
TMOD0X10 定时器1工作模式116位定时模式
TH1(655361000)256 定时1初始化
TL1 (655361000)256
ET11 允许定时器1中断
EA1 允许总中断
TR11 启动定时器1
}
定时器1中断服务程序产生显示ADC转换DAC控制周期等标记
定时器1中断服务程序:
timer1() interrupt 3
{ static bit w 定义位变量
if(w0) w0时P20输出低电
TL1 (65535(6000duty))256
P2_00} 里P20引脚输出PWM信号
else
{TH1(65535duty)256 定时器1赋初值(高电区间)
TL1 (65535duty)256
P2_01 w0时P20输出高电
}
ww
}
设置定时器1中断级低PCA
void timer1() interrupt 3
{static nmkh
n++ m++k++h++
if(n display_time0) display_time0显示周期
{n0 display_time1
}
if(m sample_time0) sample_time0ADC转换周期
{m0 sample_time1
}
if(k control_time0) control_time0控制周期
{k0 control_time1}
if(h DAC_time0) DAC_time0控制周期
{h0 DAC_time1}}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档