zoukankan      html  css  js  c++  java
  • 液晶操作

    液晶的操作:

    1602液晶只能显示ASCI,今天把1602液晶驱动起来,液晶操作要比数码管简单

     液晶的基本操作时序:
    1.1读状态:输入:RS = L,RW =H,E = H 输出D0~D7

    1.2写指令:输入:RS = L,RW = L,D0~D7指令码,E = 高脉冲,输出:无;

    RS是数据命令选择端(H/L);

    1.3读数据:输入RS= H,RW=H,E=H

    1.4写指令:输出,RS = L,RW = L,D0~D7=数据,E=高脉冲

    注意:对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0,可以用简单的延时来代替

    初始化设置

    显示模式设置

    指令码:00111000 功能16*2显示,5*7点阵,8为数据接口0x38的指令

    显示开/关光标的设置

    因此左移和右由N和S设置

    数据指针的指令码

    80H+地址码(0-27H,40H到67H)

    其他设置

    指令码 01H 功能是显示清屏:1数据指针清零,2所有显示清零

        02H显示回车:1数据指针清零

    电路图如图所示:

     示例代码:动态显示

    #include<reg52.h>
    #include<intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    
    sbit lcden = P2^6;//这几个端口要和硬件电路先联系  
    sbit lcdrw = P2^5;
    sbit lcdrs = P2^4;
    
    sbit dula = P3^1;
    sbit wela = P3^2;
    uchar num;
    uchar code table[]="I LIke MCU!";
    uchar code table1[]="I LIke HULeiHao";
    
    void delay(uint z)
    {
        uint x,y;
        for(x= z;x>0;x--)
            for(y =110;y>0;y--);
    }
    
    void write_com(uchar com)//写命令函数
    {
        lcdrs = 0;//使能端置0低脉冲写指令,高脉冲写数据   
        _nop_();//推迟一个机器周期  
    
        lcdrw = 0;//低电平往里面写数据
        P0= com;
    
        delay(5);
        lcden = 1;//使能端给一个高电平读走数据
        delay(5);
        lcden = 0;//使能端给一个低电平回位  
    
    }
    
    void write_date(uchar date)//写数据函数
    {
        lcdrs = 1;//使能端置0低脉冲写指令,高脉冲写数据
        _nop_();//推迟一个机器周期
    
        lcdrw = 0;
        P0= date;
    
        delay(5);
        lcden = 1;
        delay(5);
        lcden = 0;
    
    }
    
    void init()
    {
        dula = 0;
        wela = 0;//关闭数码管
    
        lcden = 0;
        write_com(0x38);//显示模式设置
        write_com(0x0e);//显示开关以及光标设置
        write_com(0x06);
        write_com(0x80+0x10);
        
    }
    
    void main()
    {
        init();
        for(num=0;num<11; num++)
        {
            write_date(table[num]);
            delay(20);
        }
    //    write_com = 1;//清屏操作
        write_com(0x80+0x53);//设置数据指针
        for(num=0;num<15; num++)
        {
            write_date(table1[num]);
            delay(20);
        }
        for(num = 0 ;num<16;num++)
        {
            write_com(0x18);//整个屏幕左移
            delay(20);
        }        
        while(1);
    }
    View Code

    版权所有:转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3337331.html

  • 相关阅读:
    Js 之判断某月有几天
    Java 之c3p0连接池对实体 "useSSL" 的引用必须以 ';' 分隔符结尾
    SQL真题实战(大厂真题)——来自牛客题霸
    公共api
    Windows下搭建redis 哨兵环境
    hibernate查询不到关联对象列表fetchType的选择
    「IOI2021」Dungeons
    「Gym103261H」Greedy Algorithm
    「牛客」牛半仙的妹子序列
    「UOJ 632」挑战最大团
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3337331.html
Copyright © 2011-2022 走看看