欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5534|回復: 11
打印 上一主題 下一主題
收起左側

PCF8574 STC15單片機的驅動程序 LCD1602顯示

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

制作出來的實物圖如下:


單片機源程序如下:
  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 無數據
  49. if(!IICCheckAck()){return(0);}
  50. mmp=tmp|CSReset|COMSet;
  51. IICSend(mmp);                  //EN=0 RS.RW=0 有數據(高四位)
  52. if(!IICCheckAck()){return(0);}
  53. mmp|=CSSet;                    //EN=1 RS.RW=0 有數據(高四位)
  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 有數據(低四位)
  62. if(!IICCheckAck()){return(0);}
  63. mmp|=CSSet;                    //EN=1 RS.RW=0 有數據(低四位)
  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 無數據
  80. if(!IICCheckAck()){return(0);}
  81. mmp=tmp|CSReset|DATSet;
  82. IICSend(mmp);                  //EN=0 RS.RW=0 有數據(高四位)
  83. if(!IICCheckAck()){return(0);}
  84. mmp|=CSSet;                    //EN=1 RS.RW=0 有數據(高四位)
  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 有數據(低四位)
  93. if(!IICCheckAck()){return(0);}
  94. mmp|=CSSet;                    //EN=1 RS.RW=0 有數據(低四位)
  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. }
復制代碼


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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

無效樓層,該帖已經被刪除
地板
ID:363580 發表于 2019-5-5 21:40 | 只看該作者
有人啦,雖然看不懂
回復

使用道具 舉報

5#
ID:429531 發表于 2019-9-26 10:18 | 只看該作者
正在研究這個  拿走研究去咯
回復

使用道具 舉報

6#
ID:67274 發表于 2020-3-31 20:09 | 只看該作者
stc15f104e應該能用吧?
回復

使用道具 舉報

7#
ID:647972 發表于 2020-4-27 09:47 | 只看該作者
好復雜啊,有沒有簡單一點的
回復

使用道具 舉報

8#
ID:510861 發表于 2020-7-30 19:42 | 只看該作者
感覺好難
回復

使用道具 舉報

9#
ID:795106 發表于 2020-11-30 18:14 | 只看該作者
晶振是多少
回復

使用道具 舉報

10#
ID:466381 發表于 2021-2-3 11:22 | 只看該作者

11.0592M
回復

使用道具 舉報

11#
ID:748788 發表于 2021-8-4 17:44 | 只看該作者
不錯,一次成功,感謝樓主的無私奉獻。12m晶振不行
回復

使用道具 舉報

12#
無效樓層,該帖已經被刪除
13#
無效樓層,該帖已經被刪除
14#
無效樓層,該帖已經被刪除
15#
ID:1004642 發表于 2022-2-10 15:10 | 只看該作者
正在找這玩意,真合適
回復

使用道具 舉報

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

使用道具 舉報

17#
無效樓層,該帖已經被刪除
18#
無效樓層,該帖已經被刪除
19#
無效樓層,該帖已經被刪除
20#
無效樓層,該帖已經被刪除
21#
無效樓層,該帖已經被刪除
22#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表