搜档网
当前位置:搜档网 › msp430 控制mpu6050电赛分享

msp430 控制mpu6050电赛分享

msp430 控制mpu6050电赛分享
msp430 控制mpu6050电赛分享

#include

#include

#define uchar unsigned char

#define ushort unsigned short

#define uint unsigned int

//*********************************************************

#define CPU_F ((double)8000000)

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define P55 5

#define P56 6

#define P57 7

#define RS_CLR P5OUT &= ~(1 << P55) //RS置低

#define RS_SET P5OUT |= (1 << P55) //RS置高

#define RW_CLR P5OUT &= ~(1 << P56) //RW置低

#define RW_SET P5OUT |= (1 << P56) //RW置高

#define EN_CLR P5OUT &= ~(1 << P57) //E置低

#define EN_SET P5OUT |= (1 << P57) //E置高

#define DataPort P4OUT //P4口为数据口

//************************************************************************* // 系统时钟初始化

//************************************************************************* void Clock_Init()

{

uchar i;

BCSCTL1&=~XT2OFF; //打开XT振荡器

BCSCTL2 |= SELM_2 + SELS; //MCLK为8MHZ,SMCLK为8MHZ

do{

IFG1&=~OFIFG; //清除震荡标志

for(i=0;i<100;i++)

_NOP(); //延时等待

}

while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待

IFG1&=~OFIFG;

}

//************************************************************************* // MSP430内部看门狗初始化

//************************************************************************* void WDT_Init()

{

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

}

//************************************************************************* // 初始化IO口子程序

//************************************************************************* void Port_init()

{

P4SEL = 0x00;

P4DIR = 0xFF;

P5SEL = 0x00;

P5DIR|= BIT5 + BIT6 + BIT7; //控制口设置为输出模式

}

//*********************************************************************** // 显示屏命令写入函数

//***********************************************************************

void LCD_write_com(unsigned char com)

{

RS_CLR;

RW_CLR;

EN_SET;

DataPort = com; //命令写入端口

delay_us(50);

EN_CLR;

}

//*********************************************************************** // 显示屏数据写入函数

//***********************************************************************

void LCD_write_data(unsigned char data)

{

RS_SET;

RW_CLR;

EN_SET;

DataPort = data; //数据写入端口

delay_us(50);

EN_CLR;

}

//*********************************************************************** // 显示屏清空显示

//***********************************************************************

void LCD_clear(void)

{

LCD_write_com(0x01); //清屏幕显示

delay_ms(5);

}

//*********************************************************************** // 显示屏字符串写入函数

//***********************************************************************

void LCD_write_str(unsigned char x,unsigned char y,uchar *s)

{

if (y == 0)

{

LCD_write_com(0x80 + x); //第一行显示

}

else

{

LCD_write_com(0xC0 + x); //第二行显示

}

while (*s)

{

LCD_write_data( *s);

s ++;

}

}

//*********************************************************************** // 显示屏单字符写入函数

//***********************************************************************

void LCD_write_char(unsigned char x,unsigned char y,unsigned char data)

{

if (y == 0)

{

LCD_write_com(0x80 + x); //第一行显示

}

else

{

LCD_write_com(0xC0 + x); //第二行显示

}

LCD_write_data( data);

}

//***********************************************************************

// 显示屏初始化函数

//***********************************************************************

void LCD_init(void)

{

LCD_write_com(0x38); //显示模式设置

delay_ms(5);

LCD_write_com(0x08); //显示关闭

delay_ms(5);

LCD_write_com(0x01); //显示清屏

delay_ms(5);

LCD_write_com(0x06); //显示光标移动设置

delay_ms(5);

LCD_write_com(0x0C); //显示开及光标设置

delay_ms(5);

}

//***************************************

#define SDA BIT1

#define SCL BIT2

//****************************************

// 定义MPU6050内部地址

//****************************************

#define SMPLRT_DIV 0x19 //陀螺仪采样率,典型值:0x07(125Hz)

#define CONFIG 0x1A //低通滤波频率,典型值:0x06(5Hz)

#define GYRO_CONFIG 0x1B //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) #define ACCEL_CONFIG 0x1C //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)

#define ACCEL_XOUT_H 0x3B

#define ACCEL_XOUT_L 0x3C

#define ACCEL_YOUT_H 0x3D

#define ACCEL_YOUT_L 0x3E

#define ACCEL_ZOUT_H 0x3F

#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H 0x41

#define TEMP_OUT_L 0x42

#define GYRO_XOUT_H 0x43

#define GYRO_XOUT_L 0x44

#define GYRO_YOUT_H 0x45

#define GYRO_YOUT_L 0x46

#define GYRO_ZOUT_H 0x47

#define GYRO_ZOUT_L 0x48

#define PWR_MGMT_1 0x6B //电源管理,典型值:0x00(正常启用)

#define WHO_AM_I 0x75 //IIC地址寄存器(默认数值0x68,只读)

#define SlaveAddress 0xD0 //IIC写入时的地址字节数据,+1为读取uchar dis[4]; //显示数字(-511至512)的字符数组

int dis_data; //变量

//MPU6050操作函数

void InitMPU6050(); //初始化MPU6050

void I2C_Start();

void I2C_Stop();

void I2C_SendACK(uchar ack);

uchar I2C_RecvACK();

void I2C_SendByte(uchar dat);

uchar I2C_RecvByte();

void I2C_ReadPage();

void I2C_WritePage();

void display_ACCEL_x();

void display_ACCEL_y();

void display_ACCEL_z();

uchar Single_ReadI2C(uchar REG_Address); //读取I2C数据

void Single_WriteI2C(uchar REG_Address,uchar REG_data); //向I2C写入数据

//****************************************

//整数转字符串

//****************************************

void lcd_printf(uchar *s,int temp_data)

{

if(temp_data<0)

{

temp_data=-temp_data;

*s='-';

}

else *s=' ';

*++s =temp_data/100+0x30;

temp_data=temp_data%100; //取余运算

*++s =temp_data/10+0x30;

temp_data=temp_data%10; //取余运算*++s =temp_data+0x30;

}

//************************************** //SDA高电平的产生

//************************************** void sda_high() //SDA高电平的产生

{

P1DIR|=SDA;

P1OUT|=SDA;

_NOP();

_NOP();

_NOP();

return;

}

//************************************** //SDA低电平的产生

