📄 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 + -