用育松12864顯示圖片
單片機源程序如下:
- #include <AT89X52.h> //調(diào)用51單片機的頭文件
- #include <Intrins.h> //因為本例中用到空操作_nop_();所以必須調(diào)用這個頭文件
- //12864液晶相關(guān)I/O設(shè)置
- sbit RS=P3^5; //并行數(shù)據(jù)/控制字選擇 H:數(shù)據(jù) L:控制字
- sbit RW=P3^6; //并行讀/寫選擇 H:讀 L:寫
- sbit E =P3^4; //并行讀寫使能 H有效,下降沿鎖定數(shù)據(jù)
- sbit PSB=P3^7; //串口,并口選擇 H:并口 L:串口(開發(fā)板上引腳標(biāo)識為CS1)
- sbit RST=P2^1; //復(fù)位引腳 L:液晶復(fù)位
- sbit DB0=P0^7; //
- sbit DB1=P0^6; //
- sbit DB2=P0^5; //
- sbit DB3=P0^4; //
- sbit DB4=P0^3; //
- sbit DB5=P0^2; //
- sbit DB6=P0^1; //
- sbit DB7=P0^0; //
- unsigned char code picture[]={
- /*-- 調(diào)入了一幅圖像:F:\kaifaban\GL8\05.bmp --*/
- /*-- 寬度x高度=128x64 --*/
- 0x00,0x02,0x80,0x2A,0x91,0x15,0x5E,0x1F,0xFF,0xCB,0x50,0x01,0x7E,0xA1,0x00,0x00,
- 0x00,0x04,0x94,0x50,0xC0,0x06,0xB7,0xBF,0xFE,0x74,0xA0,0x00,0xF5,0xD0,0x80,0x00,
- 0x20,0x00,0x28,0x57,0x00,0x0A,0xDF,0xFF,0xFF,0x8A,0x80,0x00,0x73,0xD2,0x00,0x00,
- 0x00,0x00,0x80,0x02,0xF0,0x1A,0xBB,0xFF,0xFA,0x51,0x00,0x00,0x9D,0xF4,0x00,0x04,
- 0x00,0x00,0x00,0x03,0xD0,0x15,0x77,0xFF,0xE7,0xAA,0x00,0x00,0x7F,0xB8,0x00,0x00,
- 0x00,0x00,0x00,0x02,0xE8,0xAA,0xEF,0xFF,0xFF,0xD4,0x00,0x00,0x1F,0xEC,0x00,0x00,
- 0x41,0x00,0x00,0x03,0xD0,0x55,0xFF,0xFF,0xFE,0xE0,0x00,0x00,0x2F,0xEC,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xA8,0x0B,0xBF,0xFF,0xFF,0x10,0x00,0x00,0x2F,0xFE,0x00,0x00,
- 0x42,0xA8,0x00,0x0F,0x50,0x2F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x17,0xF4,0x00,0x00,
- 0x02,0x04,0x00,0x01,0xBC,0x16,0xFF,0xFF,0xFF,0xA8,0x00,0x00,0x17,0xFE,0x00,0x00,
- 0x00,0x00,0x00,0x46,0x45,0x2D,0xF8,0x7F,0xFD,0x57,0x00,0x00,0x0F,0xFE,0x00,0x00,
- 0x00,0x52,0x00,0x02,0x22,0x1F,0xF9,0x1F,0xF5,0x00,0x40,0x00,0x0B,0xFF,0x01,0x00,
- 0x00,0x24,0x01,0x0C,0x22,0x77,0xFA,0xBF,0x54,0x00,0xA0,0x00,0x07,0xFE,0x00,0x0C,
- 0x80,0x14,0x00,0x1E,0x04,0x3F,0xFD,0x1D,0xF0,0x00,0x28,0x00,0x0B,0xFF,0x00,0x04,
- 0x00,0x51,0x40,0x19,0x11,0xDF,0xF4,0x7E,0x80,0x00,0x50,0x00,0x17,0xFF,0x00,0x00,
- 0x48,0x58,0xAA,0xBA,0x98,0x3F,0xF8,0x3A,0x00,0x00,0x20,0x00,0x03,0xFF,0x00,0x00,
- 0x20,0xA0,0xAA,0xEA,0xA0,0x0F,0xFF,0xF4,0x01,0x00,0x00,0x00,0x13,0xFF,0x00,0x20,
- 0x20,0x20,0x21,0x2E,0x60,0x07,0xFF,0xE8,0x02,0xFD,0x00,0x00,0x05,0xFF,0x80,0x00,
- 0x00,0x00,0xA3,0xCB,0x80,0x07,0xFF,0xD0,0x05,0xD7,0x00,0x00,0x13,0xFF,0x04,0x00,
- 0x10,0x00,0x2A,0xFB,0x40,0x07,0xBF,0xE0,0x01,0xA3,0xC0,0x00,0x01,0xFF,0xA0,0x00,
- 0x40,0x01,0x2A,0xD4,0x11,0x15,0xFF,0x80,0x00,0x57,0x80,0x00,0x4B,0xFF,0x00,0x00,
- 0x88,0x02,0x15,0xDA,0x42,0x8B,0xBD,0xC0,0x00,0x07,0xC0,0x00,0xA8,0xFF,0x90,0x00,
- 0x00,0x01,0x2B,0x35,0x21,0x0B,0xBF,0x00,0x00,0x02,0x88,0x01,0x59,0xFF,0x00,0x00,
- 0x00,0x01,0x55,0x1A,0xC4,0x15,0x7F,0x80,0x00,0x10,0x80,0x04,0xAE,0xFF,0x80,0x00,
- 0x80,0x05,0x4A,0x15,0x24,0x0E,0xFE,0x00,0x00,0x05,0x00,0x09,0x0A,0xFF,0x18,0x01,
- 0x08,0x02,0xD3,0x54,0x20,0x0D,0x7F,0x00,0x00,0x00,0x00,0x00,0x42,0xFF,0xA0,0x00,
- 0x10,0x1D,0x48,0x30,0x88,0x36,0xFD,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x22,0xE0,
- 0x00,0x15,0x54,0x52,0x0B,0xDE,0xFE,0x00,0x00,0x00,0x00,0x00,0x09,0xFF,0xAE,0xB8,
- 0x00,0x2A,0x52,0x80,0x07,0xDD,0xBA,0x00,0x00,0x00,0x00,0x15,0xA5,0xFF,0x54,0x94,
- 0x40,0x2A,0xA9,0x50,0x0D,0xED,0xFC,0x00,0x00,0x00,0x00,0x09,0xF5,0xFF,0xAB,0x50,
- 0x02,0xA1,0x66,0x80,0x0B,0xFD,0x70,0x00,0x00,0x00,0x00,0x03,0xF5,0xFF,0xA5,0x50,
- 0x02,0x00,0x02,0xA0,0x03,0xFD,0xF8,0x00,0x00,0x00,0x00,0x08,0xFB,0xFF,0x42,0xA8,
- 0x02,0x80,0xDD,0x40,0x0D,0xFB,0xE0,0x00,0x00,0x00,0x00,0x00,0xF3,0xFF,0x22,0xB0,
- 0x02,0x40,0x25,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x02,0x37,0xFF,0xA8,0xC0,
- 0x01,0x00,0x00,0x80,0x1B,0xFB,0xC0,0x00,0x00,0x00,0x00,0x00,0x27,0xFF,0x51,0x00,
- 0xB5,0x01,0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0x00,0x00,
- 0x9A,0x00,0x00,0x00,0x17,0xFF,0x80,0x00,0x00,0x08,0x00,0x00,0x0F,0xFF,0x00,0x80,
- 0x74,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x00,0x09,0xC0,0x00,0x0F,0xFF,0x00,0x00,
- 0x91,0x20,0x00,0x00,0x1F,0xFF,0x80,0x00,0x00,0x05,0x80,0x00,0x0F,0xFE,0x00,0x00,
- 0x65,0x14,0x00,0x00,0x1F,0xFF,0xC0,0x00,0x00,0x02,0xA0,0x00,0x0F,0xFF,0x20,0x00,
- 0x90,0x08,0x00,0x00,0x03,0xFF,0x80,0x00,0x00,0x00,0x2A,0x00,0x1F,0xFE,0x02,0x00,
- 0x24,0x04,0x00,0x00,0x03,0xFF,0xC0,0x00,0x02,0x00,0x56,0x00,0x1F,0xFE,0x20,0x00,
- 0x50,0x00,0x00,0x00,0x1B,0xF7,0x80,0x00,0x0E,0x00,0x48,0x00,0x1F,0xFC,0x00,0x00,
- 0x24,0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x05,0xD4,0x00,0x00,0x1F,0xFC,0x00,0x00,
- 0x52,0x80,0x00,0x00,0x1F,0xF7,0xC0,0x00,0x01,0x70,0x00,0x00,0x3F,0xF0,0x00,0x00,
- 0x45,0x40,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x01,0x1E,0x80,0x00,0x3F,0xFC,0x00,0x20,
- 0x5A,0x80,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x01,0x47,0x40,0x00,0x7F,0xFA,0x00,0x20,
- 0x15,0x40,0x00,0x00,0x0F,0xFF,0xF8,0x00,0x00,0x51,0xA0,0x00,0x7F,0xFC,0x00,0x00,
- 0x16,0x80,0x00,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x20,0xE0,0x01,0xFF,0xF8,0x00,0x00,
- 0x15,0x40,0x00,0x00,0x0F,0xFF,0xFC,0x00,0x00,0x44,0x38,0x01,0xFF,0xF8,0x00,0x00,
- 0x0A,0xA0,0x00,0x00,0x1F,0xFF,0xFA,0x00,0x00,0x29,0x30,0x03,0xFF,0xF0,0x00,0x00,
- 0x05,0x40,0x00,0x00,0x0D,0xFF,0xFD,0x00,0x00,0x0A,0x48,0x07,0xFF,0xF8,0x00,0x00,
- 0x05,0x00,0x00,0x00,0x1F,0xFF,0xFA,0x00,0x00,0x0A,0x80,0x2F,0xFF,0xF0,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x0D,0xFF,0xFE,0x80,0x00,0x02,0x00,0x0F,0xFF,0xF9,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x1B,0xFF,0xFD,0x40,0x00,0x00,0x00,0xBF,0xFF,0xF5,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x0B,0xF7,0xFE,0xA0,0x00,0x00,0x00,0x3F,0xFF,0xF4,0x01,0x54,
- 0x00,0x00,0x00,0x00,0x17,0xF6,0xFD,0x50,0x00,0x00,0x01,0x7F,0xFF,0xF4,0x16,0xD0,
- 0x00,0x00,0x00,0x00,0x09,0xF2,0xFE,0xA8,0x00,0x00,0x04,0xFF,0xFF,0xF5,0x70,0x10,
- 0x00,0x00,0x00,0x00,0x0A,0xD0,0xFA,0xAA,0x00,0x00,0x15,0xFF,0xFF,0xEA,0xEA,0x20,
- 0x00,0x00,0x00,0x00,0x03,0xE0,0x17,0x55,0x40,0x00,0x23,0xFF,0xFF,0xF5,0x94,0x60,
- 0x00,0x00,0x00,0x00,0x0F,0xF0,0x74,0x4A,0xA8,0x01,0x5F,0xFF,0xFF,0xAA,0xF6,0x80,
- 0x00,0x00,0x00,0x00,0x03,0xF1,0x7B,0x55,0x50,0x82,0x3F,0xFF,0xFF,0xE9,0x7A,0x20,
- 0x00,0x00,0x00,0x00,0x07,0xF5,0xF6,0x2A,0xAA,0x25,0xFF,0xFF,0xFF,0x6A,0x68,0x00,
- 0x00,0x00,0x00,0x00,0x0B,0xFF,0xFB,0x41,0x55,0x57,0xFF,0xFF,0xFF,0xD1,0x50,0x00,
- };
- //名稱:液晶用延時函數(shù)
- void delay(unsigned int t)
- {
- unsigned int i;
- for(i=0;i<t;i++);
- }
- /*名稱:字節(jié)內(nèi) 的位數(shù)據(jù)位置轉(zhuǎn)換 函數(shù)
- 功能: 把dat中的第7位和第0位交換、
- 第6位和第1位交換、第5位和第2位交換
- 第4位和第3位交換
- */
- unsigned char num(unsigned char dat)
- {
- unsigned char val;
- val = ((dat & 0x01) << 7) | ((dat & 0x02) << 5) | ((dat & 0x04) << 3) | ((dat & 0x08) << 1) |
- ((dat & 0x10) >> 1) | ((dat & 0x20) >> 3) | ((dat & 0x40) >> 5) | ((dat & 0x80) >> 7);
- return val;
- }
- //名稱:寫命令函數(shù)
- void write_com(unsigned char cmdcode)
- {
- RS=0; //設(shè)置該字節(jié)數(shù)據(jù)為命令代碼
- RW=1; //設(shè)置此次操作為讀
- E=1; //使能
- _nop_(); //空操作,做短暫的延時
- _nop_(); //空操作,做短暫的延時
- E=0; //失能
- RS=0; //設(shè)置該字節(jié)數(shù)據(jù)為命令代碼
- RW=0; //設(shè)置此次操作為讀寫
- P0=num(cmdcode); //將命令寫入總線
- _nop_(); //空操作,做短暫的延時
- E=1; //E的下降沿,數(shù)據(jù)寫入
- _nop_(); //空操作,做短暫的延時
- E=0; //E的下降沿,數(shù)據(jù)寫入
- }
- //名稱:寫數(shù)據(jù)函數(shù)
- void write_data(unsigned char Rsspdata)
- {
- RS=0; //設(shè)置該字節(jié)數(shù)據(jù)為命令代碼
- RW=1; //設(shè)置此次操作為讀
- E=1; //使能
- _nop_(); //空操作,做短暫的延時
- _nop_(); //空操作,做短暫的延時
- E=0; //失能
- RS=1; //設(shè)置該字節(jié)數(shù)據(jù)為數(shù)據(jù)代碼
- RW=0; //設(shè)置此次操作為讀寫
- P0=num(Rsspdata); //將數(shù)據(jù)寫入總線
- _nop_(); //空操作,做短暫的延時
- E=1; //E的下降沿,數(shù)據(jù)寫入
- _nop_(); //空操作,做短暫的延時
- E=0; //E的下降沿,數(shù)據(jù)寫入
- }
- //名稱:圖片顯示函數(shù) ,圖片取模值放到數(shù)組picture
- void img_disp(unsigned char code *img)
- {
- unsigned char i,j;
- for(j=0;j<32;j++) //垂直地址y32行,上下兩屏共64行
- {
- for(i=0;i<8;i++) //再設(shè)定水平地址x(0-8)
- {
- write_com(0x34); //擴展指令集
- //連續(xù)寫兩個字節(jié)完成垂直于水平的坐標(biāo)
- write_com(0x80+j); //先設(shè)定垂直地址y(0-32)
- write_com(0x80+i); //再設(shè)定水平地址x(0-8)
- write_com(0x30); //基本指令集
- write_data(img[j*16+i*2]);
- write_data(img[j*16+i*2+1]);
- }
- }
- for(j=32;j<64;j++)
- {
- for(i=0;i<8;i++)
- {
- write_com(0x34); //擴展指令集
- //連續(xù)寫兩個字節(jié)完成垂直于水平的坐標(biāo)
- write_com(0x80+j-32); //先設(shè)定垂直地址(0-32)
- write_com(0x88+i); //再設(shè)定水平地址(0-8)
- write_com(0x30); //基本指令集
- write_data(img[j*16+i*2]);
- write_data(img[j*16+i*2+1]);
- }
- }
- write_com(0x36); //擴展指令集,繪圖顯示ON
- }
- //名稱:12864初始化函數(shù)
- void init_lcd(void)
- {
- RST=0; //復(fù)位液晶
- delay(250); //加些延時
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
QC12864液晶(ST7920芯片)-畫圖.rar
(1.11 MB, 下載次數(shù): 119)
2017-7-13 09:50 上傳
點擊文件名下載附件
|