//************************************** void sda_low() //SDA低电平的产生

{

P1DIR|=SDA;

P1OUT&=~SDA;

_NOP();

_NOP();

_NOP();

return;

}

//************************************** //SCL高电平产生

//************************************** void scl_high() //SCL高电平产生

{

P1DIR|=SCL;

P1OUT|=SCL;

_NOP();

_NOP();

_NOP();

return;

}

//************************************** //SCL低电平的产生

//**************************************

void scl_low() //SCL低电平的产生

{

P1DIR|=SCL;

P1OUT&=~SCL;

_NOP();

_NOP();

_NOP();

return;

}

//**************************************

//I2C起始信号

//************************************** void I2C_Start()

{

sda_high(); //拉高数据线scl_high(); //拉高时钟线

delay_us(5); //延时

sda_low(); //产生下降沿

delay_us(5); //延时

scl_low(); //拉低时钟线}

//**************************************

//I2C停止信号

//************************************** void I2C_Stop()

{

sda_low(); //拉低数据线

scl_high(); //拉高时钟线

delay_us(5); //延时

sda_high(); //产生上升沿

delay_us(5); //延时

}

//**************************************

//I2C发送应答信号

//入口参数:ack (0:ACK 1:NAK)

//************************************** void I2C_SendACK(uchar ack)

{

if(ack) sda_high();

else sda_low(); //写应答信号

scl_high(); //拉高时钟线

delay_us(5); //延时

scl_low(); //拉低时钟线

delay_us(5); //延时

}

//**************************************

//I2C接收应答信号

//************************************** uchar I2C_RecvACK()

{

uchar cy;

scl_high(); //拉高时钟线P1DIR&=~SDA;

delay_us(5); //延时

if((P1IN&SDA)==SDA)

{

cy=1;

}

else

{

cy=0;

}

// cy = SDA; //读应答信号scl_low(); //拉低时钟线

delay_us(5); //延时

P1DIR|=SDA;

return cy;

}

//**************************************

//向I2C总线发送一个字节数据

//************************************** void I2C_SendByte(uchar dat)

{

uchar i;

for (i=0; i<8; i++) //8位计数器

{

if((dat<

{

sda_high();

}

else

{

sda_low();

}

// SDA = cy; //送数据口

scl_high(); //拉高时钟线

delay_us(5); //延时

scl_low(); //拉低时钟线

delay_us(5); //延时

}

I2C_RecvACK();

}

//**************************************

//从I2C总线接收一个字节数据

//**************************************

uchar I2C_RecvByte()

{

uchar i;

uchar dat = 0,cy;

sda_high(); //使能内部上拉,准备读取数据, P1DIR&=~SDA;

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1;

scl_high(); //拉高时钟线

delay_us(5); //延时

if((P1IN&SDA)==SDA)

{

cy=1;

}

else

{

cy=0;

}

dat |= cy; //读数据

scl_low(); //拉低时钟线

delay_us(5); //延时

}

P1DIR|=SDA;

return dat;

}

//**************************************

//向I2C设备写入一个字节数据

//**************************************

void Single_WriteI2C(uchar REG_Address,uchar REG_data)

{

I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress); //发送设备地址+写信号

I2C_SendByte(REG_Address); //内部寄存器地址,

I2C_SendByte(REG_data); //内部寄存器数据,

I2C_Stop(); //发送停止信号

}

//**************************************

//从I2C设备读取一个字节数据

//**************************************

uchar Single_ReadI2C(uchar REG_Address)

{

uchar REG_data;

I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress); //发送设备地址+写信号

I2C_SendByte(REG_Address); //发送存储单元地址,从0开始I2C_Start(); //起始信号

I2C_SendByte(SlaveAddress+1); //发送设备地址+读信号

REG_data=I2C_RecvByte(); //读出寄存器数据

I2C_SendACK(1); //接收应答信号

I2C_Stop(); //停止信号

return REG_data;

}

//**************************************

//初始化MPU6050

//**************************************

void InitMPU6050()

{

Single_WriteI2C(PWR_MGMT_1, 0x00); //解除休眠状态

Single_WriteI2C(SMPLRT_DIV, 0x07);

Single_WriteI2C(CONFIG, 0x06);

Single_WriteI2C(GYRO_CONFIG, 0x18);

Single_WriteI2C(ACCEL_CONFIG, 0x01);

}

//**************************************

//合成数据

//**************************************

int GetData(uchar REG_Address)

{

char H,L;

H=Single_ReadI2C(REG_Address);

L=Single_ReadI2C(REG_Address+1);

return (H<<8)+L; //合成数据

}

//**************************************

//在12864上显示10位数据

//**************************************

void Display10BitData(int value,uchar x,uchar y)

{

value/=64; //转换为10位数据

lcd_printf(dis, value); //转换数据显示

LCD_write_str(x,y,dis);//启始列,行,显示数组,显示长度

}

//主程序

//*********************************************************

void main()

