📄 main.c
字号:
/***************http://hi.baidu.com/echoas************
程序:LCD12864显示原理之显示动画
内容:动画---飞翔的鸽子
软件:keil uVision4
液晶:QY128*64HZ1
作者:大海橡树
整理日期:2010-12-05
修改:无
备注:有什么错误的地方,欢迎网友们到空间留言
O(∩_∩)O~
***************http://hi.baidu.com/echoas************/
#include<AT89X52.h>
#include<intrins.h>
#include"BMP.h"
#include"BMP1.h"
#include"BMP2.h"
#include"BMP3.h"
#include"BMP4.h"
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7; //LCD三个控制端
uchar HZ_table1[]="LCD12864显示动画";
uchar HZ_table2[]=" 大海橡树 ";
void delay(uint i) //延时函数
{
while(--i);
}
void read_busy()//读忙函数。每次读写都要进行读忙操作
{
RS=0;
RW=1;
EN=1;
while(P0 & 0x80);//最高位为BF位 DB7---BF
EN=0;
}
void write_LCD_command(uchar value)//写指令函数
{
read_busy();
RS=0;
RW=0;
EN=1; //EN从1---0锁存数据
P0=value;
delay(20);
EN=0;
}
void write_LCD_data(uchar value)//写数据函数
{
read_busy();
RS=1;
RW=0;
EN=1; //EN从1---0锁存数据
P0=value;
delay(20);
EN=0;
}
void init_BMP()
{
write_LCD_command(0x36);//CL=1--8位。扩充指令(RE=1),绘图打开(G=1)
delay(100); //适当延时
write_LCD_command(0x36);
delay(37);
write_LCD_command(0x3E); //8位(CL=1),扩充指令(RE=1),绘图打开(G=1)
delay(100);
write_LCD_command(0x01);//清屏指令
delay(100);
}
void display_BMP(uchar *address)
{
uchar i,j;
for(i=0;i<32;i++)
{
write_LCD_command(0x80+i);//先送垂直地址
write_LCD_command(0x80); //再送水平地址 ----显示图片的上半部分
for(j=0;j<16;j++)
{
write_LCD_data(*address);
address++;
}
}
for(i=0;i<32;i++)
{
write_LCD_command(0x80+i); //先送垂直地址
write_LCD_command(0x88); //显示图片的下半部分
for(j=0;j<16;j++)
{
write_LCD_data(*address);
address++; //指针地址指向下个位置
}
}
}
void main()
{
init_BMP(); //显示图像函数初始化
while(1)
{
display_BMP(table); //第一个
display_BMP(table1); //第二个
display_BMP(table2); //第三个
display_BMP(table3); //第四个
display_BMP(table4); //第五个
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -