新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機18B20溫度與串口實驗

51單片機18B20溫度與串口實驗

作者: 時間:2016-11-30 來源:網絡 收藏
有圖有真相






溫度顯示在串口調速器上,此軟件可到http://www.51hei.com/mcudown/單片機開發(fā)實用工具軟件這一欄下載
下面單片機部分的源代碼:

本文引用地址:http://m.butianyuan.cn/article/201611/323877.htm
//11.0592晶振
#include
#define uchar unsigned char
#define uint unsigned int
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //數碼管碼表
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //數碼管位選

//sbit k8=P1^7; //按鍵發(fā)送溫度值
sbit dec=P0^5; //小數點顯示位
static uint count; //延時發(fā)送溫度值變量
void delay(uint k)
{
while(k--);
}
void show_temp(uint k) //顯示溫度值函數
{
P0=seg[k/100];
P2=tab[2];
delay(30);
P0=0xff;
P2=0xff;
P0=seg[k%100/10];
dec=0; //顯示小數點
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庫函數
uchar suf; //存放串口收到的數據
uint temp; //輸出溫度值
void serial_init() //串口初始化
{
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é)函數
{
bit es;//保存先前ES狀態(tài)變量,這樣可以不干擾其他用戶用它是現在的狀態(tài)
es=ES;
ES=0; //暫時關閉串口中斷
SBUF=u;//數據放入SBUF緩沖器等待發(fā)送完成
while(TI==0); //等待發(fā)送完成
TI=0;
ES=es; //恢復先前狀態(tài)
}
void send_str(uchar *p)//發(fā)送一串字符函數
{
while(*p)
{
send_byte(*p);
p++;
}
}
void str_init() //串口中斷初始化
{
EA=1;
ES=1;
}
void serial_event() interrupt 4 //串口中斷函數
{
if(RI==1)//在中斷里盡量只做需要的事情
{
suf=SBUF;
RI=0;
}
else
{
;
}
}
上一頁 1 2 下一頁

評論


技術專區(qū)

關閉