lcd12864经典程序2.docx
- 文档编号:3320279
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:12
- 大小:17.22KB
lcd12864经典程序2.docx
《lcd12864经典程序2.docx》由会员分享,可在线阅读,更多相关《lcd12864经典程序2.docx(12页珍藏版)》请在冰豆网上搜索。
lcd12864经典程序2
/***************************************************************************
标题:
LCD12864程序
效果:
本程序在LCD12864液晶屏显示汉字、字符及图形内容
作者:
HEX小博士电子
网站:
******************************************************************************/
#include"reg51.h"
/********IO引脚定义***********************************************************/
sbitLCD_RS=P1^0;
sbitLCD_RW=P1^1;
sbitLCD_E=P1^2;
sbitPSB=P1^6;//PSB脚为-12系列的串、并通讯功能切换,我们使用位并行接口,PSB=1
/********宏定义***********************************************************/
#defineLCD_DataP0
#defineBusy0x80//用于检测LCD状态字中的Busy标识
/********函数声明*************************************************************/
voidWriteDataLCD(unsignedcharWDLCD);
voidWriteCommandLCD(unsignedcharWCLCD,BuysC);
unsignedcharReadDataLCD(void);
unsignedcharReadStatusLCD(void);
voidLCDInit(void);
voidLCDClear(void);
voidLCDFlash(void);
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);
voidDisplayImage(unsignedcharcode*DData);
voidDelay5Ms(void);
voidDelay400Ms(void);
/********数据定义*************************************************************/
codeunsignedchaructech[]={"51单片机实验板"};
codeunsignedcharnet[]={"shop34720656"};
codeunsignedcharmcu[]={"自学单片机的首选"};
codeunsignedcharqq[]={"ID:
Aimodong"};
codeunsignedchartmp[]={//128*64点阵图形数据
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x80,0x00,0x06,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xC0,0x00,0x0C,0x30,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x18,0xC0,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x31,0x80,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x63,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0xC2,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0xC2,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0x80,0x01,0x82,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x0F,0xC0,0x01,0x82,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x81,0x80,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x00,0xC0,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xB8,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x39,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0xB8,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x6A,0x60,0x03,0x00,0x00,0x00,0x00,0x00,0x5C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x6A,0x60,0x03,0x00,0x00,0x03,0x80,0x00,0x7C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x7A,0xC0,0x03,0x00,0x00,0x01,0xC0,0x00,0x7C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x6B,0x80,0x03,0x00,0x00,0x00,0xE0,0x00,0x7C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x6A,0x60,0x03,0x03,0x00,0x00,0x30,0x00,0x74,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x7A,0xA0,0x03,0x06,0x00,0x00,0x00,0x00,0x26,0x40,0x01,0x00,0x00,0x00,
0x00,0x00,0x4A,0xC0,0x03,0x86,0x00,0x00,0x00,0x00,0x26,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x4A,0xC0,0x01,0x84,0x00,0x00,0x00,0x00,0x06,0x40,0x01,0xE0,0x00,0x00,
0x00,0x00,0x5B,0xA0,0x01,0x84,0x00,0x00,0x00,0x00,0x16,0x40,0x01,0xF0,0x00,0x00,
0x00,0x00,0x5A,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x06,0xC0,0x01,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x14,0xC0,0x00,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x10,0xC0,0x00,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x03,0xC0,0x01,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x61,0x00,0x00,0x00,0x00,0x07,0xE0,0x01,0xE0,0x00,0x00,
0x00,0x00,0x3F,0xE0,0x00,0x33,0x00,0x00,0x00,0x00,0x06,0x30,0x01,0xE0,0x00,0x00,
0x00,0x00,0x00,0xC0,0x00,0x11,0x00,0x00,0x00,0x00,0x04,0x30,0x01,0xE0,0x00,0x00,
0x00,0x00,0x05,0x80,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0xE0,0x00,0x00,
0x00,0x00,0x06,0x00,0x00,0x0D,0x00,0x02,0xE2,0x00,0x00,0x20,0x01,0xE0,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x0E,0x04,0x81,0x80,0x00,0x00,0xE0,0x01,0xE0,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x06,0x07,0xBC,0x00,0x00,0x07,0xC0,0x01,0xE0,0x00,0x00,
0x00,0x00,0x03,0x00,0x00,0x1F,0x00,0x7E,0x00,0x00,0x0C,0x00,0x01,0xE0,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x19,0x8C,0xC0,0x00,0x00,0x18,0x00,0x01,0xE0,0x00,0x00,
0x00,0x00,0x06,0x00,0x00,0x10,0x80,0xC0,0x00,0x00,0x18,0x00,0x01,0xE0,0x00,0x00,
0x00,0x00,0x0C,0x00,0x00,0x19,0x81,0xFC,0x00,0x00,0x30,0x00,0x01,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0D,0x83,0x1C,0x00,0x00,0x60,0x00,0x01,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x8C,0x30,0x00,0x01,0x80,0x00,0x01,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x60,0x00,0x03,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x16,0x00,0x0E,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x31,0xC2,0x3D,0x00,0x00,0x07,0x80,0x00,0x00,
0x00,0x00,0x3D,0xE0,0x00,0x00,0x60,0x18,0x33,0xF0,0xC0,0x00,0x1F,0xFE,0x00,0x00,
0x00,0x00,0x30,0xC0,0x00,0x00,0x40,0x08,0x83,0x80,0x60,0x00,0x3F,0xFF,0x00,0x00,
0x00,0x00,0x10,0xC0,0x00,0x00,0xC0,0x0F,0xE3,0x00,0x18,0x00,0x3F,0xFD,0x80,0x00,
0x00,0x00,0x10,0xC0,0x00,0x00,0x80,0x1F,0xFE,0x00,0x0C,0x00,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x10,0xC0,0x00,0x00,0x80,0x18,0x00,0x00,0x07,0x00,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x10,0xC0,0x00,0x00,0x80,0x28,0x00,0x40,0x03,0x80,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x10,0xC0,0x00,0x00,0x80,0x0E,0x03,0x30,0x40,0xC0,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x19,0x80,0x00,0x00,0x80,0x08,0x19,0x1C,0xA0,0x60,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x0F,0x80,0x00,0x00,0x80,0x10,0x7C,0x0E,0x30,0x30,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0xF0,0x03,0x10,0x18,0x3F,0xBF,0x80,0x00};
/***********主函数开始********************************************************/
voidmain(void)
{
Delay400Ms();//启动等待,等LCD讲入工作状态
LCDInit();//LCD初始化
Delay5Ms();//延时片刻(可不要)
while
(1){
LCDClear();
DisplayImage(tmp);//显示图形
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
LCDClear();
DisplayListChar(0,1,uctech);//显示字库中的中文数字
DisplayListChar(0,2,net);//显示字库中的中文数字
DisplayListChar(0,3,mcu);//显示字库中的中文
DisplayListChar(0,4,qq);//显示字库中的中文数字
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
LCDFlash();//闪烁效果
}
}
/***********写数据********************************************************/
voidWriteDataLCD(unsignedcharWDLCD)
{
ReadStatusLCD();//检测忙
LCD_RS=1;
LCD_RW=0;
LCD_Data=WDLCD;
LCD_E=1;
LCD_E=1;
LCD_E=1;
LCD_E=0;
}
/***********写指令********************************************************/
voidWriteCommandLCD(unsignedcharWCLCD,BuysC)//BuysC为时忽略忙检测
{
if(BuysC)ReadStatusLCD();//根据需要检测忙
LCD_RS=0;
LCD_RW=0;
LCD_Data=WCLCD;
LCD_E=1;
LCD_E=1;
LCD_E=1;
LCD_E=0;
}
/***********读数据********************************************************/
unsignedcharReadDataLCD(void)
{
unsignedcharLCDDA;
LCD_RS=1;
LCD_RW=1;
LCD_E=1;
LCD_E=1;
LCDDA=LCD_Data;
LCD_E=0;
return(LCDDA);
}
/***********读状态*******************************************************/
unsignedcharReadStatusLCD(void)
{
LCD_Data=0xFF;
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
LCD_E=1;
while(LCD_Data&Busy);//检测忙信号
LCD_E=0;
return
(1);
}
/***********初始化********************************************************/
voidLCDInit(void)
{
WriteCommandLCD(0x30,1);//显示模式设置,开始要求每次检测忙信号
WriteCommandLCD(0x01,1);//显示清屏
WriteCommandLCD(0x06,1);//显示光标移动设置
WriteCommandLCD(0x0C,1);//显示开及光标设置
}
/***********清屏********************************************************/
voidLCDClear(void)
{
WriteCommandLCD(0x01,1);//显示清屏
WriteCommandLCD(0x34,1);//显示光标移动设置
WriteCommandLCD(0x30,1);//显示开及光标设置
}
/***********闪烁效果********************************************************/
voidLCDFlash(void)
{
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1);//显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1);//显示开及光标设置
Delay400Ms();
WriteCommandLCD(0x08,1);//显示清屏
Delay400Ms();
}
/***********按指定位置显示一个字符*******************************************/
voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData)
{
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X&=0x0F;//限制X不能大于,Y不能大于
switch(Y){
case1:
X|=0X80;break;
case2:
X|=0X90;break;
case3:
X|=0X88;break;
case4:
X|=0X98;break;
}
WriteCommandLCD(X,0);//这里不检测忙信号,发送地址码
WriteDataLCD(DData);
}
/***********按指定位置显示一串字符*****************************************/
voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData)
{
unsignedcharListLength,X2;
ListLength=0;
X2=X;
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X&=0x0F;//限制X不能大于,Y在-4之内
switch(Y){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lcd12864 经典 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)