历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2021年03月09日 | 用Atmega 16单片机驱动字符型液晶显示芯片

2021-03-09 来源:eefocus

研究了一下,如何用ATmega 16单片机,来驱动字符型液晶显示芯片,现把研究心得写出来:


我手里的这个RT1601液晶显示模块,使用的是S6A0069显示芯片。


各个引脚简单说明一下:



控制和数据引脚配置如下:


-------------------------------


PORTD_0 -RS


PORTD_1 - R/W


PORTD_2 - E


PORTA - DATA BUS


------------------------------


LCD.h


1#ifndef_LCD_H_


2#define_LCD_H_


3/*****************************************


4RS-PORTD_0


5R/W-PORTD_1


6E-PORTD_2


7DB-PORTA


8******************************************/


9voidLCD_Set_RS(void);


10voidLCD_Clear_RS(void);


11voidLCD_Set_RW(void);


12voidLCD_Clear_RW(void);


13voidLCD_Set_E(void);


14voidLCD_Clear_E(void);


15voidLCD_CheckBF(void);


16//WriteCommand


17voidLCD_Write_Cmd(unsignedcharbyCmd);


18//WriteData


19voidLCD_Write_Data(unsignedcharbyData);


20voidLCD_Delay_5ms(void);


21voidLCD_Delay_500ms(void);


22voidLCD_PortInit(void);


23


24//ApplicaTIonInterface


25voidLCD_Init(void);


26voidLCD_Display(char*pstrText);


27


28#endif


29


LCD.c


这里是液晶驱动的实现部分,对外开放两个接口:LCD_Init, LCD_Display。(我这个模块,是两行显示的,共16个字符)


1#include“LCD.h”


2#include


3#include


4


5/*****************************************


6RS-PORTD_0


7R/W-PORTD_1


8E-PORTD_2


9DB-PORTA


10******************************************/


11


12


13voidLCD_Set_RS(void)


14{


15PORTD“=(1《《0);


16


17return;


18}


19


20voidLCD_Clear_RS(void)


21{


22PORTD&=~(1《《0);


23


24return;


25}


26


27voidLCD_Set_RW(void)


28{


29PORTD”=(1《《1);


30


31return;


32}


33


34voidLCD_Clear_RW(void)


35{


36PORTD&=~(1《《1);


37


38return;


39}


40


41voidLCD_Set_E(void)


42{


43PORTD“=(1《《2);


44


45return;


46}


47


48voidLCD_Clear_E(void)


49{


50PORTD&=~(1《《2);


51


52return;


53}


54


55voidLCD_CheckBF(void)


56{


57DDRA=0x00;//Input


58


59LCD_Clear_RS();


60LCD_Set_RW();


61LCD_Set_E();


62while(PINA&0x80)


63{


64;


65}


66LCD_Clear_E();


67


68DDRA=0xFF;//Output


69


70return;


71}


72


73//WriteCommand


74voidLCD_Write_Cmd(unsignedcharbyCmd)


75{


76LCD_CheckBF();


77


78LCD_Clear_RS();


79LCD_Clear_RW();


80LCD_Set_E();


81PORTA=byCmd;


82LCD_Clear_E();


83


84return;


85}


86


87//WriteData


88voidLCD_Write_Data(unsignedcharbyData)


89{


90LCD_CheckBF();


91


92LCD_Set_RS();


93LCD_Clear_RW();


94LCD_Set_E();


95PORTA=byData;


96LCD_Clear_E();


97


98return;


99}


100


101voidLCD_Delay_5ms(void)


102{


103unsignedinTI=5552;


104while(i--)


105{


106;


107}


108


109return;


110}


111


112voidLCD_Delay_500ms(void)


113{


114unsignedchari=5;


115unsignedcharj=0;


116


117while(i--)


118{


119j=7269;


120while(j--)


121{


122;


123}


124}


125


126return;


127}


128


129//PorTInit


130voidLCD_PorTInit(void)


131{


132PORTD=0x00;


133DDRD=0xFF;//Output


134DDRA=0xFF;


135


136return;


137}


138


139//LCDInit


140voidLCD_Init(void)


141{


142LCD_PortInit();


143


144LCD_Delay_500ms();


145


146LCD_Write_Cmd(0x38);//FunctionSet.8bitdatalength,2-line,5*8font


147LCD_Delay_5ms();


148LCD_Write_Cmd(0x0C);//DisplayON/OFFControl.DisplayON,CursorOFF,BlinkOFF


149LCD_Delay_5ms();


150LCD_Write_Cmd(0x01);//DisplayClear.


151LCD_Delay_5ms();


152LCD_Write_Cmd(0x06);//EntryModeSet.Incrementmode,Entireshiftoff


153


154return;


155}


156


157voidLCD_Display(char*pstrText)


158{


159unsignedchari=0;


160


161LCD_Write_Cmd(0x80”0x00);//1LinePosition


162while(*pstrText!=0x00)


163{


164if(i==8)


165{


166LCD_Write_Cmd(0x80“0x40);//2LinePosition


167}


168


169LCD_Write_Data(*(pstrText++));


170i++;


171}


172


173return;


174}


175


176


client端调用如下:


1//ICC-AVRapplicationbuilder:2008-6-48:41:19


2//Target:M16


3//Crystal:4.0000Mhz


4#include


5#include


6#include”LCD.h“


