程序是18B20溫度傳感器+TM1620,我使用的是共陰極數碼管。
1.png (192.09 KB)
下載附件
2021-6-9 02:02 上傳
部分源碼:(完整源碼請下載附件)
- #include "tm1260.h"
- //---重定義關鍵詞---//
- void sendDataToTM1620(unsigned char sdata){
- //在時鐘的上升沿進行移位寫入,低位先傳
- unsigned char a;
- stb = 0;
- _nop_();
- _nop_();
- for(a=0;a<8;a++){
- if(sdata&0x01)
- din = 1;
- else
- din = 0;
- sdata >>= 1;
- clk = 0;
- _nop_();
- _nop_();
- clk = 1;
- }
- }
- void initialTM1620(int temp){
- unsigned char i,TempNum[4]={0};
- unsigned char code TubYinNum[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//0-9 //共陰極
- unsigned char code TubYanNum[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };//0-9
-
- TempNum[0] = TubYinNum[temp/100];//溫度十位
- TempNum[1] = TubYinNum[temp%100/10];//溫度個位
- TempNum[1] = TempNum[1]|0x80;//加上小數點
- TempNum[2] = TubYinNum[temp%10];//溫度小數點
-
- stb = 1;
- din = 1;
- clk = 1;
- _nop_();
- stb = 0;
- sendDataToTM1620(0x02);//顯示模式設置,設置為6個GRID,8個SEG
- stb = 1;
- _nop_();
- stb = 0;
- sendDataToTM1620(setAddrMode);//固定地址 44
- // sendDataToTM1620(0x0C);//顯示寄存器的c0H單元開始
- //地址數據清零
- for(i=0;i<3;i++){//因為控制的是3位數碼管,所以這里循環只有3
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- sendDataToTM1620(0xc0+i*2);//選擇要寫入的地址
- sendDataToTM1620(TempNum[ i]);//寫入數值
- }
- //設置亮度和開關
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- //0x88是最暗的,8F是最亮的這期間的數可以任意選
- //當時還帶著藍牙模塊,大體測了下亮度設為88的情況下電流好像是120ma左右(圖片是80的亮度),8F大約是180ma左右。
- sendDataToTM1620(0x88);//顯示控制參數,點亮數碼屏幕,亮度可以通過改變低三位調節
- stb = 1;
- _nop_();
- }
- void OffTM1620()
- {//息屏函數
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- sendDataToTM1620(0x80);//關閉顯示
- stb = 1;
- _nop_();
- }
復制代碼
51單片機數碼管溫度顯示.rar
(287.15 KB, 售價: 2 E幣)
2021-6-9 02:03 上傳
點擊文件名下載附件
售價: 2 E幣 [記錄]
[ 購買]
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|