久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: LCD1602頭文件下載用于MSP430單片機 [打印本頁]

作者: 楊梓振    時間: 2017-7-14 08:45
標題: LCD1602頭文件下載用于MSP430單片機
LCD1602頭文件的源代碼


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)









歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 高清不卡毛片 | 日韩中文视频 | 久久精品91 | 激情一区二区三区 | 成人在线播放 | 偷拍亚洲色图 | 中文字幕一区二区三区精彩视频 | 亚洲成人午夜电影 | 欧美在线观看一区二区 | 一本久久a久久精品亚洲 | 中文字幕日韩欧美一区二区三区 | 国产线视频精品免费观看视频 | 久久日韩粉嫩一区二区三区 | 日本黄色片免费在线观看 | 国产粉嫩尤物极品99综合精品 | 国产精品乱码一区二三区小蝌蚪 | 中文字幕日韩一区 | 女女百合av大片一区二区三区九县 | www.国产精| 国产1区2区在线观看 | 美女国产一区 | 91视频在线看 | 成人在线视频网站 | 大象视频一区二区 | 四虎成人精品永久免费av九九 | 在线免费观看色 | 羞羞涩涩在线观看 | 九九在线视频 | 91免费在线| 久久久久国产精品 | 国产精品久久久久久久久久99 | 日韩视频国产 | 日本久久黄色 | 91av在线影院| 国产福利在线看 | 久久久久综合 | 国产美女一区二区三区 | 一区二区三区不卡视频 | 亚洲天堂av网 | 日韩国产在线 | 中文字幕乱码一区二区三区 |