12864液晶滾動顯示
單片機源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #include<absacc.h>
- #define write_cmd_addr_1 XBYTE[0x8fff] //寫指令地址左
- #define read_state_addr_1 XBYTE[0xafff] //讀狀態地址左
- #define write_data_addr_1 XBYTE[0x9fff] //寫數據地址左
- #define read_data_addr_1 XBYTE[0xbfff] //讀數據地址左
- #define write_cmd_addr_2 XBYTE[0x4fff] //寫指令地址右
- #define read_state_addr_2 XBYTE[0x6fff] //讀狀態地址右
- #define write_data_addr_2 XBYTE[0x5fff] //寫數據地址右
- #define read_data_addr_2 XBYTE[0x7fff] //讀數據地址右
- #define Disp_On 0x3f//開顯示
- #define Disp_Off 0x3e//關顯示
- #define Col_Add 0x40//列地址
- #define Page_Add 0xb8//頁地址
- #define Start_line 0xc0//起始頁
- /*****************************
- 字模,此字體下對應的
- 點陣為:寬x高=16x16
- *****************************/
- unsigned char code Chinese_character[][32]=
- {
-
- {
- /*-- 文字: 江 --*/
- 0x10,0x60,0x02,0x0C,0xC0,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,0x00,
- 0x04,0x04,0x7C,0x03,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x00,//"江",0
- },
- {
- /*-- 文字: 西 --*/
- 0x02,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x02,0x00,
- 0x00,0x7F,0x28,0x24,0x22,0x21,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00//"西",1
- },
- {
- /*-- 文字: 現 --*/
- 0x04,0x84,0x84,0xFC,0x84,0x84,0x00,0xFE,0x02,0x02,0xF2,0x02,0x02,0xFE,0x00,0x00,
- 0x20,0x60,0x20,0x1F,0x10,0x90,0x40,0x23,0x18,0x06,0x01,0x7E,0x80,0x83,0xE0,0x00,//"現",2
- },
- {
- /*-- 文字: 代 --*/
- 0x00,0x80,0x60,0xF8,0x07,0x20,0x20,0x20,0x7F,0xA0,0x10,0x11,0x16,0x10,0x10,0x00,
- 0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0xF8,0x00,//"代",3
- },
- {
- /*-- 文字: 學 --*/
- 0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,
- 0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00//"學",4
- },
- {
- /*-- 文字: 院 --*/
- 0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
- 0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00//"院",5
- },
- {
- /*-- 文字: 電 --*/
- 0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
- 0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00//"電",6
- },
- {
- /*-- 文字: 子 --*/
- 0x80,0x82,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x82,0x80,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"子",7
- },
- {
- /*-- 文字: 工 --*/
- 0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00//"工",8
- },
- {
- /*-- 文字: 程 --*/
- 0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,
- 0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00//"程",9
- },
- {
- /*-- 文字: 系 --*/
- 0x00,0x00,0x02,0x22,0xB2,0xAA,0x66,0x62,0x22,0x11,0x4D,0x81,0x01,0x01,0x00,0x00,
- 0x00,0x40,0x21,0x13,0x09,0x05,0x41,0x81,0x7F,0x01,0x05,0x09,0x13,0x62,0x00,0x00//"系",10
- },
- {
- /*-- 文字: 古 --*/
- 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
- 0x00,0x00,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00,0x00,0x00//"古",11
- },
- {
- /*-- 文字: 美 --*/
- 0x00,0x04,0x24,0x24,0x25,0x26,0x24,0xFC,0x24,0x26,0x25,0x24,0x24,0x04,0x00,0x00,
- 0x81,0x89,0x89,0x49,0x49,0x29,0x19,0x0F,0x19,0x29,0x49,0x49,0x89,0x89,0x81,0x00,//"美",12
- },
- {
- /*-- 文字: 麗 --*/
- 0x02,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0xF2,0x12,0x12,0x12,0xF2,0x02,0x02,0x00,
- 0x00,0x00,0xFF,0x01,0x46,0x80,0x7F,0x00,0xFF,0x01,0x46,0x80,0x7F,0x00,0x00,0x00,//"麗",13
- },
- {
- /*-- 文字: 行 --*/
- 0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,
- 0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00//"行",14
- },
- {
- /*-- 文字: 勝 --*/
- 0x00,0x00,0xFE,0x12,0x12,0xFE,0x20,0x1C,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,0x00,
- 0x40,0x30,0x0F,0x21,0x41,0x3F,0x20,0x21,0x21,0x21,0x3F,0x21,0x21,0x21,0x20,0x00//"勝",15
- },
- {
- /*-- 文字: 于 --*/
- 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00//"于",16
- },
- {
- /*-- 文字: 言 --*/
- 0x00,0x04,0x04,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x04,0x04,0x04,0x00,
- 0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,0x00//"言",17
- }
- };
- unsigned char tanhao[]=
- {
- /*-- 文字: ! --*/
- 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00//"!",18
- };
- unsigned char qingping[]=
- {
- /*-- 清屏 --*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- /*********函數聲明***********/
- void busy_check_1(void);
- void busy_check_2(void);
- void write_cmd_1(unsigned char command);
- void write_cmd_2(unsigned char command);
- void write_data_1(unsigned char dis_data);
- void write_data_2(unsigned char dis_data);
- void clear_1(void);
- void clear_2(void);
- void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n);
- void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n);
- void display(void);
- void tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2);
- void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2);
- void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2);
- /***********************
- 檢測忙狀態左
- ***********************/
- void busy_check_1(void)
- {
- unsigned char busy;
- while(busy&0x80)
- {
- busy=read_state_addr_1;
- }
- }
- /***********************
- 檢測忙狀態右
- ***********************/
- void busy_check_2(void)
- {
- unsigned char busy;
- while(busy&0x80)
- {
- busy=read_state_addr_2;
- }
-
- }
- /***********************
- 寫命令左
- ***********************/
- void write_cmd_1(unsigned char command)
- {
- busy_check_1();
- write_cmd_addr_1=command;
- }
- /***********************
- 寫命令右
- ***********************/
- void write_cmd_2(unsigned char command)
- {
- busy_check_2();
- write_cmd_addr_2=command;
- }
- /***********************
- 寫數據左
- ***********************/
- void write_data_1(unsigned char dis_data)
- {
- busy_check_1();
- write_data_addr_1=dis_data;
- }
- /***********************
- 寫數據右
- ***********************/
- void write_data_2(unsigned char dis_data)
- {
- busy_check_2();
- write_data_addr_2=dis_data;
- }
- /***********************
- 清內存左
- ***********************/
- void clear_1(void)
- {
- unsigned char i;
- unsigned char k;
- write_cmd_1(Page_Add+0);
- write_cmd_1(Col_Add+0);
- for(i=0;i<8;i++)
- {
- write_cmd_1(Page_Add+i);
- for(k=0;k<64;k++)
- //write_data_1(0x00);
- qingping_disp1(i,k,qingping);
-
- }
- }
- /***********************
- 清內存右
- ***********************/
- void clear_2(void)
- {
- unsigned char i;
- unsigned char k;
- write_cmd_2(Page_Add+0);
- write_cmd_2(Col_Add+0);
- for(i=0;i<8;i++)
- {
- write_cmd_2(Page_Add+i);
- for(k=0;k<64;k++)
- //write_data_2(0x00);
- qingping_disp2(i,k,qingping);
-
- }
- }
- /***********************
- 顯示漢字16*16左
- ************************/
- void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
- {
- unsigned char i=0;
- unsigned char j=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;
- 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 tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2)
- {
- unsigned char i=0;
- unsigned char j=0;
- for(i=0;i<2;i++)
- {
- write_cmd_2(Page_Add+pag+i);
- write_cmd_2(Col_Add+col);
- for(j=0;j<8;j++)
- write_data_2(chinese2[8*i+j]);
-
- }
- }
- /***********************
- 清屏左
- ***********************/
- void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2)
- {
- unsigned char i=0;
- unsigned char j=0;
- for(i=0;i<2;i++)
- {
- write_cmd_1(Page_Add+pag+i);
- write_cmd_1(Col_Add+col);
- for(j=0;j<8;j++)
- write_data_1(chinese2[8*i+j]);
-
- }
- }
- /***********************
- 清屏右
- ***********************/
- void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2)
- {
- unsigned char i=0;
- unsigned char j=0;
- for(i=0;i<2;i++)
- {
- write_cmd_2(Page_Add+pag+i);
- write_cmd_2(Col_Add+col);
- for(j=0;j<8;j++)
- write_data_2(chinese2[8*i+j]);
-
- }
- }
- /***********************
- 延時子程序
- ***********************/
- void delay(unsigned int k)
- {
- unsigned int i;
- unsigned int j;
- for(i=0;i<k;i++)
- for(j=0;j<20;j++);
- }
- /***********************
- LCD顯示子程序
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
12864液晶滾動顯示.rar
(111.53 KB, 下載次數: 75)
2018-6-24 12:44 上傳
點擊文件名下載附件
|