数字温度计程序
#include <reg51.h>
#include <intrins.h>
sbit RST = P2^0;
sbit CLK = P2^1;
sbit DQ = P2^2;
sbit TSOR = P2^3;
sbit ALERT =P2^4;
sbit RS = P2^7;
sbit RW = P2^6;
sbit EN = P2^5;
/*------------------------------------------全局变量-------------------------------------------------------*/
statIC unsigned char temp1,temp2; //温度值的整数部分、小数部分
static unsigned char pos,posset; //数字电位器电位值、设定值
static unsigned char min,sec; //分钟、秒
static unsigned char count; //Timer0中断计数
static unsigned char minset; //设定的分钟数
static unsigned char status1,status2; //状态标志
bit stop,timeover; //定时停止、结束
static char line0[] =" 00:00 ";
static char line1[] =" . C W";
/*-------------------------------------------------------------------------------------------------------------*/
void InitInterupt();
void KeyboardDelay();
/*-------------------------------------------LCD驱动函数------------------------------------------------*/
void DelayL();
void DelayS();
void WriteCommand(unsigned char c);
void WritEDAta(unsigned char c);
void ShowChar(unsigned char pos,unsigned char c);
void ShowString(unsigned char line,char *ptr);
void InitLcd();
/*----------------------------------------------键盘-程序--------------------------------------------------*/
unsigned char GetKey();
/*---------------------------------------------数字温度计驱动-------------------------------------------*/
void ChangePos(bit sel,unsigned char pos1,unsigned char pos2);
/*------------------------------------------温度传感器驱动----------------------------------------------*/
void Delay15();
void Delay60();
void Delay100ms();
void Write0TS();
void Write1TS();
bit ReaDTS();
void ResetTS();
void WriteByteTS(unsigned char byte);
unsigned char ReadByteTS();
void InitTS();
void GetTempTS();
/*-------------------------------------------------主程序---------------------------------------------------*/
void main (void) {
char code str1[] =" Hello World! ";
char code str2[] =" 2002-10-20 ";
unsigned char i;
SP=0x50;
ALERT=0; //报警灯灭
TSOR=1; //1-wire总线释放
DelayL();
InitLcd(); //初始化LCD
DelayL();
ShowString(0,str1); //启动画面
ShowString(1,str2);
for(i=0;i<15;i++)
Delay100ms();
InitInterupt(); //初始化中断设置
minset=10; //缺省定时10分钟
posset=0; //缺省电位器值0
min=minset; //初始化数据
pos=posset;
sec=0;
count=0;
P1=0xF0;
status1=0;
status2=0;
stop=1;
timeover=0;
ChangePos(0,255-pos,255-pos); //设置电位器
InitTS(); //初始化温度计
while(1) //循环显示温度值
上一篇:单片机及单片机通讯程序