智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3601|回复: 7
打印 上一主题 下一主题

1602显示问题

[复制链接]

4

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
威望
208
贡献
29
兑换币
2
注册时间
2010-5-1
在线时间
15 小时
跳转到指定楼层
1#
发表于 2010-11-17 11:21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁有XS128控制1602液晶的程序,有的发上来看看,,,,弄了两天了,没调试出来。。。。。。。

1

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
QQ
威望
341
贡献
72
兑换币
0
注册时间
2010-3-19
在线时间
26 小时
2#
发表于 2010-11-18 09:15:34 | 只看该作者
呵呵 你也在弄呀 告诉你一个秘密 那个1602 有问题  所以我换成12864 的屏了 呵呵 努力吧 希望你能搞定那个1602 我在51上也试了 居然只能显示一行 换了2个了还是不行 很是郁闷啊
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
威望
208
贡献
29
兑换币
2
注册时间
2010-5-1
在线时间
15 小时
3#
 楼主| 发表于 2010-11-18 09:23:58 | 只看该作者
回复 2# leihen0525


    关键是我的1602在线调试他能显示,但是不知道为什么他显示一个字符空一个位,再显示别外一个字符,好郁闷,我把程序发上来,有解决的希望能跟我说下。。。
  1. #include <hidef.h>      /* common defines and macros */
  2. #include "derivative.h"      /* derivative-specific definitions */
  3. #define rs PORTE_PE2
  4. #define rw PORTE_PE3
  5. #define ep PORTE_PE4
  6. #define P0 PORTB
  7. unsigned char  dis1[] = {"www.hificat.com"};
  8. unsigned char  dis2[] = {"0571-85956028"};
  9. unsigned char temp,result;
  10. int d;

  11. /*延时函数*/
  12. void delay_us(unsigned int n) //延时 如果需要高精度延时 请嵌入汇编
  13. {
  14. if (n == 0)
  15.   {  
  16.   return ;  
  17.   }
  18.   while (--n);
  19. }


  20. void delay(unsigned char ms)
  21. {
  22. unsigned char i;
  23. while(ms--)
  24. {
  25. for(i = 0; i< 250; i++)
  26. {
  27. _asm(nop);
  28. _asm(nop);
  29. _asm(nop);
  30. _asm(nop);
  31. }
  32. }
  33. }
  34. void delay1(long d){
  35. while(d--)
  36.   _asm(nop);
  37.   }
  38.   




  39. unsigned char lcd_bz(void)
  40. {unsigned char temp;
  41. PORTB=0XFF;
  42. DDRB=0X00;
  43. rs = 0;
  44. rw = 1;
  45. ep = 1;
  46. _asm(nop);
  47. _asm(nop);
  48. _asm(nop);

  49. temp=PORTB;
  50.    _asm(nop);
  51. _asm(nop);
  52. _asm(nop);

  53.   
  54.   ep = 0;

  55. result=temp&0x80;


  56. DDRB=0XFF;
  57.   



  58. return result;
  59. }

  60. /***********************
  61. unsigned char LCD_read_state(void)
  62. {


  63. DDRB=0x00;
  64. rs=0;
  65. rw=1;
  66. ep=1;
  67. delay_us(1);
  68. temp=P0;
  69. ep=0;
  70. DDRB=0xff;
  71. return temp;
  72. }
  73. void Wait_busy(void)
  74.   {unsigned char temp1;
  75.   temp1=LCD_read_state();
  76.   temp1=temp1&0x80;
  77.   while(temp1)
  78.     {
  79.     temp1=LCD_read_state();
  80.     temp1=temp1&0x80;
  81.     }
  82.   
  83.   }

  84.   
  85.   ******************/



  86. void lcd_wcmd(unsigned char cmd)
  87. {
  88. while(lcd_bz());//判断LCD是否忙碌
  89. //Wait_busy();
  90. rs = 0;
  91. rw = 0;
  92. ep = 0;
  93. _asm(nop);
  94. _asm(nop);

  95. PORTB = cmd;
  96. _asm(nop);
  97. _asm(nop);
  98. _asm(nop);
  99. _asm(nop);
  100. ep = 1;

  101. delay1(2);
  102. ep = 0;

  103. }
  104. void lcd_pos(unsigned char pos)
  105. {
  106. lcd_wcmd(pos | 0x80);
  107. delay1(1);}
  108. void lcd_wdat(unsigned char dat)
  109. {
  110. while(lcd_bz());//判断LCD是否忙碌
  111. //Wait_busy();
  112. rs = 1;
  113. rw = 0;
  114. ep = 0;


  115. PORTB = dat;
  116. _asm(nop);
  117. _asm(nop);
  118. _asm(nop);
  119. _asm(nop);
  120. _asm(nop);
  121. _asm(nop);
  122. _asm(nop);
  123. _asm(nop);
  124. ep = 1;
  125. //delay_us(30);
  126. delay1(2);
  127. ep = 0;
  128. }
  129. void lcd_init()
  130. {  
  131. lcd_wcmd(0x38);
  132. lcd_wcmd(0x02);
  133. lcd_wcmd(0x0c);

  134. lcd_wcmd(0x06);

  135. lcd_wcmd(0x01);
  136. delay1(500);
  137. }
  138. void main(void)
  139. {unsigned char i;
  140.   
  141. DDRE=0XFF;

  142. lcd_init();// 初始化LCD

  143. while(1){
  144.   
  145. lcd_pos(0x01);//设置显示位置
  146. i = 0;
  147. while(dis1[i]!='\0')
  148. {  
  149.    
  150.    
  151. lcd_wdat(dis1[i]);//显示字符
  152. i++;

  153. }

  154. lcd_pos(0x41);// 设置显示位置
  155. i = 0;
  156. while(dis2[i]!='\0')
  157. {
  158. lcd_wdat(dis2[i]);// 显示字符
  159. i++;

  160. }
  161. }
  162. }
