关于《基于STC89C52单片机的智能温控系统》,求大神帮忙写一下代码!!!

2).能对温度进行设定和控制:

#include wela=1;

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


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


#define uint unsigned int

#define uchar unsigned char

unsigned int qian,bai,shi,ge;

void delay (uint z) //z毫秒延时程序

{uint x,y;

for(x=z;x>0;x--)

for(y=114;y>0;y--);

}void write_com(uchar com) //LCD写指令

{lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

{lcdrs=1;

P0=dat;

delay(5);

lcden=1;

delay(5);

lcden=0;

}void init() //液晶初始化

{// dula=0;

// wela=0;

lcden=0;

write_com(0x38);//

write_com(0x0f);//

write_com(0x06);//

write_com(0x80);

write_com(0x01);//

}void Display(uint Adr)

{// uint i=Adr;

qian=i=103;num/1000;

bai=num%1000/100;

shi=num%100/10;

ge=num%10;

write_com(0x80+Adr);

write_data(0x30+qian);

write_data(0x30+bai);

write_data(0x30+shi);

write_data(0x30+ge);

}给你贴一个LCD的控制程序,其余的还是自己做吧,没用过你那个温度传感器,你看一下它给的时序图,再查一下资料,写一个读温度传感器串口数据的程序就行了,把数据直接赋给我程序中的num,就可以显示了。至于温度报警,你自己写个if之类的就行了

基于单片机的空调的设计与实现

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

一、 目的

仅供参考!!!

单片机综合练习是一项综合性的专业实践活动,目的是让学生将所学的基础理论和专业知识运用到具体的工程实践中,以培养学生综合运用知识能力、实际动手能力和工程实践能力,为此后的毕业设计打下良好的基础。

二、 任务

本次单片机综合练习的任务是设计并制作一个空调。

基本任务是利用AT89C51单片机、ADC0809模数转换器等芯片设计并制作一个具有制冷、制热、通风和自动运行的手控型空调。

三、硬件部分的具体内容和要求

1.手控型空调的功能:

1)空调应具有制冷、制热、通风和自动运行四种工作模式。

a. 制冷:室内风机、压缩机及室外风机工作,而四通换向阀停止工作。

b. 制热:室内风机、压缩机、室外风机和四通换向阀均工作。

c. 通风:室内风机工作,而压缩机、室外风机和四通换向阀均不工作。

d. 自动运行:能根据当前室内温度和自动运行的设定温度,自动选择制冷、制热或通风工作模式。

图3 工作模式选择

a. 制冷时温度调节范围为:20℃~32℃。当室内温度高于设定温度1℃时,开始制冷;而当室内温度降到设定温度时,则转为通风状态。

b. 制热时温度调节范围为:14℃~30℃。当室内温度低于设定温度1℃时,开始制热;而当室内温度升到设定温度时,则转为通风状态。

c. 通风时温度设置栏显示" 一 一 ",并且温度设置键无效。

d. 自动运行温度调节范围为:25℃、27℃、29℃。若室内温度低于设定温度5℃时,自动按制热工作模式运行;若室内温度高于设定温度时,则按制冷模式运行;否则按通风模式运行。

e. 温度设定键每按一下,则温度上升或下降1℃(在设定范围内)。

f. 控温精度为±1℃

3).室内风机具有高、中、低三档风速和自动风控制功能。

每按一下风速选择键时,风速模式按图4所示的箭头方向依此变换:

图4 风速模式选择

其中自动风与工作模式及温度有关:

a. 制冷时,当室内温度高于设定温度5℃时,为高速风;

当室内温度高于设定温度2℃~5℃时,为中速风;

当室内温度不高于设定温度2℃时,为低速风;

b. 制热时,当室内温度低于设定温度5℃时,为高速风;

当室内温度低于设定温度2℃~5℃时,为中速风;

当室内温度不低于设定温度2℃时,为低速风;

c. 通风时,当室内温度高于25℃时,为高速风;

当室内温度介于20℃~25℃时,为中速风;

当室内温度低于设定温度20℃时,为低速风;

4).具有压缩机三分钟自动保护功能。由于家用空调器所使用的压缩机大多为电容启动运行电动机,带载启动能力较,因此无论在制冷运行还是在制热运行时,当压缩机停止工作后,必须在三分钟后才允许重新启动。

2.电路设计、制作的功能和要求:

1)用6只共阴极的八段数码管来分别显示工作模式、风速状态、设定温度和室内温度。为了统一起见,对6只八段数码管的具体排列和工作状态的显示符号作如下规定:

室内温度

