娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月20日(星期五)

2018年06月20日 | 單片機利用串口通信傳送溫度

發(fā)布者:bobojrt 來源: eefocus關鍵字:單片機  串口通信  傳送溫度 手機看文章 掃描二維碼
隨時隨地手機看文章
/********該程序主要是利用DS18B20采集溫度,然后通過數(shù)碼管顯示溫度*************/
/*當程序收到上位機發(fā)送的命令之后,該程序會將當時的溫度值通過串口發(fā)送給上位機*/
#include
#define uchar unsigned char
#define uint unsigned int
sbit DQ = P1^0;               //定義DS18B20的信號線端口
uchar i,j;
uchar dis_buffer[4];//定義數(shù)據(jù)緩沖數(shù)組
uchar bit_ser[]={0xfe,0xfd,0xfb,0xf7}; //定義數(shù)碼管片選數(shù)組
uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                                                                    //定義數(shù)碼管段選數(shù)組
/****************************延時函數(shù)*********************************/
void delay(uint x)
{
 while(x)
 x--;
}
/*************************DS18B20初始化函數(shù)***************************/
void Init_DS18B20(void)
{
 unsigned char x=0;
 DQ = 1;         //DQ復位
 delay(8);       //稍做延時
 DQ = 0;               //單片機將DQ拉低
 delay(80);     //精確延時 大于 480us
 DQ = 1;           //拉高總線
 delay(14);
 x=DQ;           //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
 delay(20);
}
/***************************從18B20中讀一個字節(jié)************************/
uchar ReadOneChar(void)
{
 uchar i=0;
 uchar dat = 0;
 for (i=8;i>0;i--)
         {
                 DQ = 0;   // 給脈沖信號
                 dat>>=1;
                 DQ = 1;   // 給脈沖信號
                 if(DQ)
                 dat|=0x80;
                 delay(8);
         }
         return(dat);
}
/***************************向18B20中寫一個字節(jié)************************/
Write_OneChar(uchar dat)
{
 uchar i=0;
 for (i=8; i>0; i--)
 {
         DQ = 0;     //給脈沖信號
         DQ = dat & 0x01;
         delay(5);
         DQ = 1;     //給脈沖信號
         dat >>= 1;
 }
 delay(4);
}
/**************************從18B20中讀取一個字節(jié)***********************/
int Read_Temperature(void)
{
 uchar i = 0,t = 0,a,b;
 int temp;
 Init_DS18B20();
 Write_OneChar(0xcc);   // 跳過讀序號列號的操作
 Write_OneChar(0x44);   // 啟動溫度轉(zhuǎn)換
 Init_DS18B20();
 Write_OneChar(0xcc);   //跳過讀序號列號的操作
 Write_OneChar(0xbe);   //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
 i = ReadOneChar();           //讀取溫度值低位
 t = ReadOneChar();           //讀取溫度值高位
 a = i & 0x0f;
 b = t;
 i = i >> 4;             //低位右移4位,舍棄小數(shù)部分
 t = t << 4;             //高位左移4位,舍棄符號位
 t = t | i;
 temp = (t + a * 0.0625) * 100; //得到一個比實際溫度擴到100倍的值,主要是為了更好的顯示和傳輸
 return(temp);                  //返回溫度值
}

/***************************初始化定時器0******************************/
void timer0_init(void)                      //
{
 TMOD = 0x21; //由于串口通信需要使用定時器1,因此TMOD的值是0x21
 TL0 = (65536-5000) % 256;
 TH0 = (65536-5000) / 256;
 EA = 1;
 ET0 = 1;
 TR0 = 1;
}
/*************************發(fā)送數(shù)據(jù)的函數(shù)********************************/
void txd_data(char send_data)
{
 SBUF = send_data; //將需要發(fā)送的數(shù)據(jù)放入發(fā)送緩沖區(qū)
 while(!TI);           //等待發(fā)送數(shù)據(jù)
 TI = 0;
}
/********************T0中斷處理函數(shù),主要用于顯示當前溫度***************/
void timer0_isr(void) interrupt 1
{
 int temp;
 TR0 = 0;
 TL0 = (65536-5000) % 256;
 TH0 = (65536-5000) / 256;
 TR0 = 1;
 switch(i)
 {
         case 0:
                 P2 = bit_ser[0];
                 P0 = seven_seg[dis_buffer[0]];
                 break;
         case 1:
                 P2 = bit_ser[1];
                 P0 =seven_seg[dis_buffer[1]] & 0x7f;
                 break;
         case 2:
                 P2 = bit_ser[2];
                 P0 =seven_seg[dis_buffer[2]];
                 break;
         case 3:
                 P2 = bit_ser[3];
                 P0 =seven_seg[dis_buffer[3]];
                 break;
 }
 i++;
 if(i >= 4)
 {
         i = 0;
         j++;
         if(j >= 10)  //如果到200ms就會讀取一次溫度,并將溫度值放入顯示緩沖區(qū)
         {
                 j = 0;
                 temp = Read_Temperature();
                 dis_buffer[0] = temp / 1000;
                 dis_buffer[1] = temp % 1000 / 100;
                 dis_buffer[2] = temp % 100 / 10;
                 dis_buffer[3] = temp % 10;
         }
 }
}

