99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 2
    回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

從新唐BSP學(xué)習(xí)段式LCD驅(qū)動(dòng)的模塊化編寫

首先,看一下LCD液晶屏幕的引腳資料。從圖中我們得知這是一個(gè)4com,44段的LCD。

以米字型數(shù)碼管為例。首先創(chuàng)建一個(gè)結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體描述每個(gè)段所對(duì)應(yīng)的COM,也就是給上圖表格建立數(shù)據(jù)模型。

typedef struct
{
	uint32_t com[14]; //存儲(chǔ)每個(gè)段對(duì)應(yīng)的哪一位
	uint32_t bit[14];  //14個(gè)段
} CHAR_TypeDef;

由上圖LCD的表格和數(shù)據(jù)模型,給這個(gè)結(jié)構(gòu)建立數(shù)組用于查詢。因?yàn)槊课粩?shù)碼管要14個(gè)數(shù)據(jù),7位米字形數(shù)碼共14*7=98個(gè)數(shù)據(jù)。

const CHAR_TypeDef NANO1XXDISPLAY = {
//7個(gè)大字符
    { /* 1 */						
		/* A            B               C              D    */
      .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,
      .bit[0] = 0, .bit[1] = 0, .bit[2] = 0, .bit[3] = 0,
		/* E            F               G              H    */
      .com[4] = 1, .com[5] = 2, .com[6] = 2, .com[7] = 3,
      .bit[4] = 38, .bit[5] = 38, .bit[6] = 39, .bit[7] = 39,
		/* J            K               M              N    */
      .com[8] = 3, .com[9] = 2, .com[10] = 1, .com[11] = 0,
      .bit[8] = 1, .bit[9] = 1, .bit[10] = 1, .bit[11] = 1,
		/* P            Q      */
      .com[12] = 0, .com[13] = 1,
      .bit[12] = 39, .bit[13] = 39
    },
    { /* 2 */

      .com[0] = 3, .com[1] = 2, .com[2] = 1, .com[3] = 0,
      .bit[0] = 4, .bit[1] = 4, .bit[2] = 4, .bit[3] = 4,

      .com[4] = 1, .com[5] = 2, .com[6] = 2, .com[7] = 3,
      .bit[4] = 2, .bit[5] = 2, .bit[6] = 3, .bit[7] = 3,

      .com[8] = 3, .com[9] = 2, .com[10] = 1, .com[11] = 0,
      .bit[8] = 5, .bit[9] = 5, .bit[10] = 5, .bit[11] = 5,

      .com[12] = 0, .com[13] = 1,
      .bit[12] = 3, .bit[13] = 3
},

建立完這個(gè)核心表格后,查表即可。

查的時(shí)候是大循環(huán)7個(gè)數(shù)碼,小循環(huán)每個(gè)數(shù)碼14位。代碼如下所示。

for (index = 0; index < 7;index++)  //大循環(huán),7個(gè)米字形數(shù)碼管
{
        data = (int) *string;
        bitfield = Nuvo_alphabet[data]; //段碼
    	for (i = 0; i < 14;i++)  //每個(gè)米字形數(shù)碼管14個(gè)段
    	{
      		bit   = NANO1XXDISPLAY.Text[index].bit[i];
      		com   = NANO1XXDISPLAY.Text[index].com[i];
     
      		if (bitfield & (1 << i))  //重要,當(dāng)前位顯示則刷新
      		{
        		LCD_EnableSegment(com, bit);//和CPU有關(guān)
      		}
    	}
    	string++;
	}

這樣就能完美顯示了。和LED數(shù)碼管不同,為了布線方便,LCD的段碼硬件連線不是連續(xù)的,只能查出段碼后再每一位查詢。

對(duì)于段碼表格Nuvo_alphabet就更簡(jiǎn)單了,和LED數(shù)碼管一樣。

const uint16_t Nuvo_alphabet[] = {
  0x0000, /* space */
  0x1100, /* ! */
  0x0280, /* " */
  0x0000, /* # */
  0x0000, /* $ */
  0x0000, /* % */
  0x0000, /* & */
  0x0000, /* ? */
  0x0039, /* ( */
  0x000f, /* ) */
  0x3fc0, /* * */
  0x1540, /* + */
  0x0000, /* , */
  0x0440, /* - */
  0x8000, /* . */
  0x2200, /* / */

  0x003f, /* 0 */
  0x0006, /* 1 */

拿數(shù)字1來(lái)說(shuō),只有BC是顯示的,所以值是0x0006,既是0b0000 0000 0000 0110。

怎么樣,這樣的思路很好吧,表格的方式記錄LCD特征值可以很方便的移植和提高程序的效率。想當(dāng)年我是無(wú)數(shù)的IF實(shí)現(xiàn)的,太丟人了。

當(dāng)然,因?yàn)橹挥卸螢?時(shí)才刷新數(shù)據(jù)寄存器,所以,數(shù)據(jù)變化時(shí),老數(shù)據(jù)1不會(huì)消失。我們?cè)诿看嗡⑿轮埃蹇杖繑?shù)據(jù)寄存器。