设定温度

风速状态:低速档用" "表示

中速档用" "表示

高速档用" "表示

自动档用" "表示

工作模式:制冷模式用"L"表示

制热模式用"H"表DQ=1;示

通风模式用"F"表示

自动模式用" "表示

2)用5只按钮来分别作为启动/关闭键、工作模式键、风速选择键、温度设定上升键和下降键。(此外还有1只系统复位按钮,共6只)

3)上电后,自动显示自动工作模式、自动风速档、设定温度27℃和实际室内温度,这时用户可以对工作模式、风速档、设定温度进行设定,但只有在按下启动/关闭键后,空调器才正式开始运行;在空调器运行期间,若

对上述状态进行设定,则空调器马上开始执行。若关机后(非断电)重新启动空调器,则空调器自动进入上次关机前的设定状态。

4)用6只LED发光二极管来分别表示室内风速的高、中、低三档,压缩机、室外风机和四通换向阀,所有发光二极管均要求用2003达林顿管或三极管放大驱动。

5)温度传感器采用AT502热敏电阻。

3.空调硬件电路图

4.硬件设计思想

1)根据任务书可知,该系统需要人机界面(按键输入7段码LED显示),AD采样,以及单片机控制部分等模块,并且可以得到以下硬件系统框图

2)各部分硬件的设计

a.温度传感器选择

根据任务要求我们选择了AT502作为温度传感器,根据电阻分压(如下图左),实现由温度到电压值的转换,因为AT502的温度系数比较大,经计算当温度变化范围是0-99度时,IN0口的电压范围是0.64-3.6伏,所以就可以不用运放,直接送到AD采样的输入端进行AD采样。

因为温度变化范围是0-99度,理论上AD位数只要7位(128级)就够了,所以系统采用了经典的ADC0809(8位AD)作为AD采样芯片。

温度的计算公式:V=5Rt/(R+R1+Rt)

c.按键输入:

因为按键数目不多,所以系统直接采用非编码方式,直接连接单片机I/O口。

d.显示部分:

e.输出控制

关于单片机温度控制系统C语言程序中的按键设置程序,请求详细的介绍下按键的输入过程。while(1) { if(KeyFl

b.AD芯片的选择

if(keypress==true)检测有键按下

for(j=2;j>0;j--);

{delay_us(50); 延迟50us,软件滤波防抖动

if(keypress==true) 检测有键被按下

key_value=P1;提取键值

{switch(key_value) 识别是那个键被按下了

case 0x01: XXX;break;

case 0x02:XXX;BREAK;进入对应工步或者动作即可。

..x=readdata[0];....

}}

}

你把程序具体部分都删除了,只剩下个框架 分析什么啊

怎样用PID算法对恒温箱的温度进行控制,求相关的51单片机汇编程序

#include

本设计要求:本温度控制系统为以单片机为核心,实现了对温度实时监测和控制,实现了控制的智能化。设计恒温箱温度控制系统,配有温度传感器,采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输,采用了PID控制技术,可以使温度保持在要求的一个恒定范围内,配有键盘,用于输入设定温度;配有数码管LED用来显示温度。

技}void write_data(uchar dat) //LCD写数据术参数和设计任务:

1、利用单片机AT89C2051实现对温度的控制,实现保持恒温箱在温度为110℃。

2、可预置恒温箱温度,烘干过程恒温控制,温度控制误小于±2℃。

3、预置时显示设定温度,恒温时显示实时温度,采用PID控制算法显示到0.1℃。

4、温度超出预置温度±5℃时发出声音报警。

5、对升、降温过程没有线性要求。

6、温度检测部分DS=1;采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输

7、人机对话部分由键盘、显示和报警三部分组成,实现对温度的显示、报警。

需要的话联系用户名

求一温度控制的C语言程序

DQ=1;

我做过DS18B20温控设备,单总线传感这是一个不错的选择哦。下面是C语言程序,硬件接线如下:

(1)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。

(2)把“单片机系统”区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。

(3)把DS18B20芯片插入“四路单总线”区域中的任一个插座中,注意电源与地信号不要接反。

(4)把“四路单总线”区域中的对应的DQ端子连接到“单片机系统”区域中的P3.7/RD端子上。

#include //at89c52

#include

unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,

0xef,0xdf,0xbf,0x7f};

unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00,0x40};

unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,

25,28,31,34,38,41,44,48,

50,53,56,59,63,66,69,72,

75,78,81,84,88,,94,97};

unsigned char displaycount;

unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};

unsigned char timecount;

unsigned char readdata[8];

it DQ=P3^7;

