找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2687|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

LCD1602A-5V使用說明和程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:427921 發(fā)表于 2018-11-29 15:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. //#include <at89x51.h>

  4. sbit LCD_RS=P1^0;//定義引腳
  5. sbit LCD_RW=P1^1;
  6. sbit LCD_E=P1^2;
  7. #define LCD_Data P2
  8. #define Busy    0x80 //用于檢測LCD狀態(tài)字中的Busy標(biāo)識(shí)



  9. void WriteDataLCD(unsigned char WDLCD);
  10. void WriteCommandLCD(unsigned char WCLCD,BuysC);
  11. unsigned char ReadDataLCD(void);
  12. unsigned char ReadStatusLCD(void);
  13. void LCDInit(void);
  14. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
  15. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
  16. void Delay5Ms(void);
  17. void Delay400Ms(void);


  18. unsigned char code uctech[] = {"ic2012.taobao.co"};
  19. unsigned char code net[] = {"Happy every day!"};

  20. void main(void)
  21. {
  22. Delay400Ms(); //啟動(dòng)等待,等LCD講入工作狀態(tài)
  23. LCDInit(); //LCM初始化
  24. Delay5Ms(); //延時(shí)片刻(可不要)

  25. DisplayListChar(0, 0, uctech);
  26. DisplayListChar(0, 5, net);
  27. ReadDataLCD();//測試用句無意義
  28. while(1);
  29. }

  30. //寫數(shù)據(jù)
  31. void WriteDataLCD(unsigned char WDLCD)
  32. {
  33. ReadStatusLCD(); //檢測忙
  34. LCD_Data = WDLCD;
  35. LCD_RS = 1;
  36. LCD_RW = 0;
  37. LCD_E = 0; //若晶振速度太高可以在這后加小的延時(shí)
  38. LCD_E = 0; //延時(shí)
  39. LCD_E = 1;
  40. }

  41. //寫指令
  42. void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC為0時(shí)忽略忙檢測
  43. {
  44. if (BuysC) ReadStatusLCD(); //根據(jù)需要檢測忙
  45. LCD_Data = WCLCD;
  46. LCD_RS = 0;
  47. LCD_RW = 0;
  48. LCD_E = 0;
  49. LCD_E = 0;
  50. LCD_E = 1;
  51. }

  52. //讀數(shù)據(jù)
  53. unsigned char ReadDataLCD(void)
  54. {
  55. LCD_RS = 1;
  56. LCD_RW = 1;
  57. LCD_E = 0;
  58. LCD_E = 0;
  59. LCD_E = 1;
  60. return(LCD_Data);
  61. }

  62. //讀狀態(tài)
  63. unsigned char ReadStatusLCD(void)
  64. {
  65. LCD_Data = 0xFF;
  66. LCD_RS = 0;
  67. LCD_RW = 1;
  68. LCD_E = 0;
  69. LCD_E = 0;
  70. LCD_E = 1;
  71. while (LCD_Data & Busy); //檢測忙信號(hào)
  72. return(LCD_Data);
  73. }

  74. void LCDInit(void) //LCM初始化
  75. {
  76. LCD_Data = 0;
  77. WriteCommandLCD(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號(hào)
  78. Delay5Ms();
  79. WriteCommandLCD(0x38,0);
  80. Delay5Ms();
  81. WriteCommandLCD(0x38,0);
  82. Delay5Ms();

  83. WriteCommandLCD(0x38,1); //顯示模式設(shè)置,開始要求每次檢測忙信號(hào)
  84. WriteCommandLCD(0x08,1); //關(guān)閉顯示
  85. WriteCommandLCD(0x01,1); //顯示清屏
  86. WriteCommandLCD(0x06,1); // 顯示光標(biāo)移動(dòng)設(shè)置
  87. WriteCommandLCD(0x0C,1); // 顯示開及光標(biāo)設(shè)置
  88. }

  89. //按指定位置顯示一個(gè)字符
  90. void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  91. {
  92. Y &= 0x1;
  93. X &= 0xF; //限制X不能大于15,Y不能大于1
  94. if (Y) X |= 0x40; //當(dāng)要顯示第二行時(shí)地址碼+0x40;
  95. X |= 0x80; // 算出指令碼
  96. WriteCommandLCD(X, 0); //這里不檢測忙信號(hào),發(fā)送地址碼
  97. WriteDataLCD(DData);
  98. }

  99. //按指定位置顯示一串字符
  100. void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
  101. {
  102. unsigned char ListLength;

  103.   ListLength = 0;
  104. Y &= 0x1;
  105. X &= 0xF; //限制X不能大于15,Y不能大于1
  106. while (DData[ListLength]>=0x20) //若到達(dá)字串尾則退出
  107.   {
  108.    if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF
  109.     {
  110.      DisplayOneChar(X, Y, DData[ListLength]); //顯示單個(gè)字符
  111.      ListLength++;
  112.      X++;
  113.     }
  114.   }
  115. }

  116. //5ms延時(shí)
  117. void Delay5Ms(void)
  118. {
  119. unsigned int TempCyc = 5552;
  120. while(TempCyc--);
  121. }

  122. //400ms延時(shí)
  123. void Delay400Ms(void)
  124. {
  125. unsigned char TempCycA = 5;
  126. unsigned int TempCycB;
  127. while(TempCycA--)
  128. {
  129.   TempCycB=7269;
  130.   while(TempCycB--);
  131. };
  132. }
復(fù)制代碼


LCD1602A-5V廠家說明書.pdf

348.56 KB, 下載次數(shù): 39, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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