#include <absacc.h>
#include <intrins.h>
#include <REGX52.h>
#define uint unsigned int
#define uchar unsigned char
#define add_iw_lr XBYTE[0x8300] //写指令(左右)地址
#define add_iw_l XBYTE[0x8200] //写指令(左)地址
#define add_iw_r XBYTE[0x8100] //写指令(右)地址
#define add_dw_lr XBYTE[0x8700] //写数据(左右)地址
#define add_dw_l XBYTE[0x8600] //写数据(左)地址
#define add_dw_r XBYTE[0x8500] //写数据(右)地址
#define add_rsta_lr XBYTE[0x8b00] //读状态地址
#define add_rd_lr XBYTE[0x8f00] //读显示数据地址
sbit lcdreset=P1^7; // LCD复位端口位地址
uchar s_c; //定义屏幕位置(0-左,1-右,2-全屏)
code char
_asc_20[]={0x00,0x00,0x00,0x00,0x00,0x00},//space
_asc_21[]={0x00,0x00,0x4f,0x00,0x00,0x00},//!
_asc_28[]={0x00,0x00,0x1c,0x22,0x41,0x00},//(
_asc_29[]={0x00,0x41,0x22,0x1c,0x00,0x00},//)
_asc_2a[]={0x14,0x08,0x3e,0x08,0x14,0x00},//*
_asc_2b[]={0x08,0x08,0x3e,0x08,0x08,0x00},//+
_asc_2c[]={0x00,0x50,0x30,0x00,0x00,0x00},//,
_asc_2d[]={0x08,0x08,0x08,0x08,0x08,0x00},//-
_asc_2e[]={0x00,0x60,0x60,0x00,0x00,0x00},//.
_asc_30[]={0x3e,0x51,0x49,0x45,0x3e,0x00},//0
_asc_31[]={0x00,0x42,0x7f,0x40,0x00,0x00},//1
_asc_32[]={0x42,0x61,0x51,0x49,0x46,0x00},//2
_asc_33[]={0x21,0x41,0x45,0x4b,0x31,0x00},//3
_asc_34[]={0x18,0x14,0x12,0x7f,0x10,0x00},//4
_asc_35[]={0x27,0x45,0x45,0x45,0x39,0x00},//5
_asc_36[]={0x3c,0x4a,0x49,0x49,0x30,0x00},//6
_asc_37[]={0x01,0x01,0x71,0x0d,0x03,0x00},//7
_asc_38[]={0x36,0x49,0x49,0x49,0x36,0x00},//8
_asc_39[]={0x06,0x49,0x49,0x29,0x1e,0x00},//9
_asc_3a[]={0x00,0x36,0x36,0x00,0x00,0x00},//:
_asc_3b[]={0x00,0x56,0x36,0x00,0x00,0x00},//;
//_asc_3c[]={0x00,0x08,0x14,0x22,0x41,0x00},//<
_asc_3c[]={0x00,0xfe,0x7c,0x38,0x10,0x00},//-> (替换成自定义符号)
_asc_3d[]={0x14,0x14,0x14,0x14,0x14,0x00},//=
_asc_3e[]={0x00,0x41,0x22,0x14,0x08,0x00},//>
_asc_3f[]={0x02,0x01,0x51,0x09,0x06,0x00},//?
_asc_40[]={0x3e,0x41,0x5d,0x55,0x1e,0x00},//@ (原来)
_asc_41[]={0x7e,0x11,0x11,0x11,0x7e,0x00},//A
_asc_42[]={0x7f,0x49,0x49,0x49,0x36,0x00},//B
_asc_43[]={0x3e,0x41,0x41,0x41,0x22,0x00},//C
_asc_44[]={0x7f,0x41,0x41,0x22,0x1c,0x00},//D
_asc_45[]={0x7f,0x49,0x49,0x49,0x41,0x00},//E
_asc_46[]={0x7f,0x09,0x09,0x09,0x01,0x00},//F
_asc_47[]={0x3e,0x41,0x49,0x49,0x7a,0x00},//G
_asc_48[]={0x7f,0x08,0x08,0x08,0x7f,0x00},//H
_asc_49[]={0x00,0x41,0x7f,0x41,0x00,0x00},//I
_asc_4a[]={0x20,0x40,0x41,0x3f,0x01,0x00},//J
_asc_4b[]={0x7f,0x08,0x14,0x22,0x41,0x00},//K
_asc_4c[]={0x7f,0x40,0x40,0x40,0x40,0x00},//L
_asc_4d[]={0x7f,0x02,0x0c,0x02,0x7f,0x00},//M
_asc_4e[]={0x7f,0x04,0x08,0x10,0x7f,0x00},//N
_asc_4f[]={0x3e,0x41,0x41,0x41,0x3e,0x00},//O
_asc_50[]={0x7f,0x09,0x09,0x09,0x06,0x00},//P
_asc_51[]={0x3e,0x41,0x51,0x21,0x5e,0x00},//Q
_asc_52[]={0x7f,0x09,0x19,0x29,0x46,0x00},//R
_asc_53[]={0x46,0x49,0x49,0x49,0x31,0x00},//S
_asc_54[]={0x01,0x01,0x7F,0x01,0x01,0x00},//T
_asc_55[]={0x3F,0x40,0x40,0x40,0x3F,0x00},//U
_asc_56[]={0x1F,0x20,0x40,0x20,0x3F,0x00},//V
_asc_57[]={0x3F,0x40,0x38,0x40,0x3F,0x00},//W
_asc_58[]={0x63,0x14,0x08,0x14,0x63,0x00},//X
_asc_59[]={0x03,0x04,0x78,0x04,0x03,0x00},//Y
_asc_5a[]={0x61,0x51,0x49,0x45,0x43,0x00},//Z
_asc_61[]={0x20,0x54,0x54,0x54,0x78,0x00},//a
_asc_62[]={0x7f,0x48,0x44,0x44,0x38,0x00},//b
_asc_63[]={0x38,0x44,0x44,0x44,0x44,0x00},//c
_asc_64[]={0x38,0x44,0x44,0x48,0x7f,0x00},//d
_asc_65[]={0x38,0x54,0x54,0x54,0x18,0x00},//e
_asc_66[]={0x08,0x7e,0x09,0x01,0x02,0x00},//f
_asc_67[]={0x06,0x49,0x49,0x49,0x3e,0x00},//g
_asc_68[]={0x7f,0x08,0x04,0x04,0x78,0x00},//h
_asc_69[]={0x00,0x44,0x7d,0x40,0x00,0x00},//i
_asc_6a[]={0x20,0x40,0x44,0x3d,0x00,0x00},//j
_asc_6b[]={0x7f,0x10,0x28,0x44,0x00,0x00},//k
_asc_6c[]={0x00,0x41,0x7f,0x40,0x00,0x00},//l
_asc_6d[]={0x7c,0x04,0x18,0x04,0x78,0x00},//m
_asc_6e[]={0x7c,0x08,0x04,0x04,0x78,0x00},//n
_asc_6f[]={0x38,0x44,0x44,0x44,0x38,0x00},//o
_asc_70[]={0x7c,0x14,0x14,0x14,0x08,0x00},//p
_asc_71[]={0x08,0x14,0x14,0x14,0x7c,0x00},//q
_asc_72[]={0x00,0x7c,0x08,0x04,0x04,0x00},//r
_asc_73[]={0x48,0x54,0x54,0x54,0x20,0x00},//s
_asc_74[]={0x00,0x04,0x3f,0x44,0x40,0x00},//t
_asc_75[]={0x3c,0x40,0x40,0x20,0x7c,0x00},//u
_asc_76[]={0x1c,0x20,0x40,0x20,0x1c,0x00},//v
_asc_77[]={0x3c,0x40,0x30,0x40,0x3c,0x00},//w
_asc_78[]={0x44,0x28,0x10,0x28,0x44,0x00},//x
_asc_79[]={0x0c,0x50,0x50,0x50,0x3c,0x00},//y
_asc_7a[]={0x44,0x64,0x54,0x4c,0x44,0x00};//z
code char code *ascii[]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
_asc_20,_asc_21,
0,0,0,0,0,0,
_asc_28,_asc_29,_asc_2a,_asc_2b,_asc_2c,_asc_2d,_asc_2e,0,
_asc_30,_asc_31,_asc_32,_asc_33,_asc_34,_asc_35,_asc_36,_asc_37,_asc_38,_asc_39,
_asc_3a,_asc_3b,_asc_3c,_asc_3d,_asc_3e,_asc_3f,
0,
_asc_41,_asc_42,_asc_43,_asc_44,_asc_45,_asc_46,_asc_47,_asc_48,_asc_49,_asc_4a,
_asc_4b,_asc_4c,_asc_4d,_asc_4e,_asc_4f,_asc_50,_asc_51,_asc_52,_asc_53,_asc_54,
_asc_55,_asc_56,_asc_57,_asc_58,_asc_59,_asc_5a,
0,0,0,0,0,0,
_asc_61,_asc_62,_asc_63,_asc_64,_asc_65,_asc_66,_asc_67,_asc_68,_asc_69,_asc_6a,
_asc_6b,_asc_6c,_asc_6d,_asc_6e,_asc_6f,_asc_70,_asc_71,_asc_72,_asc_73,_asc_74,
_asc_75,_asc_76,_asc_77,_asc_78,_asc_79,_asc_7a,
0,0,0,0,0};
/*----------------------------------------------------------------------------------------------------*/
/*--基本函数源程序------------------------------------------------------------------------------------*/
//延时
Lcd12864delay(uint i)
{
while(i--) {;}
}
/*----------------------------------------------------------------------------------------------------*/
//状态检查
void CheckState()
{
uchar dat;
do{dat=add_rsta_lr;
dat=0x90 & dat; //仅当第4,7位为0时才可操作
}while(!(dat==0x00));
}
/*----------------------------------------------------------------------------------------------------*/
//写显示数据
//dat:显示数据
void WriteByte(uchar dat,s_c)
{
switch(s_c)
{case 0: //写左显示数据
CheckState();
add_dw_l=dat;
break;
case 1: //写右显示数据
CheckState();
add_dw_r=dat;
break;
case 2: //写左右显示数据
CheckState();
add_dw_lr=dat;
break;
}
}
/*-----------------------------------------------------------------------------------------------------*/
//向LCD发送命令
//command :命令
SendCommandToLCD(uchar command,s_c)
{
switch(s_c)
{case 0: //写左指令
CheckState();
add_iw_l=command;
break;
case 1: //写右指令
CheckState();
add_iw_r=command;
break;
case 2: //写左右指令
CheckState();
add_iw_lr=command;
break;
}
}
/*----------------------------------------------------------------------------------------------------*/
//设定行地址(页)--X 0-7
void SetLine(uchar line)
{
line=line & 0x07; // 0<=line<=7 //防止越界
line=line|0xb8; //1011 1xxx //通过和b8h或得到指令包含页地址的指令码
SendCommandToLCD(line,s_c); //??需要设置屏幕位置(左右?)
}
/*----------------------------------------------------------------------------------------------------*/
//设定列地址--Y 0-63
void SetColumn(uchar column)
{
column=column &0x3f; // 0=<column<=63 //防止越界
column=column | 0x40; //01xx xxxx //通过和40h或得到指令包含列地址的指令码
SendCommandToLCD(column,s_c); //??需要设置屏幕位置(左右?)
}
/*----------------------------------------------------------------------------------------------------*/
//设定显示开始行--XX
void SetStartLine(uchar startline) //0--63
{
startline=startline & 0x3f; //防止越界, 原来的--startline=startline & 0x07,只能达到7行,有误
startline=startline|0xc0; //1100 0000 //通过和c0h或得到指令包含开始行地址的指令码
SendCommandToLCD(startline,s_c); //??需要设置屏幕位置(左右?)
}
/*--------------------------------------------------
driver_lcd.rar_89s52_LCD driver_RT12864-10_rt12864_rt12864j-4
版权申诉
167 浏览量
2022-09-23
06:32:19
上传
评论
收藏 30KB RAR 举报
朱moyimi
- 粉丝: 64
- 资源: 1万+
最新资源
- juhua-p8YYy-v0e13a7b5(1).apk
- Neo4j资源:Neo4j.rb的性能测试相关程序
- 排序算法之堆排序算法:用C++语言实现堆排序算法
- 基于Springboot的房屋租赁系统(源代码+论文+说明文档+PPT)-计算机专业精品毕业设计和课程设计
- leidian.py
- 直接插入排序算法:C语言实现直接插入排序算法
- 基于Springboot的大学生就业招聘系统(源代码+论文+说明文档+PPT)-计算机专业精品毕业设计和课程设计
- 基于Vue的H5结婚请帖前端设计源码
- saxaxasxasx
- 基于SSM++jsp的实验室耗材管理系统(源代码+论文+说明文档+PPT)-计算机专业精品毕业设计和课程设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