社区
单片机/工控
帖子详情
lcd1602 显示的问题
htnw134
2007-07-29 12:17:59
最近用了1602的显示器,但对它不是很懂,看了说明书还是一样,想问一下,它显示时怎么样显示一行字符,有个例子最好啦!!1谢谢大家了
...全文
1105
8
打赏
收藏
lcd1602 显示的问题
最近用了1602的显示器,但对它不是很懂,看了说明书还是一样,想问一下,它显示时怎么样显示一行字符,有个例子最好啦!!1谢谢大家了
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
htnw134
2007-08-01
打赏
举报
回复
还有那个,使能端EN好像是要在高电平降到低电平才能写入数据的哦
htnw134
2007-08-01
打赏
举报
回复
好像还是不行啊,我又一个用到lcd1602的硬件电路,现在就是显示方面出问题。我在网上找到的lcd1602 的资料,好像和你编程的不一样啊。例如:{MOV P1,#38H ;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口}这是第六个指令吧,在我找到的资料中是这样的
{指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符}
即你的程序好像应该改成:MOV P1,#28H 才可以得到相应的结果啊
htnw134
2007-08-01
打赏
举报
回复
这几天都没有上网,所以今天才看到,谢谢你们,谢谢dpear,我看一下先
htnw134
2007-08-01
打赏
举报
回复
我发我的程序上去。你看一下吧!
#include<AT89X51.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*===================================================
定义各个引脚
===================================================*/
sbit SCK=P1^6;
sbit SDA=P1^7;
sbit Cy=PSW^7;
sbit EN=P3^4;
sbit ID=P1^5;
sbit W=P3^2;
/*===================================================
定义lcd的输出字符,和按键的键值比较等
===================================================*/
code uchar sendstr[]="Sending and doing...";
code uchar audiostr[]="Audio switch";
code uchar videostr[]="Video switch";
code uchar avstr[]="AV switch";
code uchar welstr[]="welcome to use av1616!!!";
code uchar ok[]="OK!!!";
code uchar from[]="from";
code uchar to[]="to";
code uchar inq[]="inquire";
code uchar a[]={0x41,0x41,0x41,0x41,0x41,0x41};
void lcddata(uchar dat);
void Delay5Ms(void);
void Delay400Ms(void);
void commandsend(uchar a);
void keydisp(uchar temp);
void lcddisplay(uchar x,uchar y,uchar *p);
void dispchar(uchar x,uchar y,uchar dat);
void locateXY(uchar posx,uchar posy);
void lcdwritedata(uchar dat);
void lcdwritecmd(uchar dat);
void delay(uchar d);
/*==================================
初始化程序
==================================*/
void init(void)
{
IE=0;
EA=1;
ES=1;
EX0=1;
IP=0;
PS=1;
PX0=1;
PSW=0;
SCON=0x50;
PCON=0x00;
TMOD=TMOD&0x0f;
TMOD=TMOD|0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
P1=0;
}
/*==================================
lcd复位程序
==================================*/
void lcdreset(void)
{
lcdwritecmd(0x38); //指令6:8位总线,双行显示,5*7矩阵显示//
Delay5Ms();
lcdwritecmd(0x38); //指令6:8位总线,双行显示,5*7矩阵显示//
Delay5Ms();
lcdwritecmd(0x38); //指令6:8位总线,双行显示,5*7矩阵显示//
Delay5Ms();
lcdwritecmd(0x08); //指令4:关显示//
delay(0xff);
lcdwritecmd(0x01); //指令1:清显示数据//
delay(0xff);
lcdwritecmd(0x06); //指令3输入模式,光标移位//
delay(0xff);
lcdwritecmd(0x0c); //指令4:开显示,有关标,但关标不闪//
delay(0xff);
}
/*=====================================
二号164芯片输出数据,也是lcd的数据写入
=====================================*/
void lcddata(uchar dat)
{
uchar i;
SCK=0;
commandsend(dat);
for(i=0;i<8;i++)
{dat<<=1;
SDA=Cy;
SCK=0;
delay(0xff);
SCK=1;
}
//commandsend(dat);
//delay(0xff);
SCK=0;
}
/*=================================
发送程序,发送命令和查询
=================================*/
void commandsend(uchar temp)
{
SBUF=temp;while(TI==0);TI=0;
}
/*==========================================
lcd显示
==========================================*/
void lcddisplay(uchar x,uchar y,uchar *p)
{
uchar i,l;
l=0;
while(p[l]>=32){l++;}
for(i=0;i<l;i++)
{dispchar(x+i,y,p[i]);
if((x+i)==16)
{x=0;y=y^1;}
}
}
/*================================
显示字符
================================*/
void dispchar(uchar x,uchar y,uchar dat)
{
locateXY(x,y);
Delay5Ms();
lcdwritedata(dat);
}
/*=============================
光标定位
=============================*/
void locateXY(uchar posx,uchar posy)
{
uchar temp;
temp=posx&0x0f;
posy=posy&0x01;
if(posy){temp=temp|0x40;}
temp=temp|0x80; //写地址//
lcdwritecmd(temp);
}
/*===================================
lcd写命令
===================================*/
void lcdwritecmd(uchar dat)
{
lcddata(dat);
ID=0;
W=0;
EN=0;
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
EN=1;
}
/*===================================
写入数据
===================================*/
void lcdwritedata(uchar dat)
{
lcddata(dat);
ID=1;
W=0;
EN=0;
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
EN=1;
}
/*======================================
中断接收
======================================*/
void serialportISR(void)interrupt 4 using 3
{
//uchar temp;
if(RI==1)
{ES=0;
while(RI==0);RI=0;
if(SBUF!=0xAA)goto EXT;
while(RI==0);RI=0;
if(SBUF==0x80)//program download
{while (RI==0); RI=0;
if (SBUF!=0x00) goto EXT; //首码
while (RI==0); RI=0;
if (SBUF!=0x44) goto EXT; //首码
//while (RI==0); RI=0;
delay(0xffff);
delay(0xffff);
delay(0xffff);
delay(0xffff);
}
EXT:
ES=1;
}
}
/*=================================
延迟
=================================*/
void delay(uchar d)
{
uchar y;
for(y=0;y<d;y++);
}
// 短延时
void Delay5Ms(void)
{
uint i = 8552;//5552;
while(i--);
}
//长延时
void Delay400Ms(void)
{
uchar i;
for(i=0;i<80;i++)
{Delay5Ms();}
}
void main(void)
{init();
//keyreset();
lcdreset();
delay(0xff);
lcddisplay(0,0,welstr);
delay(0xff);
lcddisplay(0,1,welstr);
delay(0xff);
while(1)
{//keyinput();
lcddisplay(0,0,welstr);
}
//delay(0xffff);
//delay(0xffff);
//delay(0xffff);}
}
htnw134
2007-08-01
打赏
举报
回复
现在我也搞不清楚了,好混乱啊!!这个东西一开始以为很简单,现在搞了几天了!!真晕阿!!其实我很相信你的程序,可是我的就是显示不出来啊。我的要么不显示,要么显示一些乱码,例如:我要显示welcome,它就显示了整一个屏幕的w,然后又不显示elc了,接着又显示了o,也是整个屏幕的。然后又不显示了。很久都不显示,然后它又干脆来一些日文的,或者是数字的,也是整个屏幕!!好郁闷阿!!
我一直怀疑是由于这个显示是一个慢显示装置,所以我在程序中延时了很多,但结果还是一样!!请问dpear() ,,你有什么看法阿??教教我!!谢谢哦!!呵呵 !
dpear
2007-08-01
打赏
举报
回复
这个程序我测试过,能用的
不知道你看到的是哪的资料
功能设置为01111000是没错的
---------------------------------------------------------------
基本操作时序:
1.读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字
2.写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无
3.读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据
4.写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无
---------------------------------------------------------------
dpear
2007-07-31
打赏
举报
回复
昨天刚学的1602
哈,跟你分享一下
RS EQU P3.4
RW EQU P3.5
E EQU P3.6
ORG 0000H
AJMP START
ORG 0033H
START: MOV SP,#60H
MAIN: LCALL DELAY ;延时一段时间
MOV P1,#01H ;写指令01H,清屏
LCALL ENABLE
MOV P1,#38H ;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口
LCALL ENABLE
MOV P1,#0FH ;写指令0FH,显示ON,光标ON,闪烁ON
LCALL ENABLE
MOV P1,#06H ;写指令06H,光标输入方式增量移位
LCALL ENABLE
MOV P1,#80H ;第一行起始字符地址
LCALL ENABLE
MOV DPTR,#TABLE1 ;第一行显示字符表头地址
LCALL DISP ;显示第一行数据
MOV P1,#0C0H ;第二行起始字符地址
LCALL ENABLE
MOV DPTR,#TABLE2 ;第二行显示字符表头地址
LCALL DISP ;显示第二行数据
AJMP MAIN ;返回主程序循环
;-----------------
ENABLE: CLR RS ;写指令子程序(请参照1602LCD使用说明书)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-----------------
DISP: MOV R1,#16 ;准备显示一行16个字符
LOOP: MOV A,#00H ;将ACC清零
MOVC A,@A+DPTR ;查表取得要显示的数据
LCALL DISP1 ;写入一个数据
INC DPTR ;数据表指针加1,准备取下一个数据
DJNZ R1,LOOP ;一行没有显示完就继续
RET
;-----------------
DISP1: MOV P1,A ;写1字节数据到显示端口
SETB RS ;写数据时序(请参照1602LCD使用说明书)
CLR RW
CLR E
LCALL DELAY
SETB E
RET
;-----------------
DELAY: MOV R7,#255 ;延时子程序
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TABLE1: DB " welcome! "
TABLE2: DB " www.csdn.com.cn "
END
Dai_Weis
2007-07-30
打赏
举报
回复
有个网站,有些资料可以看看,不过不是做广告
http://www.sunman.com.cn/web/default.asp
认定2024年合肥市高新技术企业申报条件、高企认定申报要求
(二)企业历经自主研发、受让、受赠、并购等方法,获取对其主要商品(服务)在技术上发挥核心支持用途的知识产权的所有权;答:属于《高新技术企业认定管理工作指引》中规定的无形资产,且用于研发活动的无形资产摊销费用可以计入研发费用。答:根据系统设置要求,申报企业是否与中介机构合作的内容是必须填写的,可以根据实际情况选择“是”或“否”。(三)对企业主要商品(服务)发挥核心支持用途的技术属于《国家重点支持的高新技术领域》规定的范围;其中,企业在我国境内发生的研究开发费用总额占全部研究开发费用总额的比例不低于60%;
2022年贵州省高新技术企业认定奖励补贴及申报条件
2022年贵州省高新技术企业认定奖励补贴有哪些呢?那么我们企业申报的条件又有哪些呢?来看看小编整理的项目资料,一定会让你有所收获的,如果你对这个项目也感兴趣的话,不妨拿起手机联系我们,免费解答政策细节。一、贵州省高新技术企业认定奖励补贴 科技部、国资委、全国总工会三部门正式批准进行国家创新型企业试点工作的企业,每家给予50万元一次性补助;省科技厅、省国资委、省总工会正式批准为省级创新型企业试点的企业,每家给予20万元一次性补助;对新认定的高新技术企业给予一次性30万元的补助;1、贵阳市高新技术企业奖励补贴为
2025年如何认定国家高新技术企业
5、认定、公示与备案:认定机构对企业进行认定,经认定的高新技术企业在 “高新技术企业认定管理工作网” 上公示 15 个工作日,没有异议的,报送领导小组办公室备案,并在 “高新技术企业认定管理工作网” 上公告认定结果,向企业颁发统一印制的 “高新技术企业证书”。3、技术领域:对企业主要产品 (服务) 发挥核心支持作用的技术属于《国家重点支持的高新技术领域》规定的范围,包括电子信息、生物与新医药、航空航天、新材料、高技术服务、新能源与节能、资源与环境、先进制造与自动化这八大领域。
2024年绍兴市各区县高新技术企业认定奖励补助政策及绍兴高新企业申报奖励条件
实际上,经过专家的分析得知,其实在评审时,每个模块专家在打分时很少会给满分,即使其他地方的材料非常完美,都可能被扣些分数,更不用说大部分情况下,企业自己很难把材料做到完美,那些被扣三四分的,一方面企业自身容易察觉,另一方面企业更不会知道具体被扣分的原因了,但加起来就达到9分了,甚至还超过了9分。因为快速增长的高新技术企业数量,让高新技术企业认定的政策逐步收紧,申报高新技术企业认定的审查标准也越来越严格,因此对于想要申报2024年度高新技术企业认定的企业最好能尽早开始做准备,只有多做准备,成功率才会越高。
2024年(第31批)国家级企业技术中心申报时间、好处及流程
小编提示,具体包括:提前挖掘、整合、筹划、培育符合政策要求的重大技术研发项目,包括协助选项、规划支撑证据、规划财务核算等,并负责企业申报资料的整理、修改和上报,以及申报工作的后续跟踪,直至项目通过审批立项、专项资金转入企业账户。参与认定的企业,基本上都比较优质,国家企业技术中心评审就是优中选优,需要认定部门了解企业的技术亮点、行业地位以及其他关键要素,否则在极短的时间内仅通过书面材料和企业的简单汇报,是很难对所评审的申报企业做出精准的评价和排序,所以合法有效的沟通是必要的,也至为关键和重要。
单片机/工控
27,522
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章