|
/****
* 【外部晶振】: 11.0592mhz
* 【主控芯片】: STC89C52
* 【编译环境】: Keil μVisio4
* 【程序功能】:
* 【使用说明】: 实时采集当前环境温度值,并显示于数码管上。
同时,当温度高于某一值时(此处设为40摄氏度)低于5也会响,蜂鸣器便会发出报警。
而当低于该值时,蜂鸣器自动停止报警。以及上传温度到pc
**********************************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2; //define interface
uint temp; // variable of temperature
uchar flag1; // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
uint num;
uchar A1,A2,A2t,A3;
void uart();//函数声明
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 uart()
{
EA=1;//开总中断
ES=1;//串口中断允许位,ES=1允许串口中断 ES=0禁止串口中断,IE中断允许寄存器
SM0=0;SM1=1;//串口工作方式1,8位uart波特率可变
REN=1;//串口允许接收
TR1=1;//启动定时器1
TMOD |= 0X20;//定时器1工作模式2,8位自动重装
TH1=0XFD;
TL1=0XFD;//设置波特率9600
}
void delay(uint count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
void mx()
{
TI=1;
SBUF=0x00;;//送sbuf
while(!TI);
TI=0;
delay(10);
}
void dsreset(void) //send reset and initialization command
{
uint i;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}
............完整代码在文件中
|
|