找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3871|回復(fù): 0
收起左側(cè)

LCD1602頭文件下載用于MSP430單片機

[復(fù)制鏈接]
ID:99638 發(fā)表于 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;                        //設(shè)置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;                        //設(shè)置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. * 說明:設(shè)置顯示地址
  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. * 說明:寫入數(shù)據(jù)
  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豎坐標(biāo),Y橫坐標(biāo)
  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豎坐標(biāo),y為橫坐標(biāo)
  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延時函數(shù)
  170. *
  171. ****************************************/

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

  176. /*****************************************
  177. *
  178. *               N us延時函數(shù)
  179. *


  180. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復(fù)制代碼

所有資料51hei提供下載:
LCD1602頭文件.rar (1.31 KB, 下載次數(shù): 32)




回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表