久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 自制模塊,徹底理解單片機TM1621D段碼液晶并點亮 附程序 [打印本頁]

作者: zmc419    時間: 2020-2-18 10:43
標題: 自制模塊,徹底理解單片機TM1621D段碼液晶并點亮 附程序
手頭有壞電子秤的段碼液晶,從網上買的段碼液晶屏帶有TM1621D。TM1621D與HT1621結構相同,只是引腳少,段碼少但容易業余制作。正好利用這兩種材料,自制段碼液晶模塊,并用普中開發板調試通過。

程序來自網上修改,權力歸原創作者所有。


連接TM1621D模塊,
程序編譯后HEX文件下載到單片機
關掉下載程序,打開串口調試助手,設置4800波特率,
數據位8停止位1,無校驗無流控制,
勾選HEX發送,輸入80-8F之間的數據,顯示地址0-F。
輸入數據0d-16,1602顯示SEG數字,TM1621
對應段點亮。
注意5v電壓下程序BASE選1/2.選1/3全亮。
3v選1/3BASE
COM誤接成SEG,開機初始化即顯示88。
背光限流電阻1K,白天亮度略低。
VLCD電阻選10k.
段碼每位由兩個地址構成,每個地址4位數據(4段)
用串口調試助手發送必須輸成兩位
80(數據)0b-16(可串發)選定時發送10ms/次
清零:800b0c0d0e0f10111213141516
先81,再輸入0b-16中的任意數字,顯示對應段。
82
84
88
測試段
全顯示:8f0b0c0d0e0f10111213141516

單片機源程序如下:
  1. /*-****************************************
  2. 名稱:TM1621
  3. ******************************************/
  4. #include "TM1621.h"
  5. #include<reg52.h>
  6. #include "intrins.h"                                         //包含nop指令頭文件
  7. #define uchar unsigned char                                 //數據類型宏定義
  8. #define uint unsigned int                                 //數據類型宏定義
  9. #define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定義
  10. /******************以下TM1621模塊命令定義*********************/
  11. #define SYSDIS   0x00         //關系統振蕩器和LCD偏壓發生器
  12. #define SYSEN    0x02    //打開系統振蕩器

  13. #define LCDOFF   0x04     //關LCD偏壓
  14. #define LCDON    0x06     //開LCD偏壓

  15. #define TONEON   0x12     //打開聲音輸出
  16. #define TONEOFF  0x10     //關閉聲音輸出

  17. #define XTAL     0x28     //外部接晶振
  18. #define RC       0x30     //內部RC振蕩

  19. #define BIAS     0x52     //1/3偏壓 4公共口,0X52=1/2偏壓

  20. #define WDTDIS   0x0a     //禁止看門狗
  21. #define WDTEN    0x0e     //開啟看門狗

  22. /********************定義控制端口**********************/
  23. sbit CS=P2^2;
  24. sbit READ=P2^0;//無用
  25. sbit WRITE=P2^1;
  26. sbit DATA=P2^0;


  27. /********************延時函數*************************/
  28. void delay_nms(uint n)
  29. {
  30.         uint i;
  31.         while (n--)
  32.                 for (i=0;i<500;i++);
  33. }

  34. /********************從高位寫入數據*************************/
  35. void Write_Data_H(uchar Data, uchar Cnt)           //Data的高cnt位寫入TM1621,高位在前
  36. {
  37.         uchar i;
  38.         for (i=0;i<Cnt;i++)
  39.         {
  40.                 WRITE=0;
  41.                 if (Data&0x80)                                 //從最高位發送
  42.                         DATA=1;
  43.                 else
  44.                         DATA=0;
  45.                 nop;
  46.                 nop;
  47.                 WRITE=1;
  48.                 Data<<=1;
  49.         }
  50.         WRITE=0;
  51.         DATA=0;
  52. }

  53. /********************從低位寫入數據*************************/
  54. void Write_Data_L(uchar Data,uchar Cnt)        //Data 的低cnt位寫入TM1621,低位在前
  55. {
  56.         unsigned char i;
  57.         for (i=0;i<Cnt;i++)
  58.         {
  59.                 WRITE=0;
  60.                 if (Data&0x01)                               //從低位發送
  61.                         DATA=1;
  62.                 else
  63.                         DATA=0;
  64.                 nop;
  65.                 nop;
  66.                 WRITE=1;
  67.                 Data>>=1;
  68.         }
  69.         WRITE=0;
  70.         DATA=0;
  71. }

  72. /********************寫入控制命令*************************/
  73. void WriteCmd(uchar Cmd)
  74. {
  75.         CS=0;
  76.         nop;
  77.         Write_Data_H(0x80,4);     //寫入命令標志100
  78.         Write_Data_H(Cmd,8);      //寫入命令數據
  79.         CS=1;
  80.         nop;
  81. }

  82. /*********指定地址寫入數據,實際寫入后4位************/
  83. void WriteOneData(uchar Addr, uchar Data)
  84. {
  85.         CS=0;
  86.         Write_Data_H(0xa0,3);     //寫入數據標志101
  87.         Write_Data_H(Addr<<2,6);  //寫入地址數據(A5-A4-A3-A2-A1-A0)從高位開始寫數據
  88.         Write_Data_L(Data,4);     //寫入數據
  89.         CS=1;
  90.         nop;
  91. }

  92. /*********連續寫入方式,每次數據為8位,寫入數據************
  93. void WriteAllData(uchar Addr,uchar *p,uchar cnt)
  94. {
  95. uchar i;
  96. CS=0;
  97. Write_Data_H(0xa0,3);      //寫入數據標志101
  98. Write_Data_H(Addr<<2,6);   //寫入地址數據
  99. for(i=0;i<cnt;i++)            //寫入數據
  100. {
  101.    Write_Data_L(*p,8);
  102.    p++;
  103. }
  104. CS=1;
  105. nop;
  106. }
  107. ***************這個子程序暫時沒用,注釋掉******************/


  108. /*******************TM1621初始化**********************/
  109. void TM1621_init()
  110. {
  111.         CS=1;
  112.         WRITE=1;
  113.         DATA=1;       
  114.         nop;
  115.         delay_nms(1);
  116.         WriteCmd(BIAS);                 //1/3偏壓 4公共口
  117.         WriteCmd(RC);                         //內部RC振蕩
  118.         WriteCmd(SYSDIS);                 //關系統振蕩器和LCD偏壓發生器
  119.         WriteCmd(WDTDIS);                 //禁止看門狗
  120.         WriteCmd(SYSEN);                 //打開系統振蕩器
  121.         WriteCmd(LCDON);                 //開LCD偏壓
  122.        
  123. }
  124. /*************TM1621清屏函數*****************/
  125. void Clear1621()
  126. {
  127. uchar i;
  128. for(i=9;i<22;i++)
  129. {
  130. WriteOneData(i, 0x00);
  131. }
  132. }
  133. /*******************************************************************************
  134. * 函數名稱                   :1621顯示函數顯示
  135. * 函數功能                   :
  136. * 輸    入         : 無
  137. * 輸    出         : 無
  138. *******************************************************************************/
  139. void Disp1621(uchar Addr, uchar Data)
  140. {
  141. WriteOneData(Addr, Data);
  142. }
