資源簡介
LabVIEW虛擬儀器從入門到測控應用130例 源程序
代碼片段和文件信息
/******************************************************************
**?單片機與TC35I短信模塊通信
**?功能:單片機通過DS18B20檢測溫度,并通過GSM模塊發(fā)送到指定手機
**?晶?振??頻?率:11.0592M
**?線路->單片機實驗開發(fā)板B
******************************************************************/
????#include??
????#include
????sbit?PS0=P2^4;//數(shù)碼管小數(shù)點后第1位????
????sbit?PS1=P2^5;//數(shù)碼管個位????
????sbit?PS2=P2^6;//數(shù)碼管十位 ???
????sbit?PS3=P2^7;//數(shù)碼管百位
????sfr??P_data=0x80;//P0口為顯示數(shù)據(jù)輸出口
????sbit?P_K_L=P2^2;//鍵盤列
????sbit?DQ=P3^6;//DS18B20數(shù)據(jù)接口
sbit?P_L=P0^0;//測量指示
???
unsigned?char?*send_data;
void?delay(unsigned?int);//延時函數(shù)
????void?DS18B20_init(void);???//DS18B20初始化
unsigned?int?get_temper(void);????//讀取溫度程序?
void?DS18B20_write(unsigned?char?in_data);?//DS18B20寫數(shù)據(jù)函數(shù)
unsigned?char?DS18B20_read(void);////讀取數(shù)據(jù)程序 ?
unsigned?int?htd(unsigned?int?a);?//進制轉換函數(shù)
void?display(unsigned?int?a);//顯示函數(shù)
void?send_ascii(unsigned?char?*b);//發(fā)送ascii數(shù)據(jù)?
void?send_hex(unsigned?char?b);//發(fā)送hex數(shù)據(jù)
float?temp;//溫度寄存器
bit?DS18B20;?// 18B20存在標志1---存在?0---不存在
????
unsigned?char?tab[10]={0xfc0x600xda0xf20x660xb60xbe0xe00xfe0xf6};//字段轉換表
????
void?main(void)
????{
????unsigned?int?atempc=0;?????????????????????????????????????????????????????????
????????TMOD=0x20;???????????//定時器1--方式2
????????TL1=0xfd;?????????????
????????TH1=0xfd;????????????//11.0592MHZ晶振,0xfd對應波特率為96000xfa對應波特率為4800 ?
????????SCON=0x50;???????????//方式1????????
????????TR1=1;???????????????//啟動定時
temp=get_temper();//這段程序用于避開剛上電時顯示85的問題
for(a=0;a<2000;a++)?
????????delay(500);
while(1)
{
????int?a;
????temp=get_temper();//測量溫度
????for(a=0;a<100;a++)//顯示兼有延時的作用
????display(htd(temp));
if(c>10)
{
????send_ascii(“at+cmgf=1“);//以文本的形式發(fā)送
????send_hex(0x0d);
????????for(a=0;a<600;a++)//顯示兼有延時的作用
????????display(htd(temp));
????send_ascii(“at+cmgs=\“158********\““);//發(fā)送到指定號碼
????send_hex(0x0d); ;
????for(a=0;a<600;a++)//顯示兼有延時的作用
????????display(htd(temp)); ??
????send_ascii(“The?temperture?is?“);//發(fā)送短信
????send_hex(0x30+((htd(temp)>>8)&0x0f));
????send_hex(0x30+((htd(temp)>>4)&0x0f));
????send_ascii(“.“);?
????send_hex(0x30+(htd(temp)&0x0f));
????send_ascii(“?degree?now.“);?
????send_hex(0x1a);
????send_hex(0x0d);
????c=0;
????}
c++;
}
????}
/****************************DS18B20讀取溫度函數(shù)**************************/
/*函數(shù)原型:void?get_temper(void)
/*函數(shù)功能:DS18B20讀取溫度
/*輸入?yún)?shù):無
/*輸出參數(shù):無
/*調用模塊:
/**********************************************************************/
unsigned?int?get_temper(void)
{
????unsigned?char?kT_signT_LT_H;
DS18B20_init();???//DS18B20初始化?
????if(DS18B20)????//判斷DS1820是否存在?若DS18B20不存在則返回
{
????????????DS18B20_write(0xcc);????//?跳過ROM匹配
????????????DS18B20_write(0x44);??//發(fā)出溫度轉換命令
????DS18B20_init();???//DS18B20初始化?
????????if(DS18B20)????//判斷DS1820是否存在?若DS18B20不存在則返回
????{
????????????????DS18B20_write(0xcc
評論
共有 條評論