<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > ZLG7290矩陣鍵盤控制forMSP40

          ZLG7290矩陣鍵盤控制forMSP40

          作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏
          基于ZLG7290的矩陣鍵盤控制,適用于MSP430,采用中斷模式查詢按鍵。ZLG7290還具有數(shù)碼管顯示功能,本人水平有限,這里未能實現(xiàn)。
          [cpp]view plaincopyprint?
          1. /*****************************************************************
          2. //文件名:ZLG7290.c
          3. //描述:該文件定義與ZLG7290有關(guān)的各種接口、函數(shù),適用于MSP430F149
          4. //編寫人:小邪@清水
          5. //版本號:1.01
          6. *****************************************************************/
          7. #include"msp430x14x.h"
          8. #include"ZLG7290.h"
          9. /*****************************************************************
          10. //關(guān)于接口的一些定義
          11. //需要根據(jù)實際應用做出改變
          12. *****************************************************************/
          13. #defineIIC_Enable!(P2IN&BIT2)
          14. #defineSCL_UPPORTDIR&=~SCL
          15. #defineSDA_UPPORTDIR&=~SDA
          16. #defineSCL_DOWNPORTDIR|=SCL
          17. #defineSDA_DOWNPORTDIR|=SDA
          18. #definePORTDIRP3DIR//設(shè)置為P3口
          19. #definePORTINP3IN
          20. #definePORTOUTP3OUT
          21. #defineSDABIT0//設(shè)置SDA為Px.0
          22. #defineSCLBIT1//設(shè)置SCL為Px.1
          23. #defineRESBIT2//設(shè)置RES為P2.7(對應430的中斷)
          24. #defineCHIP0x70//ZLG7290的IIC地址
          25. /*************************************************************************
          26. //名稱:IIC_delay()
          27. //參數(shù):無
          28. //返回值:無
          29. //功能:完成IIC設(shè)置中所需要的延時
          30. *************************************************************************/
          31. voidIIC_delay()
          32. {
          33. inti;
          34. i=0xff;
          35. while(i)
          36. {
          37. i--;
          38. _NOP();
          39. }
          40. i=0xff;
          41. while(i)
          42. {
          43. i--;
          44. _NOP();
          45. }
          46. }
          47. /*************************************************************************
          48. //名稱:SendToBus()
          49. //參數(shù):要發(fā)送的數(shù)據(jù)
          50. //返回值:無
          51. //功能:向線上發(fā)送數(shù)據(jù)(SCL必須在進入函數(shù)前置為低)
          52. *************************************************************************/
          53. voidSendToBus(BYTEm)
          54. {
          55. BYTEi;
          56. for(i=0;i<8;i++)
          57. {
          58. if(m&0x80)
          59. SDA_UP;
          60. else
          61. SDA_DOWN;
          62. SCL_UP;
          63. IIC_delay();
          64. SCL_DOWN;
          65. m<<=1;
          66. }
          67. return;
          68. }
          69. /*************************************************************************
          70. //名稱:BackAns()
          71. //參數(shù):無
          72. //返回值:成功標志,若成功則為1,否則為0
          73. //功能:接收應答信號
          74. *************************************************************************/
          75. BYTEBackAns()
          76. {
          77. BYTEflag;
          78. SDA_UP;
          79. IIC_delay();
          80. SCL_UP;
          81. flag=0;
          82. IIC_delay();
          83. if((PORTIN&SDA))
          84. {
          85. flag=1;
          86. }
          87. SCL_DOWN;
          88. returnflag;
          89. }
          90. /*************************************************************************
          91. //名稱:Start()
          92. //參數(shù):無
          93. //返回值:無
          94. //功能:發(fā)送一個起始信號
          95. *************************************************************************/
          96. voidStart()
          97. {
          98. PORTOUT&=(~SCL)&(~SDA);
          99. SCL_UP;
          100. IIC_delay();
          101. SDA_UP;
          102. IIC_delay();
          103. SDA_DOWN;//開始位
          104. IIC_delay();
          105. SCL_DOWN;
          106. IIC_delay();
          107. }
          108. /*************************************************************************
          109. //名稱:Stop()
          110. //參數(shù):無
          111. //返回值:無
          112. //功能:發(fā)送一個停止信號
          113. *************************************************************************/
          114. voidStop()
          115. {
          116. SDA_DOWN;
          117. IIC_delay();
          118. SCL_UP;//停止位
          119. IIC_delay();
          120. SDA_UP;
          121. IIC_delay();
          122. SCL_DOWN;
          123. IIC_delay();
          124. }
          125. /*************************************************************************
          126. //名稱:Write_IIC_Byte()
          127. //參數(shù):data-待寫入的數(shù)據(jù),startaddr-待寫入的首地址
          128. //返回值:無
          129. //功能:向線上寫一個字節(jié)
          130. *************************************************************************/
          131. voidWrite_IIC_Byte(BYTEdata,BYTEstartaddr)
          132. {
          133. do
          134. {
          135. Start();
          136. SendToBus(CHIP);//選片地址
          137. if(BackAns())//從機的回答信息
          138. continue;
          139. SendToBus(startaddr);//選擇芯片上的內(nèi)在地址
          140. if(BackAns())
          141. continue;
          142. SendToBus(data);//傳輸數(shù)據(jù)
          143. if(!BackAns())
          144. break;
          145. }
          146. while(1);
          147. Stop();
          148. }
          149. /*************************************************************************
          150. //名稱:ReadFromBus()
          151. //參數(shù):無
          152. //返回值:讀出的數(shù)據(jù)
          153. //功能:從線上讀出數(shù)據(jù)
          154. *************************************************************************/
          155. BYTEReadFromBus()
          156. {
          157. inti,temp;
          158. temp=0;
          159. SDA_UP;//讀取數(shù)據(jù)之前要把SDA拉高
          160. IIC_delay();
          161. for(i=0;i<8;i++)
          162. {
          163. SCL_UP;
          164. IIC_delay();
          165. temp<<=1;
          166. if(PORTIN&SDA)
          167. temp|=0x01;
          168. else
          169. temp&=0xfe;
          170. SCL_DOWN;
          171. IIC_delay();
          172. }
          173. returntemp;
          174. }

          175. 上一頁 1 2 下一頁

          關(guān)鍵詞: ZLG7290矩陣鍵盤控制MSP4

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();