?? main2.c
字號:
#include <reg51.h>
#include <absacc.h>
/*常用操作命令和參數定義*/
#define DISPON 0x3f //顯示開
#define DISPOFF 0x3e //顯示關,參考指令表"顯示開關設置"
#define FIRSTROW 0xc0 //顯示起始行設置,參考指令表,由LXBYTE[5..0]在0到63行選擇
#define SETY 0xb8 //Y方向,8頁64行,參考指令表,由PXBYTE[2..0]在0到8頁選擇
#define SETX 0x40 //X方向,半屏64列,參考指令表,由CXBYTE[5..0]在0到63列選擇
#define LLCD_CMD_WR XBYTE[0xf2ff]
#define LLCD_DAT_WR XBYTE[0xfaff]
#define LLCD_CMD_RD XBYTE[0xf6ff]
#define LLCD_DAT_RD XBYTE[0xfeff]
#define RLCD_CMD_WR XBYTE[0xf1ff]
#define RLCD_DAT_WR XBYTE[0xf9ff]
#define RLCD_CMD_RD XBYTE[0xf5ff]
#define RLCD_DAT_RD XBYTE[0xfdff]
/*一貞圖片,寬度x高度=128x64*/
code unsigned char logo[] =
{
0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x0C,0x0E,0xCE,0xFE,0xFE,
0xFE,0x1E,0x06,0x06,0x06,0x06,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1C,
0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFE,0x7F,0x0F,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFF,0x0F,0x07,0x01,0x00,
0x00,0x80,0xE0,0xF0,0xF8,0xDC,0xFC,0x6E,0xEE,0xCE,0xCE,0x80,0x80,0x00,0x00,0x80,
0xF0,0xFE,0x7F,0x3F,0x18,0x0C,0x04,0x0C,0xFC,0xF8,0xC0,0x00,0x00,0x00,0x0E,0x9F,
0x9F,0xF9,0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFF,0x0F,0x07,0x01,
0x00,0x00,0xC0,0xF8,0xFF,0x7F,0x3F,0x1C,0x0E,0x06,0x06,0x02,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x01,
0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0xC0,0xE0,0x20,0x20,0x60,0x60,0x00,0x00,0xC0,0xE0,0xA0,
0xA0,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x20,0x20,0xF8,
0xF8,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x60,0x20,0xE0,
0xC0,0x00,0x04,0xFC,0xFC,0x20,0x20,0xE0,0xC0,0x00,0x20,0xE0,0xE0,0x60,0x20,0xE0,
0xC0,0x00,0x20,0xE0,0xE0,0x00,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xC0,0xE0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0x20,0x24,0xFC,0xFC,0x00,0x20,
0xE0,0xE0,0x00,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x20,
0x20,0x60,0x60,0x00,0x20,0xE0,0xE0,0x60,0x20,0xE0,0xC0,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,
0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x00,0x00,0x03,
0x07,0x04,0x04,0x00,0x00,0x06,0x06,0x06,0x00,0x00,0x04,0x07,0x07,0x04,0x04,0x07,
0x07,0x04,0x00,0x07,0x07,0x04,0x04,0x07,0x03,0x00,0x04,0x07,0x07,0x04,0x04,0x07,
0x07,0x04,0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x06,0x06,0x06,0x00,0x00,
0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,
0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x06,0x06,0x06,0x00,0x00,0x03,0x07,0x04,
0x04,0x06,0x02,0x00,0x04,0x07,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0x00,0x00,0x00,0x00,0x04,0xFC,0x40,0x20,0x20,0xC0,0x00,0x00,0x40,0xA0,
0xA0,0x20,0x60,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x20,0x20,0xE4,0x00,
0x00,0x00,0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,
0x00,0x40,0xA0,0xA0,0x20,0x60,0x00,0x00,0x20,0x20,0xE4,0x00,0x00,0x00,0x20,0x20,
0xE0,0x40,0x20,0x20,0x00,0xF0,0x08,0xE4,0x14,0xF4,0x08,0xF0,0x00,0x08,0x08,0xFC,
0x00,0x00,0x00,0xF0,0x48,0x24,0x24,0x24,0xCC,0x00,0x00,0x18,0x04,0x24,0x24,0xD8,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x20,0x20,0x60,0x00,0x00,0xC0,0x20,0x20,
0x20,0xC0,0x00,0x20,0xE0,0x20,0xE0,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC4,0xC7,0xC4,0xC0,0xC4,0xC7,0xC4,0xC0,0xC6,0xC4,
0xC4,0xC5,0xC2,0xC0,0xC0,0xC0,0xC0,0xC3,0xC4,0xC4,0xC0,0xC0,0xC4,0xC4,0xC7,0xC4,
0xC4,0xC0,0xC0,0xC2,0xC5,0xC4,0xC4,0xC7,0xC4,0xC4,0xC7,0xC4,0xC0,0xC4,0xC7,0xC4,
0xC0,0xC6,0xC4,0xC4,0xC5,0xC2,0xC0,0xC0,0xC4,0xC4,0xC7,0xC4,0xC4,0xC0,0xC4,0xC4,
0xC7,0xC4,0xC4,0xC0,0xC0,0xC1,0xC2,0xC5,0xC5,0xC4,0xC5,0xC2,0xC0,0xC4,0xC4,0xC7,
0xC4,0xC4,0xC0,0xC3,0xC4,0xC4,0xC4,0xC4,0xC3,0xC0,0xC0,0xC3,0xC4,0xC4,0xC4,0xC3,
0xC0,0xC0,0xC6,0xC6,0xC0,0xC0,0xC3,0xC4,0xC4,0xC4,0xC2,0xC0,0xC0,0xC3,0xC4,0xC4,
0xC4,0xC3,0xC0,0xC4,0xC7,0xC0,0xC7,0xC0,0xC7,0xC4,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF,
};
void delay(unsigned char timer);/*通用延時函數*/
void check_busy(unsigned char);/*LCD忙檢測*/
void lcd_init(void);/*LCD初始化*/
void lcd_cmd_wr(unsigned char, unsigned char);/*寫命令*/
void lcd_data_wr(unsigned char, unsigned char);/*寫數據*/
void lcd_bmp_wr(unsigned char *bmp);/*寫一貞128×64點的圖片顯示*/
void lcd_clr(void);/*數據清屏*/
void lcd_mov_up();/*整屏向上循環移動*/
/*主函數,顯示一貞圖片范例*/
void main(void)
{
delay(50000);//適當延時,等待LCD復位
lcd_init();
lcd_bmp_wr(logo);//logo圖片數據附后
while(1)
{
//整屏向上循環移動
//lcd_mov_up();
//lcd_clr();
delay(500);
lcd_bmp_wr(logo);//logo圖片數據附后
}
}
/*LCD忙檢測*/
void check_busy(unsigned char right)
{
unsigned char temp;
do
{
if(right) temp=RLCD_CMD_RD;
else temp=LLCD_CMD_RD;
temp = 0x7f;//仿真版不需要忙檢測
}
while(temp>>7==1);//檢測D7是否為1,1表示LCD忙,如果忙,繼續檢測,直到空閑止
}
/*寫命令*/
void lcd_cmd_wr(unsigned char cmdcode, unsigned char right)
{
check_busy(right);
if(right) RLCD_CMD_WR = cmdcode;
else LLCD_CMD_WR = cmdcode;
}
/*LCD初始化*/
void lcd_init(void)
{
lcd_cmd_wr(DISPON,0); //開顯示,0參數表示左屏
lcd_cmd_wr(FIRSTROW,0); //設定顯示首列
lcd_cmd_wr(SETY,0); //設定Y坐標
lcd_cmd_wr(SETX,0); //設定X坐標
lcd_cmd_wr(DISPON,1); //1參數表示右屏
lcd_cmd_wr(FIRSTROW,1);
lcd_cmd_wr(SETY,1);
lcd_cmd_wr(SETX,1);
}
/*寫數據*/
void lcd_data_wr(unsigned char dispdata, unsigned char right)
{
//check_busy(right);
if(right) RLCD_DAT_WR = dispdata;
else LLCD_DAT_WR = dispdata;
}
/*數據清屏*/
void lcd_clr(void)
{
unsigned char i,j;
for(i=0;i<8;i++)//共8頁
{
lcd_cmd_wr(SETY+i,0);
lcd_cmd_wr(SETX,0);
lcd_cmd_wr(SETY+i,1);
lcd_cmd_wr(SETX,1);
for(j=0;j<64;j++)//每頁64列
{
lcd_data_wr(0,0);
lcd_data_wr(0,1);
}
}
}
/*寫一貞128×64點的圖片顯示*/
void lcd_bmp_wr(unsigned char *bmp)
{
unsigned char i,j;
for(i=0;i<8;i++)
{
//頁地址設定
lcd_cmd_wr(SETY+i,0);
lcd_cmd_wr(SETX,0);
lcd_cmd_wr(SETY+i,1);
lcd_cmd_wr(SETX,1);
for(j=0;j<64;j++)
{
lcd_data_wr(bmp[128*i+j],0);//左半屏
lcd_data_wr(bmp[128*i+j+64],1);//右半屏
}
}
}
/*整屏向上循環移動*/
void lcd_mov_up()
{
unsigned char i;
for(i=0;i<64;i++)//64行循環
{
lcd_cmd_wr(FIRSTROW+i,0);
lcd_cmd_wr(FIRSTROW+i,1);
delay(500);//適當延時
}
}
/*通用延時函數*/
void delay(unsigned char timer)
{
unsigned char i;
while(--timer)
for(i=0;i<100;i++);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -