[LaunchPad] msp430g2553 20pin新手求解

lgd0722   2013-4-23 10:01 楼主
1602LCD四位数据显示的问题,版主来现身,求给代码

回复评论 (7)

论坛里搜一下1602,我记得有人发过.现在不方便
点赞  2013-4-23 10:08

回复 沙发 qinkaiabc 的帖子

我就是用的论坛里的那个程序,但是还是显示不了,接线都检查了n遍了,调了一晚上还是没成功
点赞  2013-4-23 10:17

回复 板凳 lgd0722 的帖子

  1. #define uchar unsigned char
  2. #define uint unsigned int
  3. #define RS_1 P2OUT|=BIT4;
  4. #define RS_0 P2OUT&=~BIT4;
  5. #define EN_1 P2OUT|=BIT5;
  6. #define EN_0 P2OUT&=~BIT5;
  7. uchar table[]="voltage:        ";
  8. uchar table1[]="tem:            ";
  9. //写指令
  10. void writecom(uchar com)
  11. {

  12.     _delay_cycles(1000);
  13.         EN_0;
  14.         RS_0;
  15.         P2OUT&=0xf0;    //清P2.2~2.5
  16.         P2OUT|=(com>>4)&0x0f;  //写高四
  17.         _delay_cycles(1100);
  18.         EN_1;
  19.         _delay_cycles(750);
  20.         EN_0;
  21.         RS_0;
  22.         P2OUT&=0xf0;    //清P2.2~2.5
  23.         P2OUT|=com&0x0f;
  24.         _delay_cycles(750);
  25.         EN_1;
  26. }

  27. void delay1us()
  28. {
  29.         _delay_cycles(1);
  30. }
  31. void delaynms(uint m)
  32. {
  33.         uint n;
  34.         for(n=0;n
  35.         _delay_cycles(1000);
  36. }
  37. //写数据
  38. void writedata(uchar dat)
  39. {
  40.         _delay_cycles(1000);
  41.         EN_0;
  42.         RS_1;
  43.         P2OUT&=0xf0;    //清高四位
  44.         P2OUT|=(dat>>4)&0x0f;
  45.         _delay_cycles(750);
  46.         EN_1;
  47.         _delay_cycles(1100);
  48.         EN_0;
  49.         RS_1;
  50.         P2OUT&=0xf0;
  51.         P2OUT|=dat&0x0f; //写四位
  52.         _delay_cycles(750);
  53.         EN_1;
  54. }
  55. void lcd1602(uchar x_pos,uchar y_pos,uchar dat)
  56. {
  57.         x_pos&=0x0f;  //x_pos的范围控制在0到15
  58.         y_pos&=0x01;  //y_pos的范围控制在0到1
  59.         if(y_pos==1)x_pos+=0x40;
  60.         x_pos+=0x80;
  61.         writecom(x_pos);
  62.         writedata(dat);
  63. }
  64. //lcm初始化程序
  65. void lcdinit()
  66. {
  67.         uchar i;
  68.         P2DIR |= 0xff;
  69.         writecom(0x28);
  70.         _delay_cycles(10);
  71.         writecom(0x28);
  72.         _delay_cycles(10);
  73.         writecom(0x28);
  74.         EN_0;
  75.         _delay_cycles(1000);
  76.         EN_1;
  77.         writecom(0x28);
  78.         writecom(0x01);
  79.         writecom(0x0c);
  80.         writecom(0x80);
  81.         writecom(0x06);
  82.         for(i=0;i<16;i++)
  83.         {
  84.              writedata(table1[i]);
  85.         }
  86.         writecom(0xc0);
  87.         for(i=0;i<16;i++)
  88.         {
  89.              writedata(table[i]);
  90.         }
  91. }


  92. void dis(uchar addr,uchar *p)
  93. {
  94.         unsigned char i;
  95.         writecom(addr);
  96.     for(i=0;i<16;i++)
  97.     {
  98.         writedata(*(p+i));
  99.     }
  100. /*        unsigned char i;
  101.   writecom(0x80);
  102.   for(i=0;i<16;i++)
  103.   {
  104.     writedata(table[i]);
  105.   }
  106.   writecom(0xc0);
  107.   for(i=0;i<16;i++)
  108.   {
  109.     writedata(table1[i]);
  110.   }
  111.   */
点赞  2013-4-23 15:42

回复 板凳 lgd0722 的帖子

怎么连线的我忘记了。你慢慢琢磨啊
点赞  2013-4-23 15:43

回复 楼主 lgd0722 的帖子

我不是万能的,还是要靠自己
点赞  2013-4-23 15:53

回复 6楼 qinkaiabc 的帖子

嗯,问题我已经解决了,版主就是资料多,有些资料自己找不到
点赞  2013-4-23 22:24

回复 7楼 lgd0722 的帖子

可以把自己如何解决问题的过程也写下来一起分享给大家啊
点赞  2013-4-23 22:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复