单片机温度控制课程设计程序

希望对你学习单片机有帮助

#include<reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define AD0809 XBYTE[0X8000]
#define S273 XBYTE[0X8200]
sbit led1=P1^1;
sbit led2=P1^2;
uchar x,num,chuzhi1,chuzhi2,key,cishu,m,n,j,k;
uchar dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar key_code[]={7,1,23,17,4,0,20,16,8,2,24,18,5,15,21,31,9,3,25,19,6,14,22,30,10,12,26,28,11,13,27,29};
uchar code shu[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
#define pa XBYTE[0xffff]
#define pc XBYTE[0xfffe]
#define wei XBYTE[0xfffd]
#define duan XBYTE[0xfffc]
void delay(unsigned int m ) /*延时*/
{
unsigned int n;
for(m;m>0;m--){ for(n=0;n<114;n++);}
}
void display(uchar m,uchar n,uchar j,uchar k)
{
wei=0x80;
duan=dat[m%10];delay(1);
wei=0x40;
duan=dat[n%10];delay(1);
wei=0x10;
duan=dat[j%10];delay(1);
wei=0x08;
duan=dat[k%10]; delay(1);
}
uchar TestKey() /*检测是否有键按下*/
{
wei=0;
return(~(pc)&0x0f);
}
void delay1(uchar x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void display1()
{
duan=shu[num/10%10];
wei=0x02;
delay(1);
duan=shu[num%100%10];
wei=0x01;
delay(1);
}
uchar keyscan()
{
uchar pos,i,k;
i=8;
pos=0x80;
do
{
wei=~pos;
pos>>=1;
k=~pc&0xf;
}while((--i!=0)&&(k==0));
if(k!=0)
{
i*=4;
if(k&2) i+=1;
else if(k&4) i+=2;
else if(k&8) i+=3;
wei=0;
while(TestKey());
return(i);
}
else return(0xff);
}
void main()
{
cishu=0;
pa=0x89;
key=0;
while(1)
{
if(TestKey())
{
cishu=cishu+1;
key=key_code[keyscan()]%16;
if(cishu==1) m=key;
if(cishu==2) n=key;
if(cishu==3) j=key;
if(cishu==4) k=key;
cishu=cishu%4;
}
display(m,n,j,k);
chuzhi1=m*10+n;
chuzhi2=j*10+k;
AD0809=0X00;
delay1(1);
num=AD0809;
display1();
if(num<chuzhi1)
S273=0xff;
led2=0;
if((num>=chuzhi1)&&(num<=chuzhi2))
S273=0x00;
led1=1;
if(num>=chuzhi2)
led1=0;
}
}

单片机温度控制课程设计程序相关文档

最新文档

返回顶部