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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

LCD1602液晶顯示程序 帶詳細(xì)注釋

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 2014-12-30 01:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<reg52.h>
  2. #include<intrins.h>  //包含_nop_()函數(shù)的頭文件
  3. sbit RS=P2^0;  //將RS定義為P2^0
  4. sbit RW=P2^1;  //將RW定義為P2^1
  5. sbit E=P2^2; //將E定義為P2^2
  6. sbit BF=P0^7; //將BF定義為P0^7
  7. unsigned char code User[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00};//自定義字符℃
  8. unsigned char str1[]="FREEDOM";
  9. unsigned char str2[]="zhengzhongjie";
  10. /************************************
  11. 函數(shù)功能:1ms基準(zhǔn)延時(shí)
  12. 入口參數(shù):n
  13. ************************************/

  14. void delay1ms(unsigned int n )
  15. {
  16. unsigned char i;
  17. while(n--)
  18.   for(i=0;i<115;i++);
  19. }
  20. /************************************
  21. 函數(shù)功能:判斷液晶的忙碌狀態(tài)
  22. 返回值:result=1,忙碌;result=0,不忙
  23. ************************************/
  24. bit BusyTest()
  25. {
  26. bit result;
  27. RS=0;  //讀狀態(tài)時(shí),RS=0,RW=1,E=1
  28. RW=1;
  29. E=1;
  30. _nop_(); //延時(shí)一個(gè)時(shí)鐘周期
  31. _nop_();
  32. _nop_();
  33. _nop_(); //4個(gè)周期延時(shí),給硬件反應(yīng)時(shí)間
  34. result=BF;
  35. E=0;  //將E置0,不允許讀
  36. return result;
  37. }
  38. /************************************
  39. 函數(shù)功能:將模式設(shè)置指令或顯示地址送入液晶
  40. 入口參數(shù):dictate
  41. ************************************/
  42. void Write_com(unsigned char dictate)
  43. {
  44. while(BusyTest()==1);  //如果忙就等待
  45. RS=0;      //寫指令時(shí),RS=0.RW=0,E=負(fù)跳變
  46. RW=0;
  47. E=1;   //先將E拉高
  48. _nop_();  
  49. _nop_();     //給硬件反應(yīng)時(shí)間
  50. P0=dictate; //將數(shù)據(jù)送入P0口,即指令或地址
  51. _nop_();
  52. _nop_();
  53. _nop_();
  54. _nop_();    //反應(yīng)時(shí)間
  55. E=0;     //當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令
  56. }
  57. /************************************
  58. 函數(shù)功能:指定字符顯示的實(shí)際地址
  59. 入口參數(shù):x
  60. ************************************/
  61. void WriteAddress(unsigned char x)
  62. {
  63. Write_com(x|0x80);   //顯示位置的確定方法為“0x80+地址碼x”
  64. }
  65. /************************************
  66. 函數(shù)功能:將數(shù)據(jù)(ASKII碼)寫入液晶模塊
  67. 入口參數(shù):y(字符常量)
  68. ************************************/
  69. void WriteData(unsigned char y)
  70. {
  71. while(BusyTest()==1); //如果忙碌就等待
  72. RS=1;       //寫數(shù)據(jù)時(shí)RS=1,RW=0,E=負(fù)跳變
  73. RW=0;
  74. E=1;    //先將E拉高
  75. P0=y;
  76. _nop_();
  77. _nop_();
  78. _nop_();
  79. _nop_();  //反應(yīng)時(shí)間
  80. E=0;     //當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令
  81. }
  82. /************************************
  83. 函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化
  84. ************************************/
  85. void LcdInt()
  86. {
  87. delay1ms(15);    //首次寫指令時(shí)給LCD一段較長(zhǎng)的反應(yīng)時(shí)間
  88. Write_com(0x38);   //顯示模式設(shè)置:16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)總線
  89. delay1ms(5);
  90. Write_com(0x38);
  91. delay1ms(5);
  92. Write_com(0x38);
  93. delay1ms(5);     //3次寫 設(shè)置模式
  94. Write_com(0x0f); //顯示模式設(shè)置:顯示開,有光標(biāo),光標(biāo)閃爍
  95. delay1ms(5);
  96. Write_com(0x06);  //顯示模式設(shè)置:光標(biāo)右移,字符不移
  97. delay1ms(5);
  98. Write_com(0x01);  //清屏
  99. delay1ms(5);

  100. }
  101. //主函數(shù)
  102. void main()
  103. {
  104. unsigned char i,j;
  105. LcdInt();   //調(diào)用LCD初始化函數(shù)
  106. delay1ms(10);
  107. while(1){
  108.   Write_com(0x01); // 清屏
  109.   delay1ms(5);
  110.   WriteAddress(0x05);  //設(shè)置顯示位置為第1行,第6個(gè)位置
  111.   delay1ms(5);
  112.   i=0;
  113.   for(;str1[i]!='\0';i++){
  114.    WriteData(str1[i]);  // 顯示字符"FREEDOM"
  115.    delay1ms(100);
  116.   }
  117.   WriteAddress(0x41);  // 設(shè)置顯示位置為第2行,第2個(gè)位置
  118.   i=0;
  119.   for(;str2[i]!='\0';i++){
  120.    WriteData(str2[i]);    // 顯示字符"zhengzhongjie"
  121.    delay1ms(100);
  122.   }
  123.   delay1ms(3000);
  124.   //右側(cè)移位進(jìn)來   
  125.   Write_com(0x01);    //清屏
  126.   delay1ms(5);
  127.   WriteAddress(0x15);    // 設(shè)置顯示位置為第1行,第22個(gè)位置
  128.   delay1ms(5);
  129.   i=0;
  130.   for(;str1[i]!='\0';i++){
  131.    WriteData(str1[i]);
  132.    delay1ms(100);
  133.   }
  134.   WriteAddress(0x51);    // 設(shè)置顯示位置為第2行,第18個(gè)位置
  135.   delay1ms(5);
  136.   i=0;
  137.   for(;str2[i]!='\0';i++){
  138.    WriteData(str2[i]);
  139.    delay1ms(100);
  140.   }
  141.   for(j=0;j<16;j++){    //左移指令
  142.    Write_com(0x18);
  143.    delay1ms(300);
  144.   }
  145.   delay1ms(3000);
  146.   //關(guān)閉顯示
  147.   Write_com(0x08);
  148.   delay1ms(5);
  149.   delay1ms(3000);
  150.   //開啟顯示
  151.   Write_com(0x0f);
  152.   delay1ms(5);
  153.   delay1ms(3000);
  154.   //右移,移出
  155.   for(j=0;j<16;j++){
  156.    Write_com(0x1c);
  157.    delay1ms(300);
  158.   }
  159.   delay1ms(3000);
  160.   //顯示一個(gè)自定義的字符℃
  161.   Write_com(0x40);   //設(shè)置CGRAM地址
  162.   delay1ms(5);
  163.   for(j=0;j<8;j++){
  164.    WriteData(User[j]); //寫入℃
  165.    delay1ms(5);
  166.   }
  167.   WriteAddress(0x05);  //設(shè)定屏幕上的顯示位置
  168.   WriteData(0x00); //因?yàn)閳?zhí)行過Write_com(0x40),默認(rèn)從CGRAM取出℃
  169.   delay1ms(3000);
  170. }
  171. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:186936 發(fā)表于 2017-4-9 13:59 | 只看該作者
程序沒錯(cuò)誤,但是不顯示,語法有錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区国产在线 | 91久久国产精品 | a视频在线观看 | 中文字幕在线看人 | 成人精品久久久 | 亚洲性爰 | 国产日韩欧美综合 | 国产黄a一级 | 国产免费观看久久黄av片涩av | 成年人黄色一级片 | 欧美久久一区 | 精品一区二区三区四区视频 | 亚洲伊人精品酒店 | 日韩国产欧美 | 日韩在线观看视频一区 | 国家一级黄色片 | 91精品久久久久久久久99蜜臂 | 毛片高清 | 亚洲美乳中文字幕 | 国产成人综合一区二区三区 | 欧美精品一区二区三区在线 | 欧美一区二区三区在线播放 | 97精品国产97久久久久久免费 | 色小姐综合网 | 久久久久久免费毛片精品 | 自拍偷拍视频网 | 自拍偷拍av| 黄色网址在线免费观看 | 欧美日韩久久精品 | 麻豆国产一区二区三区四区 | 久久久亚洲精品视频 | 亚洲网站在线观看 | 91在线看片 | 日日操日日干 | 欧美一区二区免费在线 | 日本成人三级电影 | 欧美日韩精品中文字幕 | 欧美成人精品 | av二区三区 | 国产亚洲精品久久午夜玫瑰园 | 国产性生活一级片 |