{ double y_j,x_j,z_j;

WDTCTL=WDTPW+WDTHOLD; //关闭看门狗

Clock_Init(); //系统时钟设置

Port_init(); //系统初始化,设置IO口属性

delay_ms(100); //延时100ms

LCD_init(); //液晶参数初始化设置

LCD_clear();

//CPU空转

delay_ms(500); //上电延时

InitMPU6050(); //初始化MPU6050

delay_ms(150);

while(1)

{ // //*********************************************************

//LCD_write_str(0,0,"Tian jin University");

x_j=(asin((double)(GetData(ACCEL_XOUT_H)/263.0/64.0))*180)/3.1415;

y_j=(asin((double)(GetData(ACCEL_YOUT_H)/259.0/64.0))*180)/3.1415;

z_j=(asin((double)(GetData(ACCEL_ZOUT_H)/257.0/64.0))*180)/3.1415;

Display10BitData(GetData(ACCEL_XOUT_H),0,0); //显示X轴加速度Display10BitData(GetData(ACCEL_YOUT_H),4,0); //显示Y轴加速度

Display10BitData(GetData(ACCEL_ZOUT_H),8,0); //显示Z轴加速度

if(x_j>=0)

{ LCD_write_char(0,1,' ');}

if(x_j<0)

{x_j=fabs(x_j); LCD_write_char(0,1,'-');}

LCD_write_char(1,1,(int)(x_j)/100+48); //显示X轴角速度

LCD_write_char(2,1,((int)(x_j)%100)/10+48); //显示Y轴角速度

LCD_write_char(3,1,((int)(x_j)%10)+48); //显示Z轴角速度

if(y_j>=0)

{ LCD_write_char(4,1,' ');}

if(y_j<0)

{y_j=fabs(y_j); LCD_write_char(4,1,'-');}

LCD_write_char(5,1,(int)(y_j)/100+48); //显示X轴角速度

LCD_write_char(6,1,((int)(y_j)%100)/10+48); //显示Y轴角速度

LCD_write_char(7,1,((int)(y_j)%10)+48); //显示Z轴角速度

if(z_j>=0)

{ LCD_write_char(8,1,' ');}

if(z_j<0)

{z_j=fabs(z_j); LCD_write_char(8,1,'-');}

LCD_write_char(9,1,(int)(z_j)/100+48); //显示X轴角速度

LCD_write_char(10,1,((int)(z_j)%100)/10+48); //显示Y轴角速度

LCD_write_char(11,1,((int)(z_j)%10)+48); //显示Z轴角速度

/* Display10BitData(GetData(GYRO_XOUT_H),0,1); //显示X轴角速度Display10BitData(GetData(GYRO_YOUT_H),4,1); //显示Y轴角速度

Display10BitData(GetData(GYRO_ZOUT_H),8,1); //显示Z轴角速度*/

delay_ms(500);

}

}

水温自动控制系统实验报告汇总

水温控制系统(B题) 摘要 在能源日益紧张的今天,电热水器,饮水机和电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费。但是利用AT89C51 单片机为核心,配合温度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成的控制系统却能解决这个问题。单片机可将温度传感器检测到的水温模拟量转换成数字量,并显示于1602显示器上。该系统具有灵活性强,易于操作,可靠性高等优点,将会有更广阔的开发前景。 水温控制系统概述 能源问题已经是当前最为热门的话题,离开能源的日子,世界将失去一切颜色,人们将寸步难行,我们知道虽然电能是可再生能源,但是在今天还是有很多的电能是依靠火力,核电等一系列不可再生的自然资源所产生,一旦这些自然资源耗尽,我们将面临电能资源的巨大的缺口,因而本设计从开源节流的角度出发,节省电能,保护环境。 一、设计任务 设计并制作一个水温自动控制系统,控制对象为 1 升净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。 二、要求 1、基本要求 (1)温度设定范围为:40~90℃,最小区分度为1℃,标定温度≤1℃。 (2)环境温度降低时温度控制的静态误差≤1℃。 (3)能显示水的实际温度。 第2页,共11页

2、发挥部分 (1)采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。 (2)温度控制的静态误差≤0.2℃。 (3)在设定温度发生突变时,自动打印水温随时间变化的曲线。 (4)其他。 一系统方案选择 1.1 温度传感器的选取 目前市场上温度传感器较多,主要有以下几种方案: 方案一:选用铂电阻温度传感器。此类温度传感器线性度、稳定性等方面性能都很好,但其成本较高。 方案二:采用热敏电阻。选用此类元器件有价格便宜的优点,但由于热敏电阻的非线性特性会影响系统的精度。 方案三:采用DS18B20温度传感器。DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出远端引入。此器件具有体积小、质量轻、线形度好、性能稳定等优点其各方面特性都满足此系统的设计要求。 比较以上三种方案,方案三具有明显的优点,因此选用方案三。 1.2温度显示模块 方案一:采用8个LED八段数码管分别显示温度的十位、个位和小数位。数码管具有低能耗,低损耗、寿命长、耐老化、对外界环境要求低。但LED八度数码管引脚排列不规则,动态显示时要加驱动电路,硬件电路复杂。 方案二:采用带有字库的12864液晶显示屏。12864液晶显示屏具有低功耗,轻薄短小无辐射危险,平面显示及影像稳定、不闪烁、可视面积大、画面

温度控制器的设计

目录 第一章课程设计要求及电路说明 (3) 1.1课程设计要求与技术指标 (3) 1.2课程设计电路说明 (4) 第二章课程设计及结果分析 (6) 2.1课程设计思想 (6) 2.2课程设计问题及解决办法 (6) 2.3调试结果分析 (7) 第三章课程设计方案特点及体会 (8) 3.1 课程设计方案特点 (8) 3.2 课程设计心得体会 (9) 参考文献 (9) 附录 (9)

第一章课程设计要求及电路说明 1.1课程设计要求与技术指标 温度控制器的设计 设计要求与技术指标: 1、设计要求 (1)设计一个温度控制器电路; (2)根据性能指标,计算元件参数,选好元件,设计电路并画出电路图; (3)撰写设计报告。 2、技术指标 温度测量范围0—99℃,精度误差为0.1℃;LED数码管直读显示;温度报警指示灯。

1.2课程设计电路说明 1.2.1系统单元电路组成 温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。 1.2.2设计电路说明 主控制器:CPU是整个控制部分的核心,由STC89C52芯片连同附加电路构成的单片机最小系统作为数据处理及控制模块. 显示电路:显示电路采用4个共阳LED数码管,用于显示温度计的数值。报警电路:报警电路由蜂鸣器和三极管组成,当测量温度超过设计的温度时,该电路就会发出报警。 温度传感器:主要由DS18B20芯片组成,用于温度的采集。 时钟振荡:时钟振荡电路由晶振和电容组成,为STC89C52芯片提供稳定的时钟频率。

第二章课程设计及结果分析 2.1课程设计 2.1.1设计方案论证与比较 显示电路方案 方案一:采用数码管动态显示 使用一个七段LED数码管,采用动态显示的方法来显示各项指标,此方法价格成本低,而且自己也比较熟悉,实验室也常备有此元件。 方案二:采用LCD液晶显示 采用1602 LCD液晶显示,此方案显示内容相对丰富,且布线较为简单。 综合上述原因,采用方案一,使用数码管作为显示电路。 测温电路方案 方案一:采用模拟温度传感器测温 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 方案二:采用数字温度传感器 经过查询相关的资料,发现在单片机电路设计中,大多数都是使用传感器,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 综合考虑,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 2.1.2设计总体方案 根据上述方案比较,结合题目要可以将系统分为主控模块,显示模块,温度采集模块和报警模块,其框图如下:

