1、首先我们打开KeilμVision编译器,新建一个工程,然后保存在硬盘上的位置。
2、其次导入51单片机的头文件以及LCD1602的头文件。创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。
3、最后最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
给初始化里面加一个
w_cmd(0x0f);
去掉那个busy 然后自己写个等待函数试一下
#include "reg52h"#define uchar unsigned char
#define uint unsigned int
uchar code table[]=" Hello world! ";
uchar code table1[]=" 2013/8/10 ";
uchar num;
sbit rs=P1^0;
sbit rw=P1^1;
sbit lcden=P2^5;
sbit sd=P2^6;
sbit ds1302=P2^7;
sbit dula=P2^0;
sbit wela=P2^1;
sbit cs88=P2^2;
void delay(uint zz)
{
uint xx,yy;
for (xx=zz;xx>0;xx--)
for(yy=110;yy>0;yy--);
}
void comwrite(uchar com)
{
rs=0;
P0=com;
delay(3);
lcden=1;
delay(5);
lcden=0;
delay(8);
}
void datawrite(uchar dat)
{
rs=1;
P0=dat;
delay(3);
lcden=1;
delay(5);
lcden=0;
delay(8);
}
void initlcd()
{
lcden=1;
rw=0;
comwrite(0x38);//设置1602显示
comwrite(0x0f);//开显示 显示光标 光标闪烁
comwrite(0x06);//光标指针加一
comwrite(0x01);//显示清零
comwrite(0x80);//光标指针初始化
}
void main()
{
wela=0;
dula=0;
cs88=0;
ds1302=0;
sd=0;
initlcd();
comwrite(0x80+0x12);
for(num=0;num<16;num++)
{
datawrite(table[num]);
}
comwrite(0x80+0x40+0x12);
for(num=0;num<16;num++)
{
datawrite(table1[num]);
}
for(num=0;num<18;num++)
{
comwrite(0x18);
delay(200);
}
while(1);
}
这是我今年8月份自己写的 你看看
不一样,12864有20个脚,实际上有用的脚是18个,比1602多两脚,即PSB和PES,一个是设置串行、并行输入的,另一个是复位的。
在初始化把这两个设置了,指令啥的再改改就和1602差不多了
给你一个我实际的初始化程序,其中前后和命令之间的延时是我实际调试出来的,若延时时间短了也会出现你的现象:
voidcmd1602(unsignedcharddata)
{
ctl1602_out=0//rs/rw/en=0;
//禁止1602(e=0),选择1602为命令方式(rs=0),将读写口改为写状态(rw=0)
delay_us(50);//等待busy位变低
dat1602_out=ddata;//送出数据到数据总线
set1602_en;//芯片使能位置1
delay_us(5);//保持一定宽度
set1602_di;//芯片使能位清0,命令被1602读到
delay_us(1);//保持一定宽度
}
voidinit_disp(void)
{
dat1602_sel=0;//数据总线口定义为i/o方式
dat1602_dir=0xff;//口定义为输出方式
ctl1602_sel&=~(sel+rw+enb);//各控制位定义为i/o方式
ctl1602_dir|=(sel+rw+enb);//口定义为输出方式
//以上4行为430的i/o口定义 *** 作,具体在头文件中定义
delay_ms(500);//延时500毫秒
cmd1602(0x38);/twolines,5x7fontstyle,nocursors,noblink/
delay_ms(10);
cmd1602(0x38);
delay_ms(10);
cmd1602(0x38);
delay_ms(10);
cmd1602(0x38);
delay_ms(10);
cmd1602(0x08);//closedisplay
delay_ms(10);
cmd1602(0x01);//cleardisplay
delay_ms(10);
cmd1602(0x06);//setacrightmove
delay_ms(10);
cmd1602(0x0c);//opendisplay
delay_ms(200);
}
以上就是关于求一个1602液晶显示最简单的汇编程序(在屏上显示一个数字就行了,过程完整)全部的内容,包括:求一个1602液晶显示最简单的汇编程序(在屏上显示一个数字就行了,过程完整)、给个单片机液晶1602显示汉字的程序,谢谢、1602显示屏显示第一行和第二行数字怎么输入程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)