文档库 最新最全的文档下载
当前位置:文档库 › 基于单片机的温度报警系统+proteus仿真

基于单片机的温度报警系统+proteus仿真

基于单片机的温度报警系统+proteus仿真
基于单片机的温度报警系统+proteus仿真

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}

sbit HI_LED=P2^3; //高温,低温白净闪烁LED

sbit LO_LED=P2^6;

sbit DQ=P3^3; //DS18B20数据线

sbit BEEP=P3^7; //报警

sbit RS=P2^0;

sbit RW=P2^1;

sbit EN=P2^2;

sbit K1=P1^7; //正常显示温度,越界时报警

sbit K2=P1^4; //显示报警温度

sbit K3=P1^1; //查看ROM CODE

uchar code RomCodeStr[]={"-- ROM CODE --"};

uchar RomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //64位ROM CODE

uchar code Temp_Disp_Title[] ={"Current Temp: "};

uchar Current_Temp_Display_Buffer[]={"TEMPE: "};

uchar code Temperature_Char[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00}; //温度示字符

uchar code Alarm_Temp[]={"ALARM TEMP Hi Lo"};

uchar Alarm_HI_LO_STR[]={"Hi: Lo: "};

uchar temp_data[2]={0x00,0x00};

uchar temp_alarm[2]={0x00,0x00};

uchar display[5]={0x00,0x00,0x00,0x00,0x00,}; //温度值

uchar display1[3]={0x00,0x00,0x00}; //温度报警值

uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}; //温度小数位对照表//.......................................................

//报警温度上下限(取值范围:-128~+127)(DS18B20温度范围为:-55~+125)//数组中前一位为高温值,后一位为低温值

//此处类型注意设为char,否则不能进行有符号数的比较

char Alarm_Temp_HL[2]={70,-20};

//............................................................

uchar CurrentT=0; //当前读取温度整数部分

uchar Temp_Value[]={0x00,0x00};//从DS18B20读取的温度值

uchar Display_Digit[]={0,0,0,0};//待显示的各温度数位

bit HI_Alarm=0,LO_Alarm=0; //高低温报警标志

bit DS18B20_IS_OK=1; //传感器正常标志

uint Time0_Count=0; //定时器延时累加

//...........................

//延时

//...........................

void DelayXus(int x)

{

uchar i;

while(x--)for(i=0;i<200;i++);

}

//.......................................

//忙检测

bit LCD_Busy_Check()

{

bit LCD_Status;

RS=0;//寄存器选择

RW=1;//读状态寄存器EN=1;//开始读

DelayXus(1);

LCD_Status=(bit)(P0&0x80) ;

EN=0;

return LCD_Status;

}

//写LCD指令

void Write_LCD_Command(uchar cmd)

{

while((LCD_Busy_Check()&0x80)==0x80); //忙等待

RS=0; //写选择命令寄存器

RW=0; //写

EN=0;

P0=cmd; EN=1; DelayXus(1); EN=0;

}

//向LCD写数据

void Write_LCD_Data(uchar dat)

{

while((LCD_Busy_Check()&0x80)==0x80); //忙等待

RS=1;RW=0;EN=0;P0=dat;EN=1; DelayXus(1); EN=0;

}

//设置液晶显示位置

void Set_LCD_POS(uchar pos)

{

Write_LCD_Command(pos |0x80);

}

//LCD初始化

void LCD_Initialise()

{

Write_LCD_Command(0x38);

DelayXus(1);

Write_LCD_Command(0x01); //清屏

DelayXus(1);

Write_LCD_Command(0x06); //字符进入模式:屏幕不动,字符后移DelayXus(1);

Write_LCD_Command(0x0C); //显示开,关光标

DelayXus(1);

}

//...............................................

//..........................................

//自定义字符写CGRAM

//..................................

void Write_NEW_LCD_Char()

{

uchar i;

Write_LCD_Command(0x40); //写CGRAM

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

Write_LCD_Data(Temperature_Char[i]); //写入温度符号

}

//............................................

//延时

//........................................................

void Delay(uint num)

{

while(--num);

}

//...............................................

//初始化DS18B20

//...............................................

uchar Init_DS18B20()

{

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status; //初始化成功时返回0

}

//...............................................

//读一节

//...............................................

uchar ReadOneByte()

{

uchar i,dat=0;

DQ=1;_nop_();

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

{

DQ=0;dat>>=1;DQ=1;_nop_(); _nop_();

if(DQ) dat |=0x80;Delay(30);DQ=1;

}

return dat;

}

//...............................................

//写一字节

//...............................................

void WriteOneByte(uchar dat)

{

uchar i;

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

{

DQ=0;DQ=dat&0x01;Delay(5);DQ=1;dat>>=1;

}

}

