在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于msp430單片機(jī)1602 DS1802溫度顯示

            基于msp430單片機(jī)1602 DS1802溫度顯示

            作者: 時(shí)間:2016-08-25 來(lái)源:網(wǎng)絡(luò) 收藏

              最近調(diào)好了DS1802溫度傳感器,用的是430G2553單片機(jī),溫度保留兩位小數(shù)。把源代碼分享給大家。

            本文引用地址:http://www.biyoush.com/article/201608/296038.htm

              /*****************************************

              g2553實(shí)現(xiàn)1602溫度顯示

              來(lái)源:汪中原的博客

              ******************************************/

              #include

              #define uchar unsigned char

              #define uint unsigned int

              #define CPU_F ((double)1000000)

              #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //延時(shí)x us

              #define ds_1 P2OUT |=BIT3 //DS18B20數(shù)據(jù)端高電平輸入(P2.3端口)

              #define ds_0 P2OUT &=~BIT3 //DS18B20數(shù)據(jù)端低電平輸入(P2.3端口)

              #define lcdrs_1 P2OUT |=BIT1; //RS寫(xiě)數(shù)據(jù)(P2.1端口)

              #define lcdrs_0 P2OUT &=~BIT1; //RS寫(xiě)指令(P2.1端口)

              #define lcden_1 P2OUT |=BIT0; //1602使能信號(hào)開(kāi)(P2.0端口)

              #define lcden_0 P2OUT &=~BIT0; //1602使能信號(hào)關(guān)(P2.0端口)

              uchar table[]="wzy,come on"; //開(kāi)機(jī)第一行顯示

              uchar table1[]="believe yourself"; //開(kāi)機(jī)第二行顯示

              uint temp,T;

              float temp_f;

              uchar shi,ge,dian1,dian2,num; //定義溫度十位、各位、小數(shù)點(diǎn)后一位、后二位

              /*************************************************************

              * 名 稱(chēng):void init(void)

              * 功 能:1602顯示配置端口初始化

              * 入口參數(shù):無(wú)

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: P1、P2端口設(shè)為輸出低電平

              *************************************************************/

              void init(void)

              {

              WDTCTL=WDTPW + WDTHOLD;

              P1DIR=0xff;

              P2DIR=0x1f;

              P1OUT=0x00;

              P2OUT=0x00;

              }

              /*************************************************************

              * 名 稱(chēng):void delay(uint a)

              * 功 能:簡(jiǎn)單的延時(shí)

              * 入口參數(shù):uint a

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 可作為1602顯示簡(jiǎn)單的延時(shí)

              *************************************************************/

              void delay(uint a)

              {

              uint i,j;

              for(i=a;i>0;i--)

              for(j=110;j>0;j--);

              }

              /*************************************************************

              * 名 稱(chēng):void write_date(uchar date)

              * 功 能:1602寫(xiě)數(shù)據(jù)

              * 入口參數(shù):date

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 用P1口輸入數(shù)據(jù)

              *************************************************************/

              void write_date(uchar date)

              {

              lcdrs_1;

              P1OUT=date;

              delay(5);

              lcden_1;

              delay(5);

              lcden_0;

              }

              /*************************************************************

              * 名 稱(chēng):void write_com(uchar com)

              * 功 能:1602寫(xiě)指令

              * 入口參數(shù):com

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 用P1口輸入指令

              *************************************************************/

              void write_com(uchar com)

              {

              lcdrs_0;

              P1OUT=com;

              delay(5);

              lcden_1;

              delay(5);

              lcden_0;

              }

              /*************************************************************

              * 名 稱(chēng):void uinit()

              * 功 能:初始化及其他顯示設(shè)置指令

              * 入口參數(shù):無(wú)

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 1602初始化設(shè)置

              *************************************************************/

              void uinit()

              {

              lcden_0;

              write_com(0x38);

              write_com(0x0c);

              write_com(0x06);

              write_com(0x01);

              }

              /*************************************************************

              * 名 稱(chēng):void LCD_display()

              * 功 能:1602顯示

              * 入口參數(shù):無(wú)

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 將前幾個(gè)函數(shù)綜合起來(lái),顯示字符內(nèi)容及區(qū)域

              *************************************************************/

              void LCD_display()

              {

              init();

              uinit();

              write_com(0x80);

              for(num=0;num<11;num++)

              {

              write_date(table[num]);

              delay(5);

              }

              write_com(0x80+0x40);

              for(num=0;num<16;num++)

              {

              write_date(table1[num]);

              delay(5);

              }

              }

              /*************************************************************

              * 名 稱(chēng):uchar DS18B20_init(void)

              * 功 能:DS18B20初始化

              * 入口參數(shù):無(wú)

              * 出口參數(shù):error

              * 說(shuō) 明: DS18B20初始化,返回參數(shù)用于判斷是否完成初始化

              *************************************************************/

              uchar DS18B20_init(void)

              {

              uchar error;

              ds_0;

              delay_us(500);

              ds_1;

              delay_us(55);

              P2DIR &=~BIT3;

              _NOP();

              if(P2IN & BIT3)

              {

              error=1;

              P2DIR |= BIT3;

              }

              else

              {

              error=0;

              P2DIR |= BIT3;

              ds_1;

              }

              delay_us(400);

              return error;

              }

              /*************************************************************

              * 名 稱(chēng):uint read_temp(void)

              * 功 能:讀取DS18B20數(shù)據(jù)

              * 入口參數(shù):無(wú)

              * 出口參數(shù):temp

              * 說(shuō) 明: 讀取一個(gè)字節(jié)

              *************************************************************/

              uint read_temp(void)

              {

              uchar i;

              uchar temp = 0;

              for(i=0;i<8;i++)

              {

              temp >>= 1;

              ds_0;

              delay_us(6);

              ds_1;

              delay_us(8);

              P2DIR &= ~BIT3;

              _NOP();

              if(P2IN & BIT3)

              temp |= 0x80;

              delay_us(45);

              P2DIR |=BIT3;

              ds_1;

              delay_us(10);

              }

              return temp;

              }

              /*************************************************************

              * 名 稱(chēng):void write_temp(uchar data)

              * 功 能:DS18B20寫(xiě)入數(shù)據(jù)

              * 入口參數(shù):data

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 寫(xiě)入一個(gè)字節(jié)

              *************************************************************/

              void write_temp(uchar data)

              {

              uchar i;

              for(i = 0; i < 8;i++)

              {

              ds_0;

              delay_us(15);

              if(data & 0x01)

              {

              ds_1;

              delay_us(60);

              }

              else

              {

              ds_0;

              delay_us(60);

              }

              data >>= 1;

              ds_1;

              delay_us(10);

              }

              }

              /*************************************************************

              * 名 稱(chēng):void temp_change(void)

              * 功 能:DS18B20溫度轉(zhuǎn)化指令

              * 入口參數(shù):無(wú)

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 跳過(guò)rom并溫度轉(zhuǎn)化

              *************************************************************/

              void temp_change(void)

              {

              write_temp(0xcc);

              write_temp(0x44);

              }

              /*************************************************************

              * 名 稱(chēng):uint temp_get()

              * 功 能:DS18B20溫度獲取

              * 入口參數(shù):無(wú)

              * 出口參數(shù):T

              * 說(shuō) 明: 獲取溫度并四舍五入為保留兩位小數(shù)

              *************************************************************/

              uint temp_get()

              {

              uchar a,b;

              DS18B20_init();

              delay(1);

              write_temp(0xcc);

              write_temp(0xbe);

              a=read_temp(); //讀低8位

              b=read_temp(); //讀高8位

              T=b;

              T<<=8;

              T=T |a;

              temp_f=T*0.0625; //乘以分辨率為實(shí)際溫度值

              T=(uint)(temp_f*100+0.5);

              return T;

              }

              /*************************************************************

              * 名 稱(chēng):void dis_temp(uint t)

              * 功 能:分出十位、個(gè)位等

              * 入口參數(shù):t

              * 出口參數(shù):無(wú)

              * 說(shuō) 明: 送到1602顯示

              *************************************************************/

              void dis_temp(uint t)

              {

              shi=t/1000;

              ge=t%1000/100;

              dian1=t%1000%100/10;

              dian2=t%1000%100%10;

              }

              /*************************************************************

              * 名 稱(chēng):

              * 功 能:

              * 入口參數(shù):

              * 出口參數(shù):

              * 說(shuō) 明:

              *************************************************************/

              void main(void)

              {

              uchar a;

              WDTCTL=WDTPW + WDTHOLD;

              LCD_display();

              while(1)

              {

              do

              {

              a =DS18B20_init();

              }

              while(a); //判斷初始化是否完成

              temp_change();

              for(a = 20;a > 0;a--)

              delay_us(60000);

              do

              {

              a = DS18B20_init();

              }

              while(a);

              dis_temp(temp_get());

              init();

              uinit();

              write_com(0x80+0x0b);

              write_date('0'+shi);

              delay(5);

              write_date('0'+ge);

              delay(5);

              write_date('.');

              delay(5);

              write_date('0'+dian1);

              delay(5);

              write_date('0'+dian2);

              delay(5);

              }

              }

              效果圖:上面的數(shù)字即為當(dāng)前溫度

              



            關(guān)鍵詞: msp430 1602

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