msp430g2553的矩阵按键程序

IAR环境下的程序! 矩阵按键在单片机设计中经常见到,下面给大家几个程序!如果有需求可以看看!矩阵按键,扫描 下面程序是淘来的! #include /***************全局变量***************/ unsigned char Key_V al; //存放键值 void CtrlKey(unsigned char sw); //控制键盘开关//sw=0关sw=1开 /******************************************* 函数名称:Init_Keypad 功能:初始化扫描键盘的IO端口 参数:无 返回值:无 ********************************************/ void Init_Keypad(void) { P1DIR = 0x0f; //P1.0~P1.3设置为输出状态,P1.4~P1.7输入状态(上拉H) P1OUT=0; P1IES =0xf0; //P1.4~P1.7允许中断 P1IE =0xf0; //P1.4~P1.7下降沿触发中断 P1IFG=0; //中断标志清0 Key_V al = 0; } /******************************************* 函数名称:Check_Key 功能:扫描键盘的IO端口,获得键值 参数:无 返回值:无 ********************************************/ //p14\5\6\7 接上拉电阻 /*************************************** key_V al 对应键值 列:[p14] [p15] [p16] [p17] ↓↓↓↓ 行: [p13]→ 1 2 3 4 [p12]→ 5 6 7 8 [p11]→9 10 11 12 [p10]→13 14 15 16 ***************************************/ void Check_Key(void) { unsigned char row ,col,tmp1,tmp2;

51系列单片机闭环温度控制 实验报告

成绩: 重庆邮电大学 自动化学院综合实验报告 题目:51系列单片机闭环温度控制 学生姓名:蒋运和 班级:0841004 学号:2010213316 同组人员:李海涛陈超 指导教师:郭鹏 完成时间:2013年12月

一、实验名称: 51系列单片机闭环温度控制实验 ——基于Protuse仿真实验平台实现 基本情况: 1. 学生姓名: 2. 学号: 3. 班级: 4. 同组其他成员: 二、实验内容(实验原理介绍) 1、系统基本原理 计算机控制技术实训,即温度闭环控制,根据实际要求,即加温速度、超调量、调节时间级误差参数,选择PID控制参数级算法,实现对温度的自动控制。 闭环温度控制系统原理如图: 2、PID算法的数字实现 本次试验通过8031通过OVEN 是模拟加热的装置,加一定的电压便开始不停的升温,直到电压要消失则开始降温。仿真时,U形加热器为红色时表示正在加热,发红时将直流电压放过来接,就会制冷,变绿。T端输出的是电压,温度越高,电压就越高。

8031对温度的控制是通过可控硅调控实现的。可控硅通过时间可以通过可控硅控制板上控制脉冲控制。该触发脉冲想8031用软件在P1.3引脚上产生,受过零同步脉冲后经光偶管和驱动器输送到可控硅的控制级上。偏差控制原理是要求对所需温度求出偏差值,然后对偏差值处理而获得控制信号去调节加热装置的温度。 PID控制方程式: 式中e是指测量值与给定值之间的偏差 TD 微分时间 T 积分时间 KP 调节器的放大系数 将上式离散化得到数字PID位置式算法,式中在位置算法的基础之上得到数字PID 增量式算法: 3、硬件电路设计 在温度控制中,经常采用是硬件电路主要有两大部分组成:模拟部分和数字部分,对这两部分调节仪表进行调节,但都存在着许多缺点,用单片机进行温度控制使构成的系统灵活,可靠性高,并可用软件对传感器信号进行抗干拢滤波和非线性补偿处理,可大大提高控制质量和自动化水平;总的来说本系统由四大模块组成,它们是输入模块、单片机系统模块、计算机显示与控制模块和输出控制模块。输入模块主要完成对温度信号的采集和转换工作,由温度传感器及其与单片机的接口部分组成。利用模拟加热的

加热器温度控制设计

过程控制大作业 1确定被控对象 我的课题是以加热器为被控对象,设计一个加热器出口水温控制系统。 2课题的背景和研究意义 温度是工业对象中的主要被控参数之一,在工业企业中如何提高诸如电炉这样的温度控制对象的运行性能一直是现场技术人员努力解决的问题。温度控制对于大型工业控制、制冷和制热等工程具有广阔的应用前景。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大的差距。近几年来快速发展了多种先进的温度控制方式,如:PID控制,模糊控 制,神经网络及遗传算法控制等。这些控制技术大大的提高了控制精度,不但使控制变得简便,而且使产品的质量更好,降低了产品的成本,提高了生产效率。 3生产过程和工艺流程 当前国内小型加热器一般分为两种类型,电加热式和燃油加热式。我选用立式盘管燃油式加热器为例,由燃油供给系统、鼓风系统、燃烧器、加热管、控制系统等组成。它的工艺流程如下:首先盘管加热器的受热面是一组盘管。给水从加热器的底部进入内盘管,水沿内盘管螺旋上升至加热器上部,随即进外盘管,水沿外盘管螺旋下降至加热器底部。水在内外盘管中受热,最后从加热器底部排出同时燃油对加热器进行加热,使加热器达到一定温度,这样就可以改变流过加热器盘管的水的温度,来控制出水口水温。 4分析被控对象特性,建立数学模型 对于被控对象的特性,我选择通过实验方法应用Matlab软件仿真出来并建 立其数学模型。通过得出的实验数据确定被控对象的数学模型:W s = 2 e- i.5s。 4.5s+1

5控制方案 对于加热器出口水温的控制系统,我们可以选用水出口温度为被控参量,燃 料流量为控制变量,来进行分析。同时该系统也属于温度控制系统,具有滞后 较大、纯滞后时间较长、扰动幅值大、负荷变化频繁、剧烈等特点。对于动态 特性复杂、存在多种扰动或扰动幅度较大,控制质量要求高的生产过程,用简 单控制系统无法实现良好的性能,也满足不了工艺控制精度要求,而串级控制 系统属于复杂控制系统,主要用于对象容量滞后较大、纯滞后时间较长、扰动 幅值大、负荷变化频繁、剧烈的被控过程,所以这时可以考虑用串级控制系统。 系统的结构示意图如下: 水出口視度8 工作原理:如果出现外部干扰,使稳态工况遭到破坏,串级控制系统立即开 始控制工作。根据扰动施加点的位置不同,分 3 种情况:( 1) 扰动作用于副回 路;( 2) 扰动作用于主过程;( 3)扰动同时作用于副回路和主过程。在这里主 要介绍第二种情况。假设此时 系统的控制方框图如下:

