51單片機18B20溫度與串口實驗
溫度顯示在串口調(diào)速器上,此軟件可到http://www.51hei.com/mcudown/單片機開發(fā)實用工具軟件這一欄下載
下面單片機部分的源代碼:
//11.0592晶振
#include
#define uchar unsigned char
#define uint unsigned int
#define uint unsigned int
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //數(shù)碼管碼表
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //數(shù)碼管位選
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //數(shù)碼管位選
//sbit k8=P1^7; //按鍵發(fā)送溫度值
sbit dec=P0^5; //小數(shù)點顯示位
static uint count; //延時發(fā)送溫度值變量
void delay(uint k)
{
while(k--);
}
{
while(k--);
}
void show_temp(uint k) //顯示溫度值函數(shù)
{
P0=seg[k/100];
P2=tab[2];
delay(30);
P0=0xff;
P2=0xff;
P0=seg[k%100/10];
dec=0; //顯示小數(shù)點
P2=tab[1];
delay(30);
P0=0xff;
P2=0xff;
P0=seg[k%10];
P2=tab[0];
delay(30);
P0=0xff;
P2=0xff;
}
{
P0=seg[k/100];
P2=tab[2];
delay(30);
P0=0xff;
P2=0xff;
P0=seg[k%100/10];
dec=0; //顯示小數(shù)點
P2=tab[1];
delay(30);
P0=0xff;
P2=0xff;
P0=seg[k%10];
P2=tab[0];
delay(30);
P0=0xff;
P2=0xff;
}
#include "18B20.h" //18B20庫函數(shù)
uchar suf; //存放串口收到的數(shù)據(jù)
uint temp; //輸出溫度值
uint temp; //輸出溫度值
void serial_init() //串口初始化
{
TMOD|=0x20; //定時器設定自動重撞在模式
TH1=TL1=0xfd; //9600波特率
SM2=0; //無多機處理位
SM1=1; // 8位可變波特率模式
SM0=0;
TR1=1; // 定時器1打開
REN=1; //串口接收使能
}
{
TMOD|=0x20; //定時器設定自動重撞在模式
TH1=TL1=0xfd; //9600波特率
SM2=0; //無多機處理位
SM1=1; // 8位可變波特率模式
SM0=0;
TR1=1; // 定時器1打開
REN=1; //串口接收使能
}
void send_byte(uchar u) //發(fā)送一個字節(jié)函數(shù)
{
bit es;//保存先前ES狀態(tài)變量,這樣可以不干擾其他用戶用它是現(xiàn)在的狀態(tài)
es=ES;
ES=0; //暫時關閉串口中斷
SBUF=u;//數(shù)據(jù)放入SBUF緩沖器等待發(fā)送完成
while(TI==0); //等待發(fā)送完成
TI=0;
ES=es; //恢復先前狀態(tài)
}
{
bit es;//保存先前ES狀態(tài)變量,這樣可以不干擾其他用戶用它是現(xiàn)在的狀態(tài)
es=ES;
ES=0; //暫時關閉串口中斷
SBUF=u;//數(shù)據(jù)放入SBUF緩沖器等待發(fā)送完成
while(TI==0); //等待發(fā)送完成
TI=0;
ES=es; //恢復先前狀態(tài)
}
void send_str(uchar *p)//發(fā)送一串字符函數(shù)
{
while(*p)
{
send_byte(*p);
p++;
}
}
{
while(*p)
{
send_byte(*p);
p++;
}
}
void str_init() //串口中斷初始化
{
EA=1;
ES=1;
}
{
EA=1;
ES=1;
}
void serial_event() interrupt 4 //串口中斷函數(shù)
{
if(RI==1)//在中斷里盡量只做需要的事情
{
{
if(RI==1)//在中斷里盡量只做需要的事情
{
關鍵詞:
51單片機18B20溫度與串
評論