标题:
无字库12864液晶屏滚动显示单片机源程序与效果图
[打印本页]
作者:
xhkk
时间:
2018-8-2 17:37
标题:
无字库12864液晶屏滚动显示单片机源程序与效果图
无字库12864液晶屏滚动显示的效果图:
捕获.PNG
(84.77 KB, 下载次数: 19)
下载附件
2018-8-2 17:34 上传
51单片机控制的无字库12864液晶屏滚动显示程序(纵向取模,取模软件zimo221)
#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#define Lcd_Bus P0 //MCU P0
#define Disp_On 0x3f//开显示
#define Disp_Off 0x3e//关显示
#define Col_Add 0x40//列地址
#define Page_Add 0xb8//页地址
#define Start_Line 0xc0// 起始页
sbit cs1=P2^3; //Master chip enable
sbit cs2=P2^4; //Slave chip enable
sbit Enable=P2^2; // mode Enable single
sbit Di=P2^0; //Data or Instrument Select
sbit RW=P2^1; //Write or Read
sbit Lcd_Rst=P2^5; //Lcm reset
/***************************** 字模此字体下对应的点阵为:宽x高=16x16 *****************************/
unsigned char code Chinese_character[][32]= {
/*-- 文字: 曾 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x7C,0x44,0x55,0x66,0x44,0x7C,0x44,0x66,0x55,0x44,0x7C,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,
/*-- 文字: 经 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x30,0xAC,0x63,0x20,0x18,0x80,0x82,0x42,0x22,0x12,0x1A,0x26,0x42,0x80,0x00,
0x22,0x67,0x22,0x12,0x12,0x12,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00,
/*-- 文字: 沧 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0xC2,0x0C,0x00,0x40,0x20,0xD0,0x48,0x44,0x43,0x44,0xC8,0x10,0x20,0x40,0x00,
0x04,0x04,0x7E,0x01,0x00,0x00,0x3F,0x40,0x40,0x44,0x48,0x47,0x40,0x70,0x00,0x00,
/*-- 文字: 海 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x60,0x02,0x0C,0xC0,0x10,0x08,0xF7,0x14,0x54,0x94,0x14,0xF4,0x04,0x00,0x00,
0x04,0x04,0x7C,0x03,0x00,0x01,0x1D,0x13,0x11,0x55,0x99,0x51,0x3F,0x11,0x01,0x00,
/*-- 文字: 难 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x24,0xC4,0x04,0xE4,0x5C,0x20,0xF8,0x4F,0x48,0x49,0xFA,0x48,0x48,0x08,0x00,
0x20,0x10,0x0C,0x03,0x04,0x18,0x00,0xFF,0x22,0x22,0x22,0x3F,0x22,0x22,0x20,0x00,
/*-- 文字: 为 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x22,0x2C,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,
0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x01,0x46,0x80,0x40,0x3F,0x00,0x00,0x00,
/*-- 文字: 水 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x20,0x20,0xA0,0x60,0x00,0xFF,0x60,0x80,0x40,0x20,0x18,0x00,0x00,0x00,
0x20,0x10,0x08,0x06,0x01,0x40,0x80,0x7F,0x00,0x01,0x02,0x04,0x08,0x10,0x10,0x00,
/*-- 文字: , --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 除 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0xFE,0x22,0x5A,0x86,0x20,0x10,0x28,0x24,0xE3,0x24,0x28,0x10,0x20,0x20,0x00,
0x00,0xFF,0x04,0x08,0x27,0x11,0x0D,0x41,0x81,0x7F,0x01,0x05,0x09,0x31,0x00,0x00,
/*-- 文字: 却 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x80,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x10,0x38,0x14,0x13,0x10,0x14,0x18,0x30,0x00,0xFF,0x00,0x08,0x10,0x0F,0x00,0x00,
/*-- 文字: 巫 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x04,0x04,0xE4,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xE4,0x04,0x04,0x00,0x00,
0x48,0x44,0x43,0x40,0x43,0x4C,0x40,0x7F,0x48,0x44,0x43,0x40,0x43,0x4C,0x40,0x00,
/*-- 文字: 山 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00,
/*-- 文字: 不 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xF2,0x0E,0x42,0x82,0x02,0x02,0x02,0x00,0x00,
0x10,0x08,0x04,0x02,0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x02,0x0C,0x00,0x00,
/*-- 文字: 是 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,0x00,
0x81,0x41,0x21,0x1D,0x21,0x41,0x81,0xFF,0x89,0x89,0x89,0x89,0x89,0x81,0x81,0x00,
/*-- 文字: 云 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0x42,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,
0x00,0x20,0x70,0x28,0x24,0x23,0x20,0x20,0x20,0x24,0x28,0x30,0xE0,0x00,0x00,0x00,
/*-- 文字: 。 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 书 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0xF9,0x02,0x04,0x00,0x00,0x00,
0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x21,0x41,0x21,0x1F,0x00,0x00,
/*-- 文字: 山 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,
0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00,
/*-- 文字: 有 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00,
/*-- 文字: 路 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x3E,0x22,0xE2,0x22,0x3E,0x00,0x10,0x88,0x57,0x24,0x54,0x8C,0x00,0x00,0x00,
0x40,0x7E,0x40,0x3F,0x22,0x22,0x00,0x01,0xFE,0x42,0x42,0x42,0xFE,0x01,0x01,0x00,
/*-- 文字: 勤 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0xC4,0x5F,0x54,0xF4,0x54,0x5F,0xC4,0x14,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,
0x80,0x95,0x95,0x95,0x7F,0x55,0xD5,0x55,0x20,0x18,0x47,0x80,0x40,0x3F,0x00,0x00,
/*-- 文字: 为 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x20,0x22,0x2C,0x20,0x20,0xE0,0x3F,0x20,0x20,0x20,0x20,0xE0,0x00,0x00,0x00,
0x80,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x01,0x46,0x80,0x40,0x3F,0x00,0x00,0x00,
/*-- 文字: 径 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x88,0xC4,0x33,0x80,0x82,0x42,0x22,0x12,0x1A,0x26,0x22,0x40,0x80,0x00,
0x02,0x01,0x00,0xFF,0x00,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x40,0x00,
/*-- 文字: , --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*-- 文字: 学 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字: 海 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x60,0x02,0x0C,0xC0,0x10,0x08,0xF7,0x14,0x54,0x94,0x14,0xF4,0x04,0x00,0x00,
0x04,0x04,0x7C,0x03,0x00,0x01,0x1D,0x13,0x11,0x55,0x99,0x51,0x3F,0x11,0x01,0x00,
/*-- 文字: 无 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x40,0x42,0x42,0x42,0xC2,0x7E,0x42,0xC2,0x42,0x42,0x42,0x40,0x40,0x00,0x00,
0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x70,0x00,0x00,
/*-- 文字: 涯 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x60,0x02,0x8C,0x00,0xFE,0x82,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0x00,
0x04,0x04,0x7E,0x81,0x60,0x1F,0x40,0x48,0x48,0x48,0x7E,0x48,0x48,0x48,0x40,0x00,
/*-- 文字: 苦 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x84,0x84,0x84,0x84,0x9F,0x84,0x84,0xF4,0x84,0x84,0x9F,0x84,0x84,0x84,0x84,0x00,
0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00,
/*-- 文字: 作 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00,
0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
/*-- 文字: 舟 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x80,0x80,0xFC,0x84,0x86,0x95,0xE4,0x84,0x84,0x84,0xFC,0x80,0x80,0x80,0x00,
0x80,0x40,0x30,0x0F,0x00,0x00,0x02,0x0C,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,
/*-- 文字: 。 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
/***********************延时子程序***********************/
void delay(unsigned int k)
{
unsigned int i;
unsigned int j;
for(i=0;i<k;i++)
for(j=0;j<20;j++);
}
/***********************写命令左***********************/
void write_cmd_1(unsigned char command)
{
cs1=1;cs2=0;
Di=0;
RW=0;
Lcd_Bus=command;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************写命令右***********************/
void write_cmd_2(unsigned char command)
{
cs1=0;cs2=1;
Di=0;
RW=0;
Lcd_Bus=command;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************写数据左***********************/
void write_data_1(unsigned char dis_data)
{
cs1=1;cs2=0;
Di=1;
RW=0;
Lcd_Bus=dis_data;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************写数据右***********************/
void write_data_2(unsigned char dis_data)
{
cs1=0;cs2=1;
Di=1;
RW=0;
Lcd_Bus=dis_data;
delay(0);
Enable=1;
delay(0);
Enable=0;
}
/***********************清内存左***********************/
void clear_1(void)
{
unsigned char j,k;
cs1=1;cs2=0;
write_cmd_1(Page_Add+0);
write_cmd_1(Col_Add+0);
for(k=0;k<8;k++){
write_cmd_1(Page_Add+k);
for(j=0;j<64;j++)write_data_1(0x00);
}
}
/***********************清内存右***********************/
void clear_2(void)
{
unsigned char j,k;
cs1=0;cs2=1;
write_cmd_2(Page_Add+0);
write_cmd_2(Col_Add+0);
for(k=0;k<8;k++){
write_cmd_2(Page_Add+k);
for(j=0;j<64;j++)write_data_2(0x00);
}
}
/***********************显示汉字16*16左************************/
void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=1;cs2=0;
for(i=0;i<2;i++)
{
write_cmd_1(Page_Add+pag+i);
write_cmd_1(Col_Add+col);
for(j=0;j<16;j++)
write_data_1(Chinese_character[n][16*i+j]);
}
}
/***********************显示汉字16*16右**********************/
void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
{
unsigned char i=0;
unsigned char j=0;
cs1=0;cs2=1;
for(i=0;i<2;i++)
{
write_cmd_2(Page_Add+pag+i);
write_cmd_2(Col_Add+col);
for(j=0;j<16;j++)
write_data_2(Chinese_character[n][16*i+j]);
}
}
/***********************液晶屏初始化***********************/
void init_lcd()
{
Lcd_Rst=0;
delay(100);
Lcd_Rst=1;
delay(100);
write_cmd_1(Disp_Off);
write_cmd_2(Disp_Off);
write_cmd_1(Page_Add+0);
write_cmd_2(Page_Add+0);
write_cmd_1(Start_Line+0);
write_cmd_2(Start_Line+0);
write_cmd_1(Col_Add+0);
write_cmd_2(Col_Add+0);
write_cmd_1(Disp_On);
write_cmd_2(Disp_On);
}
/***********************LCD显示子程序***********************/
void display(void)
{
unsigned char i;
for(i=Start_Line;i<0xff;i++)
{
Chinese_disp_1(0,0, 0);
Chinese_disp_1(0,16,1);
Chinese_disp_1(0,32,2);
Chinese_disp_1(0,48,3);
Chinese_disp_2(0,0, 4);
Chinese_disp_2(0,16,5);
Chinese_disp_2(0,32,6);
Chinese_disp_2(0,48,7);
Chinese_disp_2(2,32,14);
Chinese_disp_2(2,48,15);
Chinese_disp_1(2,0,8);
Chinese_disp_1(2,16,9);
Chinese_disp_1(2,32,10);
Chinese_disp_1(2,48,11);
Chinese_disp_2(2,0,12);
Chinese_disp_2(2,16,13);
Chinese_disp_1(4,0,16);
Chinese_disp_1(4,16,17);
Chinese_disp_1(4,32,18);
Chinese_disp_1(4,48,19);
Chinese_disp_2(4,0,20);
Chinese_disp_2(4,16,21);
Chinese_disp_2(4,32,22);
Chinese_disp_2(4,48,23);
Chinese_disp_1(6,0,24);
Chinese_disp_1(6,16,25);
Chinese_disp_1(6,32,26);
Chinese_disp_1(6,48,27);
Chinese_disp_2(6,0,28);
Chinese_disp_2(6,16,29);
Chinese_disp_2(6,32,30);
Chinese_disp_2(6,48,31);
write_cmd_1(i);
write_cmd_2(i);
delay(3000);// 调整滚动速度
} //delay(60000);
}
/***********主程序************/
void main(void)
{
init_lcd();
clear_1();
clear_2();
while(1)
{
display();
}
}
复制代码
作者:
xinsheng8901
时间:
2018-8-2 21:01
人才,这字库还是调用起来比较方便,纯手工活吃不消
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1