找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2438|回复: 0
收起左侧

总结的MSP430G2553点亮1602例程

[复制链接]
ID:366517 发表于 2020-3-19 10:26 | 显示全部楼层 |阅读模式
作为小白,总结了一些例程,希望对新手有用
main.c主程序
  1. unsigned char *s1="welcome!";这句话显示有警告,不知道是什么问题,不过也可以执行。
  2. void main(void)
  3. {
  4. uchar i;
  5. WDTCTL=WDT_ADLY_250;

  6. LcdReset();
  7. Dispstr(04,0,s1);
  8. LocateXY(0,9);
  9. LcdWriteCommand(0x07,1);    //0x07表示n=1,s=1整屏左移。
  10. for(i=12;i>0;i--)
  11. {
  12. LcdWriteData(0x20);
  13. IFG1 &=~ WDTIFG;
  14. while(!(IFG1 & WDTIFG));
  15. IFG1 &=~ WDTIFG;
  16. }
  17. while (1)
  18. {
  19. LcdWriteCommand(0x05,1);     //0x05表示n=0,s=1整屏右移。
  20. for(i=24;i>0;i--)
  21. {
  22. LcdWriteData(0x20);
  23. IFG1&=~WDTIFG;
  24. while(!(IFG1&WDTIFG));
  25. IFG1&=~WDTIFG;
  26. }
  27. LcdWriteCommand(0x07,1);
  28. for(i=24;i>0;i--)
  29. {
  30. LcdWriteData(0x20);
  31. IFG1&=~WDTIFG;
  32. while(!(IFG1&WDTIFG));
  33. IFG1&=~WDTIFG;
  34. }
  35. }
  36. }
复制代码


cry1602.c子程序   
  1. #include "msp430g2553.h"
  2. #include "cry1602.h"
  3. #define datadir P1DIR
  4. #define dataport P1OUT
  5. #define busy 0x80
  6. #define ctr1dir P2DIR
  7. #define CLR_RS P2OUT&=~BIT0;
  8. #define SET_RS P2OUT|=BIT0;
  9. #define CLR_RW P2OUT&=~BIT1;
  10. #define SET_RW P2OUT|=BIT1;
  11. #define CLR_EN P2OUT&=~BIT2;
  12. #define SET_EN P2OUT|=BIT2;
  13. void DispStr(uchar x,uchar y,uchar *ptr)
  14. {
  15.   uchar *temp;
  16.   uchar i,n=0;
  17.   temp=ptr;
  18.   while(*ptr++!='\0')
  19.     n++;
  20.   for(i=0;i<n;i++)
  21.   {Disp1Char(x++,y,temp[i]);
  22.   if(x==0x0f)
  23.   {
  24.     x=0;
  25.     y^=1;
  26.   }
  27.   }
  28. }
  29. void DispNChar(uchar x,uchar y,uchar n,uchar *ptr)
  30. {uchar i;
  31. for(i=0;i<n;i++)
  32. {
  33.   Disp1Char(x++,y,ptr[i]);
  34.   if(x==0x0f)
  35.   {x=0;
  36.   y^=1;
  37.   }}}
  38. void LocateXY(uchar x,uchar y)
  39. {
  40.   uchar temp;
  41.   temp=x&0x0f;
  42.   y&=0x01;
  43.   if(y)
  44.     temp|=0x40;
  45.   temp|=0x80;
  46.   LcdWriteCommand(temp,1);
  47. }
  48. void Disp1Char(uchar x,uchar y,uchar data)
  49. {LocateXY(x,y);
  50. LcdWriteData(data);
  51. }
  52. void LcdReset(void)
  53. {ctr1dir|=0x07;
  54. datadir=0xff;
  55. LcdWriteCommand(0x38,0);
  56. Delay5ms();
  57. LcdWriteCommand(0x38,0);
  58. Delay5ms();
  59. LcdWriteCommand(0x38,0);
  60. Delay5ms();
  61. LcdWriteCommand(0x38,1);
  62. LcdWriteCommand(0x08,1);
  63. LcdWriteCommand(0x01,1);  
  64. LcdWriteCommand(0x06,1);  
  65.   LcdWriteCommand(0x0c,1);
  66. }
  67. void LcdWriteCommand(uchar cmd,uchar chk)
  68. {
  69.   if(chk)
  70.     WaitForEnable();
  71.   CLR_RS;
  72.   CLR_RW;
  73.   _NOP();
  74.   dataport=cmd;
  75.   _NOP();
  76.   SET_EN;
  77.   _NOP();
  78.   _NOP();
  79. CLR_EN;
  80. }
  81. void LcdWriteData(uchar data)
  82. {
  83.   WaitForEnable();
  84.   SET_RS;
  85.   CLR_RW;
  86.   _NOP();
  87.   dataport=data;
  88.   _NOP();
  89. SET_EN;
  90. _NOP();
  91. _NOP();
  92. CLR_EN;
  93. }
  94. void WaitForEnable(void)
  95. {
  96. P1DIR&=0X00;
  97. CLR_RS;
  98. SET_RW
  99. _NOP();
  100. SET_EN;
  101. _NOP();
  102. _NOP();
  103. while((P1IN&busy)!=0);
  104. CLR_EN;
  105. P1DIR|=0xff;
  106. }
  107. void Delay5ms(void)
  108. {
  109.   uint i=40000;
  110.   while(i!=0)
  111.   {i--;}
  112. }
复制代码

  
cry1602.h  子程序头文件
  1. #ifndef _CRY1602_H
  2. #define _CRY1602_H
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void DispStr(uchar x,uchar y,uchar *ptr);
  6. void DispNChar(uchar x,uchar y,uchar n,uchar *ptr);
  7. void LocateXY(uchar x,uchar y);
  8. void Disp1Char(uchar x,uchar y,uchar data);
  9. void LcdReset(void);
  10. void LcdWriteCommand(uchar cmd,uchar chk);
  11. void LcdWriteData(uchar data);
  12. void WaitForEnable(void);
  13. void Delay5ms(void);
  14. #endif
复制代码

以上资料51hei下载地址:
MSP430G2553和LCD1602显示的正确程序.doc (35 KB, 下载次数: 23)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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