国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

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

發(fā)布時(shí)間:2016-9-13 11:21    發(fā)布者:designapp
關(guān)鍵詞: msp430 , 1602 , DS1802
  最近調(diào)好了DS1802溫度傳感器,用的是430G2553單片機(jī),溫度保留兩位小數(shù)。把源代碼分享給大家。
  /*****************************************
  msp430g2553實(shí)現(xiàn)1602溫度顯示
  來源:汪中原的博客
  ******************************************/
  #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; //1602 RS寫數(shù)據(jù)(P2.1端口)
  #define lcdrs_0 P2OUT &=~BIT1; //1602 RS寫指令(P2.1端口)
  #define lcden_1 P2OUT |=BIT0; //1602使能信號(hào)開(P2.0端口)
  #define lcden_0 P2OUT &=~BIT0; //1602使能信號(hào)關(guān)(P2.0端口)
  uchar table[]="wzy,come on"; //開機(jī)第一行顯示
  uchar table1[]="believe yourself"; //開機(jī)第二行顯示
  uint temp,T;
  float temp_f;
  uchar shi,ge,dian1,dian2,num; //定義溫度十位、各位、小數(shù)點(diǎn)后一位、后二位
  /*************************************************************
  * 名 稱:void init(void)
  * 功 能:1602顯示配置端口初始化
  * 入口參數(shù):無
  * 出口參數(shù):無
  * 說 明: P1、P2端口設(shè)為輸出低電平
  *************************************************************/
  void init(void)
  {
  WDTCTL=WDTPW + WDTHOLD;
  P1DIR=0xff;
  P2DIR=0x1f;
  P1OUT=0x00;
  P2OUT=0x00;
  }
  /*************************************************************
  * 名 稱:void delay(uint a)
  * 功 能:簡單的延時(shí)
  * 入口參數(shù):uint a
  * 出口參數(shù):無
  * 說 明: 可作為1602顯示簡單的延時(shí)
  *************************************************************/
  void delay(uint a)
  {
  uint i,j;
  for(i=a;i>0;i--)
  for(j=110;j>0;j--);
  }
  /*************************************************************
  * 名 稱:void write_date(uchar date)
  * 功 能:1602寫數(shù)據(jù)
  * 入口參數(shù):date
  * 出口參數(shù):無
  * 說 明: 用P1口輸入數(shù)據(jù)
  *************************************************************/
  void write_date(uchar date)
  {
  lcdrs_1;
  P1OUT=date;
  delay(5);
  lcden_1;
  delay(5);
  lcden_0;
  }
  /*************************************************************
  * 名 稱:void write_com(uchar com)
  * 功 能:1602寫指令
  * 入口參數(shù):com
  * 出口參數(shù):無
  * 說 明: 用P1口輸入指令
  *************************************************************/
  void write_com(uchar com)
  {
  lcdrs_0;
  P1OUT=com;
  delay(5);
  lcden_1;
  delay(5);
  lcden_0;
  }
  /*************************************************************
  * 名 稱:void uinit()
  * 功 能:初始化及其他顯示設(shè)置指令
  * 入口參數(shù):無
  * 出口參數(shù):無
  * 說 明: 1602初始化設(shè)置
  *************************************************************/
  void uinit()
  {
  lcden_0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
  }
  /*************************************************************
  * 名 稱:void LCD_display()
  * 功 能:1602顯示
  * 入口參數(shù):無
  * 出口參數(shù):無
  * 說 明: 將前幾個(gè)函數(shù)綜合起來,顯示字符內(nèi)容及區(qū)域
  *************************************************************/
  void LCD_display()
  {
  init();
  uinit();
  write_com(0x80);
  for(num=0;num>= 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;
  }
  /*************************************************************
  * 名 稱:void write_temp(uchar data)
  * 功 能:DS18B20寫入數(shù)據(jù)
  * 入口參數(shù):data
  * 出口參數(shù):無
  * 說 明: 寫入一個(gè)字節(jié)
  *************************************************************/
  void write_temp(uchar data)
  {
  uchar i;
  for(i = 0; i >= 1;
  ds_1;
  delay_us(10);
  }
  }
  /*************************************************************
  * 名 稱:void temp_change(void)
  * 功 能:DS18B20溫度轉(zhuǎn)化指令
  * 入口參數(shù):無
  * 出口參數(shù):無
  * 說 明: 跳過rom并溫度轉(zhuǎn)化
  *************************************************************/
  void temp_change(void)
  {
  write_temp(0xcc);
  write_temp(0x44);
  }
  /*************************************************************
  * 名 稱:uint temp_get()
  * 功 能:DS18B20溫度獲取
  * 入口參數(shù):無
  * 出口參數(shù):T
  * 說 明: 獲取溫度并四舍五入為保留兩位小數(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 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)前溫度
  

                                
                                                               
                                
               
本文地址:http://m.4huy16.com/thread-173700-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • Microchip第22屆中國技術(shù)精英年會(huì)——采訪篇
  • 常見深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術(shù)精英年會(huì)深圳站回顧
  • 技術(shù)熱潮席卷三城,2025 Microchip中國技術(shù)精英年會(huì)圓滿收官!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)在線工具

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表