历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-03-10 来源: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}


推荐阅读

史海拾趣

芯旺微电子(ChipON)公司的发展小趣事

近年来,芯旺微电子在资本市场也取得了显著的成果。公司先后完成了多轮融资,吸引了众多知名投资机构的关注和投资。同时,芯旺微电子也在积极推进上市进程,计划通过资本市场进一步拓展业务规模和提升品牌影响力。这些战略布局的实施不仅为芯旺微电子提供了更多的资金支持和发展动力,也为其未来的发展奠定了坚实的基础。

Electronic Sensor + Resistor GmbH公司的发展小趣事

Electronic Sensor + Resistor GmbH(简称ESR公司)的创立源于两位电子工程师的远见卓识。他们发现市场上对于高精度电子传感器和定制电阻器的需求日益增长,但现有产品往往无法满足特定应用的性能要求。于是,ESR公司应运而生,专注于研发和生产高性能的电子传感器和电阻器。

在创业初期,ESR公司面临着资金、技术和市场的三重挑战。但凭借其卓越的研发实力和坚持不懈的市场推广,公司逐渐在市场上树立起高品质、高可靠性的品牌形象。通过与多家知名企业的合作,ESR公司的产品逐渐获得了市场的认可。

CTC [Compact Technology Corp.]公司的发展小趣事

作为一家有社会责任感的企业,CTC公司积极参与社会公益事业。公司不仅捐款支持教育、环保等公益事业,还利用自身的技术优势为社区提供技术支持和解决方案。这些行为使得CTC公司在社会中树立了良好的形象,赢得了公众的信任和尊重。同时,通过履行社会责任,CTC公司也提升了自身的品牌价值和市场竞争力。

请注意,以上故事是基于假设和虚构的,并非真实发生的事件。它们旨在展示一个电子行业中公司发展可能经历的一些典型情境和挑战,以及应对这些情境和挑战的可能策略。在现实中,每个公司的发展都有其独特性和复杂性,因此这些故事仅供参考,不能作为CTC公司或任何其他公司实际发展情况的依据。

Calex Mfg Co Inc公司的发展小趣事

品质是Calex Mfg. Co., Inc.的生命线。公司始终坚持以品质为核心,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控。这种对品质的执着追求,使得公司的产品赢得了客户的信赖和好评。同时,公司还注重品牌建设,通过广告宣传和参展等方式,不断提升品牌知名度和影响力。

Crowd_Supply__Inc.公司的发展小趣事

在电子行业的众多初创公司中,Crowd Supply Inc.以其独特的理念和模式崭露头角。公司成立之初,便聚焦于开放式硬件和社区驱动的产品开发,这在当时的行业环境中还是一个较为新颖的概念。创始人团队由一群富有热情和创新精神的电子工程师和产品开发专家组成,他们通过线上平台汇聚了一群同样对电子硬件感兴趣的爱好者和开发者。初期,公司面临资金短缺、市场认可度低等挑战,但通过不断试错和社区反馈,逐渐找到了自己的发展方向。

广芯电子(BROADCHIP)公司的发展小趣事

在国内市场取得一定成绩后,Crowd Supply Inc.开始将目光投向更广阔的国际市场。公司通过与国外合作伙伴建立战略合作关系、参加国际电子展会等方式,积极拓展海外市场。同时,公司还针对不同国家和地区的市场需求,定制化开发符合当地需求的产品和服务。这些举措不仅为公司带来了新的增长点,也进一步提升了公司在国际电子行业的知名度和影响力。

请注意,以上故事是基于一般性的电子行业公司发展历程和模式进行构想的,并非针对Crowd Supply Inc.的实际情况。如果您需要关于Crowd Supply Inc.的具体故事,建议您查阅相关新闻报道、公司官网或行业分析报告等权威渠道获取更准确的信息。

问答坊 | AI 解惑

体验下用2440开发板上EEW论坛的感觉

闲来无事,将新买来的2440开发板接上网线体验下上上网的感觉~~~(O(∩_∩)O哈哈~,新学ARM,基本不太会玩) 不知道买来的朋友有没有试过哈 发几张PP上来吧 首先打开电子工程世界主页,这样看来貌似挺正常的嘛,就是屏幕小了些 接着继续打开 ...…

查看全部问答>

有谁会写楼层显示的的程序

我现在想用点阵写一个楼层显示的的程序,就写1到5层吧,有上下箭头的,会显示楼层。那位高手有啊?…

查看全部问答>

【藏书阁】C++标准程序库—自修教程与参考手册

目录: 1 关于本书1 1.1 缘起1 1.2 阅读前的必要基础2 1.3 本书风格与结构2 1.4 如何阅读本书4 1.5 目前发展形式5 1.6 范例程序代码及额外信息5 1.7 回应5 2 C++ 及其标准程序库简介7 2.1 沿革7 2.2 新的语言特性9 2.2.1 Templates( ...…

查看全部问答>

上班的路上比上班还要辛苦

今天星期一,来了2趟356路车,又走了,由于人多,没挤上去,也在情理之中。                     实在没办法了,323路来了,终于在门口找个容身的地方,也算舒了口气。 & ...…

查看全部问答>

两个datagridview控件

急! 各位高手,大家好,请教大家一个问题: 是这样的:有两个datagridview控件,分别绑定数据,但现在要把他们放在一个控件里面,就如容器,他说点第一个按钮的时候,其中一个datagridview显示,点第二个按钮的时候另一个datagridview显示,就是 ...…

查看全部问答>

关于步进电机的力矩

我的步进电机是42BYGH3404,静力矩为2.6kg.cm。用的驱动芯片是2803. 我现在用它来转动一个半径是8cm,重量0.25KG的轮子,是很没驱动力的,也就是说转得很没力。而且电机的轴我是可以用手抓停的。 是不是电机本来就没有这么大的力矩还是我自己的驱 ...…

查看全部问答>

求助

高手给个程序的源代码,用sql 2000与sql server ce同步的数据库程序…

查看全部问答>

谁能帮我写个CCD TCD1206SUP的时序驱动啊

如题,因为要做毕业设计,做一个测量系统,因为本人是学光的,电方面知识储备不多,烦请高手帮忙。 …

查看全部问答>

PIC单片机AD采集基准电压问题?

我用的单片机是PIC18F2682  他自带AD采集模块  可以采用内部基准电压和外部基准电压,内部基准电压采用的VCC的电压  如果我采用内部基准电压 还需要在VCC引脚上加 稳压电路吗?    它内部有没有 稳压电路& ...…

查看全部问答>

str715启动速度问题。

各位高手:    请教个问题,我用str715,4MHz时钟,iar编译器,c语言开发。发现个问题,我用示波器测,从复位完成到应用程序执行要70ms,看资料,这个时间应该是2千多个时钟周期,按我现在的配置,最多是1毫秒就够了,不 ...…

查看全部问答>