×
单片机 > 单片机程序设计 > 详情

51单片机LCD12864显示屏图片中文英文显示

发布时间:2024-05-19 发布时间:
|

显示结果:






图片及字体取模



单片机源程序如下:

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

//定义端口

sbit A0=P2^0; //定义端口是传输命令还是数据,

sbit RW=P2^1;//定义端口是读取还是写入,

sbit LCDEN=P2^2;//芯片使能启动

sbit RST=P2^3;//复位键


uchar code dis1[]={/*-- 文字: 我 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0x20,0xFF,0x20,0x22,0x2C,0xA0,0x20,0x00,

0x00,0x08,0x48,0x84,0x7F,0x02,0x41,0x40,0x20,0x13,0x0C,0x14,0x22,0x41,0xF8,0x00};




uchar code dis2[]={

/*-- 文字: 爱 --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/

0x80,0x64,0x2C,0x34,0x24,0x24,0xEC,0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00,

0x00,0x41,0x21,0x91,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00};

中间省略 见附件

0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00

};




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

* 函 数 名 : delay_ms,

* 函数功能 : 毫秒延时程序

* 输 入 : 输入延时时间长度,单位为毫秒

* 输 出 : 无

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



void delay_ms(uint x)

{

uint i,j;

for (j=0;j

for(i=0;i<110;i++);

}



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

* 函 数 名 : write_com

* 函数功能 : LCD写指令程序

* 输 入 : 输入LCD对应的设置指令代码

* 输 出 : 对LCD进行相应的设置

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

void write_com(uchar cmd)

{

A0=0;

RW=0;

LCDEN=1;

P0=cmd;

_nop_();

LCDEN=0;

RW=1;


}

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

* 函 数 名 : write_dat

* 函数功能 : LCD写数据程序

* 输 入 : 向LCD写入对应的数据或代码

* 输 出 : 对LCD数据输入显示

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

void write_dat(uchar dat)

{

A0=1;

RW=0;

LCDEN=1;

P0=dat;

_nop_();

LCDEN=0;

RW=1;

}


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

* 函 数 名 : LCD_Initial

* 函数功能 : 对LCD进行初始化

* 输 入 : 对LCD的初始状态进行配置

* 输 出 : 无

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



/*LCD初始化*/

void LCD_Initial()

{

RST=0;

delay_ms(10);

RST=1;

delay_ms(10);

write_com(0xa2); //1/9 bias set

write_com(0xa1); //adc=0,正常从左到右显示

write_com(0xc8); //COM颠倒输出,,Startline0在上侧,Com0 在上侧

write_com(0xae); //Display_Hanzi 0ff

write_com(0xaf); //Display_Hanzi on

}

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

* 函 数 名 : Display_Hanzi

* 函数功能 : 在指定的行与列写入对应的汉字

* 输 入 : a对应的是写入位置的页,b对应写入字符的列,c为写入的汉字代码数组,汉字的宽度为16,

则在对高四位来进行设定的时候,直接用0x10与其列数进行与操作,高四位的变化范围只能

为0-7,满足128列的范围。

* 输 出 : 在屏幕上显示要输出的内容

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

void Display_Hanzi(int a,int b,uchar *c)

{

int n;

for(n=0;n<=15;n++)

{

write_com(a); //选择a页

_nop_();

write_com(0x10|b); //由于字符特征,直接选取对应的高位进行设置。

_nop_();

write_com(0x00|n);

_nop_();

write_dat(c[n]);

_nop_();

write_com(1+a); //选择a+1页

_nop_();

write_com(0x10|b);//列的高四位

_nop_();

write_com(0x00|n);//列的低四位

_nop_();

write_dat(c[n+16]);

_nop_();

}

}


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

* 函 数 名 : Display_SC

* 函数功能 : 在指定的行与列写入对应的单字节字符

* 输 入 : a对应的是写入位置的页,b对应写入字符的列,c为写入的汉字代码数组

* 输 出 : 在屏幕上显示要输出的内容

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

void Display_SC(int a,int b,uchar *c)

{

int n;

int C_high,C_low;

C_high = (b&0xF0)>>4;//选择列的高四位

C_low = (b&0x0F); //列的低四位

for(n=0;n<=7;n++)

{

write_com(a); //选择a页

write_com(0x10|C_high);//列的高四位

write_com((0x00|C_low)+n);//列的低四位

write_dat(c[n]);

write_com(1+a); //选择a+1页

write_com(0x10|C_high);//列的高四位

write_com((0x00|C_low)+n);//列的低四位

write_dat(c[n+8]);

}

}


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

* 函 数 名 : Display_BMP

* 函数功能 : 显示图片的内容,图片大小为128*64

* 输 入 : 输入对应的代码数组

* 输 出 : 在屏幕上显示要输出的图片内容

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

void Display_BMP(uchar *bmp)

{

int i=0; //页码,0-7页

[1] [2]
51单片机LCD12864显示屏


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会