完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int ***it rs=P3^5; ***it en=P3^4; ***it wr=P3^6; ***it dula=P2^6; ***it wela=P2^7; uchar code table[]="Hello everyone!"; uchar code table1[]="welcome to here!"; void delay(uint x) { uint i,j; for(i=x;i<0;i--) for(j=10;j<0;j--); } void write_com(uchar com) { P0=com; wr=0; rs=0; en=0; delay(10); en=1; delay(10); en=0; } void write_date(uchar dat) { P0=dat; wr=0; rs=1; en=0; delay(10); en=1; delay(10); en=0; } void init() { dula=0; wela=0; write_com(0x38); delay(10); write_com(0x0c); delay(10); write_com(0x06); delay(10); write_com(0x01); delay(10); } void main() { uchar a; init(); write_com(0x80); a=0; for(a=0;a<15;a++) { write_date(table[a]); delay(10); } write_com(0x80+0x40); a=0; for(a=0;a<16;a++) { write_date(table1[a]); delay(10); } while(1); } 下载后1602第一行会显示to here!第二行没显示!求大神帮看看!谢谢 |
|
相关推荐
19个回答
|
|
这是《51单片机轻松入门 基于STC15W4K系列》书上1602液晶章节的例程,包括整数、小数、中文汉字的显示等等,你随便使用哪个都没问题。第13章 1602液晶.rar (147.98 KB )
|
|
|
|
|
|
这个故障在《51单片机轻松入门 基于STC15W4K系列》第13章第306页有说明:单片机复位后增加delay100ms();延时函数用于等待1602内部复位完成,1602内部复位完成才能顺利接收单片机发出的信息。否则显示不全或错位。
|
|
|
|
|
|
那是在初始化后增加延时吗?这是我又加的延时。但还是不行。
#include #define uchar unsigned char #define uint unsigned int ***it rs=P3^5; ***it en=P3^4; ***it wr=P3^6; ***it dula=P2^6; ***it wela=P2^7; uchar code table[]="Hello everyone!"; uchar code table1[]="welcome to here!"; void delay(uint x) { uint i,j; for(i=x;i<0;i--) for(j=110;j<0;j--); } void write_com(uchar com) { P0=com; wr=0; rs=0; en=0; delay(10); en=1; delay(10); en=0; } void write_date(uchar dat) { P0=dat; wr=0; rs=1; en=0; delay(10); en=1; delay(10); en=0; } void init() { dula=0; wela=0; write_com(0x38); delay(20); write_com(0x0c); delay(20); write_com(0x06); delay(20); write_com(0x01); delay(20); } void main() { uchar a; init(); delay(100); write_com(0x80); delay(100); a=0; for(a=0;a<15;a++) { write_date(table[a]); delay(20); } write_com(0x80+0x40); delay(100); a=0; for(a=0;a<16;a++) { write_date(table1[a]); delay(20); } while(1); } |
|
|
|
程序没看出什么问题,延时再加长点试试
|
|
|
|
单片机的频率是多少?应该是时序部分的问题
|
|
|
|
1602有个状态字节,第7位为0时,才可以进行读和写,看看网上程序应该会有这一段小函数
|
|
|
|
明显没有换行嘛。
|
|
|
|
而且你这底层的驱动也不全呀,用起来肯定不方便的
|
|
|
|
第一,在init之前加延时,第二,不一定第一行就真的是第一行,我还遇到过1602第一行,第二行前八个后八个字符地址都不连续的。
|
|
|
|
我用的迷你板子,发现驱动1602的时候留出来的PB0-7不能当作数据口,不知道为啥,换到其他的IO口就可以
|
|
|
|
问题应该在初始化部分
|
|
|
|
你的延时函数有问题,for(i=x;i>0;i--);改成这样;
|
|
|
|
问题解决了嘛?
|
|
|
|
P0口是三态口,需要接10k上拉电阻才和其他I/O口一样
|
|
|
|
是不是延时太短,题主不妨把延时函数换成毫秒级的试试
|
|
|
|
邮箱多少?我发例程给你参考
|
|
|
|
楼主,我给你建议,如果自己弄不明白时候,最好参考一下别人程序,因为这样你才能真正学到知识
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2990 浏览 16 评论
3490 浏览 1 评论
9052 浏览 16 评论
4085 浏览 18 评论
1173浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 10:25 , Processed in 1.577783 second(s), Total 116, Slave 97 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号