基于MSP430G2553的按键测试程序

基于msp430G2系列的按键测试程序本程序有扫描和中断两种方式,代码均附后。 4、4×1独立按键实验 (1)4×1键盘1:扫描数码管显示 (2)4×1键盘2:中断数码管显示 (3)4×1键盘3:控制LED (4)4×1键盘4:控制蜂鸣器 5、4×4矩阵键盘实验 (1)4×4键盘1:行列扫描数码管显示 (2)4×4键盘2:行列扫描1602液晶显示 3)4×4键盘3:控制LED蜂鸣器 #include #define BUTTON BIT3 #define LED_RED BIT0 #define LED_GREEN BIT6 #define LED_DIR P1DIR #define BUTTON_DIR P1DIR #define BUTTON_OUT P1OUT #define LED_OUT P1OUT #define BUTTON_REN P1REN #define BUTTON_ON (P1IN&BIT3) #define BUTTON_OFF !(P1IN&BIT3) #define LED_RED_ON() P1OUT|=BIT0 #define LED_RED_OFF() P1OUT&=~BIT0 #define LED_GREEN_ON() P1OUT|=BIT6 #define LED_GREEN_OFF() P1OUT&=~BIT6 volatile unsigned char i=0,flag=0; void main(void) { WDTCTL = WDTPW + WDTHOLD; BUTTON_DIR &= ~BUTTON; LED_DIR |= LED_RED+LED_GREEN; BUTTON_REN |= BUTTON; BUTTON_OUT = BUTTON; while(1) { /*通过按键改变选择标志位*/

温度控制电路实验报告

温度控制电路实验报告 篇一:温度压力控制器实验报告 温度、压力控制器设计 实 验 报 告 设计题目:温度、压力控制器设计 一、设计目的 1 ?学习基本理论在实践中综合运用的初步经验,掌握微机控制系统设计的基本方法; 2.学会单片机模块的应用及程序设计的方法; 3?培养实践技能,提高分析和解决实际问题的能力。 二、设计任务及要求 1.利用赛思仿真系统,以MCS51单片机为CPU设计系统。 2?设计一数据采集系统,每5分钟采集一次温度信号、10分钟采集一次压力信号。并实时显示温度、压力值。 3.比较温度、压力的采集值和设定值,控制升温、降温及升压、降压时间,使温度、压力为一恒值。 4?设温度范围为:-10—+40°C、压力范围为0—100P&;升温、降温时间和温度上升、下降的比例为1°C/分钟,升压、降压时间和压力上升、下降的比例为10P"分钟。

5?画出原理图、编写相关程序及说明,并在G6E及赛思 仿真系统上仿真实现。 三、设计构思 本系统硬件结构以80C51单片机为CPU进行设计,外围扩展模数转换电路、声光报警电路、LED显示电路及向上位PC机的传输电路,软件使用汇编语言编写,采用分时操作的原理设计。 四、实验设备及元件 PC机1台、赛思仿真系统一套 五、硬件电路设计 单片微型计算机又称为微控制器,它是一种面向控制的大规模集成电路芯片。使用80C51来构成各种控制系统,可大大简化硬件结构,降低成本。 1.系统构架 2.单片机复位电路 简单复位电路中,干扰易串入复位端,在大多数情况下不会造成单片机的错误复位,但会引起内部某些寄存器的错误复位,故为了保证复位电路的可靠性,将RC电路接斯密特电路后再接入单片机和外围IC的RESET引脚。 3.单片机晶振电路 晶振采用12MHz,即单片机的机器周期为1卩so 4.报警电路

温度控制器课程设计要点

郑州科技学院 《模拟电子技术》课程设计 题目温度控制器 学生姓名 专业班级 学号 院(系)信息工程学院 指导教师 完成时间 2015年12月31日

郑州科技学院 模拟电子技术课程设计任务书 专业 14级通信工程班级 2班学号姓名 一、设计题目温度控制器 二、设计任务与要求 1、当温度低于设定温度时,两个加热丝同时通电加热,指示灯发光; 2、当水温高于设定温度时,两根加热丝都不通电,指示灯熄灭; 3、根据上述要求选定设计方案,画出系统框图,并写出详细的设计过程; 4、利用Multisim软件画出一套完整的设计电路图,并列出所有的元件清单; 5、安装调试并按规定格式写出课程设计报告书. 三、参考文献 [1]吴友宇.模拟电子技术基础[M]. 清华大学出版社,2009.52~55. [2]孙梅生.电子技术基础课程设计[M]. 高等教育出版社,2005.25~28. [3]徐国华.电子技能实训教程[M]. 北京航空航天大学出版社,2006.13 ~15. [4]陈杰,黄鸿.传感器与检测技术[M].北京:高等教育出版社,2008.22~25. [5]翟玉文等.电子设计与实践[M].北京:北京中国电力出版社,2005.11~13. [6]万嘉若,林康运.电子线路基础[M]. 高等教育出版社,2006.27 ~29. 四、设计时间 2015 年12月21 日至2015 年12 月31 日 指导教师签名: 年月日

本设计是一种结构简单、性能稳定、使用方便、价格低廉、使用寿命长、具有一定的实用性等优点的温度控制电路。本文设计了一种温度控制器电路,该系统采用模拟技术进行温度的采集与控制。主要由电源模块,温度采集模块,继电器模块组成。 现代社会科学技术的发展可以说是突飞猛进,很多传统的东西都被成本更低、功能更多、使用更方便的电子产品所替代,本课程设计是一个以温度传感器采用LM35的环境温度简易测控系统,用于替代传统的低精度、不易读数的温度计。但系统预留了足够的扩展空间,并提供了简单的扩展方式供参考,实际使用中可根据需要改成多路转换,既可以增加湿度等测控对象,也能减少外界因素对系统的干扰。 首先温度传感器把温度信号转换为电流信号,通过放大器变成电压信号,然后送入两个反向输入的运算放大器组成的比较器电路,让电位器来改变温度范围的取值,最后信号送入比较器电路,通过比较来判断控制电路是否需要工作。此方案是采用传统的模拟控制方法,选用模拟电路,用电位器设定给定值,反馈的温度值与给定的温度值比较后,决定是否加热。 关键词:温度传感器比较器继电器