bit sflag;

bit resetpulse(void)

{unsigned char i;

DQ=0;

for(i=255;i>0;i--);

for(i=60;i>0;i--);

return(DQ);

for(i=200;i>0;i--);

}void writecommandtods18b20(unsigned char command)

{unsigned char i;

unsigned char j;

{if((command & 0x01)==0)

{DQ=0;

for(j=35;j>0;j--);

}else

{DQ=0;

for(j=33;j>0;j--);

}command=_cror_(command,1);

}}

unsigned char readdatafromds18b20(void)

{unsigned char i;

unsigned char j;

unsigned char temp;

temp=0;

{temp=_cror_(temp,1);

DQ=0;

_nop_();

_nop_();

for(j=10;j>0;j--);

if(DQ==1)

{temp=temp | 0x80;

}else

{temp=temp | 0x00;

}return(temp);

}void main(void)

{TMOD=0x01;

TH0=(65536-4000)/256;

ET0=1;

EA=1;

wela=0;writecommandtods18b20(0xcc);

writecommandtods18b20(0x44);

TR0=1;

while(1)

{;

}}

void t0(void) interrupt 1 using 0

{unsigned char x;

unsigned int result;

TH0=(65536-4000)/256;

if(displaycount==2)

{P0=displaycode[displaybuf[displaycount]] | 0x80;

}else

{P0=displaycode[displaybuf[displaycount]];

}P2=displaybit[displaycount];

displaycount++;

if(displaycount==8)

{displaycount=0;

}timecount++;

if(timecount==150)

{timecount=0;

writecommandtods18b20(0xcc);

writecommandtods18b20(0xbe);

readdata[0]=readdatafromds18b20();

readdata[1]=readdatafromds18b20();

{displaybuf[x]=16;

}sflag=0;

if((readdata[1] & 0xf8)!=0x00)

{sflag=1;

readdata[1]=~readdata[1];

readdata[0]=~readdata[0];

result=readdata[0]+1;

readdata[0]=result;

if(result>255)

{readdata[1]++;

}}

readdata[1]=readdata[1]<<4;

readdata[1]=readdata[1] & 0x70;

x=x>>4;

x=x & 0x0f;

readdata[1]=readdata[1] | x;

x=2;

result=readdata[1];

while(result/10)

{displaybuf[x]=result%10;

result=result/10;

x++;

}displaybuf[x]=result;

if(sflag==任务要求用6只LED发光二极管来分别表示室内风速的高、中、低三档,压缩机、室外风机和四通换向阀,51单片机的低电平驱动能力较强,LED可以直接连接单片机的I/O口。1)

{displaybuf[x+1]=17;

}x=readdata[0] & 0x0f;

x=x<<1;

displaybuf[0]=(dotcode[x])%10;

displaybuf[1]=(dotcode[x])/10;

writecommandtods18b20(0xcc);

writecommandtods18b20(0x44);

}}

Good luck!

用AT89C51单片机和温度传感器DS18B20S设计数字式温度计

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

#define uchar unsigned char

bit dat;

#define uint unsigned int

it DS=P2^2; //define intece

uint temp; // variable of temperature

uchar flag1; // sign of the result itive or negative

it dula=P2^6;

it wela=P2^7;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,

0x87,0xff,0xef};

void delay(uint count) //delay

{uint i;

while(count)

{i=200;

while(i>0)

i--;

count--;

}}

void dsreset(void) //send reset and initialization cwhile(resetpulse());ommand

{uint i;

DS=0;

while(i>0)i--;

i=4;

while(i>0)i--;

}bit tmpreadbit(void) //read a bit

{uint i;

DS=0;i++; //i++ for delay

DS=1;i++;i++;

dat=DS;

i=8;while(i>0)i--;

return (dat);

}uchar tmpread(void) //read a byte date

{uchar i,j,dat;

dat=0;

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

{j=tmpreadbit();

dat=(j<<7)|(dat>>1); //读出的数据位在前面,这样刚好一个字节在DAT里

}return(dat);

}void tmpwritebyte(uchar dat) //write a byte to ds18b20

{uint i;

uchar j;

bit testb;

for(j=1;j<=8;j++)

{testb=dat&0x01;

dat=dat>>1;

if(testb) //write 1

{DS=0;

i++;i++;

i=8;while(i>0)i--;

}else

{DS=0; //write 0

i=8;while(i>0)i--;

i++;i++;

}}

}void tmpchange(void) //DS18B20 begin change

