新聞中心

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)閉