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

標(biāo)題: PCF8574 STC15單片機(jī)的驅(qū)動(dòng)程序 LCD1602顯示 [打印本頁(yè)]

作者: 天藍(lán)色的Toto    時(shí)間: 2019-4-14 14:01
標(biāo)題: PCF8574 STC15單片機(jī)的驅(qū)動(dòng)程序 LCD1602顯示
去網(wǎng)上找了很多的的1602程序,結(jié)果要么全是ARDUINO和STM32,要么沒一個(gè)靠譜的,所以決定自己寫,測(cè)了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)



作者: 天藍(lán)色的Toto    時(shí)間: 2019-4-15 09:44
咋沒人(自己搶沙發(fā))
作者: 555555.XY    時(shí)間: 2019-5-5 21:40
有人啦,雖然看不懂
作者: jiacai    時(shí)間: 2019-9-26 10:18
正在研究這個(gè)  拿走研究去咯
作者: a461624201    時(shí)間: 2020-3-31 20:09
stc15f104e應(yīng)該能用吧?
作者: tyz535    時(shí)間: 2020-4-27 09:47
好復(fù)雜啊,有沒有簡(jiǎn)單一點(diǎn)的
作者: 欣語寶貝    時(shí)間: 2020-7-30 19:42
感覺好難
作者: 努力修煉    時(shí)間: 2020-11-30 18:14
晶振是多少

作者: 天藍(lán)色的Toto    時(shí)間: 2021-2-3 11:22
努力修煉 發(fā)表于 2020-11-30 18:14
晶振是多少

11.0592M
作者: wwh2382    時(shí)間: 2021-8-4 17:44
不錯(cuò),一次成功,感謝樓主的無私奉獻(xiàn)。12m晶振不行
作者: 九頭蛇    時(shí)間: 2022-2-10 15:10
正在找這玩意,真合適
作者: tttjoe    時(shí)間: 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).




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1