色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          12864控制forMSP430

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          1. /*****************************************************************
          2. //文件名:12864.c
          3. //描述:該文件定義與12864有關(guān)的各種接口、函數(shù),適用于MSP430F149
          4. //編寫人:小邪@清水
          5. //版本號(hào):2.01
          6. *****************************************************************/
          7. #include
          8. #include"12864.h"
          9. #defineucharunsignedchar
          10. #defineuintunsignedint
          11. #defineBIT(x)(1<<(x))
          12. unsignedcharNUM[]={"0123456789."};
          13. ucharAddress[4][8]={
          14. {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87},
          15. {0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97},
          16. {0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f},
          17. {0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f}
          18. };
          19. /*****************************************************************
          20. //關(guān)于12864的一些宏定義
          21. //注意:各項(xiàng)數(shù)據(jù)都要根據(jù)實(shí)際使用IO口更改
          22. *****************************************************************/
          23. #defineCS0//CS=P3.0
          24. #defineSID1//SID=P3.1
          25. #defineCLK2//CLK=P3.2
          26. #definePORTP3OUT
          27. #defineDIRP3DIR
          28. /*************************************************************************
          29. //名稱:delay_Nus
          30. //參數(shù):延時(shí)的時(shí)間n
          31. //返回值:無
          32. //功能:延時(shí)nNs的時(shí)間
          33. *************************************************************************/
          34. voiddelay_Nus(uintn)
          35. {
          36. uchari;
          37. for(i=n;i>0;i--)
          38. _NOP();
          39. }
          40. /*************************************************************************
          41. //名稱:delay_1ms
          42. //參數(shù):無
          43. //返回值:無
          44. //功能:延時(shí)1ms的時(shí)間
          45. *************************************************************************/
          46. voiddelay_1ms(void)
          47. {
          48. uchari;
          49. for(i=150;i>0;i--)_NOP();
          50. }
          51. /*************************************************************************
          52. //名稱:delay_Nms
          53. //參數(shù):延時(shí)的時(shí)間n
          54. //返回值:無
          55. //功能:延時(shí)1ms的時(shí)間
          56. *************************************************************************/
          57. voiddelay_Nms(uintn)
          58. {
          59. uinti=0;
          60. for(i=n;i>0;i--)
          61. delay_1ms();
          62. }
          63. /*************************************************************************
          64. //名稱:LcdInit
          65. //參數(shù):無
          66. //返回值:無
          67. //功能:初始化12864
          68. *************************************************************************/
          69. voidLcdInit(void)
          70. {
          71. DIR|=BIT(CLK)+BIT(SID)+BIT(CS);//相應(yīng)的位端口設(shè)置為輸出
          72. delay_Nms(100);//延時(shí)等待液晶完成復(fù)位
          73. Send(0,0x30);//功能設(shè)置:一次送8位數(shù)據(jù),基本指令集
          74. delay_Nus(72);
          75. Send(0,0x02);//DDRAM地址歸位
          76. delay_Nus(72);
          77. Send(0,0x0c);//顯示設(shè)定:開顯示,不顯示光標(biāo),不做當(dāng)前顯示位反白閃動(dòng)
          78. delay_Nus(72);
          79. Send(0,0x01);//清屏,將DDRAM的位址計(jì)數(shù)器調(diào)整為“00H”
          80. delay_Nus(72);
          81. Send(0,0x06);//功能設(shè)置,點(diǎn)設(shè)定:顯示字符/光標(biāo)從左到右移位,DDRAM地址加1
          82. delay_Nus(72);
          83. }
          84. /*************************************************************************
          85. //名稱:Send
          86. //參數(shù):數(shù)據(jù)類型type:0--控制命令,1--顯示數(shù)據(jù),transdata--發(fā)送的數(shù)據(jù)
          87. //返回值:無
          88. //功能:向12864發(fā)送一個(gè)字節(jié)的數(shù)據(jù),可用于控制可用于顯示
          89. *************************************************************************/
          90. voidSend(uchartype,uchartransdata)
          91. {
          92. ucharfirstbyte=0xf8;
          93. uchartemp;
          94. uchari,j=3;
          95. if(type)firstbyte|=0x02;
          96. PORT|=BIT(CS);
          97. PORT&=~BIT(CLK);
          98. while(j>0)
          99. {
          100. if(j==3)temp=firstbyte;
          101. elseif(j==2)temp=transdata&0xf0;
          102. elsetemp=(transdata<<4)&0xf0;
          103. for(i=8;i>0;i--)
          104. {
          105. if(temp&0x80)PORT|=BIT(SID);
          106. elsePORT&=~BIT(SID);
          107. PORT|=BIT(CLK);
          108. temp<<=1;
          109. PORT&=~BIT(CLK);
          110. }//三個(gè)字節(jié)之間一定要有足夠的延時(shí),否則易出現(xiàn)時(shí)序問題
          111. if(j==3)delay_Nus(600);
          112. elsedelay_Nus(200);
          113. j--;
          114. }
          115. PORT&=~BIT(SID);
          116. PORT&=~BIT(CS);
          117. }
          118. /*************************************************************************
          119. //名稱:Clear_GDRAM
          120. //參數(shù):數(shù)據(jù)類型type:0--控制命令,1--顯示數(shù)據(jù),transdata--發(fā)送的數(shù)據(jù)
          121. //返回值:無
          122. //功能:向12864發(fā)送一個(gè)字節(jié)的數(shù)據(jù),可用于控制可用于顯示
          123. *************************************************************************/
          124. voidClear_GDRAM(void)
          125. {
          126. uchari,j,k;
          127. Send(0,0x34);//打開擴(kuò)展指令集
          128. i=0x80;
          129. for(j=0;j<32;j++)
          130. {
          131. Send(0,i++);
          132. Send(0,0x80);
          133. for(k=0;k<16;k++)
          134. {
          135. Send(1,0x00);
          136. }
          137. }
          138. i=0x80;
          139. for(j=0;j<32;j++)
          140. {
          141. Send(0,i++);
          142. Send(0,0x88);
          143. for(k=0;k<16;k++)
          144. {
          145. Send(1,0x00);
          146. }
          147. }
          148. Send(0,0x30);//回到基本指令集
          149. }

          150. 上一頁 1 2 下一頁

          關(guān)鍵詞: 12864MSP43

          評(píng)論


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

          關(guān)閉