找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602头文件下载用于MSP430单片机

[复制链接]
ID:99638 发表于 2017-7-14 08:45 | 显示全部楼层 |阅读模式
LCD1602头文件的源代码
0.png

LCD1602头文件的MSP430单片机源程序如下:
  1. /*********************************************************************
  2. * 作者:Z_XXX
  3. * 版本:v1.0(测试版本)
  4. *************************************************************************/

  5. #include<MSP430G2553.H>
  6. #include <intrinsics.h>
  7. #include<msp430.h>

  8. #define RS_HIGH P2OUT|=BIT0
  9. #define RS_LOW  P2OUT&=~BIT0
  10. #define RW_HIGH P2OUT|=BIT1
  11. #define RW_LOW  P2OUT&=~BIT1
  12. #define E_HIGH  P2OUT|=BIT2
  13. #define E_LOW   P2OUT&=~BIT2
  14. #define Lcd_Data_Port P1OUT



  15. void delay_nms(unsigned int n);
  16. void delay_1ms(void);
  17. void WaitForE();
  18. void Lcd_Com(unsigned char CMD);
  19. void Lcd_Clear();
  20. void Init_Lcd();
  21. void Lcd_Write_Data(unsigned char DATA);
  22. void Init_Port();
  23. void Lcd_XY(unsigned char x, unsigned char y );
  24. void Lcd_en_write1(void);
  25. void Lcd_en_write2(void);
  26. void delay_nus(unsigned int n);
  27. void delay_1us(void);
  28. void Lcd_Write_StrSetXY(unsigned char x,unsigned char y,unsigned char *p);
  29. void Lcd_Write_DataSetXY(unsigned char x,unsigned char y,unsigned char data);
  30. void Lcd_Write_Str(unsigned char *p);
  31. unsigned char sig[] = {"BOwen"};
  32. unsigned char sig1[] = {"BOwen"};
  33. unsigned char a = 'a';



  34. /*****************************************************
  35. * 说明:端口初始化
  36. *                 P2.0 P2.1 P2.2
  37. *                 RS   RW   E
  38. *                 P1.7 P1.6 P1.5 P1.4
  39. *                 DB7  DB6  DB5  DB4
  40. * 返回值:空
  41. *****************************************************/
  42. void Init_Port()
  43. {
  44.         P1DIR |= BIT7+BIT6+BIT5+BIT4;                        //设置P1口全部为输出口
  45.         P2DIR |= BIT0+BIT1+BIT2;

  46.         delay_nms(50);
  47.         Lcd_Com(0x30);
  48.         delay_nms(50);
  49.         Lcd_Com(0x30);
  50.         delay_nms(5);
  51.         Lcd_Com(0x30);
  52.         delay_nms(500);

  53. }
  54. /*****************************************************
  55. * 说明:LCD初始化
  56. *****************************************************/
  57. void Init_Lcd()
  58. {
  59.         //Init_Port();
  60.         P1DIR |= BIT7+BIT6+BIT5+BIT4;                        //设置P1口全部为输出口
  61.         P2DIR |= BIT0+BIT1+BIT2;
  62.         delay_nms(10);

  63.         Lcd_Com(0X28);                                //四位接口
  64.         delay_nms(50);
  65.         Lcd_Com(0X28);
  66.         delay_nms(50);
  67.         Lcd_Com(0X28);
  68.         delay_nms(50);
  69.         Lcd_en_write2();
  70.         delay_nms(50);

  71.         //WaitForE();
  72.         Lcd_Com(0X28);
  73.         delay_nms(500);

  74.         Lcd_Com(0x01);
  75.         Lcd_Com(0X0C);
  76.         Lcd_Com(0X06);

  77.         delay_nms(50);

  78. }
  79. /**************************************************
  80. *说明:写入指令
  81. **************************************************/
  82. void Lcd_Com(unsigned char CMD)
  83. {
  84.         RS_LOW;
  85.         RW_LOW;
  86.         P1SEL = 0X00;
  87.         Lcd_en_write1();
  88.         Lcd_Data_Port &= 0X0F;
  89.         Lcd_Data_Port |= CMD&0XF0;
  90.         delay_nms(16);
  91.         Lcd_en_write2();

  92.         CMD = CMD<<4;
  93.         Lcd_en_write1();
  94.         Lcd_Data_Port &= 0X0F;
  95.         Lcd_Data_Port |= CMD&0XF0;
  96.         Lcd_en_write2();
  97.         //P2SEL


  98. }
  99. /***********************************************
  100. * 说明:清屏操作
  101. *************************************************/
  102. void Lcd_Clear()
  103. {
  104.         Lcd_Com(0X01);
  105. }
  106. /****************************************************
  107. * 说明:设置显示地址
  108. *****************************************************/
  109. void Lcd_XY(unsigned char x,unsigned char y)
  110. {
  111.         unsigned char address;
  112.         if (y == 0)    address = 0x80 + x;
  113.         else          address = 0xC0 + x;
  114.         Lcd_Com(address);
  115. }
  116. /****************************************************************
  117. * 说明:写入数据
  118. ****************************************************************/
  119. void Lcd_Write_Data(unsigned char DATA)
  120. {
  121.         RS_HIGH;
  122.         RW_LOW;
  123.         P1SEL = 0X00;
  124.         Lcd_en_write1();
  125.         Lcd_Data_Port &= 0X0F;//清空高四位
  126.         Lcd_Data_Port |= DATA & 0XF0;//送入高四位


  127.         delay_nms(16);
  128.         Lcd_en_write2();

  129.         DATA = DATA<<4;
  130.         Lcd_en_write1();
  131.         Lcd_Data_Port &=0X0F;
  132.         Lcd_Data_Port |= DATA&0XF0;
  133.         Lcd_en_write2();

  134. }
  135. /*********************************************************************************
  136. * 说明:写入单个字符,X竖坐标,Y横坐标
  137. *******************************************************************************/
  138. void Lcd_Write_DataSetXY(unsigned char x,unsigned char y,unsigned char data)
  139. {
  140.         Lcd_XY(x,y);
  141.         delay_nms(20);
  142.         Lcd_Write_Data(data);
  143. }
  144. /******************************************************************************
  145. * 说明:写入字符串,不指定地址
  146. ****************************************************************************/
  147. void Lcd_Write_Str(unsigned char *p)
  148. {
  149.         while(*p)
  150.         {
  151.                 Lcd_Write_Data(*p);
  152.                         p++;
  153.         }
  154. }
  155. /***********************************************************************
  156. * 说明:写入字符串,x为1602竖坐标,y为横坐标
  157. ************************************************************************/
  158. void Lcd_Write_StrSetXY(unsigned char x,unsigned char y,unsigned char *p)
  159. {
  160.         Lcd_XY(x,y);
  161.         while(*p)
  162.         {
  163.         Lcd_Write_Data(*p);
  164.                 p++;
  165.         }
  166. }
  167. /*****************************************
  168. *
  169. *               1us延时函数
  170. *
  171. ****************************************/

  172. void delay_1us(void)
  173. {
  174.    asm("nop");
  175. }

  176. /*****************************************
  177. *
  178. *               N us延时函数
  179. *


  180. …………限于本文篇幅 余下代码请从51黑下载附件…………

复制代码

所有资料51hei提供下载:
LCD1602头文件.rar (1.31 KB, 下载次数: 32)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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