{dsreset();

delay(1);

tmpwritebyte(0xcc); // address all drivers on bus

tmpwritebyte(0x44); // initiates a single temperature conversion

}uint tmp() //get the temperature

{float tt;

uchar a,b;

dsreset();

delay(1);

tmpwritebyte(0xcc);

tmpwritebyte(0xbe);

a=tmpread();

b=tmpread();

temp=b;

temp<<=8; //two byte come a int variable

temp=temp|a;

tt=temp0.0625;

temp=tt10+0.5;

return temp;

}void display(uint temp) //显示程序

{uchar A1,A2,A2t,A3;

A1=temp/100;

A2=A2t/10;

A3=A2t%10;

dula=0;

P0=table[A1]; //显示百位

dula=1;

dula=0;

P0=0x7e;

delay(1);

dula=0;

P0=table1[A2]; //显示十位

dula=1;

dula=0;

P0=0x7d;

delay(1);

P0=table[A3]; //显示个位

dula=1;

dula=0;

P0=0x7b;

delay(1);

}void main()

{uchar a;

do

{tmpchange();

for(a=10;a>0;a--)

{display(tmp());

}} while(1);

}

AT89C51单片机

那可以的要求的撒

这是一个仿真实例,可以参考一下试试。

关于51单片机的多功能温度显示器论文中的摘要怎么写?

本课题主要介绍了温度传感器的硬件电路的设计和系统软件设计。硬件电路主要包括主,测温电路和显示电路等,采用单片机AT89C51,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用4位共阳极LED数码管以动态扫描法直读显示。系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。此外,还介绍了系统的调试和性能分析。

由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。DS18B20温度计还可以在过限报警、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。介绍了DS18B20数字温度传感器在单片机e. 每按一下工作模式选择键时,工作模式按图3所示的箭头方向依此变换:下的硬件连接及软件编程,并给出了软件流程图。

在该论文中,我们通过对单片机和温度传感器的设计,从中学到了许多有用的东西,其中我们明白了如何去设计一个产品,首先要有性价比、良好的适应性,其次要知道设计的关键,也懂得了设计与实际的联系。

:

单片机系统;数字温度传感器;单总线;过限报警

This thesis mainly include hardwTL0=(65536-4000)%256;are circuit design and design process. Hardware circuit include the main controller, temperature measurement circuit and display circuit, the controller using SCM AT89C51, temperature sensors using the production DS18B20 of United States DALLAS Semiconductor, and the display circuit using four common anode of LED by digitA2t=temp%100;al dynamic scanning and Direct Reading show. The procedure mainly includes main procedure, reading temperature sub-procedure, the temperature conversion orderanies sub-procedure, computing the temperature sub- procedure, the manifestation data breaks sub-procedure etc. In addition, it introduced a debugging and performance ysis.

In order to adopting the improvement type the ince temperature transducer DS18 B20 Be examine component, compared with the traditional thermometer, this numerical thermometer reduced the hardware ephone of the exterior, he low cost with the characteristics of the easy usage. The DS18 B20 thermometers can report to the pol still in the heat, long-distance lee to click to measure control much etc. carry on an applied dlopment, hing good dlopment foreground. As a kind of high-accuracy digital net temperature sensor,DS18 B20 can be used building a sensor net easily. It can also make the net and reliable with it's special 1-wire intece .This introduces the application of DS18B20 with single chip processor.

In that thesis, we from the design of the SCM and the temperature transducer, we learned many useful things, among them, we understand how go to design a product, first it should he to he good quality but inexpensive, adaptabilities, than should know hinge of the design, the last we also know the communication between design and pract.

Keyword:

SCM;Digital thermometer; Single bus;Over the boundary to alarm

要求:用单片机控制,温度保持在25℃-30℃,用3位数码管显示当前温度

}for(j=200;j>0;j--);

温度保持在25℃-30℃?没理解你的意思,用一个单片机读温度传感器的值再显示出来不就行了。

系统采用74HC573和ULN2003作为驱动,P0和P2作为输出口,控制动态显示的LED显示器。

老大你要失望了,现在搞这些高设计的人很少,建议自己在网上找一下吧

主要器件:220~9V变压器一个,整流堆,100UF电容2个,104电容4个,LM7805(稳压管)一个,STC89C51(单片机)一个,18B20(温度传感器IC)一个,数码管3个,74LS164(串行如并行出带锁存)3个,晶振一个,33PF电容2个,5V蜂鸣器一个,三几管一个等等;

电源电压不够

软件方面:直接读取18B20的温度值,显示出来,同时判断是否温度高或者低,用个脚报警就完了。18B20的控制时序网上找,源代码一大堆。