2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論