智能仪器设计

智能仪器课程设计

报 告 书

题目号:22

题目:智能数字显示仪表设计 班级:自动化XXX 学号:XXX 姓名:XX

2012年12月

摘要

智能仪表是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。它的出现,极大的扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、低功耗等优势,迅速的在家用电器、科研单位和工业企业中得到了广泛的使用。

智能电子系统,其单片机硬件部分都是相似的,一般是由如下硬件电路组成: 单片机最小系统(单片机、电源、晶振、复位、编程调试接口等)。开关量输入与输出电路。模数与数模转换电路。通信接口(UART(SCI)、SPI、I2C(SMBus)、CAN、USB、TCP/IP、ZigBee等)。显示电路(LED数码管、LCD等)。控制电路(继电器、晶闸管等功率输出电路)。

而软件部分就是使单片机中运行的程序(算法),程序通过单片机与单片机的引脚指挥各个硬件电路部分,进而控制各种各样的对象,实现对象控制的自动化与智能化。

单片机技术的落脚点就是实现电子系统智能化,换句话说,就是开发控制各种对象的智能电子产品。本课程设计以工业控制中使用的温度监测智能仪表为例,介绍单片机在电子系统智能化方面的应用。

一、 设计的目的和原理

设计题目:

实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配E型(镍铬-铜镍)热电偶,测温范围为0℃~700℃。采用比例控制、并用晶闸管移相驱动1000W电加热器(电源电压为AC220V)。

设计目的:

单片机综合练习是一项综合性的专业实践,目的是让学生在所学知识的基础上,结合工程实际,加以消化和巩固,培养学生的综合运用知识的能力、动手实际的能力和工程实践能力,为以后的工作实践打好良好的基础。

设计原理:

由热电偶送来的电信号一方面通过AD转换成数字信号供单片机处理后进行数字显示,另一方面传输到调节器比较运算,输出一个需要的控制信号与给定匹配。

二、 硬件设计

本设计采用STC89C51单片机实现智能测温仪表。由题目可知,该测温仪表需要如下电路模块:

(1)单片机电路(包括单片机最小系统、ADC、数码显示、按键、LED灯、电源等)。

(2)E型(镍铬-铜镍)热电偶信号调理电路 (3)加热功率驱动电路。

原理框图:

智能仪表单片机电路由STC89C51单片机电路、按钮、数码管、LED显示、串行通讯口、电源、ADC、DAC、E2PROM、热电偶、功率输出等电路组成。

控制板面图:

上排数码管显示设定值,下排数码管显示测量值。第一个按钮选择功能设置,第二个数码管选择,第三个数值加,第四个数值减。四个LED显示灯显示系统的各个运行状态。

基本电路模块:

总框图

单片机最小系统:

STC89C51单片机最小系统包含51单片机、晶振电路、复位电路、电源电路。单片机可采用11.0592MHz或12MHz的晶振,外置电源可以采用市售开关电源12V直流,稳压模块采用7805芯片,采用单片机上电复位的方式,还有上电指示灯。

蜂鸣器电路:

NPN型三极管驱动蜂鸣器产生报警提示,单片机P1.6口控制

串行存储器电路:

串行存储器芯片24C02用于保存设定值。该芯片具有I2C接口,连接单片机P0.0与P0.1引脚,采用软件方法模拟I2C接口。

数码管电路:

NPN型三极管驱动蜂鸣器产生报警提示,单片机P1.6口控制

串行存储器电路:

串行存储器芯片24C02用于保存设定值。该芯片具有I2C接口,连接单片机P0.0与P0.1引脚,采用软件方法模拟I2C接口。

数码管电路:

具有两排各四个数码管显示,采用四位一体数码管,分别显示测量值和设定值,数码管由2块74HC595串入并出锁存器驱动,因此只需要3个单片机引脚,采用动态扫描数码管驱动法。

按键电路:

根据需要接按键于单片机相关引脚上,低电平有效。可用作功能选择按钮、数值加一按钮、数值减一按钮等。

LED电路:

LED显示灯用于显示报警、动作等,直接连接到单片机相关引脚,低电平有效。

ADC电路:

由于51单片机内部没有AD资源,因此扩展了10位ADC芯片TLC1549,TLC1549与单片机的P1.0、P1.1、P1.2引脚连接,连接器J1用于模拟信号的输入。

DAC电路:

同样,系统扩展了DAC芯片TLC5615,该芯片采用+5V模拟电压分压作为参考电压,DAC输出范围可达0.25~4.75V,单片机采用3个引脚与该芯片连接,软件模拟芯片时序,将数据输出到TLC5615.

通讯电路:

使用MAX232组成电平变换电路,可以实现在系统编程(ISP)或实现单片机与PC机之间的通讯。P3.0与P3.1连接有交叉 开关,可以实现端口复用。

热电偶调理电路:

E型热电偶信号调理电路如上图所示。

镍铬—铜镍热电偶、压簧固定式热电偶,

工业用装配式热电偶作为测量温度的传感器,通常和显示仪表、记录仪表和电子调节器配套使用。它可以直接测量各种生产过程中从0℃~1800℃范围内的液体、蒸汽和气体介质以及固体的表面温度。

分度表:

该电路利用1N4148的负温度系数实现热电偶冷端补偿。为保证0℃时输出电压为0V,电路中采用了负电源。第一个运放组成的电路实现冷端温度补偿,其中RP0调节电路零点,由于二极管在反馈通路中,运放输出电压随温度升高而上升,温度系数为2mV/℃,经过R5与R6分压后的温度系数为0.017mV/℃,正好与R13热电偶温度系数近似。第二个运放用于信号方法,发达倍数约为160。74HC14组成的多谐振荡器、二极管和电容构成负电源电路,该电路向LM258提供负电源。

0℃~700℃对应线性输出0~1.9V。

电加热器电路:

单片机引脚为低电平时,在交流220V电压移相时,MOC3022触发双向晶闸管接通1000W电加热电源。

控制器方案:

比例控制(P)是一种控制算法,其输出量out与温度偏差e=SV-PV成比例关系,写成数学公式是:

out= kp * e+out0

式中,e是测量温度值PV与设定温度值SV之间的偏差,Kp是比例系数。out是输出量。out0是对应e=0时的控制量,可由人工确定,通常取输出控制量的1/2。

三、 软件设计及注释

软件流程图:

描述了软件算法的执行过程。有开始、有结束,有条件分支选择,有正常判断。下图只是列出执行的整体框架:

程序详单:

#include #define uchar unsigned char #define uint unsigned int #define WDA 0x00 // 定义器件在IIC总线中的地址 uchar duan[ ]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e}; //段码 uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码 uint code value[]={32,64,128,256,384,512,640,768,896,1023}; //数字量 sbit DOUT=P2^5; //数码管引脚定义

sbit CLK=P2^7; sbit LATCH=P2^6; sbit AD_CS = P1^2; //TLC1549的引脚 sbit AD_CLK = P1^1; sbit AD_DAT = P1^0; sbit function = P3^4; //功能选择按钮 sbit shuma = P3^5; //数码管选择按钮 sbit plus = P3^6; //数值增加按钮 sbit subs = P3^7;

sbit led0 = P0^2; sbit led1 = P0^3;

sbit led2 = P0^4; sbit led3 = P0^5; sbit beep=P1^6;

sbit cs = P1^5; sbit din = P1^3;

sbit clk = P1^4; sbit SCL=P0^0; sbit SDA=P0^1;

uchar xs[8];

uchar display_time; uchar sample_time;

uchar sample_time; uchar control_time; uchar DAC_time; uchar display_time0=5; uchar sample_time0=5;

uchar control_time0=5; uchar DAC_time0=5; uchar high; uchar low;

uchar given; uchar K; void LED(uchar X);

void delay()

{

uchar i=4,j=0; for(i=10;i>0;i--)

//数值减少按钮 //LED //蜂鸣器 //TLC5615引脚 //24c02引脚 //数码管显示缓存区 //相关控制变量 //定义其它变量 //数码管函数声明//延时函数

for(j=248;j>0;j--); } void set() { uint i,j; if(shuma==0) //数码管选择按钮按下

delay(); if(shuma==0)

{

LED(wei[i++]); if(i==8)

i=4;

} if(plus==0)

delay(); if(plus==0)

{ LED(duan[j++]);

if(j==10)

j=0;

} if(subs==0)

delay();

if(subs==0)

{

LED(duan[j--]);

if(j==-1) j=9;

} }

void set_high()

{

set();

} void set_low()

{

set();

}

void set_given()

{

set();

} void set_K()