void LCD_AlphaNumberOff(void)
{
	LCD->MEM_0 &= ~0x0f0f0f0f;
  	LCD->MEM_1 &= ~0x0f0f0f0f; 
  	LCD->MEM_2 &= ~0x0f0f0f0f; 
  	LCD->MEM_3 &= ~0x0f0f0f0f;
	LCD->MEM_4 &= ~0x0f0f0f0f; 
	LCD->MEM_5 &= ~0x0f070f0f;
	LCD->MEM_6 &= ~0x00000f0f;
	LCD->MEM_9 &= ~0x0f060000;
  	return;
}
全部回復(fù)(15)
正序查看
倒序查看
2021-06-09 22:12

編譯完的再配個(gè)顯示圖就好了,去年好像新塘搞活動(dòng),只不過(guò)沒(méi)搶到帶液晶屏顯示的開(kāi)發(fā)板

0
回復(fù)
k6666
LV.9
3
2021-06-10 12:38

段氏顯示的LCD是功耗低嗎?

0
回復(fù)
2021-06-10 14:49

段碼驅(qū)動(dòng)這塊原理是啥?

0
回復(fù)
飛翔2004
LV.10
5
2021-06-16 14:22
@lihui710884923
段碼驅(qū)動(dòng)這塊原理是啥?

LCD驅(qū)動(dòng)一般都要采用交流方式驅(qū)動(dòng),最簡(jiǎn)單的就是1/2bias,就只有亮與滅。

0
回復(fù)
iszjt
LV.5
6
2021-06-18 15:17

實(shí)用性比較高~~

請(qǐng)教新唐 的M051 series bsp的實(shí)現(xiàn)手法。

0
回復(fù)
2021-06-26 09:54

看來(lái)還得學(xué)習(xí)一下

0
回復(fù)
魯珀特
LV.4
8
2021-07-02 16:10

新唐的發(fā)展還是很快的,當(dāng)年剛畢業(yè)前才聽(tīng)說(shuō)過(guò)新唐,學(xué)長(zhǎng)搞一個(gè)數(shù)顯的開(kāi)關(guān)控制用的,主要是新唐的配套的LCD方便。轉(zhuǎn)眼這么多年過(guò)去了發(fā)展得很快。不過(guò)好像這么多年寫這個(gè)段式LCD驅(qū)動(dòng)的思路還是沒(méi)變。

0
回復(fù)
雅兄
LV.5
9
2021-07-05 19:18
@天府大懶貓
編譯完的再配個(gè)顯示圖就好了,去年好像新塘搞活動(dòng),只不過(guò)沒(méi)搶到帶液晶屏顯示的開(kāi)發(fā)板

我是在咸魚買的,不到50元,還可以!

0
回復(fù)
雅兄
LV.5
10
2021-07-05 19:19
@k6666
段氏顯示的LCD是功耗低嗎?

超級(jí)低啊,墨水屏還可以更低!

0
回復(fù)
雅兄
LV.5
11
2021-07-05 19:21
@lihui710884923
段碼驅(qū)動(dòng)這塊原理是啥?

就像百葉窗簾一樣,用電壓改變液晶的狀態(tài),背光就不能透到外面,我們看著就是黑色的了

