![]() |
發布時間: 2022-7-5 08:54
正文摘要:下面是數碼管顯示的原理圖,然后4個com端+5,6引腳放在了單片機P1口,7~13引腳放在P2口。問題是 該如何實現后面3個數字的動態顯示呢? |
用液晶驅動芯片簡單,HT1621b就可以, |
先一個一個數字測試好編碼。然后封裝起來調用就行 |
啊偉誒誒 發表于 2022-7-19 15:09 所謂交流驅動并不是非得正負交替。COM端電壓實際是在0V、VCC,1/2VCC,3種狀態變化,1/2VCC是在IO口設置高阻模式,由外部的兩個同值電阻分壓獲得。筆段端電壓只在0V和VCC,兩種狀態變化,對液晶兩極而言就是交流電壓。VCC不論采用的是5V還是3.3V,1/2VCC都不能滿足筆段顯示,只要在筆段與COM之間加電壓>3V,筆段就能顯示,否則不顯示。但液晶不能長期加固定電壓,否則液晶會被極化而無法改變顯示。所以要不斷改變液晶兩極的電場方向。這就是所謂交流驅動的原因。前面帖子提供的LCD顯示代碼已經非常清楚的表明上述解釋。項目完整代碼因商業原因不能提供,這是大家都懂的。 |
wulin 發表于 2022-7-11 08:06 感謝大哥,但我實在沒搞懂怎么用交流驅動這種段碼屏 ![]() ![]() ![]() ![]() |
本帖最后由 wulin 于 2022-7-11 10:28 編輯 這個屏相當于4位半數字段碼屏,如用單片機直接驅動這種LCD屏,其端口必須具備高阻模式。每個COM 口接兩個分壓電阻以提供1/2VCC。再以2ms高電平,2ms低電平,6ms1/2VCC(高阻態)的交流方式輪流使能4個COM。在某COM口使能期間(交流),與其對應的筆段電平相反的顯示,電平相同的不顯示。由于COM口不像LED那樣對應一個“8”字,而是對應各字符的一部分。所以要用一個int型緩存數組把對應筆段分離出來同時顯示。例: dis_buf[0]=(T5>>3|T4)|(1F>>1|1A<<2)|(2F<<1|2A<<4)|(3F<<3|3A<<6)|(V<<8);//V.3F.3A.2F.2A.1F.1A.T5.T4 dis_buf[1]=(T6>>3|T3)|(1G>>1|1B<<2)|(2G<<1|2B<<4)|(3D<<3|3B<<6)|(A<<8);//A.3G.3B.2G.2B.1G.1B.T6.T3 .........下面是一個實際使用中的LCD驅動代碼,放在2ms中斷中運行。單片機型號STC15W408AS
![]() ![]() |
數碼管驅動IC來控制,比較直接 |
這不是LCD嗎? 在中斷里面刷新LCDram就行。 |
你這是個段碼屏,跟數碼管驅動不太一樣,還要按偏壓值來設計電壓組合 |
1 你的單片機必須有高阻輸入模式 2 每個COM 腳接上兩個相同阻值的電阻來達到1/2Vdd的條件 3 根據下圖輸出 ![]() |
好奇葩的LCD,出線在窄邊。。應力測試過了嗎? |
怎么驅動不是有圖了么,用脈沖去驅動恰當的刷新頻率就行了 |
數碼管驅動IC來控制 |
這是9個SEG*4個COM,選一款合適的LED驅動IC即可 |
先知道怎么驅動數碼管,了解原理。按上面的需要13腳來驅動考慮到應該還有其他功能需要到引腳,可以考慮用數碼管驅動IC來控制 |
最好用數碼管驅動IC sm1623,sm1628等,如果純單片機I/O來控制也是可以的,先搞請,第1個8字,就是1A+1B+1C+1D+1E+1F+1G,顯示一個“4”,就是1B,1C,1F,1G點亮,其余熄滅,顯示一個“F” 1A,1E,1F,1G點亮,第2個8,2A......2G,第3個8,3A.....3G |
知道了端電壓點亮和熄滅就可以用編程實現 |