7


8voidmain(void)


9{


10LCD_Init();


11LCD_Display(”RT1601DemobyWF“);


12


13while(1)


14{


15;


16}


17


18return;


19}


推荐阅读

史海拾趣

Harwin公司的发展小趣事

1994年,Harbour Industries成为Marmon集团的一员。Marmon集团是一个由多个业务部门组成的国际组织,涵盖了多个行业领域。加入Marmon后,Harbour获得了更多的资源和支持,加速了其全球化布局的步伐。公司不仅在北美和欧洲建立了多个生产基地和销售网络,还积极拓展亚洲市场。这一战略调整使得Harbour能够更好地服务全球客户,进一步提升其市场份额和品牌影响力。

CUI Inc.公司的发展小趣事

在追求持续增长的道路上,CUI Inc.采取了一项重要举措——收购加拿大电源制造商Tectrol Inc.。这次收购为CUI带来了丰富的产品线和技术资源,尤其是Tectrol在标准和定制电源解决方案方面的领先设计能力和制造能力。通过整合Tectrol的技术和资源,CUI进一步巩固了其在电源设计领域的领先地位,并为其未来的发展奠定了坚实的基础。

D3 Semiconductor公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,D3 Semiconductor始终保持对新技术、新应用的关注和研究。公司不断投入研发资源,推出了一系列具有创新性的半导体产品,满足了市场的多样化需求。这种持续创新的精神推动了D3 Semiconductor的不断发展,也使其在竞争激烈的电子行业中保持领先地位。

Cal Test Electronics公司的发展小趣事

Cal Test Electronics公司成立于1995年,当时正值电子配件和测试产品市场的快速发展期。创始人凭借对电子行业的深刻理解和敏锐的市场洞察力,决定专注于这一领域。初创时期,公司面临着资金短缺、市场竞争激烈等诸多挑战,但创始人带领团队通过技术创新和成本控制,逐步在市场上站稳脚跟。他们不断研发出符合市场需求的高品质产品,赢得了客户的信任和支持。

DESOUTTER公司的发展小趣事

近年来,Desoutter公司开始重视中国市场的发展,并加大了在中国的投资和布局。公司在中国设立了多个销售和服务中心,以便更好地服务中国客户。同时,Desoutter公司还与中国本土企业开展合作,共同开发适合中国市场的产品。这些举措使Desoutter公司在中国市场的份额不断扩大,品牌影响力也得到了提升。

以上五个故事涵盖了Desoutter公司在电子行业中的发展历程、技术创新、国际化战略、合并与扩张以及中国市场的发展等方面。这些故事基于事实描述,旨在展现Desoutter公司在电子行业中的成长和变化。

Eby Company公司的发展小趣事

eBay的成功不仅仅局限于美国市场。从早期开始,eBay就积极寻求全球化扩张。通过与不同国家和地区的合作伙伴建立合作关系,eBay逐步进入了欧洲、亚洲和拉丁美洲等市场。这种全球化战略使eBay能够接触到更广泛的用户群体,进一步巩固了其在全球在线拍卖市场的领先地位。

问答坊 | AI 解惑

关于GetModuleFileName一直返回NULL的问题

下面这个函数目的是获取当前运行的应用程序的目录,但使用GetModuleFileName返回的总是0.不知道为何。 bool GetCurrentPath(LPTSTR szPath)   {           HMODULE handle = GetModuleHandle(NULL); &nbs ...…

查看全部问答>

请教两个问题

1、Ndis库没有向nids微端口驱动的接口函数(如初始化函数等)下发irp,那代码中的irp是从哪里来的?ndis微端口驱动自己组建的吗? 2、如何看到ndis微端口驱动中irp中包含的是什么板侧的指令?如断链指令…

查看全部问答>

关于驱动开发的就业前景,待遇

我,大二的小童鞋,软件工程 这个暑假打算在实验室好好研究一下驱动程序的开发,以后也想在这一块发展 不知目前搞驱动开发的就业如何,待遇咋样,过来人帮忙给分析一下下 小弟这里多谢了…

查看全部问答>

3G工程师成为大学毕业生择业首选

中国3G时代即将到来,社会对3G嵌入式软件人才的渴求使3G人才已经成为业界关注“3G软环境”的焦点之一。目前,我国的3G核心人才仅有不足万人,而且基本上都被几大运营商和设备厂商所掌握。广大手持端设备制造商所急需的嵌入式开发人才、软件开发商所 ...…

查看全部问答>

大家在做网络设计时候一般是用哪款工具来调试网络程序的?

准备用44b0来学习网络通讯软件编程序. 好像有一款工具是专门探测电脑网络数据.就象Bus Hound看USB数据一样. 但不记得这款软件的名称. 大家在做网络设计时候一般是用哪款工具来调试网络程序的?…

查看全部问答>

大虾们推荐一本关于制版方面经典的书呗?

不是那种进阶版的;就是普通的入门提高级的。讲解环境最好是DXP,或者往上版本的。谢过了。…

查看全部问答>

现在还有人用UPSD么?

                                  …

查看全部问答>

STM32中CRC模块的CRC_IDR寄存器作什么用?

                                 CRC_IDR寄存器不知道有什么用处?…

查看全部问答>

STM8勘误表去那找,谢谢(最好直接给出链接)

                                 RT…

查看全部问答>