久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2428|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)KS0074電壓表,電流表源程序(液晶顯示)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:57366 發(fā)表于 2018-4-9 17:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)控制KS0074實(shí)現(xiàn)電壓表,電流表功能的源碼如下:
  1. ;引腳為:1VCC,2VCC,3GND,4BLA,5DB7,6DB6,7DB5,8DB4,9E,10RW,11RS,12V0,13GND,14GND,15VCC.實(shí)際上,可任用其中一個(gè)VCC引腳和一個(gè)GND引腳。
  2. ;KS0074有8線并行、4線并行和2線串行輸入方式,但set1602默認(rèn)的輸入方式為4數(shù)據(jù)總線并行輸入方式
  3. ;V0引腳應(yīng)通過(guò)串接800歐左右電阻后接VCC(5V)。或者,在VCC和GND之間串接一個(gè)5~10可調(diào)電位器,滑動(dòng)端接V0,利用調(diào)節(jié)滑動(dòng)端控制LCD顯示對(duì)比度。
  4. ;BLA輸入電壓應(yīng)為3.3V,可通過(guò)串接合適電阻后接VCC(5V),避免高溫?zé)龎腖CD。
  5. ;---------------------------------------------------------------------------------------------------------------------
  6. ;以下為硬件連接要求
  7. DB4 equ p0.4
  8. DB5 equ p0.5
  9. DB6 equ p0.6
  10. DB7 equ p0.7
  11. RS EQU P2.5
  12. RW EQU P2.6
  13. E EQU P2.7
  14. RCOMDATE equ 70H;作為讀取的BF相關(guān)指令信息的暫存單元
  15. WCOMdate equ 71H;作為擬寫(xiě)入指令代碼的暫存單元
  16. RLCDDATE Equ 72H;作為讀取LCD相關(guān)顯示代碼或信息的暫存單元
  17. WLCDDATe EQU 73H;作為擬寫(xiě)入LCD顯示信息的暫存單元
  18. ;-------------------------------------------------------------------------------------------------------
  19.         P1ASF        EQU        9DH        ;P1口設(shè)置寄存器
  20.         ADC_CONTOR        EQU        0BCH        ;ADC控制寄存器
  21.         ADC_RES        EQU        0BDH        ;ADC輸出高8位
  22.         ADC_RESL        EQU        0BEH        ;ADC低8為輸出
  23.         AUXR1        EQU        0A2H        ;設(shè)置寄存器
  24.         IJISHU        EQU        30H        ;電流比較次數(shù)計(jì)數(shù)
  25.         UJISHU        EQU        31H        ;電壓比較次數(shù)計(jì)數(shù)
  26.         IL        EQU        32H        ;電流低位
  27.         IH        EQU        33H        ;電流高位
  28.         UL        EQU        34H        ;電壓低位
  29.         UH        EQU        35H        ;電壓高位
  30.         ORG        0000H
  31.         LJMP        START
  32.         ORG        002BH
  33. START:
  34. MOV        P1ASF,#00000011B        ;開(kāi)啟P1.0和P1.1作為AD的輸入端口
  35.         MOV        AUXR1,#04H        ;設(shè)置AD輸出方式
  36.         MOV        SP,#5FH        ;設(shè)置棧底
  37.         MOV        IJISHU,#00H
  38.         MOV        UJISHU,#00H
  39.         ;×××××××××××××××××××××××××
  40. LCD:
  41. MOV SP,#80H
  42. ;------------------------- -------------------------------------------------------------
  43. ;首先,開(kāi)機(jī)或復(fù)位后,應(yīng)進(jìn)行4數(shù)據(jù)總線和LCD初始化,將默認(rèn)的8位數(shù)據(jù)接口改為4位。
  44. ;---------------------------------------------------------------------------------------------------------------------
  45. ;開(kāi)機(jī)或復(fù)位后,至少應(yīng)等待20MS以上
  46. LCALL Delay1MS
  47. LCALL Delay1MS
  48. ;第一步功能設(shè)置,設(shè)為4位數(shù)據(jù)總線方式輸入(DL=0)
  49. MOV WCOMDATE,#20H
  50. LCALL INPUTCOMMAND;輸入指令0010XXXX(低四位忽略)
  51. ;第二步功能設(shè)置,在保持4位數(shù)據(jù)總線輸入方式下設(shè)為兩行模式(輸入指令00101XXX)
  52. MOV WCOMDATE,#28H;設(shè)成2行顯示
  53. LCALL INPUTCOMMAND;輸入指令00101XXX
  54. ;第三步顯示開(kāi)關(guān)設(shè)置
  55. MOV WCOMDATE,#0CH;設(shè)成顯示開(kāi),而光標(biāo)開(kāi)和光標(biāo)閃爍關(guān)
  56. LCALL INPUTCOMMAND;輸入指令00001111
  57. ;第四步清屏
  58. MOV WCOMDATE,#01H;
  59. LCALL INPUTCOMMAND;輸入指令00000001
  60. LCALL DELAY1MS;輸入功能設(shè)置指令需延遲1.53MS以上(除歸位指令和本指令執(zhí)行時(shí)間為1.53MS,其余指令執(zhí)行時(shí)間均不足0.1MS)
  61. ;第五步輸入模式設(shè)置
  62. MOV WCOMDATE,#06H;
  63. LCALL INPUTCOMMAND;輸入指令00000110
  64. ;- ------------------------------------------------------------------------------------------------------------------
  65. ;然后,將逆序顯示變更為正常顯示(即使用KS0074的鏡向功能)
  66. ;--------------------------------------------------------------------------------------------------------------------

  67. ;第一步,功能設(shè)置指令,使RE=1
  68. MOV WCOMDATE,#2CH;
  69. LCALL INPUTCOMMAND;輸入指令00101100
  70. ;第二步,輸入模式設(shè)置指令,使BID=1(逆序顯示)
  71. MOV WCOMDATE,#07H;
  72. LCALL INPUTCOMMAND;輸入指令00000111
  73. ;第三步,功能設(shè)置指令,使RE=0,以便后續(xù)應(yīng)用時(shí)可使用正常指令
  74. MOV WCOMDATE,#28H;
  75. LCALL INPUTCOMMAND;輸入指令00101000
  76. ;-----------------------------------------------------------------------------------------------------------------
  77. ;第一步,顯示第一行的固定字符(40H~4EH,起始位址40H),測(cè)試要求全部顯示出來(lái)
  78. MOV WCOMDATE,#2CH;功能設(shè)置指令,使RE=1,以執(zhí)行擴(kuò)充命令
  79. LCALL INPUTCOMMAND;輸入指令00101100
  80. MOV WCOMDATE,#40H;設(shè)SEGRAM地址(格式為01XXABCD,起始地址為40H)
  81. LCALL INPUTCOMMAND;輸入指令40H
  82. ;(1)顯示第一個(gè)段碼字符即信號(hào)強(qiáng)度標(biāo)志,默認(rèn)為不顯示
  83. MOV WLCDDATe,#20H;40H控制第一個(gè)字符的大部分段碼位
  84. LCALL INPUTDATACODE
  85. MOV WLCDDATe,#20H;41H控制第一個(gè)字符中除40H控制段碼外的其它位
  86. LCALL INPUTDATACODE
  87. MOV WLCDDATe,#20H;42H無(wú)用
  88. LCALL INPUTDATACODE
  89. MOV WLCDDATe,#20H;43H無(wú)用
  90. LCALL INPUTDATACODE
  91. ;(2)顯示第二個(gè)段碼字符即電量顯示符號(hào),默認(rèn)顯示滿電量
  92. MOV WLCDDATe,#0FFH;44H控制全部電量顯示段碼位,對(duì)應(yīng)關(guān)系應(yīng)進(jìn)一步測(cè)試
  93. LCALL INPUTDATACODE
  94. ;(3)顯示第三個(gè)段碼字符主菜單標(biāo)志符,默認(rèn)顯示主菜單符號(hào)
  95. MOV WLCDDATe,#20H;45H控制全部主菜單顯示段碼位
  96. LCALL INPUTDATACODE
  97. MOV WLCDDATe,#00H;46H無(wú)用
  98. LCALL INPUTDATACODE
  99. MOV WLCDDATe,#00H;47H無(wú)用
  100. LCALL INPUTDATACODE
  101. MOV WLCDDATe,#00H;48H無(wú)用
  102. LCALL INPUTDATACODE
  103. ;(4)顯示第四個(gè)段碼字符即鬧鈴符號(hào),默認(rèn)不顯示
  104. MOV WLCDDATe,#20H;49H控制鬧鈴所有段碼位
  105. LCALL INPUTDATACODE
  106. MOV WLCDDATe,#20H;4A無(wú)用
  107. LCALL INPUTDATACODE
  108. ;(5)顯示第五個(gè)段碼字符打開(kāi)修箋(書(shū)本)符號(hào),默認(rèn)不顯示
  109. MOV WLCDDATe,#0FFH;4BH控制該符號(hào)全部段碼
  110. LCALL INPUTDATACODE
  111. MOV WLCDDATe,#20H;4CH無(wú)用
  112. LCALL INPUTDATACODE
  113. ;(6)顯示第六個(gè)段碼字符,默認(rèn)顯示
  114. MOV WLCDDATe,#20H;4DH控制該符號(hào)全部段碼
  115. LCALL INPUTDATACODE
  116. MOV WLCDDATe,#00H;4EH無(wú)用
  117. LCALL INPUTDATACODE
  118. ;(7)顯示第七個(gè)段碼字符即接聽(tīng)電話符號(hào),默認(rèn)顯示
  119. MOV WLCDDATe,#20H;55H控制該符號(hào)全部段碼
  120. LCALL INPUTDATACODE
  121. MOV WCOMDATE,#28H;功能設(shè)置指令,使RE=0,恢復(fù)正常命令狀態(tài)
  122. LCALL INPUTCOMMAND
  123. ;輸入指令00101000

  124. MOV WCOMDATE,#80H;設(shè)置DDRAM地址,該行起始80H
  125. LCALL INPUTCOMMAND


  126. MOV WLCDDATe,#"Q"
  127. LCALL INPUTDATACODE
  128. LCALL DELAY100MS

  129. MOV WLCDDATe,#"Q"
  130. LCALL INPUTDATACODE
  131. LCALL DELAY100MS

  132. MOV WLCDDATe,#":"
  133. LCALL INPUTDATACODE
  134. LCALL DELAY100MS

  135. MOV WLCDDATe,#"2"
  136. LCALL INPUTDATACODE
  137. LCALL DELAY100MS

  138. MOV WLCDDATe,#"8"
  139. LCALL INPUTDATACODE
  140. LCALL DELAY100MS

  141. MOV WLCDDATe,#"7"
  142. LCALL INPUTDATACODE
  143. LCALL DELAY100MS

  144. MOV WLCDDATe,#"0"
  145. LCALL INPUTDATACODE
  146. LCALL DELAY100MS

  147. MOV WLCDDATe,#"5"
  148. LCALL INPUTDATACODE
  149. LCALL DELAY100MS

  150. MOV WLCDDATe,#"5"
  151. LCALL INPUTDATACODE
  152. LCALL DELAY100MS

  153. MOV WLCDDATe,#"5"
  154. LCALL INPUTDATACODE
  155. LCALL DELAY100MS

  156. MOV WLCDDATe,#"3"
  157. LCALL INPUTDATACODE

  158. LCALL DELAY100MS
  159. LCALL DELAY100MS
  160. LCALL DELAY100MS
  161. LCALL DELAY100MS
  162. LCALL DELAY100MS
  163. LCALL DELAY100MS

  164. MOV WCOMDATE,#01H;
  165. LCALL INPUTCOMMAND;輸入指令00000001

  166. MAIN:
  167.         MOV        ADC_CONTOR,#11001001B        ;開(kāi)啟P1.1的AD轉(zhuǎn)換,電流
  168.         LCALL        AD        ;調(diào)用AD子程序
  169.         MOV        A,ADC_RES
  170.         CJNE        A,IH,MAINI
  171.         MOV        A,ADC_RESL
  172.         CJNE        A,IL,MAINI
  173.         MOV        IJISHU,#00H
  174.         SJMP        MAINI1
  175. MAINI:        INC        IJISHU
  176.         MOV        A,#20
  177.         CJNE        A,IJISHU,MAINI1
  178.         MOV        IJISHU,#00H
  179.         MOV        IH,ADC_RES        ;保存電流數(shù)據(jù)
  180.         MOV        IL,ADC_RESL
  181. MAINI1:        MOV        0AH,IH
  182.         MOV        0BH,IL
  183.         LCALL        TO10
  184.         MOV        0CH,18H
  185.         MOV        0DH,19H
  186.         MOV        0EH,1AH
  187.         MOV        A,0AH
  188.         RRC        A
  189.         MOV        0AH,A
  190.         MOV        A,0BH
  191.         RRC        A
  192.         MOV        0BH,A
  193.         MOV        A,0AH
  194.         RRC        A
  195.         MOV        A,0BH
  196.         RRC        A
  197.         MOV        09H,A        ;09H保存8位電流數(shù)據(jù)
  198.         MOV        ADC_CONTOR,#11001000B        ;開(kāi)啟P1.0的AD轉(zhuǎn)換        電壓
  199.         LCALL        AD        ;調(diào)用AD子程序
  200.         MOV        A,ADC_RES
  201.         CJNE        A,UH,MAINU
  202.         MOV        A,ADC_RESL
  203.         CJNE        A,UL,MAINU
  204.         MOV        UJISHU,#00H
  205.         SJMP        MAINU1
  206. MAINU:        INC        UJISHU
  207.         MOV        A,#20
  208.         CJNE        A,UJISHU,MAINU1
  209.         MOV        UJISHU,#00H
  210.         MOV        UH,ADC_RES        ;保存電壓數(shù)據(jù)
  211.         MOV        UL,ADC_RESL
  212. MAINU1:        MOV        0AH,UH
  213.         MOV        0BH,UL
  214.         LCALL        TO10
  215.         MOV        10H,18H
  216.         MOV        11H,19H
  217.         MOV        12H,1AH
  218.         MOV        A,0AH
  219.         RRC        A
  220.         MOV        0AH,A
  221.         MOV        A,0BH
  222.         RRC        A
  223.         MOV        0BH,A
  224.         MOV        A,0AH
  225.         RRC        A
  226.         MOV        A,0BH
  227.         RRC        A
  228.         MOV        08H,A        ;08H保存8位電壓數(shù)據(jù)
  229.         MOV        B,09H
  230.         MUL        AB
  231.         MOV        R2,B
  232.         MOV        R3,A
  233.         MOV        R4,#61H        ;/25000
  234.         MOV        R5,#0A8H
  235.         LCALL        DIVD
  236.         MOV        A,R7
  237.         ADD        A,#30H
  238.         MOV        13H,A
  239.         MOV        R4,#09H
  240.         MOV        R5,#0C4H        ;/2500
  241.         LCALL        DIVD
  242.         MOV        A,R7
  243.         ADD        A,#30H
  244.         MOV        14H,A
  245.         MOV        R4,#00H
  246.         MOV        R5,#250        ;/250
  247.         LCALL        DIVD
  248.         MOV        A,R7
  249.         ADD        A,#30H
  250.         MOV        15H,A
  251.         MOV        R4,#00H
  252.         MOV        R5,#25        ;/25
  253.         LCALL        DIVD
  254.         MOV        A,R7
  255.         ADD        A,#30H
  256.         MOV        16H,A
  257.         MOV        A,R3
  258.         CLR        C
  259.         RLC        A
  260.         CLR        C
  261.         RLC        A
  262.         MOV        R3,A
  263.         MOV        R5,#10
  264.         LCALL        DIVD
  265.         MOV        A,R7
  266.         ADD        A,#30H
  267.         MOV        17H,A
  268.         LCALL        XIANSHI
  269.         LJMP        MAIN
  270.         ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
  271.         ;AD轉(zhuǎn)換子程序
  272.         ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
  273. AD:        MOV        A,ADC_CONTOR
  274.         JNB        0E4H,AD
  275.         CLR        0E4H
  276.         MOV        ADC_CONTOR,A
  277.         ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
  278.         ;二-十進(jìn)制轉(zhuǎn)換子程序,同時(shí)加便宜量完成1602的0-9字模地址的轉(zhuǎn)換        輸出結(jié)果18H        19H        1AH
  279.         ;×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
  280. TO10:        MOV        R2,0AH
  281.         MOV        R3,0BH
  282.         MOV        R4,#0
  283.         MOV        R5,#2
  284.         LCALL        DIVD
  285.         MOV        A,R6
  286.         MOV        R2,A
  287.         MOV        A,R7
  288.         MOV        R3,A
  289.         MOV        R4,#00H
  290.         MOV        R5,#100
  291.         LCALL        DIVD
  292.         MOV        18H,R7
  293.         MOV        A,#30H
  294.         ADD        A,18H
  295.         MOV        18H,A
  296.         MOV        R5,#10
  297.         LCALL        DIVD
  298.         MOV        19H,R7
  299.         MOV        A,#30H
  300.         ADD        A,19H
  301.         MOV        19H,A
  302.         MOV        1AH,R3
  303.         MOV        A,#30H
  304.         ADD        A,1AH
  305.         MOV        1AH,A
  306.         RET
  307.         ;×××××××××××××××××××××××××××××××××××××××××××××××××××
  308.         ;雙字節(jié)除法運(yùn)算子程序
  309.         ;入口條件:        被除數(shù)在R2、R3、除數(shù)在R4、R5中,商在R6、R7中。R1用于計(jì)數(shù)位移量
  310.         ;出口信息:        余數(shù)在R2、R3中,雙字節(jié)商在R4、R5中,OV=1        時(shí)溢出。
  311.         ;影響資源:        PSW、A、R1~R7
  312.         ;××××××××××××××××××××××××××××××××××××××××××××××××××××××××
  313. DIVD:PUSH        PSW         
  314.         PUSH        ACC
  315.         MOV        R1,#00H        ;計(jì)數(shù)器清零
  316.         MOV        R6,#00H
  317.         MOV        R7,#00H
  318.         LCALL        SUBBD        ;判斷夠不夠減
  319.         JC        DIVDE
  320. DIVD1:        MOV        A,R4
  321.         JB        ACC.7,DIVD3        ;判斷最高位是不是1
  322.         CLR        C        ;除數(shù)左移一位
  323.         MOV        A,R5        
  324.         RLC        A
  325.         MOV        R5,A
  326.         MOV        A,R4
  327.         RLC        A
  328.         MOV        R4,A
  329.         INC        R1        ;左移計(jì)數(shù)器計(jì)數(shù)
  330.         LCALL        SUBBD        ;比較左移后夠不夠減
  331.         JNC        DIVD1        ;夠減轉(zhuǎn)移,不夠減繼續(xù)
  332.         LCALL        DIVDR        ;除數(shù)右移一位
  333.         DEC        R1        ;右移了,所以要-1
  334. DIVD3:        CLR        C
  335.         MOV        A,R3        ;開(kāi)始減法
  336.         SUBB        A,R5
  337.         MOV        R3,A
  338.         MOV        A,R2
  339.         SUBB        A,R4
  340.         MOV        R2,A
  341.         INC        R7
  342. DIVD4:        CJNE        R1,#00H,DIVD5        ;判斷是不是到最后一位了
  343.         SJMP        DIVDE
  344. DIVD5:        LCALL        DIVDR        ;除數(shù)右移一位
  345.         MOV        A,R7
  346.         CLR        C
  347.         RLC        A
  348.         MOV        R7,A
  349.         MOV        A,R6
  350.         RLC        A
  351.         MOV        R6,A
  352.         DEC        R1        ;位置計(jì)數(shù)器-1
  353.         LCALL        SUBBD        ;比較夠不夠減
  354.         JC        DIVD4
  355.         SJMP        DIVD3
  356. SUBBD:        CLR        C        ;判斷夠不夠減子程序
  357.         MOV        A,R3
  358.         SUBB        A,R5
  359.         MOV        A,R2
  360.         SUBB        A,R4
  361.         RET
  362. DIVDR:        CLR        C
  363.         MOV        A,R4
  364.         RRC        A
  365.         MOV        R4,A
  366.         MOV        A,R5
  367.         RRC        A
  368.         MOV        R5,A
  369.         RET
  370. DIVDE:        SETB        OV
  371.          POP        ACC
  372.         POP        PSW         
  373.         RET

  374. XIANSHI:

  375. ;第二步,在第二行(起始位址為80H)顯示“2013-05-15”
  376. MOV WCOMDATE,#80H;設(shè)置DDRAM地址,該行起始80H
  377. LCALL INPUTCOMMAND
  378.         MOV        A,#30H
  379.         CJNE        A,10H,DYXY
  380.         MOV        WLCDDATe,#20H
  381.         SJMP        DYXY1
  382. DYXY:        MOV        WLCDDATe,10H        ;電壓最高位顯示0時(shí)消隱
  383. DYXY1:        LCALL        INPUTDATACODE
  384.         MOV        WLCDDATe,11H
  385.         LCALL        INPUTDATACODE
  386.         MOV        WLCDDATe,#2EH
  387.         LCALL        INPUTDATACODE
  388.         MOV        WLCDDATe,12H
  389.         LCALL        INPUTDATACODE
  390.         MOV        WLCDDATe,#56H
  391.         LCALL        INPUTDATACODE
  392.         
  393.         MOV WLCDDATe,#20H                ;功率部分(13H,14H,15H,16H,17H對(duì)應(yīng)功率的5個(gè)數(shù)值)
  394.         LCALL        INPUTDATACODE        ;        MOV        P
  395.         MOV        WLCDDATe,#20H
  396.         LCALL        INPUTDATACODE
  397.         MOV        WLCDDATe,#20H
  398.         LCALL        INPUTDATACODE
  399.         MOV        WLCDDATe,#20H
  400.         LCALL        INPUTDATACODE
  401.         MOV        WLCDDATe,13H
  402.         LCALL        INPUTDATACODE
  403.         MOV        WLCDDATe,14H
  404.         LCALL        INPUTDATACODE
  405.         MOV        WLCDDATe,15H
  406.         LCALL        INPUTDATACODE
  407.         MOV        WLCDDATe,#2EH
  408.         LCALL        INPUTDATACODE
  409.         MOV        WLCDDATe,16H
  410.         LCALL        INPUTDATACODE
  411.         MOV        WLCDDATe,17H
  412.         LCALL        INPUTDATACODE
  413.         MOV        WLCDDATe,#57H
  414.         LCALL        INPUTDATACODE
  415.         

  416. ;第三步,在第三行
  417. ;電流部分(0CH,0DH,0EH對(duì)應(yīng)電流的3個(gè)數(shù)值)
  418. MOV WCOMDATE,#90H;設(shè)置DDRAM地址
  419. LCALL INPUTCOMMAND

  420. MOV WLCDDATe,0CH
  421. LCALL INPUTDATACODE
  422. MOV WLCDDATe,#"."
  423. LCALL INPUTDATACODE
  424. MOV WLCDDATe,0DH
  425. LCALL INPUTDATACODE
  426. MOV WLCDDATe,0EH
  427. LCALL INPUTDATACODE
  428. MOV WLCDDATe,#"A"
  429. LCALL INPUTDATACODE
  430. RET
  431. SJMP $
  432. ;讀BF并判斷狀態(tài)子程序
  433. ;直到LCD空閑時(shí)退出本程序
  434. ;------------------------------------------------------------------------------------------------------------------
  435. READBFAC:
  436. PUSH ACC
  437. BFWAIT:
  438. SETB DB4;將4位數(shù)據(jù)線設(shè)置到讀有效狀態(tài)
  439. SETB DB5
  440. SETB DB6
  441. SETB DB7
  442. CLR RS;設(shè)置成讀BF及AC值操作狀態(tài)
  443. SETB RW
  444. SETB E;第一次讀,使LCD將BF及AC值的高4位信息釋放到數(shù)據(jù)總線上。
  445. MOV C,DB7
  446. MOV ACC.7,C
  447. CLR E;高半字節(jié)讀取完成
  448. CLR RW
  449. SETB DB4;將4位數(shù)據(jù)線設(shè)置到讀有效狀態(tài)
  450. SETB DB5
  451. SETB DB6
  452. SETB DB7
  453. SETB RW
  454. SETB E;第二次讀,使LCD將BF及AC值的低4位信息釋放到數(shù)據(jù)總線上。
  455. CLR E;第二次讀取完成
  456. JB ACC.7,BFWAIT;LCD忙碌時(shí)繼續(xù)等待并監(jiān)控,空閑時(shí)執(zhí)行下面指令
  457. POP ACC
  458. RET
  459. ;-------------------------------------------------------------------------------------------------------------------
  460. ;輸入指令子程序INPUTCOMMAND
  461. ;擬寫(xiě)指令代碼存放在WCOMDATE中
  462. ;-------------------------------------------------------------------------------------------------------------------
  463. INPUTCOMMAND:
  464. PUSH ACC
  465. ;首先,判斷LCD是否空閑并視具體情況處理
  466. LCALL READBFAC
  467. ;然后,為寫(xiě)指令代碼作好準(zhǔn)備
  468. MOV A,WCOMDATE;將擬寫(xiě)指令代碼取到A中
  469. ;再后,將擬寫(xiě)指令代碼的高4位寫(xiě)入LCD
  470. CLR RS;設(shè)置成寫(xiě)指令狀態(tài)
  471. CLR RW
  472. SETB E
  473. MOV C,ACC.7;將高4位送出
  474. MOV DB7,C
  475. MOV C,ACC.6
  476. MOV DB6,C
  477. MOV C,ACC.5
  478. MOV DB5,C
  479. MOV C,ACC.4
  480. MOV DB4,C
  481. CLR E
  482. SETB RW
  483. CLR RW
  484. ;最后,將擬寫(xiě)指令代碼的低4位寫(xiě)入LCD
  485. SETB E
  486. MOV C,ACC.3;將低4位送出
  487. MOV DB7,C
  488. MOV C,ACC.2
  489. MOV DB6,C
  490. MOV C,ACC.1
  491. MOV DB5,C
  492. MOV C,ACC.0
  493. MOV DB4,C
  494. CLR E;E的下降沿執(zhí)行上述指令,將低4位寫(xiě)入LCD
  495. LCALL DELAY1ms
  496. POP ACC
  497. RET
  498. ;------------------------------------------------------------------------------------------------------------------
  499. ;寫(xiě)顯示數(shù)據(jù)子程序INPUTDATACODE
  500. ;擬寫(xiě)數(shù)據(jù)代碼存放在WLCDDATA中
  501. ;------------------------------------------------------------------------------------------------------------------
  502. INPUTDATACODE:
  503. PUSH ACC
  504. ;首先,判斷LCD是否空閑并視具體情況處理
  505. LCALL READBFAC
  506. ;然后,為寫(xiě)顯示數(shù)據(jù)作好準(zhǔn)備
  507. MOV A,WLCDDATE;將擬寫(xiě)顯示數(shù)據(jù)取到A中
  508. ;第三,將擬寫(xiě)數(shù)據(jù)代碼的高4位寫(xiě)入LCD的DDRAM
  509. SETB RS;設(shè)置成寫(xiě)顯示數(shù)據(jù)狀態(tài)
  510. clr rw
  511. setb E
  512. MOV C,ACC.7;將高4位送出
  513. MOV DB7,C
  514. MOV C,ACC.6
  515. MOV DB6,C
  516. MOV C,ACC.5
  517. MOV DB5,C
  518. MOV C,ACC.4
  519. MOV DB4,C
  520. clr E
  521. setb RW
  522. CLR RW
  523. ;最后,將擬寫(xiě)數(shù)據(jù)代碼的低4位寫(xiě)入LCD的DDRAM
  524. SETB E
  525. MOV C,ACC.3;將低4位送出
  526. MOV DB7,C
  527. MOV C,ACC.2
  528. MOV DB6,C
  529. MOV C,ACC.1
  530. MOV DB5,C
  531. MOV C,ACC.0
  532. MOV DB4,C
  533. CLR E
  534. LCALL DELAY1ms
  535. POP ACC
  536. RET
  537. ;---------------------------------------------------------------------------------------------------------------------
  538. ;延時(shí)子程序DELAY1MS:針對(duì)32MHZ晶振編程,延時(shí)不少1MS
  539. DELAY1MS:
  540. MOV r6,#22H
  541. DELAY1ms1:MOV R7,#064H
  542. DELAY1ms2: NOP
  543. DJNZ R7,DELAY1ms2
  544. DJNZ R6,DELAY1ms1
  545. NOP
  546. RET
  547. DELAY100MS:                        ;@12.000MHz
  548.         PUSH 30H
  549.         PUSH 31H
  550.         PUSH 32H
  551.         MOV 30H,#4
  552.         MOV 31H,#166
  553.         MOV 32H,#206
  554. NEXT:
  555.         DJNZ 32H,NEXT
  556.         DJNZ 31H,NEXT
  557.         DJNZ 30H,NEXT
  558.         POP 32H
  559.         POP 31H
  560.         POP 30H
  561.         RET
  562.         ;---------------------------------------------------------------------------------------------------------------------
  563. END

復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕视频免费 | 亚洲一区二区三区免费观看 | 婷婷色婷婷| 四虎影院免费在线 | 亚洲精品一二区 | 欧美极品在线观看 | 特级一级黄色片 | 国产精品欧美一区二区三区 | 日韩精品一区二区三区在线播放 | 亚洲欧洲日韩 | 久久久久久久91 | 国产福利二区 | 日日操夜夜操天天操 | 嫩草视频入口 | 伊人精品国产 | 在线成人av | 亚洲一区二区三区在线播放 | 亚洲免费毛片 | zzzwww在线看片免费 | 精品国产免费一区二区三区五区 | 日韩精品一区二区三区在线播放 | 亚洲超碰在线观看 | 超碰男人天堂 | 国产精品亚洲综合 | 成人小视频在线观看 | 91成人精品| 精品入口麻豆88视频 | 精品在线免费观看视频 | 在线视频中文字幕 | 成人免费视频观看 | 欧美国产中文字幕 | 欧美一级片在线观看 | 在线三级电影 | 日韩久久综合 | 日韩三区在线观看 | 日韩精品一区二区三区在线播放 | 久久久久久久97 | 国产精品福利在线 | 日本午夜视频 | 成人在线视频观看 | 春色av|