0
回復(fù)
雅兄
LV.5
12
2021-07-05 19:22
@iszjt
實(shí)用性比較高~~請(qǐng)教新唐的M051seriesbsp的實(shí)現(xiàn)手法。

原理都一樣啊,我還沒(méi)有這塊開(kāi)發(fā)板子。

0
回復(fù)
雅兄
LV.5
13
2021-07-05 19:22
@魯珀特
新唐的發(fā)展還是很快的,當(dāng)年剛畢業(yè)前才聽(tīng)說(shuō)過(guò)新唐,學(xué)長(zhǎng)搞一個(gè)數(shù)顯的開(kāi)關(guān)控制用的,主要是新唐的配套的LCD方便。轉(zhuǎn)眼這么多年過(guò)去了發(fā)展得很快。不過(guò)好像這么多年寫這個(gè)段式LCD驅(qū)動(dòng)的思路還是沒(méi)變。

底層驅(qū)動(dòng)都是這樣子啦

0
回復(fù)
iszjt
LV.5
14
2021-07-14 14:27

感謝樓主分享!!!

以前試過(guò)用IO口模擬交流信號(hào)驅(qū)動(dòng)過(guò),效果不是很理想。后來(lái)又用HT1621芯片驅(qū)動(dòng),可以是可以,不過(guò)還是嫌麻煩。買了不少段碼液晶屏全部在那吃灰。最近玩新唐,發(fā)現(xiàn)新唐N76E616自帶段碼驅(qū)動(dòng)功能,于是翻出吃灰的液晶屏小試牛刀,效果很好。電路簡(jiǎn)單,控制邏輯也很清晰。

0
回復(fù)
雅兄
LV.5
15
2024-05-23 07:40
@iszjt
感謝樓主分享!!!以前試過(guò)用IO口模擬交流信號(hào)驅(qū)動(dòng)過(guò),效果不是很理想。后來(lái)又用HT1621芯片驅(qū)動(dòng),可以是可以,不過(guò)還是嫌麻煩。買了不少段碼液晶屏全部在那吃灰。最近玩新唐,發(fā)現(xiàn)新唐N76E616自帶段碼驅(qū)動(dòng)功能,于是翻出吃灰的液晶屏小試牛刀,效果很好。電路簡(jiǎn)單,控制邏輯也很清晰。

新唐的還是不錯(cuò)的,就是最近有點(diǎn)貴。

0
回復(fù)
雅兄
LV.5
16
2024-05-23 07:40
@iszjt
實(shí)用性比較高~~請(qǐng)教新唐的M051seriesbsp的實(shí)現(xiàn)手法。

我研究一下

0
回復(fù)
發(fā)
主站蜘蛛池模板: 国产成人精品久久二区二区 | 秋霞无码一区二区视频在线观看 | 欧美一区二区三区少妇 | av大片免费看 | 久久国产精品精品国产 | 国产性生大片免费观看性 | 久产久精九国品在线 | 国产老女人乱淫免费 | 亚洲在线免费观看视频 | 91黄色免费看 | 丰满人妻翻云覆雨呻吟视频 | 精品国产AⅤ一区二区三区V免费 | 国产成人精品午夜福利软件 | 欧美一区二区在线免费 | 免费乱码人妻系列无码专区 | 日本羞羞裸色私人影院 | 亚洲精品色播 | 冈江凛性色精品一区二区 | 91视频盛宴| 香港三级日本三级韩国三级 | 亚洲第一页在线视频 | 欧美日韩国产成人高清视 | 亚洲午夜精品久久久久久高潮 | 性欧美另类黑人巨大HD | 国产日韩免费观看 | 无码一区二区三区不卡AV | 中文无码亚洲精品字幕 | 麻豆美女裸体aaaa片 | 免费黄网在线 | 亚洲精品在线视频免费观看 | 99视频网 | 国产无套激情在线视频 | 久产久人精午夜精国 | 不戴奶罩的教师水卜樱在线观看 | xxx麻豆| 337p日本欧洲亚洲大胆艺术图 | 国产尤物av尤物在线观看 | 日本精品在线播放 | 亚洲一区中文日韩 | 玩弄少妇肉体到高潮动态图 | www.妞干网.com |