找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 30|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機LCD顯示溫度日期時間(觸摸DS18B20溫度產(chǎn)生變化)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1154198 發(fā)表于 2025-6-16 17:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是在課上要求做的“LCD顯示溫度日期時間(觸摸DS18B20溫度產(chǎn)生變化)”,文件中包含程序源代碼工程文件和DS18B20的詳細介紹
  1. #include "pbdata.h"

  2. #define LCD_DB P0
  3. sbit LCD_EN=P2^7;
  4. sbit LCD_RS=P2^6;
  5. sbit LCD_RW=P2^5;
  6. unsigned char code cg_1602[]={ 0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,
  7. 0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,
  8. 0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00};//"ÄêÔÂÈÕ"
  9. void LCDBusy()
  10. {
  11.         unsigned char busy;
  12.         LCD_DB=0xff;
  13.         LCD_RS=0;
  14.         LCD_RW=1;
  15.         do
  16.         {
  17.                 LCD_EN=1;
  18.                 busy=LCD_DB;
  19.                 LCD_EN=0;
  20.         }while(busy & 0x80);
  21. }


  22. void LCDWriteCmd(unsigned char cmd)
  23. {
  24.         //LCDBusy();
  25.         LCD_RW=0;
  26.         LCD_RS=0;
  27.         LCD_EN=1;
  28.         LCD_DB=cmd;
  29.         LCD_EN=0;        
  30.         delay_1ms(1);
  31. }        

  32. void LCDWriteData(unsigned char dat)
  33. {
  34.         //LCDBusy();
  35.         LCD_RW=0;
  36.         LCD_RS=1;
  37.         LCD_EN=1;
  38.         LCD_DB=dat;
  39.         LCD_EN=0;
  40.         delay_1ms(1);
  41. }        


  42. void LCDInit()
  43. {
  44.         LCDWriteCmd(0x38);
  45.         delay_1ms(10);
  46.         LCDWriteCmd(0x0c);
  47.         delay_1ms(10);
  48.         LCDWriteCmd(0x06);
  49.         delay_1ms(10);
  50.         LCDWriteCmd(0x01);
  51.         delay_1ms(10);
  52. }

  53. void LCDSetCursor(unsigned char x,unsigned char y)
  54. {
  55.         unsigned char addr;
  56.         if(y==0)
  57.                 addr=0x00+x;
  58.         else
  59.                 addr=0x40+x;
  60.         LCDWriteCmd(addr | 0x80 );
  61.                
  62. }        

  63. void LCDDisp(unsigned char x,unsigned char y,unsigned char *str)
  64. {
  65.         LCDSetCursor(x,y);
  66.         while(*str!='\0')
  67.         {
  68.                 LCDWriteData(*str++);
  69.         }
  70.                
  71. }        

  72. void LCDDisp_char(unsigned char x,unsigned char y,unsigned char dat)
  73. {
  74.         //LCDInit();
  75.         LCDSetCursor(x,y);
  76.         LCDWriteData(dat);
  77.         
  78. }        

  79. void write_cg()//дÈë¹Ì¶¨ºº×ֺͷûºÅ
  80. {
  81.         unsigned char num;
  82.         LCDWriteCmd(0x40); //É趨CGRAMµØÖ·
  83.         for(num=0;num<24;num++) //½«×Ô¶¨Òå×ÖÐÍÂëдÈëCGRAMÖÐ
  84.         {
  85.                 LCDWriteData(cg_1602[num]);
  86.         }
  87.         LCDWriteCmd(0x84);//Äê
  88.         {
  89.                 LCDWriteData(0);
  90.         }
  91.         LCDWriteCmd(0x87);//ÔÂ
  92.         {
  93.                 LCDWriteData(1);
  94.         }
  95.         LCDWriteCmd(0x8a);//ÈÕ
  96.         {
  97.                 LCDWriteData(2);
  98.         }
  99.         
  100.         LCDDisp(2,1,":");
  101.         LCDDisp(5,1,":");
  102. }


復制代碼
原理圖: 無
仿真: 無
代碼: Keil程序: LCD顯示溫度日期時間(自己程序).zip (130.76 KB, 下載次數(shù): 0)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表