复制代码
回复 支持 反对

使用道具 举报

1

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
QQ
威望
341
贡献
72
兑换币
0
注册时间
2010-3-19
在线时间
26 小时
4#
发表于 2010-11-21 15:30:40 | 只看该作者
你的程序没问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

3

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
QQ
威望
243
贡献
31
兑换币
0
注册时间
2011-3-16
在线时间
4 小时
5#
发表于 2011-8-4 09:52:31 | 只看该作者
回复 2# leihen0525


   51的晶振频率以及时钟周期和xs128都不一样
xs128比51快了很多  把 延时和时序改一改就好用了
回复 支持 反对

使用道具 举报

137

主题

2197

帖子

1

精华

知名人物

广州穗佳电子科技有限公司飞思卡尔专业店

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
23283

特殊贡献奖章资源大师奖章优秀版主奖章热心会员奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章论坛骨干奖章

QQ
威望
6807
贡献
12964
兑换币
9459
注册时间
2011-6-24
在线时间
1756 小时
6#
发表于 2011-8-11 05:02:27 | 只看该作者
回复 1# mllen858585


    建议楼主换nokia5110,1602已经落后了,又贵,不能显示中文
回复 支持 反对

使用道具 举报

8

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
威望
205
贡献
98
兑换币
118
注册时间
2013-6-13
在线时间
28 小时
毕业学校
山东理工大学
7#
发表于 2013-6-14 17:42:46 | 只看该作者
leihen0525 发表于 2010-11-21 15:30
你的程序没问题

我用的他的 没有显示 请问你能给个解释吗
回复 支持 反对

使用道具 举报

2

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
485
威望
257
贡献
134
兑换币
147
注册时间
2012-11-6
在线时间
47 小时
8#
发表于 2013-8-11 11:14:24 | 只看该作者
leihen0525 发表于 2010-11-21 15:30
你的程序没问题

我的没反应
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 23:24 , Processed in 0.075381 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表