//...............................................

//读取温度值

//...............................................

void Read_Temperature()

{

if(Init_DS18B20()==1) //DS18B20故障DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC); //跳过序列号

WriteOneByte(0x44); //启动温度转换

Init_DS18B20();

WriteOneByte(0xCC); //跳过序列号

WriteOneByte(0xBE); //读取温度寄存器

Temp_Value[0]=ReadOneByte(); //温度低8位

Temp_Value[1]=ReadOneByte(); //温度高8位

Alarm_Temp_HL[0]=ReadOneByte(); //报警温度TH

Alarm_Temp_HL[1]=ReadOneByte(); //报警温度TL

DS18B20_IS_OK=1;

}

}

//...............................................

//设置DS18B20温度报警值

//...............................................

void Set_Alarm_Temp_Value()

{

Init_DS18B20();

WriteOneByte(0xCC); //跳过序列号

WriteOneByte(0x4E); //将设定的温度报警值写入DS18B20

WriteOneByte(Alarm_Temp_HL[0]); //写TH

WriteOneByte(Alarm_Temp_HL[1]); //写TL

WriteOneByte(0x7F); //12位精度

Init_DS18B20();

WriteOneByte(0xCC); //跳过序列号

WriteOneByte(0x48); //温度报警值存入DS18B20

}

//......................................................

//在LCD上显示当前温度

//.....................................................

void Display_Temperature()

{

uchar i;

uchar t=150; //延时值

uchar ng=0; //负数标识

char Signed_Current_Temp;

//如果为负数则取反加1,并设置负数标识

if((Temp_Value[1]&0xF8)==0xF8)

{

Temp_Value[1]=~Temp_Value[1];

Temp_Value[0]=~Temp_Value[0]+1;

if(Temp_Value[0]==0x00) Temp_Value[1]++;

ng=1; //设负数标识

}

//查表得到温度小数部分

Display_Digit[0]=df_Table[Temp_Value[0]&0x0F];

//获取温度整数部分(无符号)

CurrentT=((Temp_Value[0]&0xF0)>>4)|((Temp_Value[1]&0x07)<<4);

//有符号的当前温度值,注意此处定义为char, 其值可为-128~+127

Signed_Current_Temp=ng?-CurrentT:CurrentT;

//高低温报警标志设置(与定义为char类型的Alarm_Temp_HL比较,这样可区分正负比较)

HI_Alarm=Signed_Current_Temp>=Alarm_Temp_HL[0]?1:0;

LO_Alarm=Signed_Current_Temp<=Alarm_Temp_HL[1]?1:0;

//将整数部分分解为三位待显示数字

Display_Digit[3]=CurrentT/100;

Display_Digit[2]=CurrentT%100/10;

Display_Digit[1]=CurrentT%10;

//刷新LCD显示缓冲

Current_Temp_Display_Buffer[11]=Display_Digit[0]+'0';

Current_Temp_Display_Buffer[10]='.';

Current_Temp_Display_Buffer[9]=Display_Digit[1]+'0';

Current_Temp_Display_Buffer[8]=Display_Digit[2]+'0';

Current_Temp_Display_Buffer[7]=Display_Digit[3]+'0';

//高位为0时不显示

if(Display_Digit[3]==0) Current_Temp_Display_Buffer[7]=' ';

//高位为0且次高位为0时,次高位不显示

if(Display_Digit[2]==0&&Display_Digit[3]==0)

Current_Temp_Display_Buffer[8]=' ';

//负数符号显示恰当位置

if (ng)

{

if(Current_Temp_Display_Buffer[8]==' ')

Current_Temp_Display_Buffer[8]='_';

else

if(Current_Temp_Display_Buffer[7]==' ')

Current_Temp_Display_Buffer[7]='_';

else

Current_Temp_Display_Buffer[6]='_';

}

//在第一行显示标题

Set_LCD_POS(0X00);

for(i=0;i<16;i++) Write_LCD_Data( Temp_Disp_Title[i]);

//在第二行显示当前温度

Set_LCD_POS(0X40);

for(i=0;i<16;i++) Write_LCD_Data(Current_Temp_Display_Buffer[i]); //显示温度符号

Set_LCD_POS(0X4D);Write_LCD_Data(0x00);

Set_LCD_POS(0X4E);Write_LCD_Data('C');

}

//.....................................

//定时器中断,控制报警声音

//.................................

void T0_INT() interrupt 1

{

TH0=-1000/256;

TL0=-1000%256;

BEEP=!BEEP;

if(++Time0_Count==400)

{

Time0_Count=0;

if(HI_Alarm) HI_LED=~HI_LED; else HI_LED=0;

if(LO_Alarm) LO_LED=~LO_LED; else LO_LED=0;

TR0=0;

}

}

