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

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

QQ登錄

只需一步,快速開始

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

PCF8574 STC15單片機(jī)的驅(qū)動(dòng)程序 LCD1602顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
去網(wǎng)上找了很多的的1602程序,結(jié)果要么全是ARDUINO和STM32,要么沒一個(gè)靠譜的,所以決定自己寫,測了N久終于寫出來了,看上去效果不錯(cuò)哈哈哈哈!
(MCU是STC15F2K60S2)

制作出來的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. #include"pcf8574.h"

  2. #define WriteADDR 0x4e
  3. #define ReadADDR 0x4f
  4. #define u8 unsigned char
  5.         
  6. #define CSSet 0x04//EN=1
  7. #define CSReset  0x00//EN=0

  8. #define COMSet 0x08  // RS=0 RW=0
  9. #define DATSet 0x09  // RS=1 RW=0

  10. void delay_ms(u8 ms)   //誤差 0us
  11. {
  12.         while(ms--)
  13.         {
  14.     u8 a,b;
  15.     for(b=129;b>0;b--)
  16.                  for(a=45;a>0;a--);
  17.         }
  18. }

  19. bit PCFSendAByte(u8 addr,dat)
  20. {
  21. IICStart();
  22. IICSend(addr);
  23. if(!IICCheckAck()){return(0);}
  24. IICSend(dat);
  25. if(!IICCheckAck()){return(0);}
  26. IICStop();
  27. return(1);
  28. }        

  29. /*u8 PCFReadAByte(u8 addr)
  30. {
  31. u8 mmp;
  32. IICStart();
  33. IICSend(addr);
  34. IICSendAck(Ack);
  35. mmp=IICRead();
  36. IICSendAck(NoAck);
  37. IICStop();
  38. return(mmp);
  39. }



  40. /***************以下為1602****************/
  41. bit WriteCom1602(u8 com)
  42. {
  43. u8 tmp,mmp;
  44. IICStart();
  45. IICSend(WriteADDR);
  46. if(!IICCheckAck()){return(0);}
  47. tmp=com&0xf0;
  48. IICSend(CSReset|COMSet);       //EN=0 RS.RW=0 無數(shù)據(jù)
  49. if(!IICCheckAck()){return(0);}
  50. mmp=tmp|CSReset|COMSet;
  51. IICSend(mmp);                  //EN=0 RS.RW=0 有數(shù)據(jù)(高四位)
  52. if(!IICCheckAck()){return(0);}
  53. mmp|=CSSet;                    //EN=1 RS.RW=0 有數(shù)據(jù)(高四位)
  54. IICSend(mmp);
  55. if(!IICCheckAck()){return(0);}
  56. mmp&=(0xf0|COMSet);            
  57. IICSend(mmp);                  //EN=0
  58. if(!IICCheckAck()){return(0);}

  59. tmp=com<<4;
  60. mmp=tmp|CSReset|COMSet;
  61. IICSend(mmp);                  //EN=0 RS.RW=0 有數(shù)據(jù)(低四位)
  62. if(!IICCheckAck()){return(0);}
  63. mmp|=CSSet;                    //EN=1 RS.RW=0 有數(shù)據(jù)(低四位)
  64. IICSend(mmp);
  65. if(!IICCheckAck()){return(0);}
  66. mmp&=(0xf0|COMSet);            
  67. IICSend(mmp);                  //EN=0
  68. if(!IICCheckAck()){return(0);}

  69. IICStop();
  70. return(1);
  71. }

  72. bit WriteDat1602(u8 dat)
  73. {
  74. u8 tmp,mmp;
  75. IICStart();
  76. IICSend(WriteADDR);
  77. if(!IICCheckAck()){return(0);}
  78. tmp=dat&0xf0;
  79. IICSend(CSReset|DATSet);       //EN=0 RS.RW=0 無數(shù)據(jù)
  80. if(!IICCheckAck()){return(0);}
  81. mmp=tmp|CSReset|DATSet;
  82. IICSend(mmp);                  //EN=0 RS.RW=0 有數(shù)據(jù)(高四位)
  83. if(!IICCheckAck()){return(0);}
  84. mmp|=CSSet;                    //EN=1 RS.RW=0 有數(shù)據(jù)(高四位)
  85. IICSend(mmp);
  86. if(!IICCheckAck()){return(0);}
  87. mmp&=(0xf0|DATSet);            
  88. IICSend(mmp);                  //EN=0
  89. if(!IICCheckAck()){return(0);}

  90. tmp=dat<<4;
  91. mmp=tmp|CSReset|DATSet;
  92. IICSend(mmp);                  //EN=0 RS.RW=0 有數(shù)據(jù)(低四位)
  93. if(!IICCheckAck()){return(0);}
  94. mmp|=CSSet;                    //EN=1 RS.RW=0 有數(shù)據(jù)(低四位)
  95. IICSend(mmp);
  96. if(!IICCheckAck()){return(0);}
  97. mmp&=(0xf0|DATSet);            
  98. IICSend(mmp);                  //EN=0
  99. if(!IICCheckAck()){return(0);}

  100. IICStop();
  101. return(1);
  102. }

  103. void PCF1602Init()
  104. {
  105. WriteCom1602(0x28);
  106. delay_ms(15);
  107. WriteCom1602(0x28);
  108. delay_ms(15);
  109. WriteCom1602(0x28);
  110. delay_ms(15);
  111. PCFSendAByte(WriteADDR,0x04);
  112. delay_ms(15);
  113. WriteCom1602(0x28);
  114. WriteCom1602(0x0c);
  115. WriteCom1602(0x01);
  116. delay_ms(5);
  117. }

  118. void SetXY(u8 x,y)
  119. {
  120. u8 addr;
  121. addr=0x80+0x40*y+x;
  122. WriteCom1602(addr);
  123. }

  124. void StrinWrite(u8 x,y,u8 *string)
  125. {
  126. SetXY(x,y);
  127. while(*string)
  128. {
  129. WriteDat1602(*string++);
  130. }
  131. }
