找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8996|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

STM8L052C6T6驅(qū)動段碼LCD液晶屏

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:276663 發(fā)表于 2019-6-12 10:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 IdeaMing 于 2019-6-12 10:51 編輯

前言:
         項目中用到了段碼LCD屏選用自帶驅(qū)動的STM8L052C6,為了加快各位研發(fā)人員的開發(fā)進(jìn)度,避免浪費大量的時間走別人踩過的坑,寫出個人代碼調(diào)試的經(jīng)驗。水平有限,如有錯誤,還請指正mr.li.ming@qq.com。

使用的液晶屏


對應(yīng)的使用的單片機

對應(yīng)關(guān)系
------LCD----------------MCU----------
PIN1(COM1)——LCD_COM0(PA4)
PIN2(COM2)——LCD_COM1(PA5)
PIN3(COM3)——LCD_COM2(PA6)
PIN4(COM4)——LCD_COM3(PD1)
PIN5—————LCD_SEG11(PB1)
PIN6—————LCD_SEG18(PD4)
PIN7—————LCD_SEG19(PD5)
PIN8—————LCD_SEG20(PD6)
PIN9—————LCD_SEG21(PD7)


默認(rèn)LSI(內(nèi)部低速時鐘)是打開的,一般不作操作,如果被關(guān)閉了,要先打開LSI。
所以先看看程序。
  1. void LCD_GLASS_Init(void)
  2. {
  3. /* Enable LCD/RTC clock */
  4.   CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);//打開RTC時鐘
  5.   CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);//打開LCD時鐘
  6.   CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);//設(shè)置RTC時鐘源
  7.   
  8.   /* Initialize the LCD */
  9.   LCD_Init( LCD_Prescaler_1,//
  10.             LCD_Divider_31, //
  11.             LCD_Duty_1_4,   //使用的4個COM所以是1/4
  12.             LCD_Bias_1_3,   //
  13.             LCD_VoltageSource_Internal);//內(nèi)部電壓源
  14.             
  15.   LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0x08);//SEG11  0X08
  16.   LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x3C);//SEG18,SEG19,SEG20,SEG21 0X3C
  17.   
  18.   /* To set contrast to mean value */
  19.   LCD_ContrastConfig(LCD_Contrast_3V1);//設(shè)置對比度
  20.   LCD_DeadTimeConfig(LCD_DeadTime_0);//設(shè)置死區(qū)時間
  21.   LCD_PulseOnDurationConfig(LCD_PulseOnDuration_1);//設(shè)置延時時間
  22.   
  23.   /* Enable LCD peripheral */
  24.   LCD_Cmd(ENABLE);
  25. }
復(fù)制代碼

然后在對應(yīng)的位置寫1顯示,寫0清除。比如下面的清屏
  1. void LCD_GLASS_Clear(void)
  2. {
  3.     uint8_t counter = 0;
  4.     for (counter = 0; counter <= LCD_RAMRegister_13; counter++)
  5.     {
  6.         LCD->RAM[counter] = 0x00;
  7.     }
  8. }
復(fù)制代碼



要是想全部顯示看看段碼都有沒有壞,就把清屏的修改一下
  1. void LCD_GLASS_Check(void)
  2. {
  3.     uint8_t counter = 0;
  4.     for (counter = 0; counter <= LCD_RAMRegister_13; counter++)
  5.     {
  6.         LCD->RAM[counter] = 0xff;
  7.     }
  8. }
復(fù)制代碼



下面著重記錄一下踩過的坑:
LCD_Init();函數(shù)里面的最后一個參數(shù)是LCD_VoltageSource_Internal還是LCD_VoltageSource_External


官方STM8L-DISCOVERY的原理圖上

R25這個0R電阻沒有焊接,所以代碼里使用的是LCD_VoltageSource_Internal
如果焊接了,代碼里就要使用LCD_VoltageSource_External


希望對各位看官有所幫助。
STM8L052C6T6液晶LCD驅(qū)動.pdf (621.48 KB, 下載次數(shù): 172)






評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:385637 發(fā)表于 2019-6-14 08:14 | 只看該作者
沒用過STM8單片機,之前只是用STC的,看STM8性價比更高,請問學(xué)起來容易嗎?
回復(fù)

使用道具 舉報

板凳
ID:276663 發(fā)表于 2019-6-17 14:54 | 只看該作者
shenyuqiu 發(fā)表于 2019-6-14 08:14
沒用過STM8單片機,之前只是用STC的,看STM8性價比更高,請問學(xué)起來容易嗎?

很多人建議STM8像STC一樣直接操作寄存器,可能是我用STM32庫習(xí)慣了,所以STM8也是使用庫方式。學(xué)習(xí)起來沒什么問題。想要實現(xiàn)什么功能先百度一下,肯定會有所收獲。
性價比確實比STC高。輕松實現(xiàn)在線調(diào)試。
回復(fù)

使用道具 舉報

地板
ID:601763 發(fā)表于 2019-9-4 17:31 | 只看該作者
最近也準(zhǔn)備搞液晶,這個寄存器里面值和具體的段碼是怎么聯(lián)系的呢?
回復(fù)

使用道具 舉報

5#
ID:465227 發(fā)表于 2020-2-5 00:22 | 只看該作者
感謝樓主分享!
回復(fù)

使用道具 舉報

6#
ID:694926 發(fā)表于 2020-2-18 23:18 | 只看該作者
不錯,正要用到,謝謝
回復(fù)

使用道具 舉報

7#
ID:735272 發(fā)表于 2020-4-29 14:01 | 只看該作者
樓主有沒有stm8串口通信的文章,我在這遭遇到問題
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表