国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

51單片機18B20+TM1620共陰極數碼管顯示溫度

[復制鏈接]
樓主
eng 發表于 2021-6-9 02:04:11 | 只看該作者 |只看大圖 |倒序瀏覽 |閱讀模式
程序是18B20溫度傳感器+TM1620,我使用的是共陰極數碼管。 51單片機18B20+TM1620共陰極數碼管顯示溫度 1.png

部分源碼:(完整源碼請下載附件)
  1. #include "tm1260.h"

  2. //---重定義關鍵詞---//

  3. void sendDataToTM1620(unsigned char sdata){
  4. //在時鐘的上升沿進行移位寫入,低位先傳
  5.         unsigned char a;
  6.          stb = 0;
  7.         _nop_();
  8.         _nop_();

  9.         for(a=0;a<8;a++){
  10.                 if(sdata&0x01)
  11.                         din = 1;
  12.                 else
  13.                         din = 0;
  14.                 sdata >>= 1;
  15.                 clk = 0;
  16.                 _nop_();
  17.                 _nop_();
  18.                 clk = 1;

  19.         }

  20. }
  21. void initialTM1620(int temp){
  22.   unsigned char i,TempNum[4]={0};
  23.         unsigned char code TubYinNum[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//0-9 //共陰極
  24.         unsigned char code TubYanNum[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };//0-9
  25.         
  26.         TempNum[0] = TubYinNum[temp/100];//溫度十位
  27.         TempNum[1] = TubYinNum[temp%100/10];//溫度個位
  28.         TempNum[1] = TempNum[1]|0x80;//加上小數點
  29.         TempNum[2] = TubYinNum[temp%10];//溫度小數點
  30.         
  31.         stb = 1;
  32.   din = 1;
  33.   clk = 1;
  34.         _nop_();
  35.         stb = 0;
  36.         sendDataToTM1620(0x02);//顯示模式設置,設置為6個GRID,8個SEG
  37.         stb = 1;
  38.         _nop_();
  39.         stb = 0;
  40.         sendDataToTM1620(setAddrMode);//固定地址 44
  41. //  sendDataToTM1620(0x0C);//顯示寄存器的c0H單元開始   
  42.         //地址數據清零        
  43.         for(i=0;i<3;i++){//因為控制的是3位數碼管,所以這里循環只有3
  44.                 stb = 1;
  45.                 _nop_();
  46.                 stb = 0;         
  47.                 _nop_();
  48.                 sendDataToTM1620(0xc0+i*2);//選擇要寫入的地址
  49.                 sendDataToTM1620(TempNum[ i]);//寫入數值

  50.         }
  51.         //設置亮度和開關
  52.         stb = 1;
  53.         _nop_();
  54.         stb = 0;
  55.         _nop_();
  56.         //0x88是最暗的,8F是最亮的這期間的數可以任意選
  57.        //當時還帶著藍牙模塊,大體測了下亮度設為88的情況下電流好像是120ma左右(圖片是80的亮度),8F大約是180ma左右。
  58.         sendDataToTM1620(0x88);//顯示控制參數,點亮數碼屏幕,亮度可以通過改變低三位調節   
  59.         stb = 1;
  60.         _nop_();
  61. }
  62. void OffTM1620()
  63. {//息屏函數
  64.         stb = 1;
  65.         _nop_();
  66.         stb = 0;
  67.         _nop_();
  68.         sendDataToTM1620(0x80);//關閉顯示
  69.         stb = 1;
  70.         _nop_();
  71. }
復制代碼
51單片機數碼管溫度顯示.rar (287.15 KB, 售價: 2 E幣)

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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 02:10

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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