//...............................................

//ROM CODE转换与显示

//.....................................................

void Display_Rom_Code()

{

uchar i,t;

Set_LCD_POS(0x40);

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

{

t=((RomCode[i]&0xF0)>>4);

if(t>9) t+=0x37;else t+='0';

Write_LCD_Data(t); //高位数显示

t=RomCode[i]&0x0F;

if(t>9) t+=0x37;else t+='0';

Write_LCD_Data(t); //低位数显示

}

}

//..................................

//读64位序列码

//...............................

void Read_Rom_Code()

{

uchar i;

Init_DS18B20();

WriteOneByte(0x33); //读序列码

for (i=0;i<8;i++) RomCode[i]=ReadOneByte();

}

//.........................................

//显示ROM CODE

//...............................

void Display_RomCode()

{

uchar i;

Set_LCD_POS(0x00);

for(i=0;i<16;i++) //显示标题

Write_LCD_Data(RomCodeStr[i]);

Read_Rom_Code(); //读64位序列码

Display_Rom_Code(); //显示64位ROM CODE }

//.......................................

//显示报警温度

//...............................................

void Disp_Alarm_Temperature()

{

uchar i,ng;

//显示Alarm_Temp_HL数组中的报警温度值

//由于Alarm_Temp_HL类型为char,故可以直接进行正负比较//高温报警值.........................

ng=0;

if(Alarm_Temp_HL[0]<0) //如果为负数则取反加1

{

Alarm_Temp_HL[0]=~Alarm_Temp_HL[0]+1;

ng=1;

}

Proteus仿真单片机实例

引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。 2.Proteus介绍 Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing And Editing Software)也就是PCB. 2.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 2.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 3. 基于Protesus的简单数据采集系统。 3.1 软件的编写 本例题采用可调电阻调节电压值作为模拟信号的输入量,通过A/D转换芯片AD0808把模拟信号转换为数字量传送到单片机的P1口,并在P0口把转换的结果显示出来。 软件的编写可以在Keil C51 环境下进行,芯片的型号选择AT89C51,编写data.c文件,利用Keil C51进行编译,编译成功后生成data.hex文件。 3.2 绘制电路图 运行Proteus的ISIS,进入仿真软件的主界面,如图1所示。主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。

基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计

基于51单片机的乒乓游戏机设计附Proteus仿真 基于51单片机的乒乓游戏机设计附Proteus仿真 目录 1 绪论 (1) 1.1 本设计的研究背景和研究目的 (1) 1.2 国内外研究现状 (1) 1.3 本设计的任务和设计方法 (2) 1.3.1 设计任务 (2) 1.3.2 设计方法 (2) 2 乒乓游戏机设计方案 (3) 2.1 基于单片机的乒乓游戏机设计 (3) 2.1.1 硬件设计 (3) 2.1.2 软件设计 (4) 2.2 基于FPGA的乒乓游戏机设计 (4) 2.3 方案比较与选择 (5) 3硬件电路的设计 (6) 3.1 硬件核心电路选择 (6) 3.1.1 单片机STC89C51简介 (6) 3.1.2 单片机端口分配 (7) 3.2 电源电路的设计 (8) 3.3 时钟电路的设计 (9) 3.4 复位电路的设计 (10) 3.5 按键电路的设计 (10) 3.6 模拟球台电路的设计 (12) 3.6.1 译码器简介 (12) 3.6.2发光二极管简介 (14) 3.6.3 模拟球拍电路的设计 (15) 3.7 显示电路的设计 (15) 3.7.1 LCD1602简介 (15) 3.7.2 显示电路的设计 (16)

3.8 乒乓游戏机总电路的设计 (17) 4 乒乓游戏机的软件设计及编程 (18) 4.1 主程序的设计及功能实现 (19) 4.2 按键组的设计及功能实现 (20) 4.2.1 球拍模拟子程序 (20) 4.2.2 暂停/开始子程序 (20) 4.3 发球程序的设计及功能实现 (21) 4.4 线路程序的设计及功能实现 (21) 4.4.1 线路选择子程序 (21) 4.4.2 LED点阵子程序 (22) 4.5 回球程序的设计及功能实现 (22) 4.6 LCD显示程序设计及功能实现 (23) 4.7 设计源程序 (24) 5 系统调试及分析 (24) 5.1 仿真调试及分析 (24) 5.1.1 Proteus软件简介 (24) 5.1.2 Keil uVision4软件简介 (25) 5.1.3 仿真调试 (25) 5.1.4 仿真调试的结果分析 (28) 5.2 实物调试及分析 (28) 5.2.1 制作实物的过程 (28) 5.2.2 进行实物调试 (28) 5.2.3 实物调试的结果分析 (31) 6 结论与展望 (32) 谢辞(Acknowledge) (33) 参考文献 (34) 附录1:程序 (36) 附录2:元件清单 (51)

基于51单片机的温度控制系统

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王*

毕业论文设计 基于51单片机的温度控制系统

摘要 在日常生活中温度在我们身边无时不在,温度的控制和应用在各个领域都有重要的作用。很多行业中都有大量的用电加热设备,和温度控制设备,如用于报警的温度自动报警系统,热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,这些都采用单片机技术,利用单片机语言程序对它们进行控制。而单片机技术具有控制和操作使用方便、结构简单便于修改和维护、灵活性大且具有一定的智能性等特 点,可以精确的控 制技术标准,提高了温控指标,也大大的提高了产品的质量和性能。 由于单片机技术的优点突出,智能化温度控制技术正被广泛地采用。本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现。采用温度传感器DS18B20 采集温度数据,7段数码管显示温度数据,按键设置温度上下限,当温度低于设定的下限时,点亮绿色发光二极管,当温度高于设定的上限时,点亮红色发光二极管。给出了系统总体框架、程序流程图和Protel 原理图,并在硬件平台上实现了所设计功能。 关键词:单片机温度控制系统温度传感器

Abstract In daily life, the temperature in our side the ever-present, the control of the temperature and the application in various fields all have important role. Many industry there are a large number of electric heating equipment, and the temperature control equipment, such as used for alarm automatic temperature alarm systems, heat treatment furnace, used to melt metal crucible resistance furnace, and all kinds of different USES of temperature box and so on, these using single chip microcomputer, using single chip computer language program to control them. And single-chip microcomputer technology has control and convenient in operation, easy to modify and maintenance of simple structure, flexibility is large and has some of the intelligence and other characteristics, we can accurately control technology standard to improve the temperature control index, also greatly improve the quality of the products and performance. Because of the advantages of the single chip microcomputer intelligent temperature control technology outstanding, is being widely adopted. This paper introduces the temperature control based on single chip microcomputer AT89C51 design scheme of the system and the hardware and software implementation. The temperature sensor DS18B20 collection temperature data, 7 period of digital pipe display, the upper and lower limits of temperature button when temperature below the setting of the lower limit, light green leds, when the temperature is higher than the set on the limit, light red leds. Given the system framework and program flow chart and principle chart, and in Protel hardware platform to realize the function of the design. Keywords:SCM Temperature control system Temperature sensors

基于51单片机的温度报警系统设计

宝鸡文理学院电子电气工程学院单片机实习设计报告 设计题目: 基于51单片机的温度报警系统设计 班级: 2013级自动化2班 姓名: 赵阳201395124062 李杰201395124063 江超201395124064 王珊201395124065 指导教师: 李军生张曦 2016年1月8日

基于51单片机的温度报警系统设计 摘要 温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。温度控制电路在工农业生产中有着广泛的应用。日常生活中也可以见到,如电冰箱的自动制冷,空调器的自动控制等等。在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。其中,温度是一个非常重要的过程变量。例如:在冶金工业、化工工业、电力工业、机械加工和食品加工等许多领域,都需要对各种加热炉、热处理炉、反应炉和锅炉的温度进行监控。然而,用常规的监控方法,潜力是有限的,难以满足较高的性能要求。采用单片机来对它们进行监控不仅具有监控方便、简单和灵活性大的优点,而且可以大幅度提高被测温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的监控问题是一个工业生产中经常会遇到的监控问题。现代社会是信息化的社会,随着安全化程度的日益提高,而通过温度报警器及时报警,避免不必要的损失。 研究了基于STC-89C52RC单片机温度控制系统的原理和功能,温度测量单元由单总线数字温度传感器DS18B20构成。该系统可进行温度设定,时间显示和保存监测数据。如果温度超过任意设置的上限和下限值,系统将报警并可以和自动控制的实现,从而达到温度监测智能一定范围内。基于系统的原理,很容易使其他各种非线性控制系统,只要软件设计合理的改变。 关键字:STC-89C52RC单片机;温度;时间;DS18B20。

(整理)较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

单片机课程设计 题目动态数码管显示 学院机电工程学院 专业班级电子信息工程12-1班 姓名 组员 指导教师张、王老师 2015 年 5 月30 日

课程设计量化评分标准

目录 一、概述 (1) 1. 单片机简介 (1) 2. Proteus简介 (2) 3. 设计任务与要求 (3) 二、硬件设计 (3) 1. 单片机最小系统设计 (1) 2. 数码管显示部分 (4) 3. 数码管驱动部分 (5) 三、软件设计 (6) 1. 仿真原理图 (6) 2. 仿真参数设置 (6) 3. 仿真结果 (7) 4. 程序流程图 (8) 5. 程序代码.................................................... .9 四、心得体会............................................... (11) 五、参考文献 (12)

精品文档 一、概述 1. 单片机简介 如图1.1和图1.2分别为PDI P封装的AT89C52引脚图和实物图 图1.1 引脚图图1.2 实物图 AT89C52是一个低电压,高性能CMOS8位单片机,片内含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存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。本课程设计中使用的是PDIP封装的AT89C52单片机。 2.Proteus简介 如图1.3为Proteus7.0的工作界面图

基于51单片机的温度警报器的设计

西安文理学院物理与机械电子工程学院课程设计任务书

目录 摘要 (3) 1 引言 (3) 1.1课题背景 (3) 1.2研究内容和意义 (5) 2 芯片介绍 (5) 2.1 DS18B20概述 (5) 2.1.1 DS18B20封装形式及引脚功能 (6) 2.1.2 DS18B20内部结构 (6) 2.1.3 DS18B20供电方式 (9) 2.1.4 DS18B20的测温原理 (10) 2.1.5 DS18B20的ROM命令 (11) 2.2 AT89C52概述 (13) 2.2.1单片机AT89C52介绍 (13) 2.2.2功能特性概述 (13) 3 系统硬件设计 (13) 3.1 单片机最小系统的设计 (13) 3.2 温度采集电路的设计 (14) 3.3 LED显示报警电路的设计 (15) 4 系统软件设计...................................................15 4.1 流程图........................................................15 4.2 温度报警器程序.................................................16 4.3 总电路图..................................................... 19 5总结 (20)

摘要 随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。 本文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;温度检测;AT89C52;DS18B20; 1 引言 1.1课题背景 温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。 基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。 温度对于工业生产如此重要,由此推进了温度传感器的发展。温度传感器主要经过了三个发展阶段[1]: (1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、

51单片机+proteus仿真PWM

#include unsigned char flag; unsigned int x; unsigned int y; #define time 800 void main() { EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x02; //使用定时器T0的模式2 TH0=0; //定时器T0的高8位赋初值 TL0=0; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 x=time; y=0; while(1)//无限循环等待中断 ; } /************************************************************** 函数功能:定时器T0的中断服务程序 **************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数 //其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{ if(flag==0) { TH0=256-y; //定时器T0的高8位重新赋初值 TL0=256-y; //定时器T0的高8位重新赋初

P1=1; if((--x)==0) { flag=1; x=time; if((--y)==0) { y=100; } } } if(flag==1) { TH0=y; //定时器T0的高8位重新赋初值 TL0=y; //定时器T0的高8位重新赋初 P1=0; if((--x)==0) { flag=0; x=time; if((--y)==0) { y=100; } } } }

单片机课程设计(温度控制系统)

温度控制系统设计 题目: 基于51单片机的温度控制系统设计姓名: 学院: 电气工程与自动化学院 专业: 电气工程及其自动化 班级: 学号: 指导教师:

2015年5月31日 摘要: (3) 一、系统设计 (3) 1.1 项目概要 (3) 1.2设计任务和要求: (4) 二、硬件设计 (4) 2.1 硬件设计概要 (4) 2.2 信息处理模块 (4) 2.3 温度采集模块 (5) 2.3.1传感器DS18b20简介 (5) 2.3.2实验模拟电路图 (7) 2.3.3程序流程图 (6) 2.4控制调节模块 (9) 2.4.1升温调节系统 (9) 2.4.2温度上下限调节系统 (8) 2.43报警电路系统 (9) 2.5显示模块 (12) 三、两周实习总结 (13) 四、参考文献 (13) 五、附录 (15)

5.1原理图 (15) 摘要: 在现代工业生产中,温度是常用的测量被控因素。本设计是基于51单片机控制,将DS18B20温度传感器实时温度转化,并通过1602液晶对温度实行实时显示,并通过加热片(PWM波,改变其占空比)加热与步进电机降温逐次逼近的方式,将温度保持在设定温度,通过按键调节温度报警区域,实现对温度在0℃-99℃控制的自动化。实验结果表明此结构完全可行,温度偏差可达0.1℃以内。 关键字:AT89C51单片机;温控;DS18b20 一、系统设计 1.1 项目概要 温度控制系统无论是工业生产过程,还是日常生活都起着非常重要的作用,过低或过高的温度环境不仅是一种资源的浪费,同时也会对机器和工作人员的寿命产生严重影响,极有可能造成严重的经济财产损失,给生活生产带来许多利的因素,基于AT89C51的单片机温度控制系统与传统的温度控制相比具有操作方便、价价格便宜、精确度高和开展容易等优点,因此市场前景好。

基于51单片机的数字温度报警器

摘要:随着传感器在生产生活中更加广泛的应用,一种新型的数字式温度传感器实现对温度的测试与控制得到了更快的开发。本文设计了一种基于单片机AT89C52的温度检测及报警系统。该系统将温度传感器DS18B20接到单片机的一个端口上,单片机对温度传感器进行循环采集。将采集到的温度值与设定的上下限进行比较,当超出设定范围的上下限时,通过单片机控制的报警电路就会发出报警信号,从而实现了本次课程设计的要求。该系统设计和布线简单、结构紧凑、体积小、重量轻、抗干扰能力较强、性价比高、扩展方便,在工农业等领域的温度检测中有广阔的应用前景。本次课程设计的测量范围为0℃--99℃,测量误差为±2℃。 关键字:温度传感器、单片机、报警、数码管显示 一、概述 本次设计可以应用到许多我们用过的软件设计,将前面所学的知识融汇在一起实现温度监测及其报警的功能,来提醒农民当前大棚内温度是否适合农作物的生长。 电子技术是在十九世纪末、二十世纪初开始发展起来的新兴技术,在二十世纪发展最迅速,应用最广泛,成为近代科学技术发展的一个重要标志。 随着电子技术的飞速发展,电子技术在日常生活中得到了广泛的应用,各类转换电路的不断推出以及电子产品的快速更新,电子技术已成为世界发展和人们生活中必不可少的工具。 本次课设应用Protues软件设计一个温度检测报警系统,用温度传感器DS18B20采集大棚内的温度,当大棚内的温度高于30℃。或低于15℃。时,电路发出报警信号并显示当前温度,达到提醒农民的效果。 本次课设要求设计一个温度监测报警显示电路,要求温度范围:0℃--99℃;测量误差为±2℃;报警下限温度为:15℃;报警上限温度为:30℃。 二、方案论证 设计一个用于温室大棚温度监测系统。大棚农作物生长时,其温度不能太低,也不能太高,太低或太高均不适合农作物生长。该系统可实时测量、显示大棚的温度,当大棚温度超过农作物生长的温度范围时,报警提醒农民。 方案一: 方案一原理框图如图1所示。 图1 大棚温度检测系统的原理框图 方案二: 方案二原理框图如图2所示。

Proteus软件的单片机仿真(ATM)

摘要 基于Proteus软件的单片机自动取款机(ATM)仿真系统设计,硬件电路需要单片机开发板和12864液晶显示器,能够实现自动取款的全部功能。通过在在计算机上用C语言编程来将生成文件下载到单片机控制其它外围器件工作。但是在EDA新技术的引入使得系统的开发成本降低而且灵活性增强,在Proteus软件中都可以找到上述硬件元件,通过电路图连接完全可以实现仿真功能。在Keil软件环境下通过C语言编程,编译调试后生成单片机下载的HEX(十六进制)文件,硬件电路图是在Proteus 软件中进行建模。通过Proteus和Keil结合建立的虚拟系统实现联合仿真,单片机实时控制12864LCD实现汉字的显示,扫描键盘从而达到用户与ATM的信息交换,使得ATM系统设计变为现实。 ATM系统,是一个有数据库组成的应用系统。用户的初始信息通过E2PROM存放,这样免去了掉电丢失数据的弊端。系统功能有用户在ATM上提取现金、查询账户余额、修改密码、账户冻结、密码保护、自动存款及转账功能。可以仿真实现最基本的银行服务。 关键词:ATM;51单片机;Proteus;Keil;12864LCD;E2PROM;虚拟仿真

Abstract Automatic Teller Machine system is based on Proteus 51-microcontroller.Hardware circuit includes microcontroller developer board and 12864LCD display. All features of ATM can be well worked on it. Programming on PC then download created file to 51-microcontroller to control outer circuit. However, with the introduction of EDA, new technology, which lower the cost of system exploration and enhance flexibility. Programing with C language, compiling and debugging under the environment of Keil software,creating a HEX file which will be downloaded by microcontroller later. Hardware schematic diagrams are established with Proteus software. According to the combination of Proteus and Keil , making a virtual system , successfully achieve united simulation. Microcontroller controls 12864LCD to display Chinese words, scans keyboard to exchange information between customer and ATM, which makes virtual ATM system becoming reality. ATM system includes databases, which are used for the storage of customers’ initial information, leading to emerge from the disadvantage of data lost when power cuts. The functions of ATM are as follows: withdraw cash, search client and remaining modify password, client freezed, password protection, automatic deposit and transfer client. This system simulates to realize the bank’s fundamental services. Keywords:ATM;51microcontroller;Proteus;Keil;12864LCD;E2PROM;virtual simulation

51单片机行列式键盘的应用proteus仿真+源程序

51单片机行列式键盘的应用proteus仿真本人喜好单片机设计,精通单片机编程和硬件电路设计,在空余之际编一些小程序与大家分享,有哪位路过,请多多指教,希望大家在一起能互相学习,互相进步。这里的程序已经测试通过。发表出来,一来可以帮助同样爱好单片机的朋友们,二来,希望能结交一些同道中人,共同学习。 源程序: #include #include void delayms(unsigned char ms); unsigned char data dis_digit; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xff}; unsigned char data dis_index; void main() { P2=0xff; P1=0x00; dis_index=0; dis_digit=0x01; while(1) { P2=dis_code[dis_index]; P1=dis_digit; delayms(1); P1=0x00; dis_digit=_crol_(dis_digit,1); dis_index++; dis_index &=0x07; } } void delayms(unsigned char ms) { unsigned char i; while (ms--) {

for(i=0;i<120;i++); } } 仿真图:

如果您想做项目开发,或者是做课题,或者您只是有一个想法,亲联系我们,我们会尽最大努力帮您完成,您的需要就是我们奋斗的方向! 本人有给学生做课程设计的经验,欢迎亲们来本店咨询哦 淘宝店铺地址:https://www.wendangku.net/doc/b64432543.html, ; https://www.wendangku.net/doc/b64432543.html, QQ:1203026348;496617571 邮箱:1203026348@https://www.wendangku.net/doc/b64432543.html, ;496617571@https://www.wendangku.net/doc/b64432543.html, 电话:小陈:152******** 小张:158******** 阿里旺旺:tb3569_1968 ;zwjyln 我们拥有40G!!超大容量!!!是单片机入门者的首选经典资料!!! 您在单片机方面有任何问题,请及时和我们联系,我们会竭诚为您服务!! 承接单片机项目开发,同时包括软件开发和硬件开发。我们是一组拥有扎实的单片机基础知识的大学生,我们可以给您提供从项目开始到项目的完成整个过程的技术支持,其中包括原理图的设计、电路图的proteus软件仿真、程序的编写以及相关软件的使用等

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

基于单片机的温度报警系统+proteus仿真

#include #include #define uchar unsigned char #define uint unsigned int #define delayNOP() {_nop_();_nop_();_nop_();_nop_();} sbit HI_LED=P2^3; //高温,低温白净闪烁LED sbit LO_LED=P2^6; sbit DQ=P3^3; //DS18B20数据线 sbit BEEP=P3^7; //报警 sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; sbit K1=P1^7; //正常显示温度,越界时报警 sbit K2=P1^4; //显示报警温度 sbit K3=P1^1; //查看ROM CODE uchar code RomCodeStr[]={"-- ROM CODE --"}; uchar RomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //64位ROM CODE uchar code Temp_Disp_Title[] ={"Current Temp: "}; uchar Current_Temp_Display_Buffer[]={"TEMPE: "}; uchar code Temperature_Char[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00}; //温度示字符uchar code Alarm_Temp[]={"ALARM TEMP Hi Lo"}; uchar Alarm_HI_LO_STR[]={"Hi: Lo: "}; uchar temp_data[2]={0x00,0x00};

