标题: 51单片机驱动中文字库12864液晶显示 [打印本页]

作者: 想后看开    时间: 2024-1-9 10:10
标题: 51单片机驱动中文字库12864液晶显示
//c51驱动中文字库12864液晶显示
#include <stdio.h>
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LCD_data1[];
uchar code LCD_data2[];
uchar code LCD_picture1[];
uchar code LCD_picture2[];
/*sbit RS = P3^0; //2051
sbit RW = P3^1;
sbit EN = P3^2;
sbit PSB = P3^3;  
sbit RES = P3^4;       */
/*sbit RS = P2^4;
sbit RW = P2^5;
sbit EN = P2^6;
sbit PSB = P2^1;  
sbit RES = P2^3;   
sbit Dataport = P0;//l-1定义数据端口
sbit Busyport = P0^7;
void delay_ms(unsigned int n)   //延时10*N毫秒
{
unsigned int i,j;
for(i=0;i<n;i++)  
for(j=0;j<2000;j++);
}
void delay(unsigned int m)        //延时1u秒
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void check_LCD_busy (void) //判断LCM忙子程序
{
Dataport = 0xff;
RS = 0;
RW = 1;
EN = 1;  
while (Busyport);
EN = 0;
}
void write_com(uchar Command) //写命令子程序
{
check_LCD_busy();
RW=0;
RS=0;
delay(1);  
P0=Command;
EN=1;
delay(1);
EN=0;
}
void write_data(uchar Data)  //写数据子程序
{
check_LCD_busy();
RW=0;
RS=1;
delay(1);
P0=Data;
EN=1;
delay(1);
EN=0;
}
void lcdClear (void) //LCM清屏子函数
{
write_com(0x01);
}
void reset () //LCm复位子函数
{
RES=0;// 复位
delay(1);
RES=1;//复位置高
delay(10);
}
void dispString (uchar X, Y,uchar*msg)  //显示汉字,X为哪一行,y为哪一列 ,msg为汉字
{
if(X==0) X = 0x80; //第一行,汉字显示坐标
else if(X==1) X = 0x90; // 第2行,汉字显示坐标
else if(X==2) X = 0x88;  //第3行
else X = 0x98;                           //第4行
//Y = X + Y;          //去掉+Y,显示从第一格开始
Y = X ;                            //y为一往右边移动 一位
write_com(Y);                    //写入坐标
while (*msg)               //
{
write_data(*msg++);//显示汉字
}
}
void disppicture(uchar code*adder)  //显示图像
{
uint i,j;
for(i=0;i<32;i++) //上半屏32个列地址                                                            
{
write_com(0x80 + i);   //set垂直地址VERTICALADD
write_com(0x80);      //set水平地址HORIZONTALADD
for(j=0;j<16;j++)
{
write_data(*adder);
adder++;
}
}
for(i=0;i<32;i++)//显示下半屏内容设置
{
write_com(0x80 + i); //set垂直地址VERTICALADD   
write_com(0x88);    //set水平地址HORIZONTALADD
for(j=0;j<16;j++)                                                                                 
{
write_data(*adder);
adder++;
}
}
}
void lcdinit_str(void)//lcd字库初始化程序
{
delay(40);             //大于40MS延时
PSB=1;                        //设置为8BIT并口工作模式
delay(1);            
reset();                  //复位
write_com(0x30);   
delay(100);
write_com(0x30);   
delay(37);            
write_com(0x08);  
delay(100);           
write_com(0x10);  
delay(100);           
write_com(0x0C);
delay(100);
write_com(0x01);   
delay(10);            
write_com(0x06);  // 光标从右向左加1    位移动
delay(100);
}
void lcdinit_pic(void)//lcd图片(扩展 )初始化函数
{
delay(40);           
PSB=1;//设置为8BIT并口工作模式
delay(1);              
reset();      
write_com(0x36);   
delay(100);         
write_com(0x36);     
delay(37);                             
write_com(0x3E);            
delay(100);                       
write_com(0x01);     
delay(100);         
}
void main()
{
while(1)
{
lcdinit_str();
delay_ms(10);
dispString(0, 1,"钟山风雨起苍黄,");
delay_ms(10);
dispString(1, 1,"百万雄师过大江。");
delay_ms(10);
dispString(2, 1,"虎踞龙盘今胜昔,");
delay_ms(10);
dispString(3, 1,"天翻地覆慨而慷");  
delay_ms(200);
delay_ms(200);
lcdClear();
delay_ms(10);
dispString(0, 1,"宜将剩勇追穷寇,");
delay_ms(10);
dispString(1, 1,"不可沽名学霸王。");
delay_ms(10);
dispString(2, 1,"天若有情天亦老,");  
delay_ms(10);
dispString(3, 1,"人间正道是沧桑。");  
delay_ms(200);
delay_ms(200);         


delay_ms(10);
dispString(1, 1,"万水千山只等闲。");
delay_ms(10);
dispString(2, 1,"五岭逶迤腾细浪,");  
delay_ms(10);
dispString(3, 1,"乌蒙磅礴走泥丸。");  
delay_ms(200);
delay_ms(200);         
delay_ms(10);
dispString(0, 1,"金沙水拍云崖暖,");
delay_ms(10);
dispString(1, 1,"大渡桥横铁索寒。");
delay_ms(10);
dispString(2, 1,"更喜民山千里雪,");  
delay_ms(10);
dispString(3, 1,"三军过后尽开颜。");  
delay_ms(200);
delay_ms(200);         

lcdinit_pic();
lcdClear();
delay_ms(10);
disppicture(LCD_picture1);
delay_ms(300);
delay_ms(300);
}
} */
这里发一个51单片机驱动中文字库12864液晶显示代码,大家一起学习。中文字库12864液晶用起来比较简单。

51hei图片20240109095058.png (251.14 KB, 下载次数: 89)

51hei图片20240109095058.png

作者: joyb    时间: 2024-1-10 10:32
这是带字库的
作者: jinyudz    时间: 2024-1-13 18:52
这个特别实用。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1