<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用單片機IO口直接驅(qū)動段式LCD的方法

          用單片機IO口直接驅(qū)動段式LCD的方法

          作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
          IO口驅(qū)動段式LED(數(shù)碼管)的方法相信大家比較清楚,但用IO口直接驅(qū)動段式LCD的方法相對復雜一些。在網(wǎng)上搜了一下單片機IO口驅(qū)動段式LCD的方法,大部分資料講得不夠清晰、具體,而且簡單問題復雜化。后來查了LCD的顯示原理,結合網(wǎng)上的相關介紹,發(fā)現(xiàn)IO口直接驅(qū)動段式LCD原理比較簡單,用幾句話就可以描述清楚:

          本文引用地址:http://www.ex-cimer.com/article/201611/315898.htm

          1.LCD和LED的顯示原理不一樣:LED是加正向電壓發(fā)光,而LCD必須交替加正、反向電壓才會持續(xù)顯示(可以做個實驗,如果把恒定電壓加到LCD的一段上,該段會顯示一下,但馬上不能顯示,而且長時間加恒定電壓,會加速LCD的老化和損壞)

          2.常聽說1/2bias,1/3bias LCD,是什么意思呢?對于1/2bias LCD,假如LCD的顯示電壓是3V,則1/2bias是1.5V,也就是說在±3V電壓作用時,LCD有顯示;±1.5V及以下的電壓作用時沒有顯示

          3.普通單片機IO口不能直接輸出半高電平(1.5V),但可以用相等的上下拉電阻實現(xiàn),當IO口設置為輸入(高阻)時,由于上下拉電阻的分壓作用,則產(chǎn)生一個半高電平(1.5V)

          知道了以上3點后,動態(tài)驅(qū)動LCD就不是難事了,對于4*8段的LCD(4個COM,8個SEG,顯示電壓為3V,1/2bias),驅(qū)動方法如下:

          1、四個COM采用交替掃描的方式,每個COM在相鄰兩次掃描時又進行電壓交變的方式。

          2、若掃描到某一個COM時,該COM輸出3V(0V):

          與該COM相連的SEG輸出與COM相反,ΔV=±3V,則該相連點亮;

          與該COM相連的SEG輸出與COM相同,ΔV=0,則該相連點不亮。

          3、其他沒有掃描到的COM,單片機IO口為輸入,從而產(chǎn)生1/2 bias(1.5V),不管SEG為何值,ΔV<±1.5V,故該點不亮。

          本人用4*8段的LCD自制了一個數(shù)字鐘表,驗證了以上方法的可行性,現(xiàn)把制作過程羅列如下

          1.原理圖

          說明:由于管腳不夠用,所以時鐘芯片DS1302的RST和LCD的一個SEG是復用的,只要在這個SEG無效的時候去讀取時間就可以了,另外,3PIN串口是ISP下載程序用的。

          2.備料

          3.焊接

          4.實驗結果

          5.不足之處

          通過實驗結果可以發(fā)現(xiàn),不顯示的SEG也有陰影

          原因分析:紐扣電池電壓3.7V,1/2bias是1.85V,大于1.5V,所以會出現(xiàn)陰影。

          解決辦法:選擇工作電壓小于3V的單片機和電壓等于3V的電池(如2節(jié)干電池)

          6. 程序源代碼

          點擊http://www.dzsj.net/dpjzhyy/clock.c下載



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();