完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这是图和原理图: ![]() #include #define uchar unsigned char #define uint unsigned int ***it rs=P2^4;//位定义 ***it rw=P2^5; ***it e=P2^6; uchar table1[]=" whh"; uchar table2[]="LCD1602 test ok!"; void delay_50us(uint t) //延时函数,在12兆赫兹的晶振频率下50us的延时 { uchar j; for(;t>0;t--) for(j=19;j>0;j--); } void delay_50ms(uint t) { uint j; for(;t>0;t--) for(j=6245;j>0;j--); } void write_com(uchar com)//写指令 { e=0; rs=0; rw=0; P0=com; delay_50us(10); e=1; delay_50us(20); e=0; } void write_data(uchar dat)//输入数据 { e=0; rs=1; rw=0; P0=dat; //送数据 delay_50us(10); e=1; delay_50us(20); e=0; } void init(void) { delay_50us(300); //延时15ms,换算15ms等于300us write_com(0x38); delay_50us(100); write_com(0x38); delay_50us(100);//延时5ms write_com(0x38); write_com(0x38); write_com(0x08); write_com(0x01); write_com(0x06); write_com(0x0c); } void main() { uchar j; init(); write_com(0x80); for(j=0;j<16;j++) { write_data(table1[j]); delay_50us(10); } write_com(0x80+0x40); for(j=0;j<16;j++) { write_data (table2[j]); delay_50us(10); } while(1); } |
|
相关推荐
36个回答
|
|
为什么加了上拉电阻以后,1602还是没有字符显示?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
楼楼怎么解决的啊 也有同样的问题啊
|
|
|
|
proteus安装了 但是打不开
|
|
|
|
发表于 2016-7-19 17:35:19
|
|
|
|
我的也是出现这个问题了,同求大神解释。
|
|
|
|
我的也不亮,什么情况
|
|
|
|
P0口没有内置电阻的,需要加上啦
|
|
|
|
|
|
|
|
如果加了排阻,仍然不显示,就是程序问题!
typedef unsigned char int8u;//ÎÞ·ûºÅ8λÕûÐͱäÁ¿ typedef unsigned int int16u; typedef signed char int8s;//ÓзûºÅ8λÕûÐͱäÁ¿ #define cClearDisplay 0x01 //ÇåÏÔʾÃüÁî #define cCursorReturn 0x03 //¹â±ê¹éλ»Øµ½×óÉÏ·½ #define cEntryModeSet 0x06 //ÉèÖÃÊäÈëģʽ£¬Ð´ÈëÐÂÊý¾Ýºó¹â±êÓÒÒÆ #define cDisplayOnCtrl 0x0c //ÉèÖÿªÏÔ¿ØÖÆ£¬ÎÞ¹â±êÉÁ˸ #define cFunctionSetB 0x3c //¹¦ÄÜÉ趨(»ù±¾Ö¸Áî) #define cFunctionSetE 0x38 //¹¦ÄÜÉ趨(À©³äÖ¸Áî) //////½Ó¿Ú¶¨Òå #define LCDdata P0 ***it RS = P2^0; ***it RW = P2^1; ***it E = P2^2; void delay(long int t); //ÑÓʱº¯Êý void chk_busy(void); //Òº¾§Ã¦²âÊÔ void lcdwd(int8u dispdata); //дÊý¾Ý void lcdwc(int8u cmdcode); //дָÁî void lcdinit(void); //Òº¾§³õʼ»¯ void display(int8u ad,int8u *msg);//¹Ì¶¨Î»ÖÃÏÔʾÊý¾Ý void delay(long int t) //ÑÓʱº¯Êý { int16u i,j; for(i=0;i } //²âæ void chk_busy() { do { E = 0; RS=0; RW=1; E=1; delay(30); }while((LCDdata&0x80)==0x80); E=0; } //дÊý¾Ý void lcdwd(int8u dispdata) { chk_busy(); delay(5); RS=1; RW=0; E=0; delay(5); LCDdata=dispdata; E=1; delay(5); E=0; delay(5); } //дָÁî void lcdwc(int8u cmdcode) { chk_busy(); RS =0; RW =0; E =0; LCDdata=cmdcode; E = 1; delay(5); E=0; delay(5); } void lcdinit(void) { lcdwc(0x38); delay(5); lcdwc(0x0c); delay(5); lcdwc(0x06); delay(5); lcdwc(0x01); delay(5); } void display(int8u ad, int8u *msg) { lcdwc(ad); while (*msg) { lcdwd(*msg++); delay(50); } } 正确的程序!
|
|
|
|
检测状态标志位那里不要,否则那会有个死循环
|
|
|
|
你加一个103的排阻,
|
|
|
|
问一下,郭天祥的那本书名叫什么,谢谢了楼主!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1296 浏览 3 评论
2485 浏览 0 评论
2918 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
4703 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1050 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 21:23 , Processed in 0.708792 second(s), Total 74, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191