仿真实验结果展示:
汉字取模过程(软件下载链接在文末):第一步:打开液晶仿真排版软件 设定相关参数:
输入汉字:
随便找个位置将图片保存:
第二步:打开液晶汉字模提取软件 设定相关参数:
将刚才保存的图片打开并保存数据:
C语言程序代码:
- #include <reg51.h>
- #define LCDLCDDisp_Off 0x3e
- #define LCDLCDDisp_On 0x3f
- #define Page_Add 0xb8//页地址
- #define LCDCol_Add 0x40//列地址
- #define Start_Line 0xC0//行地址
- /*****液晶显示器的端口定义*****/
- #define data_ora P0 /*液晶数据总线*/
- sbit LCDMcs=P2^4 ; /*片选1*/
- sbit LCDScs=P2^3 ; /*片选2*/
- sbit LCDDi=P2^2 ; /*数据/指令 选择*/
- sbit LCDRW=P2^1 ; /*读/写 选择*/
- sbit LCDEnable=P2^0 ; /*读/写 使能*/
- //
- unsigned char code Bmp1[]=
- {
- /*------------------------------------------------------------------------------
- 宽×高(像素): 128×16
- 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节
- 显示的汉字:关关雎鸠在河之洲
- ------------------------------------------------------------------------------*/
- /*-- 调入了一幅图像:C:\Users\dhd\Desktop\1111111.bmp --*/
- /*-- 宽度x高度=128x16 --*/
- 0x00,0x10,0x10,0x11,0x12,0x1C,0x10,0xF0,0x10,0x18,0x14,0x13,0x1A,0x90,0x00,0x00,
- 0x00,0x10,0x10,0x11,0x12,0x1C,0x10,0xF0,0x10,0x18,0x14,0x13,0x1A,0x90,0x00,0x00,
- 0x00,0xFC,0x24,0x24,0xFE,0x24,0x10,0xFC,0x4B,0x49,0xFE,0x48,0x68,0x4C,0x08,0x00,
- 0x10,0x10,0xFF,0x10,0xF8,0x10,0x00,0xFC,0x04,0x16,0x45,0x84,0x7E,0x04,0x00,0x00,
- 0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,0x08,0xE8,0x08,0x88,0x08,0x0C,0x08,0x00,
- 0x10,0x21,0x62,0x06,0x82,0xE2,0x22,0x22,0x22,0xF2,0x22,0x02,0xFE,0x03,0x02,0x00,
- 0x00,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x90,0x50,0x30,0x10,0x00,0x00,0x00,
- 0x10,0x22,0x64,0x0C,0x80,0x20,0xC0,0xFF,0x20,0xC0,0xFC,0x20,0xC0,0xFF,0x00,0x00,
- 0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x21,0x41,0xC1,0x41,0x00,
- 0x81,0x81,0x41,0x41,0x21,0x11,0x0D,0x03,0x0D,0x11,0x21,0x21,0x41,0xC1,0x41,0x00,
- 0x10,0x3F,0x11,0x11,0x0F,0x08,0x00,0xFF,0x22,0x22,0x3F,0x22,0x23,0x32,0x20,0x00,
- 0x40,0x30,0x0F,0x00,0x3F,0x10,0x08,0x13,0x12,0x12,0x1A,0x52,0x82,0x7F,0x02,0x00,
- 0x08,0x04,0x02,0xFF,0x00,0x40,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x60,0x40,0x00,
- 0x04,0x04,0xFE,0x01,0x00,0x0F,0x04,0x04,0x04,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,
- 0x00,0x20,0x10,0x10,0x28,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0x40,0x60,0x20,0x00,
- 0x04,0x04,0xFE,0x01,0x00,0x40,0x30,0x0F,0x00,0x00,0x3F,0x00,0x00,0xFF,0x00,0x00,
- };
- unsigned char code Bmp2[]=
- {
- /*------------------------------------------------------------------------------
- 宽×高(像素): 128×16
- 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节
- 显示的汉字:窈窕淑女君子好逑
- --------------------------------------------------------------------------
- */
- 0x10,0x0E,0x04,0x94,0x4C,0x24,0x05,0x86,0x84,0xE4,0x8C,0x94,0xC4,0x94,0x0C,0x00,
- 0x10,0x0E,0x44,0x94,0x0C,0x04,0xF5,0x06,0xF4,0x04,0x0C,0xD4,0x84,0x14,0x0C,0x00,
- 0x10,0x22,0x64,0x0C,0xC0,0x40,0xFF,0x44,0x44,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0xE0,0x20,0x20,0x30,0x20,0x00,
- 0x10,0x10,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x12,0x18,0x10,0x00,
- 0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
- 0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xE2,0x92,0x8A,0xC6,0x80,0x00,
- 0x40,0x42,0x44,0xCC,0x00,0x08,0x28,0x48,0x08,0xFF,0x08,0x4A,0x2C,0x08,0x00,0x00,
- 0x00,0x21,0x31,0x29,0x25,0x2B,0xB1,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,
- 0x00,0x88,0x88,0x45,0x42,0x31,0x0F,0x00,0x3F,0x42,0x45,0x48,0x58,0x40,0x70,0x00,
- 0x04,0x04,0xFE,0x09,0x24,0x42,0x3F,0x82,0x44,0x20,0x13,0x0C,0x13,0x60,0x20,0x00,
- 0x00,0x80,0x80,0x42,0x45,0x24,0x28,0x10,0x18,0x24,0x23,0x40,0xC0,0x00,0x00,0x00,
- 0x40,0x20,0x10,0x0C,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x40,0x22,0x15,0x08,0x14,0x63,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x20,0x1F,0x20,0x42,0x42,0x49,0x50,0x4F,0x40,0x41,0x42,0x66,0x20,0x00,
- };
- unsigned char code Bmp3[]=
- {
- /*------------------------------------------------------------------------------
- 宽×高(像素): 128×16
- 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节
- 显示的汉字:参差荇菜左右流之
- ------------------------------------------------------------------------------*/
- 0x20,0x20,0x20,0x28,0xA8,0x6C,0x3B,0x28,0xA8,0x6A,0xAC,0x28,0x20,0x30,0x20,0x00,
- 0x00,0x04,0x24,0x24,0x25,0x26,0xA4,0x7C,0x24,0x26,0x25,0x34,0x26,0x84,0x00,0x00,
- 0x04,0x84,0x84,0x44,0x24,0x9F,0x04,0x24,0x24,0x2F,0x24,0x24,0x34,0xA6,0x04,0x00,
- 0x04,0x04,0x24,0x64,0xA4,0x2F,0x64,0xA4,0x24,0x2F,0x94,0x54,0x14,0x06,0x04,0x00,
- 0x08,0x08,0x08,0x08,0x88,0x78,0x0F,0x08,0x08,0x08,0x08,0x88,0x0C,0x08,0x00,0x00,
- 0x08,0x08,0x08,0x08,0xC8,0x38,0x0F,0x08,0x08,0x08,0x08,0x08,0x88,0x0C,0x08,0x00,
- 0x10,0x22,0x64,0x0C,0x80,0x44,0x44,0x64,0x55,0x4E,0x44,0x54,0x66,0xC4,0x00,0x00,
- 0x00,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x90,0x50,0x30,0x10,0x00,0x00,0x00,
- 0x04,0x84,0x82,0x81,0x4A,0x4A,0x49,0x25,0x24,0x12,0x10,0x09,0x02,0x06,0x02,0x00,
- 0x41,0x21,0x11,0x89,0x85,0x8B,0x89,0x89,0xF9,0x89,0x8D,0x89,0xC1,0x81,0x01,0x00,
- 0x08,0x08,0x04,0x02,0xFF,0x00,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x00,
- 0x02,0x42,0x42,0x22,0x12,0x0A,0x06,0xFF,0x06,0x0A,0x12,0x12,0x22,0x63,0x22,0x00,
- 0x20,0x50,0x48,0x46,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x60,0x40,0x00,
- 0x08,0x04,0x02,0x01,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x01,0x00,0x00,
- 0x04,0x04,0xFE,0x01,0x00,0x80,0x40,0x3F,0x00,0xFF,0x00,0x3F,0x40,0x40,0x70,0x00,
- 0x00,0x20,0x10,0x10,0x28,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0x40,0x60,0x20,0x00,
- };
- unsigned char code Bmp4[]=
- {
- /*------------------------------------------------------------------------------
- 宽×高(像素): 128×16
- 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/256字节
- 显示的汉字:窈窕淑女寤寐求之
- ------------------------------------------------------------------------------*/
- 0x10,0x0E,0x04,0x94,0x4C,0x24,0x05,0x86,0x84,0xE4,0x8C,0x94,0xC4,0x94,0x0C,0x00,
- 0x10,0x0E,0x44,0x94,0x0C,0x04,0xF5,0x06,0xF4,0x04,0x0C,0xD4,0x84,0x14,0x0C,0x00,
- 0x10,0x22,0x64,0x0C,0xC0,0x40,0xFF,0x44,0x44,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0xE0,0x20,0x20,0x30,0x20,0x00,
- 0x10,0x0C,0xF4,0x84,0x84,0xF4,0x05,0x56,0xD4,0x74,0x54,0x54,0xD4,0x14,0x0C,0x00,
- 0x10,0x0C,0xF4,0x84,0x84,0xF4,0x05,0x46,0x44,0x44,0xF4,0x44,0x44,0x54,0x0C,0x00,
- 0x00,0x08,0x28,0x48,0xC8,0x08,0x08,0xFF,0x88,0x0A,0x8C,0x48,0x6C,0x08,0x00,0x00,
- 0x00,0x10,0x10,0x10,0x10,0x10,0x11,0x16,0x10,0x90,0x50,0x30,0x10,0x00,0x00,0x00,
- 0x00,0x21,0x31,0x29,0x25,0x2B,0xB1,0x40,0x30,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,
- 0x00,0x88,0x88,0x45,0x42,0x31,0x0F,0x00,0x3F,0x42,0x45,0x48,0x58,0x40,0x70,0x00,
- 0x04,0x04,0xFE,0x09,0x24,0x42,0x3F,0x82,0x44,0x20,0x13,0x0C,0x13,0x60,0x20,0x00,
- 0x00,0x80,0x80,0x42,0x45,0x24,0x28,0x10,0x18,0x24,0x23,0x40,0xC0,0x00,0x00,0x00,
- 0x02,0x42,0x3E,0x02,0x02,0xFF,0x02,0xFA,0x4B,0x4A,0x4A,0x4A,0x4B,0xFA,0x02,0x00,
- 0x02,0x42,0x3E,0x02,0x02,0xFF,0x42,0x22,0x12,0x0A,0xFF,0x0A,0x32,0x63,0x22,0x00,
- 0x00,0x10,0x10,0x08,0x04,0x42,0x81,0x7F,0x00,0x03,0x04,0x04,0x08,0x18,0x08,0x00,
- 0x00,0x20,0x10,0x10,0x28,0x48,0x44,0x42,0x41,0x40,0x40,0x40,0x40,0x60,0x20,0x00,
- };
- /****************************************************************************
- 函数功能:LCD延时程序
- 入口参数:t
- 出口参数:
- ****************************************************************************/
- void LCDdelay(unsigned int t)
- {
- unsigned int i,j;
- for(i=0;i<t;i++);
- for(j=0;j<10;j++);
- }
- /****************************************************************************
- 状态检查,LCD是否忙
- *****************************************************************************/
- void CheckState()
- {
- unsigned char dat,DATA;//状态信息(判断是否忙)
- LCDDi=0; // 数据\指令选择,D/I(RS)="L" ,表示 DB7∽DB0 为显示指令数据
- LCDRW=1; //R/W="H" ,E="H"数据被读到DB7∽DB0
- do
- {
- DATA=0x00;
- LCDEnable=1; //EN下降源
- LCDdelay(2);//延时
- dat=DATA;
- LCDEnable=0;
- dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)
- }
- while(!(dat==0x00));
- }
- /*****************************************************************************
- 函数功能:写命令到LCD程序,RS(DI)=L,RW=L,EN=H,即来一个脉冲写一次
- 入口参数:cmdcode
- 出口参数:
- *****************************************************************************/
- void write_com(unsigned char cmdcode)
- {
- CheckState();//检测LCD是否忙
- LCDDi=0;
- LCDRW=0;
- P1=cmdcode;
- LCDdelay(2);
- LCDEnable=1;
- LCDdelay(2);
- LCDEnable=0;
- }
- /*****************************************************************************
- 函数功能:LCD初始化程序
- 入口参数:
- 出口参数:
- *****************************************************************************/
- void init_lcd()
- {
- LCDdelay(100);
- LCDMcs=1;//刚开始关闭两屏
- LCDScs=1;
- LCDdelay(100);
- write_com(LCDLCDDisp_Off); //写初始化命令
- write_com(Page_Add+0);
- write_com(Start_Line+0);
- write_com(LCDCol_Add+0);
- write_com(LCDLCDDisp_On);
- }
- /*****************************************************************************
- 函数功能:写数据到LCD程序,RS(DI)=H,RW=L,EN=H,即来一个脉冲写一次
- 入口参数:LCDDispdata
- 出口参数:
- *****************************************************************************/
- void write_data(unsigned char LCDDispdata)
- {
- CheckState();//检测LCD是否忙
- LCDDi=1;
- LCDRW=0;
- P1=LCDDispdata;
- LCDdelay(2);
- LCDEnable=1;
- LCDdelay(2);
- LCDEnable=0;
- }
- /*****************************************************************************
- 函数功能:清除LCD内存程序
- 入口参数:pag,col,hzk
- 出口参数:
- *****************************************************************************/
- void Clr_Scr()
- {
- unsigned char j,k;
- LCDMcs=0; //左、右屏均开显示
- LCDScs=0;
- write_com(Page_Add+0);
- write_com(LCDCol_Add+0);
- for(k=0;k<8;k++)//控制页数0-7,共8页
- {
- write_com(Page_Add+k); //每页每页进行写
- for(j=0;j<64;j++) //每页最多可写32个中文文字或64个ASCII字符
- {
- write_com(LCDCol_Add+j);
- write_data(0x00);//控制列数0-63,共64列,写点内容,列地址自动加1
- }
- }
- }
- /*****************************************************************************
- 函数功能:左屏位置显示
- 入口参数:page,column,hzk
- 出口参数:
- *****************************************************************************/
- void Bmp_Left_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)
- {
- unsigned char j=0,i=0;
- for(j=0;j<2;j++)
- {
- write_com(Page_Add+page+j);
- write_com(LCDCol_Add+column);
- for(i=0;i<64;i++)
- write_data(Bmp[128*j+i]);
- }
- }
- /*****************************************************************************
- 函数功能:右屏位置显示
- 入口参数:page,column,hzk
- 出口参数:
- *****************************************************************************/
- void Bmp_Right_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)
- {
- unsigned char j=0,i=0;
- for(j=0;j<2;j++)
- {
- write_com(Page_Add+page+j);
- write_com(LCDCol_Add+column);
- for(i=64;i<128;i++)
- write_data(Bmp[128*j+i]);
- }
- }
- void main()
- {
- init_lcd();
- Clr_Scr();
- LCDMcs=0; //左屏开显示
- LCDScs=1;
- Bmp_Left_Disp(0,0,Bmp1);// Bmp1为某个汉字的首地址
- Bmp_Left_Disp(2,0,Bmp2);
- Bmp_Left_Disp(4,0,Bmp3);
- Bmp_Left_Disp(6,0,Bmp4);
- LCDMcs=1; //右屏开显示
- LCDScs=0;
- Bmp_Right_Disp(0,0,Bmp1);
- Bmp_Right_Disp(2,0,Bmp2);
- Bmp_Right_Disp(4,0,Bmp3);
- Bmp_Right_Disp(6,0,Bmp4);
- while(1)
- {
- }
- }
复制代码 |