{

set();

void LED(uchar X) }

{

uchar i;

//增加按钮按下 //减小按钮按下 //数码管显示函数

for(i=8;i>=1;i--) { //if (X&0x80) P2_5=1; else P2_5=0; //先输出高位 //X>=1; CLK = 0; CLK = 1; }} adc() //读取ADC数据的函数 { uint u=0; uchar i; cs=1; delay(); cs=0; for(i=0;i

SCL=0; SDA=0; SCL=1; SDA=1; }

void NoAck() //发送应答信号ACK {

SDA=1; SCL=1; SCL=0; }

bit TestAck() //测试应答信号ACK {

bit EB; SDA=1; SCL=1; EB=SDA; SCL=0; return(EB); }

write8Bit(uchar input) //写入8个二进制位到24C02 {uchar temp;

for(temp=8;temp!=0;temp--) {SDA=(bit)(input&0x80); SCL=1; SCL=0;

input=input

void write24c02(uchar ch,uchar address) //写入一个字节到24C02中字节地

址的函数

{

start();

write8Bit(WDA); //发送器件地址的函数 TestAck();

write8Bit(address); //发送写入字节地址到24C02的函数 TestAck();

write8Bit(ch); //发送写入数据到24C02的函数 TestAck(); stop(); delay(); }

void main() {

uint count, adc_value, error, lasterror, out, gg=0; TMOD=0x01; //定时器初始化 TH0=0x3C; TL0=0xB0;

ET0=1; EA=0; TR0=1; while(1) {

//按键处理语句

if(function==0) //功能选择按钮按下

delay();

if(function==0) { gg++; if(gg==5) gg=0; switch(gg) { case 0: EA=1;

case 1: EA=0; set_high(); case 2: EA=0; set_low(); case 3: EA=0; set_given(); case 4: EA=0; set_K(); } } set();

write24c02(value[0],0x01); //数码管显示语句 if(display_time==1) {

adc_value=adc(); xs[0]=adc_value%10; xs[1]=adc_value/10%10; xs[2]=adc_value/100%10;

xs[3]=adc_value/1000; xs[4]=5; xs[5]=6; xs[6]=7; xs[7]=8;

LED(wei[count]); LED(duan[xs[count]]); LATCH=0; LATCH=1; count++; if(count==8) count=0; display_time=0;

} //ADCif(sample_time==1)

转换与数字滤波语句

break; break; break; //正常运行 //设置上限值 //设置下限值 break; break; //设置给定值

//设置比例系数值//右面4位显示ADC输出值 测量值 //左面4位备用 设定值 //发送位码 //发送段码

//HC595锁存数据

adc();

sample_time==0; }

//ADC输出数值判断、报警、比例算法与控制量输出 if(control_time==1) {

if(adc_value>high||adc_value

}

beep=0; error=given-adc_value; lasterror=error; out=K*error; control_time==0;

} //DAC if(DAC_time==1) 转换语句

{

dac();

DAC_time==0; } }

} void timer0() interrupt 1 {

n++; m++; k++; h++;

static uchar n,m,k,h; if(n== display_time0) {

display_time=1; n=0;

}

if(m== sample_time0) { m=0;

sample_time=1; }

if(k== control_time0) { k=0;

control_time=1; }

if(h== DAC_time0) { h=0;

DAC_time=1;

//display_time0为显示周期 //sample_time0为ADC转换周期//control_time0为控制周期T //DAC_time0为控制周期T

}

四、 设计总结

这次课程设计用了好长时间,经过这次设计,使我认识到了设计中的细节问题对整体的影响。从中我学到了很多,首先同学间以及老师的帮助使我增进不少,查阅资料使我视野开阔了。并且我从中认识到了自己的弱点,细节问题不够清晰。

这次制作的成功经历,我收获不小,使我掌握了单片机的开发流程,明白了单片机的工作过程,在实际硬件中是怎样读取指令,提取数据的。也提高了我软硬件调试的能力。再加上主任看了我的作品后的一番鼓励,越发激起了我的自信心! 五、 参考资料

1、《单片机原理及应用——基于51与高速SoC51》 夏路易 主编 电子工业出版社

2、《微型计算机控制技术》潘新民 王燕 主编 清华大学出版社 3、《传感器与检测技术》徐科军 主编 电子工业出版社

智能仪器课程设计

报 告 书

题目号:22

题目:智能数字显示仪表设计 班级:自动化XXX 学号:XXX 姓名:XX

2012年12月

摘要

智能仪表是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。它的出现,极大的扩充了传统仪器的应用范围。智能仪器凭借其体积小、功能强、低功耗等优势,迅速的在家用电器、科研单位和工业企业中得到了广泛的使用。

智能电子系统,其单片机硬件部分都是相似的,一般是由如下硬件电路组成: 单片机最小系统(单片机、电源、晶振、复位、编程调试接口等)。开关量输入与输出电路。模数与数模转换电路。通信接口(UART(SCI)、SPI、I2C(SMBus)、CAN、USB、TCP/IP、ZigBee等)。显示电路(LED数码管、LCD等)。控制电路(继电器、晶闸管等功率输出电路)。

而软件部分就是使单片机中运行的程序(算法),程序通过单片机与单片机的引脚指挥各个硬件电路部分,进而控制各种各样的对象,实现对象控制的自动化与智能化。

单片机技术的落脚点就是实现电子系统智能化,换句话说,就是开发控制各种对象的智能电子产品。本课程设计以工业控制中使用的温度监测智能仪表为例,介绍单片机在电子系统智能化方面的应用。

一、 设计的目的和原理

设计题目:

实现智能数字显示仪表。要求8位数码管显示(4位显示测量值,4位显示设定值),4输入按钮(功能选择、数码管选择、数字增加、数字减少),可设定上下限报警(蜂鸣器报警)。适配E型(镍铬-铜镍)热电偶,测温范围为0℃~700℃。采用比例控制、并用晶闸管移相驱动1000W电加热器(电源电压为AC220V)。

设计目的:

单片机综合练习是一项综合性的专业实践,目的是让学生在所学知识的基础上,结合工程实际,加以消化和巩固,培养学生的综合运用知识的能力、动手实际的能力和工程实践能力,为以后的工作实践打好良好的基础。

设计原理:

由热电偶送来的电信号一方面通过AD转换成数字信号供单片机处理后进行数字显示,另一方面传输到调节器比较运算,输出一个需要的控制信号与给定匹配。

二、 硬件设计

本设计采用STC89C51单片机实现智能测温仪表。由题目可知,该测温仪表需要如下电路模块:

(1)单片机电路(包括单片机最小系统、ADC、数码显示、按键、LED灯、电源等)。

(2)E型(镍铬-铜镍)热电偶信号调理电路 (3)加热功率驱动电路。

原理框图:

智能仪表单片机电路由STC89C51单片机电路、按钮、数码管、LED显示、串行通讯口、电源、ADC、DAC、E2PROM、热电偶、功率输出等电路组成。

控制板面图:

上排数码管显示设定值,下排数码管显示测量值。第一个按钮选择功能设置,第二个数码管选择,第三个数值加,第四个数值减。四个LED显示灯显示系统的各个运行状态。

基本电路模块:

总框图

单片机最小系统:

STC89C51单片机最小系统包含51单片机、晶振电路、复位电路、电源电路。单片机可采用11.0592MHz或12MHz的晶振,外置电源可以采用市售开关电源12V直流,稳压模块采用7805芯片,采用单片机上电复位的方式,还有上电指示灯。

蜂鸣器电路:

NPN型三极管驱动蜂鸣器产生报警提示,单片机P1.6口控制

串行存储器电路:

串行存储器芯片24C02用于保存设定值。该芯片具有I2C接口,连接单片机P0.0与P0.1引脚,采用软件方法模拟I2C接口。

数码管电路:

NPN型三极管驱动蜂鸣器产生报警提示,单片机P1.6口控制

串行存储器电路:

串行存储器芯片24C02用于保存设定值。该芯片具有I2C接口,连接单片机P0.0与P0.1引脚,采用软件方法模拟I2C接口。

数码管电路:

具有两排各四个数码管显示,采用四位一体数码管,分别显示测量值和设定值,数码管由2块74HC595串入并出锁存器驱动,因此只需要3个单片机引脚,采用动态扫描数码管驱动法。

按键电路:

根据需要接按键于单片机相关引脚上,低电平有效。可用作功能选择按钮、数值加一按钮、数值减一按钮等。

LED电路:

LED显示灯用于显示报警、动作等,直接连接到单片机相关引脚,低电平有效。

ADC电路:

由于51单片机内部没有AD资源,因此扩展了10位ADC芯片TLC1549,TLC1549与单片机的P1.0、P1.1、P1.2引脚连接,连接器J1用于模拟信号的输入。

DAC电路:

同样,系统扩展了DAC芯片TLC5615,该芯片采用+5V模拟电压分压作为参考电压,DAC输出范围可达0.25~4.75V,单片机采用3个引脚与该芯片连接,软件模拟芯片时序,将数据输出到TLC5615.

通讯电路:

使用MAX232组成电平变换电路,可以实现在系统编程(ISP)或实现单片机与PC机之间的通讯。P3.0与P3.1连接有交叉 开关,可以实现端口复用。

热电偶调理电路:

E型热电偶信号调理电路如上图所示。

镍铬—铜镍热电偶、压簧固定式热电偶,

工业用装配式热电偶作为测量温度的传感器,通常和显示仪表、记录仪表和电子调节器配套使用。它可以直接测量各种生产过程中从0℃~1800℃范围内的液体、蒸汽和气体介质以及固体的表面温度。

分度表:

该电路利用1N4148的负温度系数实现热电偶冷端补偿。为保证0℃时输出电压为0V,电路中采用了负电源。第一个运放组成的电路实现冷端温度补偿,其中RP0调节电路零点,由于二极管在反馈通路中,运放输出电压随温度升高而上升,温度系数为2mV/℃,经过R5与R6分压后的温度系数为0.017mV/℃,正好与R13热电偶温度系数近似。第二个运放用于信号方法,发达倍数约为160。74HC14组成的多谐振荡器、二极管和电容构成负电源电路,该电路向LM258提供负电源。

0℃~700℃对应线性输出0~1.9V。

电加热器电路:

单片机引脚为低电平时,在交流220V电压移相时,MOC3022触发双向晶闸管接通1000W电加热电源。

控制器方案:

比例控制(P)是一种控制算法,其输出量out与温度偏差e=SV-PV成比例关系,写成数学公式是:

out= kp * e+out0

式中,e是测量温度值PV与设定温度值SV之间的偏差,Kp是比例系数。out是输出量。out0是对应e=0时的控制量,可由人工确定,通常取输出控制量的1/2。

三、 软件设计及注释

软件流程图:

描述了软件算法的执行过程。有开始、有结束,有条件分支选择,有正常判断。下图只是列出执行的整体框架:

程序详单:

#include #define uchar unsigned char #define uint unsigned int #define WDA 0x00 // 定义器件在IIC总线中的地址 uchar duan[ ]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e}; //段码 uchar wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码 uint code value[]={32,64,128,256,384,512,640,768,896,1023}; //数字量 sbit DOUT=P2^5; //数码管引脚定义

sbit CLK=P2^7; sbit LATCH=P2^6; sbit AD_CS = P1^2; //TLC1549的引脚 sbit AD_CLK = P1^1; sbit AD_DAT = P1^0; sbit function = P3^4; //功能选择按钮 sbit shuma = P3^5; //数码管选择按钮 sbit plus = P3^6; //数值增加按钮 sbit subs = P3^7;

sbit led0 = P0^2; sbit led1 = P0^3;

sbit led2 = P0^4; sbit led3 = P0^5; sbit beep=P1^6;

sbit cs = P1^5; sbit din = P1^3;

sbit clk = P1^4; sbit SCL=P0^0; sbit SDA=P0^1;

uchar xs[8];

uchar display_time; uchar sample_time;

uchar sample_time; uchar control_time; uchar DAC_time; uchar display_time0=5; uchar sample_time0=5;

uchar control_time0=5; uchar DAC_time0=5; uchar high; uchar low;

uchar given; uchar K; void LED(uchar X);

void delay()

{

uchar i=4,j=0; for(i=10;i>0;i--)

//数值减少按钮 //LED //蜂鸣器 //TLC5615引脚 //24c02引脚 //数码管显示缓存区 //相关控制变量 //定义其它变量 //数码管函数声明//延时函数

for(j=248;j>0;j--); } void set() { uint i,j; if(shuma==0) //数码管选择按钮按下

delay(); if(shuma==0)

{

LED(wei[i++]); if(i==8)

i=4;

} if(plus==0)

delay(); if(plus==0)

{ LED(duan[j++]);

if(j==10)

j=0;

} if(subs==0)

delay();

if(subs==0)

{

LED(duan[j--]);

if(j==-1) j=9;

} }

void set_high()

{

set();

} void set_low()

{

set();

}

void set_given()

{

set();

} void set_K()

{

set();

void LED(uchar X) }

{

uchar i;

//增加按钮按下 //减小按钮按下 //数码管显示函数

for(i=8;i>=1;i--) { //if (X&0x80) P2_5=1; else P2_5=0; //先输出高位 //X>=1; CLK = 0; CLK = 1; }} adc() //读取ADC数据的函数 { uint u=0; uchar i; cs=1; delay(); cs=0; for(i=0;i

SCL=0; SDA=0; SCL=1; SDA=1; }

void NoAck() //发送应答信号ACK {

SDA=1; SCL=1; SCL=0; }

bit TestAck() //测试应答信号ACK {

bit EB; SDA=1; SCL=1; EB=SDA; SCL=0; return(EB); }

