
#include <reg52.H>
sbit lcdrs=P2^5//命令/数据
sbit lcdrw=P2^6//读/写
sbit lcden=P2^7 //使能端
static void delay(uchar zz)
{
uchar a,b
for(a=zza>0a--)
for(b=35b>0b--)
}
void WriteData(uchar x) //写数据
{
lcden=0
lcdrs=1
lcdrw=0
P0=x
delay(10)
lcden=1
delay(10)
lcden=0
lcdrw=1
}
void WriteCommand(uchar y) //写命令
{
lcden=0// 写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码 输出:无
lcdrs=0// 写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据 输出:无
lcdrw=0// 读数据 输入:RS=1,RW=1,E=1 输出:DB0~DB7=数据
P0=y // 读状态 输入:RS=0,RW=1,E=1 输出:DB0~DB7=状态字
delay(10)
lcden=1
delay(10)
lcden=0
lcdrw=1
}
void Init_LCD1602()
{
WriteCommand(0x01)//清屏
WriteCommand(0x38)//1602显示,5*7点阵设置
WriteCommand(0x38)
WriteCommand(0x0c)//开显示,不显示光标
}
看看, RS在P3^5,RW在P3^6, E在P3^4这是1602的,需要12864的话再给你,忘采纳
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar table1[]={"wo shi yang lang"}
uchar table2[]={"dan pian ji"}
// uchar table3[]={}
// uchar table4[]={}
sbit wei=P2^7
sbit duan=P2^6
sbit E=P3^4
sbit RS=P3^5
sbit RW=P3^6
unsigned char num
void delay(unsigned char z)
{
unsigned char x,y
for(x=0x<zx++)
for(y=0y<110y++)
}
void zl(unsigned char a)
{
RS=0
RW=0
P0=a
E=0
delay(5)
E=1
delay(5)
E=0
}
void sj(unsigned char b)
{
RS=1
RW=0
P0=b
E=0
delay(5)
E=1
delay(5)
E=0
}
void iniv()
{
wei=0
duan=0
E=0
zl(0x01)
zl(0x80)
zl(0x38)
zl(0x0f)
}
void main()
{
iniv()
zl(0x80+0x10)
for(num=0num<16num++)
{
sj(table1[num])
delay(1200)
}
zl(0x80+0x40+3+0x10)
for(num=0num<11num++)
{
sj(table2[num])
delay(1200)
}
for(num=0num<16num++)
{
zl(0x18)
delay(200)
}
while(1)
}
首先确保硬件没问题,如果是自己画的PCB,天线布线有要求。如果是淘宝的买的板子也要注意,以前我就是买过几块板子做测试,结果死活不行,再重新购买,程序就调通了(用调通的程序测试之前买的板子也不行)。还有个奇葩的事情,当时调程序时,spi死活调不通,调了快一个星期,后来把spi速率将低就可以了,再后来调到原来的速率也可以了。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)