復(fù)制代碼


所有資料51hei提供下載:
PCF8574 1602.zip (42.4 KB, 下載次數(shù): 156)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

11#
ID:860399 發(fā)表于 2022-3-22 13:19 | 只看該作者
運(yùn)行顯示錯(cuò)誤欸mian.c(26): error C267: 'IICSend': requires ANSI-style prototype
mian.c - 1 Error(s), 3 Warning(s).
回復(fù)

使用道具 舉報(bào)

10#
ID:1004642 發(fā)表于 2022-2-10 15:10 | 只看該作者
正在找這玩意,真合適
回復(fù)

使用道具 舉報(bào)

9#
ID:748788 發(fā)表于 2021-8-4 17:44 | 只看該作者
不錯(cuò),一次成功,感謝樓主的無私奉獻(xiàn)。12m晶振不行
回復(fù)

使用道具 舉報(bào)

8#
ID:466381 發(fā)表于 2021-2-3 11:22 | 只看該作者
回復(fù)

使用道具 舉報(bào)

7#
ID:795106 發(fā)表于 2020-11-30 18:14 | 只看該作者
晶振是多少
回復(fù)

使用道具 舉報(bào)

6#
ID:510861 發(fā)表于 2020-7-30 19:42 | 只看該作者
感覺好難
回復(fù)

使用道具 舉報(bào)

5#
ID:647972 發(fā)表于 2020-4-27 09:47 | 只看該作者
好復(fù)雜啊,有沒有簡單一點(diǎn)的
回復(fù)

使用道具 舉報(bào)

地板
ID:67274 發(fā)表于 2020-3-31 20:09 | 只看該作者
stc15f104e應(yīng)該能用吧?
回復(fù)

使用道具 舉報(bào)

板凳
ID:429531 發(fā)表于 2019-9-26 10:18 | 只看該作者
正在研究這個(gè)  拿走研究去咯
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:363580 發(fā)表于 2019-5-5 21:40 | 只看該作者
有人啦,雖然看不懂
回復(fù)

使用道具 舉報(bào)

樓主
ID:466381 發(fā)表于 2019-4-15 09:44 來自觸屏版 | 只看該作者
咋沒人(自己搶沙發(fā))
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品一区二区三区久久久久 | 欧美成人精品激情在线观看 | www久久久 | 二区不卡| 免费的一级视频 | 国产丝袜一区二区三区免费视频 | 久久精品免费 | 91国产在线视频在线 | 精品视频在线播放 | 色欧美片视频在线观看 | 日韩视频国产 | 亚洲日韩中文字幕一区 | 亚洲女人的天堂 | 青青久在线视频 | 国产精品久久久久久久久久三级 | 中文字幕第5页 | 国产欧美日韩精品一区二区三区 | 电影91久久久 | 天天操天天玩 | 成人免费毛片片v | 久久久久久久成人 | jizz亚洲人| 免费视频一区 | 亚洲三区在线观看 | 日韩精品免费一区二区在线观看 | 亚洲精品在线免费观看视频 | 一区二区久久精品 | 精品欧美激情精品一区 | 国产成人免费视频网站高清观看视频 | 亚洲欧美精品 | 亚洲精品一 | 黄色毛片免费 | 伊人伊人伊人 | 中文字幕一区二区三区四区五区 | 久久久www成人免费精品 | 亚洲人成人一区二区在线观看 | 精品国产一区二区三区久久久蜜月 | 国产欧美视频一区二区 | 在线观看国产精品一区二区 | 成年人国产在线观看 | 亚洲日韩中文字幕一区 |