历史上的今天
返回首页

历史上的今天

今天是:2025年06月25日(星期三)

正在发生

2018年06月25日 | 【51单片机】(手把手教你)1602液晶屏-基础篇

2018-06-25 来源:eefocus

1602液晶简介

1602液晶也叫1602字符型液晶,16x02,每行16个字符显示两行。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

#度娘告知


http://blog.csdn.net/wait_for_taht_day5/article/details/50636096

代码

/* 

  用液晶1602以从右侧移入方式第一行显示“Hello everyone!” 

  第二行显示“Welcome to my blog!” 

*/  

  

#include  

  

#include                           //strlen包含的头文件  

  

#define uint unsigned int  

  

#define uint8 unsigned char  

  

uint8 code table[]="Hello everyone!";  

  

uint8 code table1[]="Welcome to my blog!";  

  

sbit lcden=P3^4;  

  

sbit lcdrs=P3^5;  

  

sbit dula=P2^6;  

  

sbit wela=P2^7;  

  

uint8 num;  

  

void delay(uint z);  

  

void write_com(uint8 com);  

  

void write_data(uint8 date);  

  

void init();  

  

void Write1602_Str(uint addr,uint length,uint *pbuf);  

  

  

  

void main()  

{  

    init();  

  

    Write1602_Str(0x80+0x10,strlen(table),table);     //Hello everyone!  

  

    Write1602_Str(0x80+0x50,strlen(table1),table1);   //Welcome to my blog!  

          

    while(1)  

  

    {     

            write_com(0x18);  

                      

            delay(200);             //移动速度,可自定  

    }                      

  

}  

  

  

  

  

void delay(uint z)  

  

{  

  

    uint i,j;  

  

    for(i=z;i>0;i--)  

  

        for(j=0;j<921;j++);  

  

}  

  

void write_com(uint8 com)  

  

{  

    lcdrs=0;                     //RS=0->指令  

                                 // R/W我的单片机上引脚直接接地了所以不用设置  

    delay(1);                    //tsp1  

  

    P0=com;                      //DB0-DB7  

  

    delay(1);                    //tsp2  

  

    lcden=1;                     //tR  

  

    delay(1);                    //tpW  

  

    lcden=0;                     //tF、tHD1、tHD2  

  

}  

  

void write_data(uint8 date)  

  

{  

    lcdrs=1;                     //RS=1->数据  

  

    delay(1);  

  

    P0=date;  

  

    delay(1);  

  

    lcden=1;  

  

    delay(1);  

  

    lcden=0;  

  

}  

  

void init()  

  

{  

    dula=0;              //段选位关闭,因为P0口同时也是控制数据管的口  

  

    wela=0;              //同上  

  

    lcden=0;             //使能关(操作之前看时序图都需要E开始是0后来变为1)  

  

    write_com(0x38);     //设置16*2显示,5*7点阵,8位数据口  

  

    write_com(0x0e);     //设置开显示,不显示光标  

  

    write_com(0x06);     //写一个字符后地址指针加1  

  

    write_com(0x01);     //显示清0,数据指针清0  

  

}  

  

void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf)  

  