/***************************串口通信初始化函數(shù)***************************/
void uart_init(void)
{
 SCON = 0x50;         //方式1,充許接收
 TMOD = 0x21;         //T1方式2定時,T0方式是1
 TH1 = 0xFd;          //波特率9600,Fosc=11.0592MHz
 TL1 = 0xFd;
 TR1 = 1;
 ES = 1;                    // 打開串口中斷
}
/**************************串口中斷處理函數(shù)*****************************/
void uart() interrupt 4
{
 char y,i;
 while(!RI);
 y = SBUF;                       //讀取接收的信息,然后判斷是否為發(fā)送溫度命令
 if(y == '0')             //如果為發(fā)送命令,就將當前數(shù)據(jù)緩沖數(shù)組內(nèi)的數(shù)據(jù)發(fā)送給上位機
 {
         for(i = 0;i <= 3;i++)
         {
                 txd_data(dis_buffer[i] + 48);
         }
 }
 RI = 0;
}
/*******************************主函數(shù)*********************************/
void main()
{
 timer0_init();           //調(diào)用T0初始化函數(shù)
 uart_init();             //調(diào)用串口初始化函數(shù)
 while(1)
 {}

}


關鍵字:單片機  串口通信  傳送溫度 引用地址:單片機利用串口通信傳送溫度

上一篇:單片機實時溫度采集并通過串口通信上傳電腦顯示
下一篇:DS18B20溫度傳感器+12864液晶串口顯示

推薦閱讀

//**********************************************//STC15F2K60S2串口通信程序,將串口接受到的數(shù)據(jù)從串口發(fā)出去//采用22.1184M晶振,波特率115200//為方便大家調(diào)試,特附該程序的項目工程文件下載地址,下載打開即可調(diào)試下載到單片機////*********************************************#include <stc15fxxxx.h> //調(diào)用stc15f系列頭文件,下載地址: h...
據(jù)環(huán)球網(wǎng)報道,無人配送車特點是輕便、小巧、行駛速度慢,運送的是物品,對于感知環(huán)境的探測距離和精度要求都更低,也不需要那么多傳感器,因此能夠更快“落地”。同時,作為物流行業(yè)增速最快的細分領域,目前即時配送業(yè)產(chǎn)值突破千億元,預計未來幾年仍將保持30%以上增速。即時配送業(yè)急速擴張下對效率的渴求,也推動著各家企業(yè)紛紛加快無人配送發(fā)展步伐—...
FATFS簡介FatFS是一個為小型嵌入式系統(tǒng)設計的通用FAT(File Allocation Table)文件系統(tǒng)模塊。FatFs 的編寫遵循ANSI C,并且完全與磁盤I/O層分開。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM等等。兼容Windows文件系統(tǒng)。關于FATFS文件系統(tǒng)的API函數(shù)介紹,底層移植接口和例程等可以查到FATFS官網(wǎng)。FATFS官網(wǎng):http://elm-chan.org/fsw/ff/00in...
盡管保時捷肯定仍然是駕駛者之車,但跑車品牌并沒有吝嗇其信息娛樂技術。全新保時捷通訊管理系統(tǒng) (PCM) 6.0 旨在為駕駛員提供更多信息,同時將信息娛樂系統(tǒng)無縫集成到駕駛體驗中。首先,經(jīng)過大修的 PCM 6.0 界面具有重新設計的字體、圖標和布局,并增加了 Apple CarPlay 的集成度。它還首次具有 Android Auto 功能。無線更新將確保保時捷司機...

史海拾趣

小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 仁寿县| 永州市| 开阳县| 望都县| 青河县| 武功县| 常州市| 桂阳县| 沁阳市| 安西县| 朝阳区| 东阳市| 原阳县| 都江堰市| 金塔县| 习水县| 天门市| 茂名市| 徐闻县| 尉氏县| 靖江市| 共和县| 纳雍县| 从化市| 和平县| 曲沃县| 伊宁市| 新津县| 舞钢市| 天气| 大理市| 高州市| 襄垣县| 紫阳县| 吴川市| 怀安县| 宜昌市| 诸城市| 武川县| 罗山县| 深水埗区|