基于MSP430实现的步进电机控制

作品概述 第一节基本情况 MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。 第二节软硬件总体设计方案 本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad 核心板加底板的形式,对步进电机进行控制。滑变,即滑动变阻器,用来控制电机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式,如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。数码管可用来显示模式和方向,以及转速的百分比。系统总体设计框图如下 图1.2.1 系统总体设计框图 在硬件设计时,只需设计外围电路,留出与Launchpad核心板的接口即可,既节约了设计时间,又节省了成本,而且无需额外购买仿真器,从而使设计成本

到达最低。 在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、TA定时器、ADC10模数转换器,看门狗,以及IO口中断等资源,设计出高效率、低功耗、结构紧凑而又功能强大的产品。

第一章作品硬件系统设计 第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。此外,其还可提供板上Flash 仿真工具,以直接连接至PC 轻松进行编程、调试和评估。LaunchPad 试验板还能够对eZ430-RF2500T 目标板、eZ430-Chronos 手表模块eZ430-F2012T/F2013T 目标板进行编程。此外,它还提供了从MSP430G2xx 器件到主机PC 或相连目标板的9600 波特UART 串行连接。其实物图如图2.1所示。 图2.1.1 MSP430G2系列Launchpad开发板实物图 MSP430G2系列Launchpad开发板硬件资源: ? USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的

温度控制电路设计---实验报告

温度控制电路设计一、设计任务 设计一温度控制电路并进行仿真。 二、设计要求 基本功能:利用AD590作为测温传感器,T L 为低温报警门限温度值,T H 为高 温报警门限温度值。当T小于T L 时,低温警报LED亮并启动加热器;当T大于 T H 时,高温警报LED亮并启动风扇;当T介于T L 、T H 之间时,LED全灭,加热器 与风扇都不工作(假设T L =20℃,T H =30℃)。 扩展功能:用LED数码管显示测量温度值(十进制或十六进制均可)。 三、设计方案 AD590是美国ANALOG DEVICES公司的单片集成两端感温电流源,其输出电流与绝对温度成比例。在4V至30V电源电压范围内,该器件可充当一个高阻抗、恒流调节器,调节系数为1μA/K。AD590适用于150℃以下、目前采用传统电气温度传感器的任何温度检测应用。低成本的单芯片集成电路及无需支持电路的特点,使它成为许多温度测量应用的一种很有吸引力的备选方案。应用AD590时,无需线性化电路、精密电压放大器、电阻测量电路和冷结补偿。 主要特性:流过器件的电流(μA) 等于器件所处环境的热力学温度(K) 度数;AD590的测温范围为- 55℃~+150℃;AD590的电源电压范围为4~30 V,可以承受44V正向电压和20V反向电压,因而器件即使反接也不会被损坏;输出电阻为710mΩ;精度高,AD590在-55℃~+-150℃范围内,非线性误差仅为±0.3℃。 基本使用方法如右图。 AD590的输出电流是以绝对温度零度(-273℃)为基准, 每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其 输出电流I out =(273+25)=298μA。 V o 的值为I o 乘上10K,以室温25℃而言,输出值为 10K×298μA=2.98V 。 测量V o 时,不可分出任何电流,否则测量值会不准。 温度控制电路设计框图如下: 温度控制电路框图 由于Multisim中没有AD590温度传感器,根据它的工作特性,可以采用恒流源来替代该传感器,通过改变电流值模拟环境温度变化。通过温度校正电路得

msp430控制步进电机实验报告

计算机硬件应用课程设计

一、实验内容及要求 题目:步进电机控制设计 使用单片机为核心,设计一个步进电机控制器。 基本要求:使用单片机为控制核心,编写程序并设计硬件结构,实现对步进电机 的控制。步进电机按固定方向连续转动。对电机的运行方向进行控制,如:要求按下A 键时,能够控制步进电机正转;按下B键时,能够控制步进电机反转。 提高要求(选作):用LED数码管显示步进电机的转动状态;增加启动、停止控制按键。 二、小组成员 三、实验软硬件环境简介 硬件环境:MSP430G2553单片机一块,五线四相步进电机一个,驱动芯片ULN2003一块,开关三个,下载线一根。 软件设计:仿真软件PROTEUS 8.0 Professional;代码编写软件IAR;WINDOWS操作系统。 四、设计方案分析 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电设备,它实际上是一种单相或多相同步的步进电机。单相步进电机由单路电脉冲驱动,输出功率一般很小,故需要加一个驱动电路。当向脉冲分配器输入一个脉冲时,电动机各相的通电状态就会发生改变,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入法的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。 步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三相绕组上,从而实现不同的工作状态。步进电机有三线式、五线式、六线式三种,但其控制方式均相同,都必须以脉冲电流来驱动。若每转一圈以20个励磁信号来计算,则每个励磁信号前进18°,其旋转角度与脉冲数成正比,正反转可以由脉冲顺序来控制。 步进电机的励磁方式可分为全部励磁及半步励磁,其中全部励磁又有1相励磁及2相励磁之分,而半步励磁又称为1-2相励磁。 1相励磁法:在每一瞬间只有一个线圈导通。消耗电力小,精确度良好,但转矩小,振动较大,每一励磁信号可走18°。若以1相励磁法控制步进电机正转,其励磁顺序表如下。若以励磁信号反响传送,则步进电机反转。本实验中采用这个方法。

温度测量控制系统的设计与制作实验报告(汇编)

北京电子科技学院 课程设计报告 ( 2010 – 2011年度第一学期) 名称:模拟电子技术课程设计 题目:温度测量控制系统的设计与制作 学号: 学生姓名: 指导教师: 成绩: 日期:2010年11月17日

目录 一、电子技术课程设计的目的与要求 (3) 二、课程设计名称及设计要求 (3) 三、总体设计思想 (3) 四、系统框图及简要说明 (4) 五、单元电路设计(原理、芯片、参数计算等) (4) 六、总体电路 (5) 七、仿真结果 (8) 八、实测结果分析 (9) 九、心得体会 (9) 附录I:元器件清单 (11) 附录II:multisim仿真图 (11) 附录III:参考文献 (11)