{  

  

    uint8 i;   

  

    write_com(addr);  

  

    for(i=0;i

  

       write_data(pbuf[i]);  

     

  

}   

总结:


1602显示字符必要条件:

(1)液晶显示模式的设置

(2)字符显示位置的指定

(3)待显示字符的字模代码


推荐阅读

史海拾趣

Aptos Technology公司的发展小趣事

为了加速发展,Aptos积极寻求与行业内外的合作伙伴建立合作关系。通过与微软、阿里云等知名公司的合作,Aptos获得了更多的技术支持和市场资源。这些合作伙伴关系的建立,不仅提升了Aptos的技术实力和市场竞争力,还为其未来的发展奠定了坚实的基础。

展恒电子(Broadic)公司的发展小趣事

2007年,Broadic在美国加州成立,以其前瞻性的视野和深厚的技术积累,迅速在电子行业中崭露头角。同年,公司开始着手研发创新的芯片技术,奠定了其未来发展的坚实基础。2008年,深圳市展恒电子有限公司应运而生,作为Broadic在国内的销售公司,它的成立标志着Broadic正式进入中国市场,开始了其在国内的快速发展之旅。

C-MAX Time Solutions公司的发展小趣事

C-MAX Time Solutions公司在发展过程中,逐渐认识到深耕细分市场的重要性。公司针对工业控制、安防监控等特定领域,推出了定制化的时间同步解决方案。这些方案不仅满足了客户的特殊需求,也提高了C-MAX在这些细分市场的占有率。通过不断积累口碑和经验,C-MAX逐渐在电子行业中树立起了专业、可靠的形象。

DDK公司的发展小趣事

DDK公司在发展过程中,始终牢记社会责任,积极履行企业公民的义务。公司积极参与公益事业,关注环境保护和社会发展,为社会做出了积极贡献。同时,DDK公司还积极推动行业健康发展,与同行企业共同维护市场秩序和公平竞争环境。这种社会责任的担当,让DDK公司在电子行业中树立了良好的企业形象。

Gilway Technical Lamp公司的发展小趣事
制冷剂是制冷系统中的重要介质,如果制冷剂泄漏,制冷效果将大打折扣甚至完全失效。
CINTERION公司的发展小趣事

2010年,电子支付与身份识别技术领域的领军企业金雅拓,全资收购了CINTERION。这一资本动作不仅为CINTERION带来了更多的资金支持,更使其在金雅拓的物联网事业部中获得了更广阔的发展空间。收购完成后,CINTERION继续保持其技术领先地位,并在金雅拓的推动下,进一步拓宽了产品线和应用领域。

问答坊 | AI 解惑

求一个万年历汇编程序

求一个万年历汇编程序,我用的IC:AT89S52,DS1302,及其液晶显示屏一块,因不是很懂单片机,哪位能否提供一下相应的程序及其电路制作给我参考,谢谢!…

查看全部问答>

EVC 的wince5.0模拟器的问题

   我2台机子EVC都装了EVC的WINCE5.0模拟器SDK ,一台机子上EVC呈现编译能在WINCE5模拟器跑起来,而将此程序复制到另外一台机子的WINCE5模拟器却跑不起来,提示Cannot open(or one of its components).Make sure the path and filen~~不 ...…

查看全部问答>

我们用什么方法可以知道camera正在工作?

当camera打开时,我要关掉某些东西 所以我要获得camera的状态 怎么获得,有没有注册表什么的?? …

查看全部问答>

帮忙看一句代码是什么意思...10分谢谢

typedef struct { unsigned char bit0 : 1; unsigned char bit1 : 1; unsigned char bit2 : 1; unsigned char bit3 : 1; unsigned char bit4 : 1; unsigned char bit5 : 1; unsigned char bit6 : 1; unsigned char bit7 : 1; } tpBIT; # ...…

查看全部问答>

C#移动项目PPC 2003,连接ACCESS在MSDN里有吗??

C#移动项目PPC 2003连接ACCESS在MSDN里有吗? 我找了半天没找到呀!谁能帮助帮助我!!!…

查看全部问答>

请教版主.怎样才算不是广告.我说在卖STM32F系列的就是广告吗

请给我一个回复.有点纳闷.我发个针对中小型客户服务的贴就叫广告贴.那怎样不算广告. 这里只能允许发什么贴.…

查看全部问答>

关于源文件的问题

在一个工程里面,别写了多个.c程序,之后建立一个main.c,在main中怎么其它.c文件中的函数,是不是直接调用,跟写在一个文件里一样的?…

查看全部问答>

XS128的nrf24l01的收发程序

前一阵子在写XS128的nrf24l01的收发程序 还是挺难写的 网上的代码都没有XS128的  现在都弄通了  所以把自己的成果传上来 希望大家共同学习 [ 本帖最后由 iwbago 于 2011-8-19 09:29 编辑 ]…

查看全部问答>

求3.5mm音频插座的PCB封装?

最近要设计一块9B96的控制板,想把音频部分加上去,需要一个类似DK-9B96原理图中,STx-3000 耳机插座的PCB封装,不知道具体的尺寸,希望能有这方面设计经验的大侠不吝赐教,非常感谢!!!…

查看全部问答>