资源简介

基于51单片机的温度控制系统在protues上的仿真

资源截图

代码片段和文件信息

#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P3^0;
sbit led=P3^6;
sbit buzzer=P3^7;
uchar code table[]={0x3f 0x06 0x5b 0x4f 0x66 0x6d 0x7d 0x07 0x7f 0x6f};
uchar code table1[]={0xfe0xfd0xfb0xf7};
uchar temp_num[4];
uchar set_temp[5];
uchar ab;
uint temp1temp2xs;
#define KEYBOARD P1
uchar tempnumflagkey_flagmin=40max=90;
void delay(uchar gaq)
{
while(gaq--);
}

void rest() //复位
{
uchar x;
DQ=1;
delay(2);
DQ=0;
delay(80);
DQ=1;   
delay(5);
x=DQ;
delay(18);
if(x)  //判断初始化成功了么
led=0;
}
void write(uchar date) //写函数
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
DQ=date&0x01;
delay(7);
DQ=1;
date>>=1;
}
}
uchar read()  //读函数
{
uchar idate;
for(i=0;i<8;i++) 
{
DQ=0;
date>>=1;
DQ=1;
if(DQ)
date=date|0x80;
delay(7);
}
return(date) ;
}
void change()
{
rest();
write(0xcc);
write(0x44);
delay(10);
rest();
write(0xcc); 
write(0xbe);
delay(10);
a=read();
b=read();
temp1=b<<4;
temp1+=(a&0xf0)>>4;
temp2=a&0x0f;
xs=temp2*0.0625*10;
temp_num[0]=table[temp1%1000/100]; //百位
temp_num[1]=table[temp1%100/10]; //10位
temp_num[2]=table[temp1%10]|0x80;//个位
temp_num[3]=table[xs];  // 小数位
}
void display()
{
uchar i;
for(i=0;i<4;i++)
{
P2=table1[i];
P0=temp_num[i];
delay(1000);
}
if((temp1 < min)|(temp1 >max))
{
buzzer=0;
if(temp1 > max)
{
led =0;
}
}
else
{
led =1;
buzzer=1;
}
}
void init()
{
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void keyscan()
{
uchar i;
KEYBOARD=0xfe;
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEYBOARD;
switch(temp)
{
case 0xee:key_flag = 1;flag = 0;
for(i=0;i<4;i++)
{
set_temp[i+1]=0;
}
break;
case 0xde:num=0;flag++;
break;
case 0xbe:key_flag = 0;flag = 0;
break;
}
while(temp!=0xf0)
{
temp=KEYBOARD;
temp=temp&0xf0;
}
}
}

KEYBOARD=0xfd;
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEYBOARD;
switch(temp)
{
case 0xed:num=7;flag++;
break;
case 0xdd:num=8;flag++;
break;
case 0xbd:num=9;flag++;
break;
}
while(temp!=0xf0)
{
temp=KEYBOARD;
temp=temp&0xf0;
}
}
}

KEYBOARD=0xfb;
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=KEYBOARD;
switch(temp)
{
case 0xeb:num=4;flag++;
break;
case 0xdb:num=5;flag++;
break;
case 0xbb:num=6;flag++;
break;
}
while(temp!=0xf0)
{
temp=KEYBOARD;
temp=temp&0xf0;
}
}
}

KEYBOARD=0xf7;
temp=KEYBOARD;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-12-19 13:50  温控\
     文件      124572  2012-12-19 11:41  温控\Last Loaded 温控.DBK
     文件        1939  2012-12-19 12:24  温控\keyscan.h
     文件       11138  2012-12-19 13:18  温控\main.LST
     文件       13079  2012-12-19 13:18  温控\main.OBJ
     文件        3739  2012-12-19 13:18  温控\main.c
     文件       11705  2012-12-19 13:18  温控\温控
     文件      124572  2012-12-19 13:18  温控\温控.DSN
     文件       16930  2012-12-19 13:18  温控\温控.M51
     文件        1054  2012-12-19 13:19  温控\温控.PWI
     文件        4847  2012-12-19 13:18  温控\温控.hex
     文件          40  2012-12-19 13:18  温控\温控.lnp
     文件       12210  2012-12-19 13:19  温控\温控.plg
     文件      133206  2012-12-19 13:19  温控\温控.uvgui.hejuxiang
     文件       68343  2012-12-19 11:42  温控\温控.uvgui_hejuxiang.bak
     文件        5555  2012-12-19 13:19  温控\温控.uvopt
     文件       13324  2012-12-18 22:52  温控\温控.uvproj
     文件        5203  2012-12-19 11:42  温控\温控_uvopt.bak
     文件           0  2012-12-18 21:49  温控\温控_uvproj.bak

评论

共有 条评论