一、电子技术课程设计的目的与要求 (一)电子技术课程设计的目的 课程设计作为模拟电子技术课程的重要组成部分,目的是使学生进一步理解课程内容,基本掌握电子系统设计和调试的方法,增加集成电路应用知识,培养学生实际动手能力以及分析、解决问题的能力。 按照本专业培养方案要求,在学完专业基础课模拟电子技术课程后,应进行课程设计,其目的是使学生更好地巩固和加深对基础知识的理解,学会设计小型电子系统的方法,独立完成系统设计及调试,增强学生理论联系实际的能力,提高学生电路分析和设计能力。通过实践教学引导学生在理论指导下有所创新,为专业课的学习和日后工程实践奠定基础。 (二)电子技术课程设计的要求 1.教学基本要求 要求学生独立完成选题设计,掌握数字系统设计方法;完成系统的组装及调试工作;在课程设计中要注重培养工程质量意识,按要求写出课程设计报告。 教师应事先准备好课程设计任务书、指导学生查阅有关资料,安排适当的时间进行答疑,帮助学生解决课程设计过程中的问题。 2.能力培养要求 (1)通过查阅手册和有关文献资料培养学生独立分析和解决实际问题的能力。 (2)通过实际电路方案的分析比较、设计计算、元件选取、安装调试等环节,掌握简单实用电路的分析方法和工程设计方法。 (3)掌握常用仪器设备的使用方法,学会简单的实验调试,提高动手能力。 (4)综合应用课程中学到的理论知识去独立完成一个设计任务。 (5)培养严肃认真的工作作风和严谨的科学态度。 二、课程设计名称及设计要求 (一)课程设计名称 设计题目:温度测量控制系统的设计与制作 (二)课程设计要求 1、设计任务 要求设计制作一个可以测量温度的测量控制系统,测量温度范围:室温0~50℃,测量精度±1℃。 2、技术指标及要求: (1)当温度在室温0℃~50℃之间变化时,系统输出端1相应在0~5V之间变化。 (2)当输出端1电压大于3V时,输出端2为低电平;当输出端1小于2V时,输出端2为高电平。 输出端1电压小于3V并大于2V时,输出端2保持不变。 三、总体设计思想 使用温度传感器完成系统设计中将实现温度信号转化为电压信号这一要求,该器件具有良好的线性和互换性,测量精度高,并具有消除电源波动的特性。因此,我们可以利用它的这些特性,实现从温度到电流的转化;但是,又考虑到温度传感器应用在电路中后,相当于电流源的作用,产生的是电流信号,所以,应用一个接地电阻使电流信号在传输过程中转化为电压信号。接下来应该是对产生电压信号的传输与调整,这里要用到电压跟随器、加减运算电路,这些电路的实现都离不开集成运放对信号进行运算以及电位器对电压调节,所以选用了集成运放LM324和电位器;最后为实现技术指标(当输出端1电压大于3V时,输出端2为低电平;当输出端1小于2V时,输出端2为高电平。输出端1电压小于3V并大于2V时,输出端2保持不变。)中的要求,选用了555定时器LM555CM。 通过以上分析,电路的总体设计思想就明确了,即我们使用温度传感器AD590将温度转化成电压信号,然后通过一系列的集成运放电路,使表示温度的电压放大,从而线性地落在0~5V这个区间里。最后通过一个555设计的电路实现当输出电压在2与3V这两点上实现输出高低电平的变化。

msp430 按键控制LED 最基本程序

按键篇 经过一短时间的学习,下面,亲自动手编写一下程序吧。 程序的目的是:按下按键,控制LED的亮和灭。短按键,则小灯亮1秒,然后灭;长按键,小灯常亮。 首先,完成键盘的扫描程序。 第一点:如果是扫描,就要用到定时器。我想设计定时器每隔10ms扫描一次按键。 定时器,我选用定时器A。它的定时中断函数如下: 函数名称:TimerA_ISR 功能:定时器A的中断服务函数 参数:无 返回值:无 ********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { GetKey(); } 上面这个定时中断函数的意思就是:每当定时时间到了以后,就调用GetKey()函数一次。GetKey()函数就是扫描键盘按键的函数了。在GetKey()函数中,会根据按键类型(长按/短按)返回不同的数值。根据返回的数值,做小灯亮法的操作。那么,返回的这个值,我们需要保存在一个变量中,在这里定义一个变量ucharFlagLcd ; 来保存返回值。这个变量在全局变量中定义,以保证它的作用域。 那么定时函数就变为 #pragma vector = TIMERA0_VECTOR __interrupt void TimerA_ISR(void) { FlagLcd =GetKey(); } 定时器中断的时间间隔,我在主函数中定义。 这样写: CCTL0 = CCIE; //使能CCR0中断 CCR0 = 40; //设定周期0.01S TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 这样,定时器这块就算完工了。那么,下面进行按键扫描程序。

计算机温度控制实验报告1

目录 一、实验目的---------------------------------2 二、预习与参考------------------------------- 2 三、实验(设计)的要求与数据------------------- 2 四、实验(设计)仪器设备和材料清单-------------- 2 五、实验过程---------------------------------2 (一)硬件的连接- --------- ----------------------- 2 (二)软件的设计与测试结果--------------------------3 六、实验过程遇到问题与解决--------------------11 七、实验心得--------------------------------12 八、参考资料-------------------------------12

一、实验目的 设计制作和调试一个由工业控制机控制的温度测控系统。通过这个过程学习温度的采样方法,A/D变换方法以及数字滤波的方法。通过时间过程掌握温度的几种控制方式,了解利用计算机进行自动控制的系统结构。 二、预习与参考 C语言、计算机控制技术、自动控制原理 三、实验(设计)的要求与数据 温度控制指标:60~80℃之间任选;偏差:1℃。 1.每组4~5同学,每个小组根据实验室提供的设备及设计要求,设计并制作出实际电路组成一个完整的计算机温度控制测控系统。 2.根据设备情况以及被控对象,选择1~2种合适的控制算法,编制程序框图和源程序,并进行实际操作和调试通过。 四、实验(设计)仪器设备和材料清单 工业控制机、烘箱、温度变送器、直流电源、万用表、温度计等 五、实验过程 (一).硬件的连接 图1 硬件接线图

555定时器温度控制电路设计