单片机温度传感器proteus仿真

仿真程序仿真: LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H TCNTA EQU 36H TCNTB EQU 37H H_TEMP EQU 38H L_TEMP EQU 39H FLAG BIT 00H H_ALM BIT P3.0 L_ALM BIT P3.1 SOUND BIT P3.7 CLOCK BIT P2.4 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_T1 START:MOV LED_0,#00H

MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE MOV H_TEMP,#153 MOV L_TEMP,#77 MOV TMOD,#12H MOV TH0,#245 MOV TL0,#0 MOV TH1,#(65536-1000)/256 MOV TL1,#(65536-1000)/256 MOV IE,#8AH CLR C SETB TR0 WAIT:SETB H_ALM SETB L_ALM CLR ST SETB ST CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC SUBB A,L_TEMP JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 JC HALM CLR TR1 LJMP PROC1 LALM:CLR L_ALM SETB TR1 CLR FLAG LJMP PROC1 HALM:CLR H_ALM SETB TR1 SETB FLAG LJMP PROC1 PROC1:MOV A,ADC MOV B,#100 DIV AB MOV LED_2,A MOV A,B

基于51单片机的计算器(附Proteus仿真图且程序有详细注释)

#include #define uint unsigned int #define uchar unsigned char #define lint unsigned long int uchar SMG[10]={0x3f,0x06,0x5b,0x4f, //数码管取模 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; uchar DA TA1[8]={0,0,0,0,0,0,0,0}; //第一个数 uchar DA TA2[8]={0,0,0,0,0,0,0,0}; //第二个数 uchar RESUIT[8]={0,0,0,0,0,0,0,0}; //结果 uchar px1=0,px2=0,px3=0,flag=0,flag1=0,flag2=0,flag3=0,f1=0,f2=0,f3=0,f4=0; //各全局变量uchar temp,key; lint x1=0,x2=0,y=0; //输入的数及其结果 void Init(); //系统初始化 void keyscan(); //键盘检测 void delay(uint); //延时 void DataOper(); //数据运算 void DataHandle(); //数据接收 void DisplayHandle(); //显示处理 void display(uchar,uchar); //数码管显示函数 void main() { P2=0x00; while(1) { keyscan(); DataHandle(); DisplayHandle(); } } void Init() //初始化,所有数据归零 { uchar i; px1=0;px2=0;px3=0; flag=0;flag1=0;flag2=0;flag3=0; f1=0;f2=0;f3=0;f4=0; x1=0;x2=0;y=0; for(i=0;i<8;i++) {DA TA1[i]=0;DATA2[i]=0;RESUIT[i]=0;} } void delay(msx) //msx为延时毫秒数 { uint i,j;