write8Bit(uchar input) //写入8个二进制位到24C02 {uchar temp;

for(temp=8;temp!=0;temp--) {SDA=(bit)(input&0x80); SCL=1; SCL=0;

input=input

void write24c02(uchar ch,uchar address) //写入一个字节到24C02中字节地

址的函数

{

start();

write8Bit(WDA); //发送器件地址的函数 TestAck();

write8Bit(address); //发送写入字节地址到24C02的函数 TestAck();

write8Bit(ch); //发送写入数据到24C02的函数 TestAck(); stop(); delay(); }

void main() {

uint count, adc_value, error, lasterror, out, gg=0; TMOD=0x01; //定时器初始化 TH0=0x3C; TL0=0xB0;

ET0=1; EA=0; TR0=1; while(1) {

//按键处理语句

if(function==0) //功能选择按钮按下

delay();

if(function==0) { gg++; if(gg==5) gg=0; switch(gg) { case 0: EA=1;

case 1: EA=0; set_high(); case 2: EA=0; set_low(); case 3: EA=0; set_given(); case 4: EA=0; set_K(); } } set();

write24c02(value[0],0x01); //数码管显示语句 if(display_time==1) {

adc_value=adc(); xs[0]=adc_value%10; xs[1]=adc_value/10%10; xs[2]=adc_value/100%10;

xs[3]=adc_value/1000; xs[4]=5; xs[5]=6; xs[6]=7; xs[7]=8;

LED(wei[count]); LED(duan[xs[count]]); LATCH=0; LATCH=1; count++; if(count==8) count=0; display_time=0;

} //ADCif(sample_time==1)

转换与数字滤波语句

break; break; break; //正常运行 //设置上限值 //设置下限值 break; break; //设置给定值

//设置比例系数值//右面4位显示ADC输出值 测量值 //左面4位备用 设定值 //发送位码 //发送段码

//HC595锁存数据

adc();

sample_time==0; }

//ADC输出数值判断、报警、比例算法与控制量输出 if(control_time==1) {

if(adc_value>high||adc_value

}

beep=0; error=given-adc_value; lasterror=error; out=K*error; control_time==0;

} //DAC if(DAC_time==1) 转换语句

{

dac();

DAC_time==0; } }

} void timer0() interrupt 1 {

n++; m++; k++; h++;

static uchar n,m,k,h; if(n== display_time0) {

display_time=1; n=0;

}

if(m== sample_time0) { m=0;

sample_time=1; }

if(k== control_time0) { k=0;

control_time=1; }

if(h== DAC_time0) { h=0;

DAC_time=1;

//display_time0为显示周期 //sample_time0为ADC转换周期//control_time0为控制周期T //DAC_time0为控制周期T

}

四、 设计总结

这次课程设计用了好长时间,经过这次设计,使我认识到了设计中的细节问题对整体的影响。从中我学到了很多,首先同学间以及老师的帮助使我增进不少,查阅资料使我视野开阔了。并且我从中认识到了自己的弱点,细节问题不够清晰。

这次制作的成功经历,我收获不小,使我掌握了单片机的开发流程,明白了单片机的工作过程,在实际硬件中是怎样读取指令,提取数据的。也提高了我软硬件调试的能力。再加上主任看了我的作品后的一番鼓励,越发激起了我的自信心! 五、 参考资料

1、《单片机原理及应用——基于51与高速SoC51》 夏路易 主编 电子工业出版社

2、《微型计算机控制技术》潘新民 王燕 主编 清华大学出版社 3、《传感器与检测技术》徐科军 主编 电子工业出版社


相关内容

  • 智能仪器的应用与发展
  • 学校:桂林理工大学 班级:自动化 学号: 姓名:闻祖创 11-2班 3110619216 智能仪器的应用和发展 摘要:简单介绍了智能仪器的特点原理和发展应用. 关键词:微处理器; 智能仪器:自动测试 1 智能仪器概述 近些年来 ,随着微处理器和单片机的发和广泛应用,出现了一种新型的专用仪器-智能仪器 ...

  • 智能仪器设计要点论文
  • 智 能 仪 器 设 计 要 点 引言 微型计算机技术和嵌入式系统的迅速发展,引起了仪器仪表结构的根本性变革,即以微型计算机为主体,代替传统仪表的常规电子线路,成为新一代具有某种智能的灵巧仪表.这类仪表的设计重点,已经从模拟和逻辑电路的设计转向专用的微机模板或微机功能部件.接口电路和输入偷出通道的设计 ...

  • 基于单片机的数控开关电源设计
  • 成 绩 评 定 表 课程设计任务书 摘 要 智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能. 传感器拾取被测参量的信息并转换成电信号,经滤波去除干扰后送入多路模拟开关:由单片机逐路选通模拟开关将各输入通道的信号逐一送入程控增益放大器,放大后的信号经A ...

  • 测控技术与仪器
  • 测控技术与仪器.txt 你看得见我打在屏幕上的字,却看不到我掉在键盘上的泪!自己选择45°仰视别人,就休怪他人135°俯视着看你.测控技术与仪器 测控技术与仪器专业: 专业英文名:Measurement and Control Technology and Instrumentation Progr ...

  • 电子信息工程考研方向解读
  • (随便看看就行) 这个是我在百度文库里面找到的一篇文章 看过之后 感觉很有收获 文章里详细介绍了各个方向研究的内容.前景和要求.并列出了各名牌高校的排名 希望对你有帮助~ 电子信息工程考研方向解读 电子信息工程考研的方向其实很多的,不过大家所知道甚少,笔者就搜集整理一些有关该专业的考研方向,希望对大 ...

  • 单片机在日常生活及工业生产中的应用
  • 单片机在日常生活及工业生产中的应用 姓名:刘盼盼 班级:热能08-2 学号:0807220217 单片机在日常生活及工业生产中的应用 随着电子技术的迅速发展,特别是随着大规模集成电路产生而出现的微型计算机,给人类生活带来了根本性的改变.单片微型计算机简称单片机.它是把组成微型计算机的各功能部件:中央 ...

  • 单片机的智能仪器监控平台设计应用
  • 工业燃烧过程所释放出的烟气是现代城市大气污染源,烟气检测是大气环境检测中必要的项目,它是确定重点污染源并对污染源进行检测和控制的基本手段.为了控制燃烧过程的燃烧空气比,提高燃烧效率,节约能源,减少大气污染,必须可靠地测量烟气中各种气体的含量.本文针对烟气分析,介绍了一种基于Intel单片机的智能仪器 ...

  • 仪器综合课程设计
  • <仪器综合课程设计> 任务书与说明书 智能化重量测量仪设计 Design of an Intelligent Weight Measuring Instrument 学院名称: 专业班级: 学生学号: 学生姓名: 指导教师姓名: 指导教师职称: 2015 年 1月 <仪器综合课程设 ...

  • 第11章测量工程施工方案2
  • [成都中衡智能智能信息港工程]第十一章测量工程施工方案第一节一.人员组织人员组织及设备配置为了圆满地完成成都中衡智能信息港工程的测量工作, 我公司准备组织技术精湛 的项目测放部,以满足业主及监理的施工要求,具体名单见下表项目岗位 测放部经理 测量责任师 测 量 工 测 量 工 职称 工程师 工程师 ...

  • 智能化仪器课程设计报告
  • 智能化仪器课程设计总结报告 测控071 0730221124 方晶晶 1.课程设计的目的和任务 本次课程设计是以AT89C51单片机为核心,设计一个具有实时时钟功能和直流电压测量功能的智能化测量仪器.要求具有实时时钟显示和校时功能,电压测量显示功能等.可作为通用的二次仪表使用,根据电压与被测物理量的 ...