内容摘要 在日常的生产与生活中,温度是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。所以人们需要用到良好的温度检测及控制装置系统来解决这些问题。本文介绍了采用A/D转换、555定时器、AT89C51芯片以及DS1620温度传感器等组成的温度控制系统的设计方法和工作原理。能够通过传感器对温度的感应自动调节加热功率的大小,并且在解决温度检测的基础上,通过555定时器完成对温度的特殊控制。 本设计应用性比较强,设计系统可以作为温度监控系统,如果稍微改装可以做热水器温度调节系统、实验室温度监控系统等等。课题主要任务是完成环境温度检测,利用单片机实现温度调节并通过计算机实施温度监控。设计后的系统具有操作方便,控制灵活等优点。 本设计系统包括温度传感器,A/D转换模块,温度传感器模块,和555定时器,AT89C51芯片等。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是以555定时器进行温度监控,完成了课题所有要求。 索引关键词:自动控制系统温度传感器 MCS-51 555定时器

目录 第一章绪论 (1) 1.1研究温度控制系统的意义 (1) 1.2 温度控制系统中传感器 (1) 1.3 温度控制系统设计要点 (1) 1.4 温度控制系统设计内容 (1) 第二章硬件系统的构成 (2) 2.1 AT89C51概况 (2) 2.2功能特性概述 (2) 2.3引角功能说明 (2) 2.4时钟振荡器 (4) 2.5空闲节电模式 (4) 2.6掉电模式 (4) 2.7传感器概述 (4) 第三章数字温度测控芯片DS1620的应用 (4) 3.1 概述 (4) 3.2 引脚功能说明 (5) 3.3 操作和控制 (6) 3.4 DS1620有两种操作模式 (6) 3.5 555定时器概述 (8) 3.6 电路图 (10) 后记 (11) 参考文献 (12)

温度控制器实验报告

单片机课程设计实验报告 ——温度控制器 班级:学号: 电气0806 姓名: 08291174 老师: 李长城 合作者: 姜久春 李志鹏

一、实验要求和目的 本课程设计的课题是温度控制器。 ●用电压输入的变化来模拟温度的变化,对输入的模拟电压通过 ADC0832转换成数字量输出。输入的电压为0.00V——5.00V, 在三位数码显示管中显示范围为00.0——99.9。其中0V对应00.0,5V对应99.9 ●单片机的控制目标是风机和加热器。分别由两个继电器工作来 模拟。系统加了一个滞环。适合温度为60度。 ◆当显示为00.0-50.0时,继电器A闭合,灯A亮,模拟加热 器工作。 ◆当显示为为50.0-55.0时,保持继电器AB的动作。 ◆当显示为55.0-65.0时,继电器A断开,灯A熄灭,模拟加 热器停止工作。 ◆当显示为65.0-70.0时,保持继电器AB的动作 ◆当显示为70.0-99.9时,继电器B闭合,灯B亮,模拟风机的 工作。 二、实验电路涉及原件及电路图 由于硬件系统电路已经给定,只需要了解它的功能,使用proteus 画出原理图就可以了。 实验设计的电路硬件有: 1、AT89S52 本温度控制器采用AT89C52单片机作为CPU,12MHZ晶振

AT89C52的引脚结构图: AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置

温度检测与控制实验报告材料

实验三十二温度传感器温度控制实验 一、实验目的 1.了解温度传感器电路的工作原理 2.了解温度控制的基本原理 3.掌握一线总线接口的使用 二、实验说明 这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。 1.DALLAS最新单线数字温度传感器DS18B20简介 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压围,使系统设计更灵活、方便。 DS18B20测量温度围为 -55°C~+125°C,在-10~+85°C围,精度为±0.5°C。DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。 DS18B20部结构 DS18B20部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接 着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验 码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样 就可以实现一根总线上挂接多个DS18B20的目的。 DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 232221202-12-22-32-4 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 S S S S S 262524这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的

简易温度控制器的设计(DOC)

" 简易温度控制器的设计 摘要 简易温度控制器是采用热敏电阻作为温度传感器,由于温度的变化而引起电压的变化,再利用比较运算放大器与设置的温度值对应的电压进行比较,输出高或低电平从而对控制对象即加热器进行控制。其电路可分为三大部分:测温电路,比较/显示电路,控制电路。 关键词:测温,显示,加热 ! }

目录 一、设计任务和要求 0 设计内容 0 设计要求 0 二、系统设计 0 系统要求 0 系统工作原理 0 方案设计 0 三.单元电路设计 (1) 温度检测电路 (1) 电路结构及工作原理 (1) 电路仿真 (2) 、元器件的选择及参数的确定 (3) 比较/显示电路 (3) 电路结构及工作原理 (3) 电路仿真 (4) 元件的选择及参数的确定 (5) 、温度控制单元电路 (5) 电路结构及工作原理 (5) 温度控制单元仿真电路 (6) 电源部分 (7) 四.系统仿真 (9) 结论 (9) 致谢 (9) 参考文献 (9)

一、设计任务和要求 设计内容 采用热敏电阻作为温度传感器,由于温度变化而引起电压的变化,再利用比较运算放大器与设置的温度值对应的电压进行比较,从而通过输出电平对加热器进行控制。 设计要求 首先通过电源变压器把220V的交流电变成所需要的5V电压;当水温小于40℃时,H1、H2两个加热器同时打开,将容器内的水加热;当水温大于50℃,但小于70℃时,H1加热器打开,H2加热器关闭;当水温大于50℃时,H1、H2两个加热器同时关闭;当水温小于30℃,或者大于80℃时,红色发光二极管报警;当水温在30℃~80℃之间时,用绿色发光二极管指示水温正常[2]。 二、系统设计 系统要求 系统主要要求将温度模拟量转化为数字量,再将其转化为控制信号,从而对显示电路和控制电路进行控制,从而自动的调节水温, 系统工作原理 通过对水温进行测量,将所测量的温度值与给定值进行比较,利用比较后的输出信号至加热部分,让加热部分调控水温,从而实现对水温控制的目的。同时也反应到显示部分,让其正确的表示温度的状态。温度值的变化引起电阻值的变化,从而最终引起测温电路输出的电压值的变化,经过后边比较电路进行比较,从而控制显示电路和加热电路。 方案设计 为了使信号输出误差很小,选用桥式测压电路,这样可以得出较为准确的与温度相对应的电压值,关于比较部分可以选用比较器LM339构成窗口比较器,再利用滑动变阻

相关主题