找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1857|回复: 0
打印 上一主题 下一主题
收起左侧

CCS中MSP430F5529驱动LCD1602源程序

[复制链接]
跳转到指定楼层
楼主
ID:426770 发表于 2021-4-21 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <msp430.h>
  2. #include <string.h>
  3. #include <LCD1602.h>
  4. #define CPU_F ((double)8000000)
  5. #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  6. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
  7. #define DataDir     P3DIR
  8. #define DataPort    P3OUT
  9. #define Busy        0x80
  10. #define CtrlDir     P1DIR
  11. #define CLR_RS P1OUT&=~BIT3;    //RS = P1.3
  12. #define SET_RS P1OUT|=BIT3;
  13. #define CLR_RW P1OUT&=~BIT4;    //RW = P1.4
  14. #define SET_RW P1OUT|=BIT4;
  15. #define CLR_EN P1OUT&=~BIT5;    //EN = P1.5
  16. #define SET_EN P1OUT|=BIT5;
  17. void Disp1Char(unsigned char data)
  18. {
  19.     LCD1602_WriteDATA(data);
  20. }
  21. void DispStr(unsigned char *ptr)
  22. {
  23.     unsigned char i,n;
  24.     n=strlen(ptr);
  25.     for (i=0;i<n;i++)
  26.     {
  27.         Disp1Char(ptr[i]);
  28.     }
  29. }
  30. void LCD1602_WriteCMD(unsigned char cmd)
  31. {
  32.         CLR_EN;
  33.         CLR_RS;     //指令
  34.         CLR_RW;     //写
  35.         DataPort=cmd;   //指令数据传到P0口待发送给LCD1602
  36.         delay_ms(1);
  37.         SET_EN;     //LCD1602使能口
  38.         delay_ms(10);
  39.         CLR_EN;     //产生下降沿
  40.         delay_ms(10);
  41. }
  42. void LCD1602_WriteDATA(unsigned char Data)
  43.     {
  44.         DataPort=Data;
  45.         SET_RS;
  46.         CLR_RW;
  47.         SET_EN;
  48.         CLR_EN;
  49.         delay_ms(10);
  50.     }
  51. void LCD1602_Initi()
  52.     {
  53.         CtrlDir |= 0x38;        //控制线端口设为输出状态
  54.         DataDir  = 0xff;
  55.         LCD1602_WriteCMD(0x38); //  置功能,8位总线,双行显示,显示5X7的点阵字符
  56.         LCD1602_WriteCMD(0x0f); //  显示开关控制,开显示, 有光标,闪烁
  57.         LCD1602_WriteCMD(0x06); //  光标和显示位置设置,  光标移动方向右移,屏幕上所有文字不动
  58.         LCD1602_WriteCMD(0x01); //  清显示,指令码01H,光标复位到地址00H位置
  59.         delay_ms(10);
  60.     }
复制代码



  1. /*
  2. * LCD1602.h
  3. *
  4. *  Created on: 2018年6月3日
  5. *      Author: Sunnl
  6. */

  7. #ifndef LCD1602_H_
  8. #define LCD1602_H_
  9. #include <msp430.h>
  10. void Disp1Char(unsigned char data);
  11. void DispStr(unsigned char *ptr);
  12. void LCD1602_WriteCMD(unsigned char cmd);
  13. void LCD1602_WriteDATA(unsigned char Data);
  14. void LCD1602_Initi();
  15. #endif
  16. /* LCD1602_H_ */



  17. #include <msp430.h>
  18. #include "LCD1602.h"
  19. unsigned char s[]="LCD1602Test";
  20. int main(void)
  21. {
  22.     WDTCTL = WDTPW | WDTHOLD;
  23.     LCD1602_Initi();
  24.     LCD1602_WriteCMD(0x80);
  25.     DispStr(s);
  26.     return 0;
  27. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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