基于单片机水温控制系统

基于单片机水温控制系统 摘要:随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计以保质、节能、安全和方便为基准设计了一套电热壶水温控制系统,能实现在40℃~90℃X围内设定控制温度,且95℃时高温报警,十进制数码管显示温度,在PC机上显示温度曲线等功能,并具有较快响应与较小的超调。整个系统核心为SPCE061A,前向通道包括传感器及信号放大电路,按键输入电路;后向通道包括三部分:LED显示电路,上位机通信电路以及控制加热器的继电器驱动电路。利用SPCE061A的8路10位精度的A/D转换器,完成对水温的实时采样与模数转换,通过数字滤波消除系统干扰,并对温度值进行PID运算处理,以调节加热功率大小。同时在下位机上通过数码管显示当前温度,通过USB接口传送信息至上位机,可以直接在PC端观察温度的变化曲线,并根据需要进行相应的数据分析和处理,由此完成对水温的采样和控制。通过验证取得了较满意的结果。

关键词:码分多址、walsh扩频、pn扩频、电路设计、程序设计、仿真 目录 1 引言1 1.1水温控制系统概述1 1.2本设计任务和主要内容2 2 基于单片机水温控制系统设计过程2 2.1水温控制系统总体框图2 2.2总体方案论证3 2.3 各部分电路方案论证4 2.4键盘及数字显示结合5 2.5温度设定和传送电路6 3硬件电路设计与计算6 3.1 温度采样和转换电路6 3.2 温度控制电路8 3.3 单片机控制部分9 3.4键盘及数字显示部分9 参考文献9

