显示结果:
图片及字体取模
单片机源程序如下:
#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页
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』