版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 單 片 機(jī) 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課題:仿手機(jī)鍵盤</p><p><b> 報(bào)告人:XXX</b></p><p><b> 學(xué)號(hào):XXXX</b></p><p> 班級(jí):XXXX </p><p><
2、;b> 目 錄</b></p><p> 一、手機(jī)鍵盤使用說明2</p><p><b> ?。ㄒ唬╂I盤說明2</b></p><p> (二)“時(shí)鐘”模式2</p><p> ?。ㄈ霸O(shè)置”模式2</p><p> ?。ㄋ模笆謾C(jī)”模式3</p>
3、<p> 二、手機(jī)鍵盤設(shè)計(jì)說明4</p><p><b> ?。ㄒ唬┰O(shè)計(jì)要求4</b></p><p><b> ?。ǘ┯布娐?</b></p><p><b> 1、CPU5</b></p><p><b> 2、矩陣鍵盤6<
4、;/b></p><p><b> 3、LCD7</b></p><p><b> 4、蜂鳴器7</b></p><p><b> ?。ㄈ┝鞒虉D8</b></p><p><b> 1、時(shí)鐘模式8</b></p><
5、;p><b> 2、設(shè)置模式8</b></p><p><b> 4、手機(jī)模式9</b></p><p><b> 5、定時(shí)器010</b></p><p><b> ?。ㄋ模┰闯绦?1</b></p><p> 三、課程設(shè)計(jì)心得體
6、會(huì)29</p><p><b> 手機(jī)鍵盤使用說明</b></p><p><b> ?。ㄒ唬╂I盤說明</b></p><p> 1、鍵盤按鍵對(duì)應(yīng)鍵值:</p><p> 2、定義雙擊:2s間隔內(nèi)按下同一數(shù)字鍵</p><p><b> ?。ǘ皶r(shí)鐘”模式
7、</b></p><p><b> 鍵盤鍵值對(duì)應(yīng)功能:</b></p><p> 0(設(shè)置):按下設(shè)置鍵進(jìn)入設(shè)置模式</p><p> 1(切換):按下切換鍵進(jìn)入手機(jī)模式</p><p><b> ?。ㄈ霸O(shè)置”模式</b></p><p><b&g
8、t; 鍵盤鍵值對(duì)應(yīng)功能:</b></p><p> 0(移位):光標(biāo)在年、月、日、星期、時(shí)、分、秒之間循環(huán)移位</p><p> 1(加):光標(biāo)對(duì)應(yīng)的時(shí)間(日期)加一</p><p> 2(減):光標(biāo)對(duì)應(yīng)的時(shí)間(日期)減一</p><p> 3(返回):返回時(shí)鐘模式</p><p><b&g
9、t; (四)“手機(jī)”模式</b></p><p><b> 鍵盤鍵值對(duì)應(yīng)功能:</b></p><p><b> 1)數(shù)字鍵:</b></p><p> 0(0,。?):?jiǎn)螕麸@示0,雙擊顯示0,。?,長(zhǎng)按循環(huán)顯示0,。?</p><p> 1(1abc):?jiǎn)螕魧懭搿?”,雙擊寫
10、入”1abc”,長(zhǎng)按循環(huán)寫入”1”、”a”、”b”、”c”</p><p> 2(2def):同上</p><p> 3(3ghi):同上</p><p> 4(4jkl):同上</p><p> 5(5mno):同上</p><p> 6(6pqr):同上</p><p> 7(7
11、stu):同上</p><p> 8(8vwx):同上</p><p> 9(9yz ):同上(第四個(gè)字符是空格)</p><p><b> 2)功能鍵:</b></p><p> A(刪除):刪除光標(biāo)前一個(gè)字符</p><p> B(退格):光標(biāo)左移</p><p&
12、gt; C(右移):光標(biāo)右移</p><p> D(清屏):LCD清屏</p><p> E(跳轉(zhuǎn)):返回時(shí)鐘模式</p><p> F(打電話):按下蜂鳴器模擬電話響,再次按下掛斷電話</p><p><b> 手機(jī)鍵盤設(shè)計(jì)說明</b></p><p><b> ?。ㄒ唬┰O(shè)計(jì)
13、要求</b></p><p> 顯示方式:1602LCD編程語言:匯編</p><p><b> 1、任務(wù)</b></p><p> 利用鍵盤矩陣仿照手機(jī)鍵盤,每個(gè)按鍵均集成多個(gè)按鍵字符,在LCD上分別顯示</p><p><b> 2、要求</b></p>&l
14、t;p> 1)手機(jī)鍵盤對(duì)應(yīng)字符:</p><p> 2)依次按下不同按鍵時(shí)所顯示的是按鍵上的第一個(gè)字符,如果在2S間隔內(nèi)按下同一按鍵,該按鍵上的字符將被依次顯示,如果同一按鍵上的兩次連續(xù)按鍵時(shí)間間隔超過2S,則取字符位置歸0,即顯示該按鍵的第一個(gè)字符</p><p> 3)可模擬撥打電話號(hào)碼,“*”鍵可實(shí)現(xiàn)退格功能,“#”鍵可實(shí)現(xiàn)清除功能</p><p>
15、; 4)字符顯示和撥打電話,可通過按鍵選擇控制</p><p> 5)按鍵時(shí),可利用蜂鳴器發(fā)出提示音</p><p> 6)不工作時(shí),顯示北京時(shí)間,可調(diào)整</p><p><b> 3、附加功能</b></p><p> 1)“清屏“鍵可實(shí)現(xiàn)LCD清屏</p><p> 2)“右移“鍵
16、可實(shí)現(xiàn)光標(biāo)右移</p><p> 3)長(zhǎng)按數(shù)字鍵可循環(huán)顯示按鍵對(duì)應(yīng)的所有字符</p><p><b> (二)硬件電路</b></p><p><b> 1、CPU</b></p><p><b> 2、矩陣鍵盤</b></p><p><
17、b> 3、LCD</b></p><p><b> 4、蜂鳴器</b></p><p><b> ?。ㄈ┝鞒虉D</b></p><p><b> 1、時(shí)鐘模式</b></p><p><b> 2、設(shè)置模式</b></p&
18、gt;<p><b> 4、手機(jī)模式</b></p><p><b> 5、定時(shí)器0</b></p><p><b> ?。ㄋ模┰闯绦?lt;/b></p><p> LCD_RSEQU P3.6</p><p> LCD_RWEQU P3.5
19、</p><p> LCD_ENEQU P3.3</p><p> BUZZEREQU P2.6</p><p> DIALINGBIT 01H ;打電話</p><p> CIRCLEBIT 02H</p><p> YEAREQU46H</p>
20、<p> MONTHEQU47H</p><p> DAYEQU48H</p><p> WEEKEQU49H</p><p> H0EQU50H</p><p> M0EQU51H</p><p> S0EQU52H</p>&
21、lt;p> MS0EQU53H</p><p> KEY_BUFEQU36H</p><p> IDL_SECEQU 37H</p><p> IDLEEQU 38H</p><p> DOU_SECEQU 39H</p><p> SAMEEQU
22、40H</p><p> CURSOREQU 41H</p><p> DOU_NMSEQU 42H</p><p> BUFEQU45H</p><p><b> ORG00H</b></p><p> JMP MAIN</p>&l
23、t;p><b> ORG 0BH</b></p><p> JMP TIM0</p><p><b> ORG 1BH</b></p><p> JMP TIM1</p><p><b> MAIN:</b></p><p&g
24、t; MOV SP,#60H</p><p> ACALLLCD_INIT ;LCD初始化</p><p> ACALLTIME_INIT ;計(jì)時(shí)器初始化</p><p> MOVCURSOR,#00H</p><p> MOVYEAR,#0</p><p>
25、 MOVMONTH,#1</p><p> MOVDAY,#1</p><p> MOVWEEK,#0</p><p> MOVH0,#0</p><p> MOVM0,#0</p><p> MOVS0,#0</p><p> MOVMS0,#0<
26、/p><p> CLRDIALING</p><p> CLRCIRCLE</p><p> ACALLLCD_INIT</p><p> ACALLWELCOME</p><p><b> BEGIN:</b></p><p> ACALL
27、LCD_INIT</p><p> ACALLDISP_DATE</p><p><b> NEW_TIME:</b></p><p> ACALLDISP_TIME</p><p> ACALLKEY_T</p><p> MOVA,KEY_BUF</p>
28、<p> JZSET_TIME</p><p> CJNEA,#1,NEW_TIME</p><p> JMPPHONE</p><p><b> SET_TIME:</b></p><p> CLRTR0;關(guān)定時(shí)器0</p><p> M
29、OVA,#83H;定位光標(biāo)</p><p> ACALLLCD_CMD</p><p> MOVA,#0EH;顯示光標(biāo)</p><p> ACALLLCD_CMD</p><p><b> ST_K:</b></p><p> ACALLKEY_T
30、</p><p> MOVA,KEY_BUF</p><p> JNZST_1</p><p> ACALLMOVE</p><p> JMPST_K</p><p><b> ST_1:</b></p><p> CJNEA,#1,ST
31、_2</p><p> ACALLINC_T</p><p> JMPST_K</p><p><b> ST_2:</b></p><p> CJNEA,#2,ST_3</p><p> ACALLDEC_T</p><p> JMPS
32、T_K</p><p><b> ST_3:</b></p><p> CJNEA,#3,ST_K</p><p> MOVA,#0CH ;關(guān)光標(biāo)</p><p> ACALLLCD_CMD</p><p> SETBTR0 ;開定時(shí)器0</p
33、><p> JMPNEW_TIME</p><p><b> PHONE:</b></p><p> ACALLSJ_INIT</p><p><b> SJ_k:</b></p><p> ACALLKEY</p><p> J
34、MPSJ_K</p><p> TABLE_W:DB "WELCOME TO PHONE",00H</p><p> TABLE_WEEK:DB "Mon Tue Wed Thu Fri Sat Sun "</p><p> TABLE:DB"0,.?1abc2def3ghi4jkl5mno
35、6pqr7stu8vwx9yz "</p><p> ;***********************歡迎子程序****************************</p><p><b> WELCOME:</b></p><p> MOVDPTR,#TABLE_W</p><p> ACAL
36、LWRITE</p><p><b> WELCOM_K:</b></p><p> ACALLKEY_T</p><p> MOVA,KEY_BUF</p><p> JNZWELCOM_K</p><p><b> RET</b></p&
37、gt;<p> ;***********************時(shí)間模式子程序*************************</p><p><b> KEY_T:</b></p><p> MOV P2,#0E0H ;全掃描,各列線都送低電平</p><p> MOV P1,#00H</p>&
38、lt;p> MOV A,P1 ;讀回各行線電平值</p><p> ORL A,#0F0H ;只讀低四位</p><p> CPL A ;所讀值置反</p><p> JNZ KT_IN;不是全0說明有鍵按下</p><p> MOVKEY_BUF,#0FFH</p><p
39、> RET;無鍵按下返回</p><p><b> KT_IN:</b></p><p> ACALL DELAY5MS ;調(diào)延時(shí),等待按合抖動(dòng)過去</p><p> ACALL DELAY5MS ;調(diào)延時(shí),等待按合抖動(dòng)過去</p><p> ACALL DELAY5MS ;調(diào)延時(shí),等待按合抖
40、動(dòng)過去</p><p> ACALL DELAY5MS ;調(diào)延時(shí),等待按合抖動(dòng)過去</p><p> MOV R2,#04H ;R2做計(jì)數(shù)器,存待掃描行數(shù)</p><p> MOV R4,#7FH ;R4做指針,指示待掃描行數(shù)</p><p> MOV R7,#00H ;R7用于決定鍵號(hào),初值置以0</p>&l
41、t;p><b> KT_SCAN:</b></p><p><b> MOV A,R4</b></p><p><b> RL A</b></p><p> MOV R4,A;以上三條調(diào)整待掃描行</p><p> MOV P2,A;逐行掃描,
42、被掃描行送低電平</p><p> MOV P1,#00H</p><p> MOV A,P1;讀回各列線電平值</p><p> MOV R3,#04H;R3做記數(shù)器,存被掃描行的待查列數(shù)</p><p><b> KT_NEXT:</b></p><p> RRC A
43、;調(diào)整待查列</p><p> JNC KT_FIND;被查列為低電平,被按鍵找到,轉(zhuǎn)FIND</p><p> INC R7 ;未找到,鍵號(hào)加一</p><p> DJNZ R3,KT_NEXT ;被掃描行的待查列數(shù)不為0,轉(zhuǎn)回NEXT</p><p> DJNZ R2,KT_SCAN ;未找到所按鍵,返回
44、</p><p> MOVKEY_BUF,#0FFH</p><p><b> RET</b></p><p><b> KT_FIND:</b></p><p> MOV KEY_BUF,R7</p><p> MOVP2,#0E0H</p>
45、;<p><b> SETBTR1</b></p><p> KT_LOOSEN:</p><p><b> MOV A,P1</b></p><p> ORLA,#0F0H</p><p><b> CPL A</b></p>
46、<p> JNZ KT_LOOSEN;以上幾條重復(fù)全掃描,等待所按鍵松按</p><p><b> CLRTR1</b></p><p><b> RET</b></p><p> DISP_DATE:</p><p> MOVA,#80H</p>
47、<p> ACALLLCD_CMD</p><p> MOVA,#32H ;'2'</p><p> ACALLLCD_WDATA</p><p> MOVA,#30H ;'0'</p><p> ACALLLCD_WDATA</p><
48、;p> MOVA,YEAR ;年</p><p> ACALLBCD_LCD</p><p> MOVA,#2DH ;'-'</p><p> ACALLLCD_WDATA</p><p> MOVA,MONTH ;月</p><p> A
49、CALLBCD_LCD</p><p> MOVA,#2DH ;'-'</p><p> ACALLLCD_WDATA</p><p> MOVA,DAY ;日</p><p> ACALLBCD_LCD</p><p> MOVA,#20H</p
50、><p> ACALLLCD_WDATA</p><p> MOVA,WEEK ;星期</p><p><b> RLA</b></p><p><b> RLA</b></p><p> ADDA,#TABLE_WEEK</p&g
51、t;<p> MOVDPL,A</p><p> MOVR3,#3</p><p><b> WEEK1:</b></p><p><b> CLRA</b></p><p> MOVCA,@A+DPTR</p><p> ACAL
52、LLCD_WDATA</p><p> INCDPTR</p><p> DJNZR3,WEEK1</p><p><b> RET</b></p><p> DISP_TIME:</p><p> MOVA,#0C0H ;跳轉(zhuǎn)到第二行開頭</p>
53、<p> ACALLLCD_CMD</p><p> MOVA,H0 ;時(shí)</p><p> ACALLBCD_LCD</p><p> MOVA,#3AH ;':'</p><p> ACALLLCD_WDATA</p><p> MOV
54、A,M0 ;分</p><p> ACALLBCD_LCD</p><p> MOVA,#3AH ;':'</p><p> ACALLLCD_WDATA</p><p> MOVA,S0 ;秒</p><p> ACALLBCD_LCD</
55、p><p><b> RET</b></p><p><b> BCD_LCD:</b></p><p> MOVB,#10</p><p><b> DIVAB</b></p><p> ACALLBCD_ASCII</p&g
56、t;<p> ACALLLCD_WDATA</p><p><b> MOVA,B</b></p><p> ACALLBCD_ASCII</p><p> ACALLLCD_WDATA</p><p><b> RET</b></p><
57、p> BCD_ASCII:</p><p> ANLA,#0FH</p><p> ADDA,#30H</p><p><b> RET</b></p><p><b> ;光標(biāo)移動(dòng):</b></p><p><b> MOVE:</
58、b></p><p> ACALLLCD_RCMD</p><p> CJNEA,#8CH,MOVE_1</p><p> MOVA,#0C1H</p><p> JMPMOVE_3</p><p><b> MOVE_1:</b></p><p&g
59、t; CJNEA,#0C7H,MOVE_2</p><p> MOVA,#83H</p><p> JMPMOVE_3</p><p><b> MOVE_2:</b></p><p><b> ADDA,#3</b></p><p><b>
60、; MOVE_3:</b></p><p> ACALLLCD_CMD</p><p><b> RET </b></p><p><b> INC_T:</b></p><p> ACALLLCD_RCMD</p><p><b>
61、 PUSHACC</b></p><p> CJNEA,#83H,ID_1</p><p><b> INCYEAR</b></p><p> MOVA,YEAR</p><p> CJNEA,#100,ID_4</p><p> MOVYEAR,#0&l
62、t;/p><p><b> JMPID_4</b></p><p><b> ID_1:</b></p><p> CJNEA,#86H,ID_2</p><p> INCMONTH</p><p> MOVA,MONTH</p><p
63、> CJNEA,#13,ID_4</p><p> MOVMONTH,#1</p><p><b> JMPID_4</b></p><p><b> ID_2:</b></p><p> CJNEA,#89H,ID_3</p><p><b
64、> INCDAY</b></p><p> MOVA,DAY</p><p> CJNEA,#31,ID_4</p><p> MOVDAY,#1</p><p><b> JMPID_4</b></p><p><b> ID_3:<
65、;/b></p><p> CJNEA,#8CH,INCT</p><p><b> INCWEEK</b></p><p> MOVA,WEEK</p><p> CJNEA,#7,ID_4</p><p> MOVWEEK,#0</p><p
66、><b> ID_4:</b></p><p> ACALLDISP_DATE</p><p><b> POPACC</b></p><p> ACALLLCD_CMD</p><p><b> RET</b></p><p>
67、<b> INCT:</b></p><p> CJNEA,#0C1H,IT_1</p><p><b> INCH0</b></p><p><b> MOVA,H0</b></p><p> CJNEA,#24,IT_3</p><
68、p> MOVH0,#0</p><p><b> JMPIT_3</b></p><p><b> IT_1:</b></p><p> CJNEA,#0C4H,IT_2</p><p><b> INCM0</b></p><
69、p><b> MOVA,M0</b></p><p> CJNEA,#60,IT_3</p><p> MOVM0,#0</p><p><b> JMPIT_3</b></p><p><b> IT_2:</b></p><
70、p> CJNEA,#0C7H,IT_3</p><p><b> INCS0</b></p><p><b> MOVA,S0</b></p><p> CJNEA,#60,IT_3</p><p> MOVS0,#0</p><p><
71、b> IT_3:</b></p><p> ACALLDISP_TIME</p><p><b> POPACC</b></p><p> ACALLLCD_CMD</p><p><b> RET</b></p><p><b>
72、; DEC_T:</b></p><p> ACALLLCD_RCMD</p><p><b> PUSHACC</b></p><p> CJNEA,#83H,DD_1</p><p><b> DECYEAR</b></p><p> M
73、OVA,YEAR</p><p> CJNEA,#0FFH,DD_4</p><p> MOVYEAR,#99</p><p><b> JMPID_4</b></p><p><b> DD_1:</b></p><p> CJNEA,#86H,D
74、D_2</p><p> DECMONTH</p><p> MOVA,MONTH</p><p> CJNEA,#0,DD_4</p><p> MOVMONTH,#12</p><p><b> JMPDD_4</b></p><p><
75、;b> DD_2:</b></p><p> CJNEA,#89H,DD_3</p><p><b> DECDAY</b></p><p> MOVA,DAY</p><p> CJNEA,#0,DD_4</p><p> MOVDAY,#30<
76、;/p><p><b> JMPID_4</b></p><p><b> DD_3:</b></p><p> CJNEA,#8CH,DECT</p><p><b> DECWEEK</b></p><p> MOVA,WEEK&
77、lt;/p><p> CJNEA,#0FFH,DD_4</p><p> MOVWEEK,#6</p><p><b> DD_4:</b></p><p> ACALLDISP_DATE</p><p><b> POPACC</b></p>
78、<p> ACALLLCD_CMD</p><p><b> RET</b></p><p><b> DECT:</b></p><p> CJNEA,#0C1H,DECT_1</p><p><b> DECH0</b></p>
79、<p><b> MOVA,H0</b></p><p> CJNEA,#0FFH,DECT_3</p><p> MOVH0,#23</p><p> JMPDECT_3</p><p><b> DECT_1:</b></p><p>
80、 CJNEA,#0C4H,DECT_2</p><p><b> DECM0</b></p><p><b> MOVA,M0</b></p><p> CJNEA,#0FFH,DECT_3</p><p> MOVM0,#59</p><p> J
81、MPDECT_3</p><p><b> DECT_2:</b></p><p> CJNEA,#0C7H,DECT_3</p><p><b> DECS0</b></p><p><b> MOVA,S0</b></p><p&g
82、t; CJNEA,#0FFH,DECT_3</p><p> MOVS0,#59</p><p><b> DECT_3:</b></p><p> ACALLDISP_TIME</p><p><b> POPACC</b></p><p> ACA
83、LLLCD_CMD</p><p><b> RET</b></p><p> ;***********************手機(jī)模式子程序**************************************</p><p><b> SJ_INIT:</b></p><p>
84、MOVBUF,#0FFH</p><p> MOVCURSOR,#0</p><p> ACALLLCD_INIT</p><p> MOVA,#0EH</p><p> ACALLLCD_CMD</p><p><b> RET</b></p><p
85、> ;掃描鍵盤子程序:</p><p><b> KEY:</b></p><p> MOVP2,#0E0H</p><p> MOVP1,#00H</p><p><b> MOVA,P1</b></p><p> ORLA,#0F0
86、H</p><p><b> CPLA</b></p><p><b> JNZIN</b></p><p><b> RET</b></p><p><b> IN:</b></p><p> ACALLDEL
87、AY </p><p> ACALLDELAY</p><p> ACALLDELAY</p><p> MOVR4,#7FH</p><p> MOVR5,#04H</p><p> MOVR6,#00H</p><p><b> SCAN:&l
88、t;/b></p><p><b> MOVA,R4</b></p><p><b> RLA</b></p><p><b> MOVR4,A</b></p><p><b> MOVP2,A</b></p>
89、<p> MOVP1,#00H</p><p><b> MOVA,P1</b></p><p> MOVR7,#04H</p><p><b> SCAN_LIE:</b></p><p><b> RRCA</b></p>
90、<p><b> JNCFIND</b></p><p><b> INCR6</b></p><p> DJNZR7,SCAN_LIE</p><p> DJNZR5,SCAN</p><p><b> RET</b></p>&
91、lt;p><b> FIND:</b></p><p> ACALLJUDGE ;判斷是否雙擊</p><p> MOVIDLE,#00H</p><p> MOVSAME,R6</p><p> ACALLGIVE_KEY</p><p> ACALLC
92、LEAR ;清除按鍵時(shí)間</p><p> SETBTR1 ;啟動(dòng)定時(shí)器1,記錄按鍵時(shí)間</p><p> MOV P2,#0E0H</p><p><b> LOOSEN:</b></p><p> MOVA,DOU_SEC</p><p> CJNEA,
93、#02H,LOOSEN1 ;按鍵超過1秒,BUF=0(循環(huán)顯示)</p><p> MOVBUF,#00H</p><p> MOVR7,#00H</p><p><b> LOOSEN1:</b></p><p> MOVP1,#00H</p><p><b>
94、; MOV A,P1</b></p><p> ORL A,#0F0H</p><p><b> CPL A</b></p><p> JNZ LOOSEN ;等待按鍵松開</p><p> CLRTR1 ;關(guān)閉定時(shí)器1</p><p>
95、CLRCIRCLE</p><p> CJNER6,#10,K1</p><p> K1:JCKEY_DATA ;鍵值小于10跳轉(zhuǎn)到數(shù)字鍵處理</p><p> KEY_15: ;鍵值大于等于10為命令鍵</p><p><b> MOVA,R6</b></p>
96、<p> CJNEA,#0FH,KEY_14</p><p> CPLDIALING</p><p><b> CLRTR1</b></p><p><b> RET</b></p><p><b> KEY_14:</b></p>
97、<p> CJNEA,#0EH,KEY_13</p><p> MOVA,#0CH</p><p> ACALLLCD_CMD</p><p> JMPBEGIN</p><p><b> RET</b></p><p><b> KEY_13:<
98、/b></p><p> CJNEA,#0DH,KEY_12</p><p> JMPPHONE</p><p><b> RET </b></p><p><b> KEY_12:</b></p><p> CJNEA,#0CH,KEY_11<
99、/p><p> MOVA,CURSOR</p><p> JZKEY_12_1</p><p> ACALLLCD_FORE</p><p> DECCURSOR</p><p><b> KEY_12_1:</b></p><p><b>
100、 RET</b></p><p><b> KEY_11:</b></p><p> CJNEA,#0BH,KEY_10</p><p> ACALLLCD_RCMD</p><p> CJNEA,#80H,KEY_11_1</p><p><b> RET&
101、lt;/b></p><p><b> KEY_11_1:</b></p><p> ACALLLCD_BACK;</p><p> INCCURSOR</p><p><b> RET</b></p><p><b> KEY_10:<
102、/b></p><p> ACALLLCD_DELE;</p><p><b> RET</b></p><p><b> KEY_DATA:</b></p><p> MOVA,BUF</p><p> CJNE A,#0,DATA1</p&
103、gt;<p><b> RET</b></p><p> DATA1:CJNEA,#1,DATA2</p><p> ACALLLCD_DIS_SIN</p><p><b> RET</b></p><p><b> DATA2:</b></
104、p><p> ACALLLCD_DIS_COM</p><p><b> RET</b></p><p><b> GIVE_KEY:</b></p><p><b> MOVA,R6</b></p><p> MOVB,#04H&l
105、t;/p><p><b> MULAB</b></p><p> ADDA,#TABLE</p><p> MOVDPL,A</p><p><b> RET</b></p><p> ;顯示第一個(gè)字符子程序:</p><p> L
106、CD_DIS_SIN:</p><p><b> CLRA</b></p><p> MOVCA,@A+DPTR</p><p> ACALLLCD_WCHAR</p><p><b> RET</b></p><p> ;顯示全部字符子程序:</p&
107、gt;<p> LCD_DIS_COM:</p><p> MOVR1,#3</p><p> LCD_DIS_COM1:</p><p><b> MOVA,#1</b></p><p> MOVCA,@A+DPTR</p><p> ACALLLCD_WC
108、HAR</p><p><b> INCDPTR</b></p><p> DJNZR1,LCD_DIS_COM1</p><p><b> RET</b></p><p> ??;長(zhǎng)按循環(huán)顯示子程序:</p><p> LCD_CIRCLE:</p>
109、<p><b> MOVA,#0</b></p><p> MOVCA,@A+DPTR</p><p> ACALLLCD_WCHAR</p><p><b> INCDPTR</b></p><p><b> INCR7</b><
110、/p><p> CJNER7,#4,CIRCLE1</p><p> MOVR7,#00H</p><p> MOVA,DPL</p><p><b> SUBBA,#4</b></p><p> MOVDPL,A</p><p><b>
111、 CIRCLE1:</b></p><p><b> RET</b></p><p><b> ?。磺宄存I時(shí)間:</b></p><p><b> CLEAR:</b></p><p> MOVDOU_SEC,#0</p><p>
112、; MOVDOU_NMS,#0</p><p> ;CLRDOUBLE</p><p><b> RET</b></p><p><b> ??;判斷是否雙擊:</b></p><p><b> JUDGE:</b></p><p>&
113、lt;b> MOVA,R6</b></p><p> CJNEA,SAME,JUDGE2</p><p> MOVA,IDLE</p><p> CJNEA,#2,JUDGE1</p><p> JUDGE1:JNCJUDGE2</p><p> MOVA,BUF<
114、/p><p> CJNEA,#1,JUDGE2</p><p> MOVBUF,#2</p><p><b> RET</b></p><p><b> JUDGE2:</b></p><p> MOVBUF,#1</p><p>&l
115、t;b> RET</b></p><p> ;寫入一個(gè)字符到LCD子程序:</p><p> LCD_WCHAR:</p><p> ACALLLCD_MOVE</p><p> LCD_WCHAR_NL: ;直接覆蓋寫入</p><p> ACALLLCD_WDATA</p&g
116、t;<p> ACALLLCD_RCMD</p><p> CJNEA,#90H,LCD_WCHAR1</p><p> MOVA,#0C0H</p><p> ACALLLCD_CMD</p><p> JMPLCD_WCHAR2</p><p> LCD_WCHAR1:<
117、;/p><p> CJNEA,#0D1H,LCD_WCHAR2</p><p> ACALLLCD_DELE</p><p> LCD_WCHAR2:</p><p><b> RET</b></p><p> ;刪除一個(gè)字符子程序:</p><p><
118、b> LCD_DELE:</b></p><p> ACALLLCD_RCMD</p><p> CJNEA,#80H,DELE_1</p><p><b> RET</b></p><p><b> DELE_1:</b></p><p>
119、 MOVA,CURSOR</p><p> JNZDELE_2</p><p> ACALLLCD_BACK</p><p> MOVA,#20H</p><p> ACALLLCD_WDATA</p><p> ACALLLCD_BACK</p><p><b
120、> RET</b></p><p><b> DELE_2:</b></p><p> ACALLLCD_BACK</p><p> ACALLLCD_RCMD</p><p><b> PUSHACC</b></p><p> ACALL
121、LCD_FORE</p><p> MOVR2,CURSOR</p><p> LCD_DELE1:</p><p> ACALLLCD_RDATA</p><p><b> PUSHACC</b></p><p> ACALLLCD_BACK</p><
122、p> ACALLLCD_BACK</p><p><b> POPACC</b></p><p> ACALLLCD_WCHAR_NL</p><p> ACALLLCD_FORE</p><p> DJNZR2,LCD_DELE1</p><p> ACALLLC
123、D_BACK</p><p> MOVA,#20H</p><p> ACALLLCD_WCHAR_NL</p><p> LCD_DELE2:</p><p><b> POPACC</b></p><p> ACALLLCD_CMD</p><p>
124、;<b> RET</b></p><p><b> ;退格子程序:</b></p><p><b> LCD_BACK:</b></p><p> ACALLLCD_RCMD</p><p> CJNEA,#0C0H,LCD_BACK1</p>&
125、lt;p> MOVA,#90H</p><p> ACALLLCD_CMD</p><p> LCD_BACK1:</p><p> MOVA,#10H</p><p> ACALLLCD_CMD</p><p><b> RET</b></p><
126、;p><b> ;光標(biāo)右移子程序:</b></p><p><b> LCD_FORE:</b></p><p> ACALLLCD_RCMD</p><p> CJNEA,#8FH,LCD_FORE1</p><p> MOVA,#0C0H</p><p
127、> ACALLLCD_CMD</p><p><b> RET</b></p><p> LCD_FORE1:</p><p> MOVA,#14H</p><p> ACALLLCD_CMD</p><p><b> RET</b></p&g
128、t;<p><b> LCD_MOVE:</b></p><p><b> PUSHACC</b></p><p> MOVA,CURSOR</p><p> JZLCD_MOVE3</p><p> MOVR2,CURSOR</p><p&
129、gt; CJNER2,#1,MOVE0</p><p> JMPLCD_MOVE2</p><p><b> MOVE0:</b></p><p><b> DECR2</b></p><p> LCD_MOVE1:</p><p> ACALLLCD
130、_FORE</p><p> DJNZR2,LCD_MOVE1</p><p> MOVR2,CURSOR</p><p> LCD_MOVE2:</p><p> ACALLLCD_RDATA</p><p> ACALLLCD_WCHAR_NL</p><p> ACA
131、LLLCD_BACK</p><p> ACALLLCD_BACK</p><p> ACALLLCD_BACK</p><p> DJNZR2,LCD_MOVE2</p><p> ACALLLCD_FORE</p><p> LCD_MOVE3:</p><p><
132、b> POPACC</b></p><p><b> RET</b></p><p> ??;*******************************LCD相關(guān)子程序*****************************</p><p> ;從LCD讀出一個(gè)數(shù)據(jù)子程序:</p><p>
133、; LCD_RDATA:</p><p> ACALL CHECKBUSY</p><p> MOV P0,#0FFH</p><p> SETBLCD_RS</p><p> SETBLCD_RW</p><p> SETBLCD_EN</p><p><b>
134、; NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> MOVA,P0</b></p><p> CLRLCD_EN</p><p><b>
135、; RET</b></p><p> ;讀數(shù)據(jù)地址子程序:</p><p><b> LCD_RCMD:</b></p><p> ACALL CHECKBUSY</p><p> MOV P0,#0FFH</p><p> CLRLCD_RS</p>
136、<p> SETBLCD_RW</p><p> SETBLCD_EN</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b&
137、gt; MOVA,P0</b></p><p> ORLA,#80H</p><p> CLRLCD_EN</p><p><b> RET</b></p><p> ;LCD初始化設(shè)定子程序</p><p><b> LCD_INIT:</b&
138、gt;</p><p> ACALL DELAY5MS ;延時(shí)15MS</p><p> ACALL DELAY5MS ;等待LCD電源穩(wěn)定</p><p> ACALL DELAY5MS</p><p> MOV A,#38H ;16*2顯示,5*7點(diǎn)陣
139、,8位數(shù)據(jù)</p><p> ACALL LCD_CMD_NC ;不進(jìn)行LCD忙檢測(cè)</p><p> ACALL DELAY5MS</p><p> MOV A,#38H ;16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p> ACALL LCD_CMD_NC ;不進(jìn)行LCD忙
140、檢測(cè)</p><p> ACALL DELAY5MS</p><p> MOV A,#38H ;16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)</p><p> ACALL LCD_CMD_NC ;不進(jìn)行LCD忙檢測(cè)</p><p> ACALL DELAY5MS</p><p&g
141、t; MOV A,#08H ;顯示關(guān)</p><p> ACALL LCD_CMD ;進(jìn)行LCD忙檢測(cè)</p><p> MOV A,#01H ;清除屏幕</p><p> ACALL LCD_CMD ;進(jìn)行LCD忙檢測(cè)</p>&l
142、t;p> MOV A,#0CH ;顯示開,關(guān)光標(biāo)</p><p> ACALL LCD_CMD ;進(jìn)行LCD忙檢測(cè)</p><p><b> RET</b></p><p> ;寫指令數(shù)據(jù)到LCD</p><p> ;RS=L,RW=L,D0-D7=指令
143、碼,E=高脈沖</p><p><b> LCD_CMD:</b></p><p> CALL CHECKBUSY</p><p> LCD_CMD_NC:</p><p> CLR LCD_RS</p><p> CLR LCD_RW</p><p><
144、b> MOV P0,A</b></p><p> SETB LCD_EN</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><
145、b> NOP</b></p><p> CLR LCD_EN</p><p><b> RET</b></p><p> ;寫顯示數(shù)據(jù)到LCD</p><p> ;RS=H,RW=L,D0-D7=數(shù)據(jù),E=高脈沖</p><p> LCD_WDATA:</p&
146、gt;<p> ACALL CHECKBUSY</p><p> SETB LCD_RS</p><p> CLR LCD_RW</p><p> MOV P0,A</p><p> SETB LCD_EN</p><p><b> NOP</b></
147、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR LCD_EN</p><p><b> RET</b></p>
148、<p><b> WRITE:</b></p><p><b> PUSH ACC</b></p><p><b> WRITE1:</b></p><p><b> CLR A</b></p><p> MOVC A,@A+D
149、PTR</p><p> JZ WRITE2</p><p><b> INC DPTR</b></p><p> ACALL LCD_WDATA</p><p> JMP WRITE1</p><p><b> WRITE2:</b></p>
150、<p><b> POP ACC</b></p><p><b> RET</b></p><p> ;檢測(cè)LCD控制器忙狀態(tài)</p><p><b> ;讀數(shù)據(jù)</b></p><p> ;RS=L,RW=H,E=H,輸出:D0-D7=數(shù)據(jù)</p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1602lcd仿手機(jī)鍵盤單片機(jī)課程設(shè)計(jì)
- 單片機(jī)手機(jī)鍵盤-單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---鍵盤接口課程設(shè)計(jì)
- 單片機(jī)鍵盤輸入課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)44矩陣式鍵盤
- 單片機(jī)課程設(shè)計(jì)--矩陣鍵盤 led顯示
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 《單片機(jī)課程設(shè)計(jì)》報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告(4×4矩陣鍵盤)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告doc
評(píng)論
0/150
提交評(píng)論