• 首页>诗词 > 诗词
  • LCD12864怎么实现任意位置显示字符或汉字

    1.大小可调

    字库里的字符大小应该是固定的,你要是实现大小可调就要用到字模提取软件,把字符转换为像素点。

    2. 任意位置显示

    #include<reg52.h> //包含单片机寄存器的头文件

    sbit RS=P2^2; //寄存器选择位,将RS位定义为P2.2引脚

    sbit RW=P2^3; //读写选择位,将RW位定义为P2.3引脚

    sbit EN=P2^4; //使能信号位,将E位定义为P2.4引脚

    unsigned char table[]=" 你好 ";

    unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字

    void read_busy() //读忙标志

    {

    RS=0;

    RW=1;

    EN=1;

    while(P0 & 0x80);

    EN=0;

    }

    void delay(unsigned int i) //延时函数

    {

    while(--i);

    }

    void Write_LCD_command(unsigned char value) //写命令函数

    {

    read_busy(); //每次读写前都要惊醒“忙”判断

    RS=0;

    RW=0;

    delay(200);

    EN=1; //EN从1---0锁存有效数据

    P0=value;

    delay(200);

    EN=0;

    }

    void Write_LCD_data(unsigned char value)//写数据函数

    {

    read_busy(); //每次读写前都要惊醒“忙”判断

    RS=1;

    RW=0;

    delay(200);

    EN=1; //EN从1---0锁存有效数据

    P0=value;

    delay(200);

    EN=0;

    }

    void init_LCD() //LCD12864初始化

    {

    delay(4000);

    Write_LCD_command(0x30);//8位数据格式,基本指令显示

    delay(100); //延时时间

    Write_LCD_command(0x30);//8位数据格式,基本指令显示

    delay(37);

    Write_LCD_command(0x0C);//开显示、关闭光标

    delay(100);

    Write_LCD_command(0x01);//清屏指令

    delay(10000); //延时

    Write_LCD_command(0x06);//设置显示点:指针自加1

    }

    //*************************************************

    //以上是我测温程序的显示驱动部分,下面给你实现任意位置显示的程序

    //*************************************************

    void main()

    {

    unsigned int num;

    init_LCD() //LCD12864初始化

    while(1)

    {

    for(num=0;num<4;num++)//2个汉字

    {

    Write_LCD_command(0x90);//根据需要改变数值从而实现不同位置显示,看看12864的手册就知道了

    Write_LCD_data(table[num]);

    delay(10000);

    }

    }

    }

    发表评论

    登录后才能评论