中易网

12864如何初始化?

答案:1  悬赏:50  
解决时间 2021-02-26 23:21
12864如何初始化?
最佳答案
#include //包含头文件
#include

#define uchar unsigned char //简化整型,字符型变量书写
#define uint unsigned int

#define LCD_data P0 // 引脚定义
sbit LCD_RS = P2^2;
sbit LCD_RW = P2^3;
sbit LCD_EN = P2^4;
sbit LCD_PSB = P2^5;

void delay_ms(unsigned int ms) //延时函数 1ms
{
unsigned int i,j;
for(j=0;j<=ms;j++)
{
for(i=0;i<=120;i++)
{}
}
}

void delay4us() //延时函数 4Us
{
_nop_();
_nop_();
_nop_();
_nop_();
}

void lcd_checkBusy(void) //检测忙标志
{
unsigned char busy;
do{
LCD_EN = 0;
LCD_RS = 0;
LCD_RW = 1;
delay4us();
LCD_EN = 1; //在使能端的一个上升沿读取LCD数据
busy = P0;
delay4us();
LCD_EN = 0;
}
while(busy&0x80); //判断最高位是否为0,为0则处于空闲状态
}

void lcd_wcmd(uchar cmd) //写指令函数
{
lcd_checkBusy(); //检测忙碌状态
LCD_RS = 0; //RS至低,指令操作
LCD_RW = 0; //RW至低,写操作
LCD_EN = 0;
delay4us();
P0 = cmd; //指令数据
delay4us();
LCD_EN = 1; //给使能端一个上升沿保存数据
delay4us();
LCD_EN = 0;
}

void lcd_wdat(uchar dat) //写数据函数
{
lcd_checkBusy(); //检测忙碌状态
LCD_RS = 1; //RS至高,数据操作
LCD_RW = 0;
LCD_EN = 0;
P0 = dat; //给LCD要显示的数据
delay4us();
LCD_EN = 1; //给使能端一个上升沿保存数据
delay4us();
LCD_EN = 0;
}

void lcd_init() //初始化LCD
{
LCD_PSB = 1; //选择并行模式
lcd_wcmd(0x30); //初级指令集
delay_ms(5);
lcd_wcmd(0x0C); //开显示
delay_ms(5);
lcd_wcmd(0x01); //清屏
delay_ms(5);
}

在主函数中调用即可。(这个初始化函数设定屏为文本格式)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
尿路感染 尿不出来怎么办 现在喝了很多水 憋
开增.值税发票时,我们在发票上填的品.名必须
厦二村在什么地方啊,我要过去处理事情
吴淞江的流域概况
为什么我1060的显卡吃鸡只有50左右的FPS
笔记本固态硬盘是直接装在光驱位置的吗
劳务派遣工资按包干每年5万,那每月工资能领
考研数学二的高数和线代的分值是不是只有线代
当心理医生有前途吗?
应用化工和分析化学精细化学哪个更适合女生(
广东常平火车票电话预订火车票电话号码是多少
红中文具在哪里啊,我有事要去这个地方
淮安现在排为几线城市
宝宝吃什么补维生素
想转服了,问下wow 服务器所在地 我在广东深
推荐资讯
依邦捷高质干洗在哪里啊,我有事要去这个地方
为什么起点没签约的作品我不能打赏,别人却能
涟水巴黎春天11号楼房产证何时下来
《水世界》电影主要内容是什么
寄生虫在高温多少度能死
资深电气工程师工资收入多少
请问澳门大学生物医药学院的面试是以英文进行
长时间坐在办公室,身体发痒的原因?
神武手游烽火鞋什么用?
瓦罐香沸连锁快餐这个地址在什么地方,我要处
求助~我想要变形金刚 领袖之证第三季里声波说
outlook2010同步打开过的邮件
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?