復制代碼
全部資料51hei下載地址:
完全調試通過的1602和TM1621程序.rar (1.91 MB, 下載次數: 483)


作者: 51hei團團    時間: 2020-2-20 15:42
好資料,51黑有你更精彩!!!
作者: w1179benp    時間: 2020-3-3 16:30
好資料!我最近也在玩pt1621b,米字管的,用最笨的方法繪的真值表。
作者: w1179benp    時間: 2020-3-3 16:45
LZ,你的資料打不開呀。重新傳一下吧。謝謝
作者: zmc419    時間: 2020-3-9 20:45
w1179benp 發表于 2020-3-3 16:45
LZ,你的資料打不開呀。重新傳一下吧。謝謝

我下了,能夠正常打開。這個壓縮的winRAR版本高。你裝個高版本的RAR吧。我以前也遇到過類似問題。
作者: guo126101    時間: 2020-5-12 13:45
謝謝分享!!!!!!!!!!!!!!
作者: 491612982    時間: 2020-6-2 14:16
WRITE=1;
Data<<=1;     請問這里為什么要移位呢?

作者: dnndss    時間: 2020-6-2 15:49
謝謝分享!!!!!!!!
作者: zmc419    時間: 2022-1-14 21:59
491612982 發表于 2020-6-2 14:16
WRITE=1;
Data

發送完了,要左移一位再發送。在一個循環內。
作者: jifengjianwu    時間: 2022-9-27 19:59
感謝樓主分享,剛開始學這部分,希望能學會。
作者: 張國民    時間: 2023-2-2 08:14
491612982 發表于 2020-6-2 14:16
WRITE=1;
Data

直接左移0x01
代碼看起來更簡潔
作者: rlz1981    時間: 2023-2-2 14:53

感謝樓主分享,剛開始學這部分,希望能學會
作者: zhu123xxx    時間: 2023-4-10 21:33

感謝樓主分享,剛開始學這部分,希望能學會。
作者: joyb    時間: 2023-4-11 08:38
有HT1621,與51開發板如何連接
作者: Aton2021    時間: 2023-10-6 20:19
感謝樓主分享,摸了好久的程序一直卡在這部分,下載試試先。
作者: zmc419    時間: 2023-10-15 11:41
joyb 發表于 2023-4-11 08:38
有HT1621,與51開發板如何連接

看代碼定義控制口段的定義。
作者: 2647891442    時間: 2024-7-13 16:31
大神,太強了,666






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品久久久久久红码专区 | 国产99视频精品免视看9 | 亚洲精品欧美一区二区三区 | 亚洲第一在线 | ww 255hh 在线观看 | 欧美在线观看黄色 | 国产美女永久免费无遮挡 | 亚洲人免费视频 | 成人免费网站 | 日韩精品无码一区二区三区 | 成人欧美一区二区三区黑人孕妇 | 国产精品久久久久久久久久免费 | 精品在线播放 | 一区二区三区精品视频 | 一级免费毛片 | 久久久999免费视频 999久久久久久久久6666 | 午夜久久久 | 亚洲www| 怡红院免费的全部视频 | 亚洲精品福利视频 | 久久久91精品国产一区二区三区 | 精品91视频 | 久久在线看 | 久久精品国产一区二区三区不卡 | 久久精品 | 欧美日韩手机在线观看 | 亚洲一区二区三区免费在线观看 | 中文字幕亚洲一区二区三区 | 一区二区不卡高清 | 久久99精品久久久久久秒播九色 | 色综合国产 | 天天综合永久 | 精品中文字幕视频 | 欧美日韩中 | 亚洲一区国产 | av在线免费观看网站 | 国产98色在线 | 日韩 | 天天操天天干天天曰 | 日韩视频观看 | 免费h在线 | 国产精品成人久久久久 |