新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 12864控制forMSP430

        12864控制forMSP430

        作者: 時間:2016-11-27 來源:網絡 收藏
        1. /*****************************************************************
        2. //文件名:12864.c
        3. //描述:該文件定義與12864有關的各種接口、函數,適用于MSP430F149
        4. //編寫人:小邪@清水
        5. //版本號: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. //關于12864的一些宏定義
        21. //注意:各項數據都要根據實際使用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. //參數:延時的時間n
        31. //返回值:無
        32. //功能:延時nNs的時間
        33. *************************************************************************/
        34. voiddelay_Nus(uintn)
        35. {
        36. uchari;
        37. for(i=n;i>0;i--)
        38. _NOP();
        39. }
        40. /*************************************************************************
        41. //名稱:delay_1ms
        42. //參數:無
        43. //返回值:無
        44. //功能:延時1ms的時間
        45. *************************************************************************/
        46. voiddelay_1ms(void)
        47. {
        48. uchari;
        49. for(i=150;i>0;i--)_NOP();
        50. }
        51. /*************************************************************************
        52. //名稱:delay_Nms
        53. //參數:延時的時間n
        54. //返回值:無
        55. //功能:延時1ms的時間
        56. *************************************************************************/
        57. voiddelay_Nms(uintn)
        58. {
        59. uinti=0;
        60. for(i=n;i>0;i--)
        61. delay_1ms();
        62. }
        63. /*************************************************************************
        64. //名稱:LcdInit
        65. //參數:無
        66. //返回值:無
        67. //功能:初始化12864
        68. *************************************************************************/
        69. voidLcdInit(void)
        70. {
        71. DIR|=BIT(CLK)+BIT(SID)+BIT(CS);//相應的位端口設置為輸出
        72. delay_Nms(100);//延時等待液晶完成復位
        73. Send(0,0x30);//功能設置:一次送8位數據,基本指令集
        74. delay_Nus(72);
        75. Send(0,0x02);//DDRAM地址歸位
        76. delay_Nus(72);
        77. Send(0,0x0c);//顯示設定:開顯示,不顯示光標,不做當前顯示位反白閃動
        78. delay_Nus(72);
        79. Send(0,0x01);//清屏,將DDRAM的位址計數器調整為“00H”
        80. delay_Nus(72);
        81. Send(0,0x06);//功能設置,點設定:顯示字符/光標從左到右移位,DDRAM地址加1
        82. delay_Nus(72);
        83. }
        84. /*************************************************************************
        85. //名稱:Send
        86. //參數:數據類型type:0--控制命令,1--顯示數據,transdata--發送的數據
        87. //返回值:無
        88. //功能:向12864發送一個字節的數據,可用于控制可用于顯示
        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. }//三個字節之間一定要有足夠的延時,否則易出現時序問題
        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. //參數:數據類型type:0--控制命令,1--顯示數據,transdata--發送的數據
        121. //返回值:無
        122. //功能:向12864發送一個字節的數據,可用于控制可用于顯示
        123. *************************************************************************/
        124. voidClear_GDRAM(void)
        125. {
        126. uchari,j,k;
        127. Send(0,0x34);//打開擴展指令集
        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 下一頁

        關鍵詞: 12864MSP43

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桃园市| 固镇县| 邹城市| 汾阳市| 修文县| 高要市| 临潭县| 清水河县| 阜南县| 天津市| 慈利县| 团风县| 钦州市| 项城市| 衡阳市| 开封市| 珲春市| 分宜县| 五河县| 临泽县| 饶平县| 芜湖县| 略阳县| 安阳县| 积石山| 中方县| 丰镇市| 天全县| 肥乡县| 剑河县| 宁晋县| 安徽省| 柞水县| 和平区| 济宁市| 莱芜市| 德昌县| 湟源县| 青海省| 拉孜县| 南充市|