无字库12864液晶屏滚动显示的效果图:
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();
- }
- }
复制代码
|