水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变PID 调节参数值以取得佳性能。 本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然后在模型参考自适应算法MRAC基础上,用单片机实现了自适应控制,弥补了传统PID控制结构在特定场合下性能下降的不足,设计了一套实用的温度测控系统,使它在不同时间常数下均可以达到技术指标。此外还有效减少了输出继电器的开关次数,适用于环境参数经常变化的小型水温控制系统。

单片机课程设计报告——温度报警器

单片机原理与应用 课程设计报告 { 课程设计名称:温度报警器设计 专业班级: 13计转本 | 学生姓名:张朝柱肖娜 学号: 140 113 指导教师:高玉芹 设计时间: 2016-11—2017-12 成绩: 信电工程学院

摘要 2009年6月14日随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。 本文主要介绍了一个基于AT89C52单片机的测温系统,详细描述了利用液晶显示器件传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机AT89C51;DS18B20温度传感器;液晶显示LCD1602。

目录 1绪论 (1) 温度报警器简介 (1) 温度报警器的背景与研究意义 (1) 温度报警器的现状及发展趋势 (1) 2 系统整体方案设计 (2) 设计目标 (2) 系统的基本方案 (2) 系统方案选择 (2) 各模块方案选择 (3) 主要元器件介绍 (3) STC89C52的简介 (3) DS18B20的简介 (4) 3 系统的硬件设计与实现 (5) 系统硬件概述 (5) 主要单元电路的设计 (5) 键盘扫描模块电路的设计 (5) 单片机控制模块电路的设计 (5) 报警模块电路的设计 (6) LCD1602显示模块电路的设计 (7) 4 系统的软件设计与实现 (8) KEIL软件介绍 (8) 系统程序设计流程图 (8) 主程序软件设计 (8) 按键软件设计 (9) 密码设置软件设计 (9) 开锁软件设计 (10) 5 系统仿真设计 (12) Proteus 软件介绍 (12) Proteus 仿真图 (12) 硬件调试 (13) 调试结果 (13) 6 结论 (14)

相关文档
相关文档 最新文档