求一个1602液晶显示最简单的汇编程序(在屏上显示一个数字就行了,过程完整)

求一个1602液晶显示最简单的汇编程序(在屏上显示一个数字就行了,过程完整),第1张

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显示屏显示第一行和第二行数字怎么输入程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10058982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存