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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  基于單片機的單詞記憶測試器</p><p><b>  目 錄</b></p><p>  第一章 單詞記憶測試器的設(shè)計11</p><p>  1.1 硬件模塊設(shè)計11</p><p>  1.1.1中央處理模塊11</p><p>  1.1.2 顯示模

2、塊的硬件部分介紹12</p><p>  1.1.3 矩陣鍵盤15</p><p>  1.2 電路原理圖設(shè)計16</p><p>  1.3 軟件程序設(shè)計17</p><p>  1.3.1 程序設(shè)計思路17</p><p>  1.3.2矩陣鍵盤的程序設(shè)計18</p><p> 

3、 1.3.3 LCD12864顯示模塊的驅(qū)動程序19</p><p>  1.3.4 顯示字模碼的提取20</p><p>  1.3 系統(tǒng)軟件主程序結(jié)構(gòu)及其函數(shù)21</p><p>  1.4 軟件的仿真26</p><p>  第二章 結(jié)語28</p><p>  附 錄 單片機單詞記憶

4、測試器C程序源代碼</p><p>  基于單片機的單詞記憶測試器</p><p><b>  摘要</b></p><p>  本論文的研究對象是基于單片機的單詞記憶測試器的設(shè)計,此單詞記憶測試器可以實現(xiàn)單詞的輸入并判斷輸入的單詞是否正確,單詞背完后給出正確率。該單片機單詞記憶測試器為在現(xiàn)實生活中有著廣泛的應用,特別是對學習英語方面有很大的作

5、用。</p><p>  本設(shè)計以STC89C52單片機為處理器,以12854點陣液晶屏為顯示器件,并使用5×6距陣鍵盤為輸入設(shè)備,實現(xiàn)了功能全面的人機界面和高速的數(shù)據(jù)處理功能,利用單片機片上FLASH ROM,可儲存10-20個英文單詞和漢字,作為記憶測試用。</p><p>  關(guān)鍵詞: 單片機 單詞記憶測試器 AT89C52 12864液晶屏&l

6、t;/p><p>  第一章 單詞記憶測試器的設(shè)計</p><p>  1.1 硬件模塊設(shè)計</p><p>  本單詞記憶測試器系統(tǒng)硬件部分分為三個模塊:中央處理模塊、顯示模塊、鍵盤輸入模塊。系統(tǒng)模型圖如下:</p><p>  圖4 系統(tǒng)硬件模塊圖</p><p>  1.1.1中央處理模塊</p>

7、<p>  中央處理模塊選用STC89C52單片機系統(tǒng)組成,電路包括:STC89C52單片機、復位電路、時鐘振蕩電路。</p><p>  STC89C52單片機需在復位電路和時鐘振蕩電路組成的最小系統(tǒng)下工作,單片機引腳圖如圖5,外圍電路如圖6和圖7所示,時鐘電路采用頻率采用為12MHZ的晶振,C1、C2與晶振構(gòu)成了外部振蕩電路。復位電路采用電解電容與電阻串聯(lián),當系統(tǒng)上電時,由于電容充電,在RST端會

8、產(chǎn)生一個高電平,高電平持續(xù)的時間由電容和電阻的值決定,當RESET信號為低電平時,系統(tǒng)為工作狀態(tài)。 STC89C52具有ISP的功能,可以通過串行口直接將程序下載到單片機內(nèi)。在下載程序狀態(tài)下,RESET信號被拉高,系統(tǒng)進行程序下載,待程序下載完畢后,RESET重新拉低。用戶可以通過切斷電源進行手動復位,或者通過重新下載新的程序進行復位。</p><p>  圖5 STC89C52的引腳排列圖</p>

9、<p>  圖6 時鐘電路圖 圖7復位電路圖</p><p>  1.1.2 顯示模塊的硬件部分介紹</p><p>  顯示模塊采用單色點陣液晶屏12864模塊,該模塊在點陣液晶屏基礎(chǔ)上集成了控制器kS0108,用戶只需設(shè)計好接口程序,就可讓模塊顯示出各種字符和圖像。</p><p&g

10、t;  通常我們所見到的 LCD 模塊,分為幾部分:LCM(玻璃)、背光、PCB 板;而背光和PCB板部分其實是可有可無的,視具體的LCD 模塊而定。點陣的LCD 模塊按照驅(qū)動控制器的集成方式,大可分為兩種:COB 和COG;COG 其實就是將驅(qū)動控制IC 集成到了玻璃里面,這樣的而后面的PCB 板上其實只是一些驅(qū)動控制IC 無法集成的電容電阻而已;COB 也就是把驅(qū)動控制IC 焊接在LCD 模塊后面的PCB 板上。</p>

11、<p>  12864 為一塊128X64 點陣的LCD 顯示模塊,模塊上的 LCM 采用COG 技術(shù)將控制</p><p> ?。ò@存)、驅(qū)動器集成在LCM 的玻璃上,接口簡單、操作方便;為方便用戶的使用,</p><p>  在LCM 的基礎(chǔ)上設(shè)計了12864 模塊,將模塊所必需的外圍電容電阻集成到模塊上,</p><p>  并引出多種形式的

12、引線接口方便用戶使用。12864 模塊與各種MCU 均可進行方便簡</p><p><b>  單的接口操作。</b></p><p><b>  LCD 的接口:</b></p><p>  一般來說,LCD 模塊(帶有驅(qū)動控制器)的接口多為總線的接口,不是6800 就是8080,或者是串行SPI(及類SPI 時序);除

13、了這些總線的端口外,有的LCD 模塊還引出了一些功能性的端口,如偏壓調(diào)節(jié)輸入、負壓輸出等。</p><p>  圖8 12864 模塊接口定義表</p><p>  顯示 RAM 區(qū)映射情況:</p><p>  對于 LCD 模塊,了解清楚驅(qū)動控制IC 當中的顯存與LCD 玻璃上的點的對應關(guān)系是非常重要的,這是編寫LCD 的驅(qū)動程序的基礎(chǔ)。12864 液晶顯示模塊

14、的顯示器(玻璃)上的顯示點與驅(qū)動控制芯片中的顯示緩存RAM是一一對應的;驅(qū)動控制芯片當中共有65(8 Page x 8 bit+1)X 132 個位的顯示RAM 區(qū)。而顯示器的顯示點陣大小為64X128 點,所以實際上在液晶顯示模塊中有用的顯示RAM 區(qū)為64 X 128 個位;按byte 為單位劃分,共分為8 個Page,每個Page 為8 行,而每一行為128 個位(即128 列)。</p><p>  驅(qū)動

15、控制芯片的顯示RAM區(qū)每個byte的數(shù)據(jù)對應屏上的點的排列方式為:縱向排列,低位在上高位在下;如圖 8所示</p><p>  圖8 驅(qū)動控制芯片的顯示RAM區(qū)</p><p>  12864 液晶顯示模塊的顯示屏上的每一個點都對應有控制器片內(nèi)的顯示緩存RAM中</p><p>  的一個位,顯示屏上64X128 個點分別對應著顯示RAM的8 個Page,每一個Pa

16、ge有128 個byte的空間對應。因此可知顯示RAM區(qū)中的一個Page空間對應8 行的點,而該Page中的一個byte數(shù)據(jù)則對應一列(8 個點)。圖9 為顯示RAM區(qū)與顯示屏的點映射圖:</p><p>  圖9 顯示RAM區(qū)與顯示屏的點映射圖</p><p><b>  行、列地址:</b></p><p>  用戶如要點亮 LCD 屏上的

17、某一個點時,實際上就是對該點所對應的顯示RAM 區(qū)中的某一個位進行置1 操作;所以就要確定該點所處的行地址、列地址。從上圖中可以看出,</p><p>  MzL02-12864 液晶顯示模組的行地址實際上就是Page 的信息,每一個Page 應有8 行;而列地址則表示該點的橫坐標,在屏上為從左到右排列,Page 中的一個Byte 對應的是一列(8行,即8 個點),達128 列??梢愿鶕?jù)這樣的關(guān)系在程序中控制 L

18、CD 顯示屏的顯示。注意:MzL02-12864 的顯示緩存RAM 區(qū)實際上比模塊上的顯示器所對應的RAM 區(qū)要大;而LCD 模塊具體設(shè)置Page(有時也稱頁)時,屏上的位置與驅(qū)動控制IC 當中的哪里的RAM區(qū)對應,還與驅(qū)動控制IC 與屏的連接有關(guān);所以,實際在使用時,請參考所提供的范例設(shè)置(主要是設(shè)置COM 反向掃描、SEG 設(shè)置為正向掃描,以此設(shè)置方法,則每個Page 中的前三列以及最后一列是不對應在LCD 屏幕上的)。</p

19、><p>  1.1.3 矩陣鍵盤</p><p>  要測試記憶的單詞,就要有字母的輸入接口,本接口設(shè)計為5×6矩陣鍵盤輸入,接入單片機的P1口和P3口進行鍵盤掃描。最大程度地提高了單片機IO口的利用率,設(shè)計共30個接鍵,包括了26個英文字母以及四個功能鍵:“確定”、“不認識”、“上一個”、“下一個”。</p><p>  矩陣鍵盤如圖10,由30個輕觸按鍵

20、按照6行5列排列,連接到P1、P3端口。其掃描的原理是:先將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。然后再將行線所接的單片機的I/O口作為輸入端,而列線所接的I/O口則作為輸出,以相同的方法讀一次端口,程序中就可識別是啊個坐標的按鍵按下了。<

21、;/p><p>  圖10 5×6矩陣鍵盤</p><p>  1.2 電路原理圖設(shè)計</p><p>  電路原理圖設(shè)計使用集原理圖設(shè)計、PCB設(shè)計、電路仿真功能為一體的PROTUES軟件。以該軟件設(shè)計的電路原理圖圖11。</p><p>  圖11 單片機單詞記憶測試器電路原理圖</p><p><b&

22、gt;  電路設(shè)計參數(shù):</b></p><p>  C1 C2 為20-30PF瓷片電容,與12M晶振組成時鐘振蕩電路;</p><p>  復位電路使用R1為10K電阻、C3為10uF電解電容;</p><p>  12864液晶模塊與單片機P0口連接,因P0口為真正的三態(tài)門結(jié)構(gòu),因些作數(shù)據(jù)總線使用時要外接上拉電阻,可使用10K的排阻;</p&

23、gt;<p>  按鍵如圖的行相連,列相連的矩陣接法連入單片機IO口;</p><p>  電路的供電為5V直流電源;</p><p>  D1為輸入錯誤的狀態(tài)指示燈,加220歐限流電阻連到VCC,因為STC89C51單片機IO的電流灌入能力要強于電流輸出能力,因此一般使IO為低電平時點亮LED燈。</p><p>  1.3 軟件程序設(shè)計</p

24、><p>  1.3.1 程序設(shè)計思路</p><p>  因本系統(tǒng)為模塊化設(shè)計,為方便軟件編寫和移植,程序設(shè)計采用C語言,程序流程圖如下:</p><p>  1.3.2矩陣鍵盤的程序設(shè)計</p><p>  矩陣鍵盤采用5×6 列與行掃描法,P1口依次接鍵盤的每一行,而P3口依次接鍵盤的每一列,程序開始先令P1全為高電平,P3口全為

25、低電平,這樣一旦矩陣鍵盤中有一個鍵按下時,就會在某一行中出現(xiàn)低電平,而某一列中出現(xiàn)高電平,程序先讀P1口,以檢測到有低電平來確定行。再使P1全為低電平,P3口全為高電平,再讀P3口,以檢測到低電平來確定列。</p><p>  這里還要考慮按鍵的機械抖動問題,因為按鍵的機械特性,可能在按下瞬間會有一組抖動的脈沖,一般程序中采用延時方法來去抖動。</p><p>  實現(xiàn)的C程序函數(shù)如下:&

26、lt;/p><p>  /*************************************************</p><p><b>  ** 鍵盤掃描程序</b></p><p>  *************************************************/</p><p>  u

27、nsigned char kbscan() //鍵盤掃描</p><p><b>  {</b></p><p>  uchar hang,lie,key; //P1連行,P3連列</p><p>  if(P1!=0xFF||P3!=0) //按鍵去抖動</p><p&

28、gt;  delayms(5); //延時5ms</p><p>  if(P1!=0xFF||P3!=0)</p><p><b>  {</b></p><p>  switch(P1&0xFF) //P1 掃行</p><p><b> 

29、 {</b></p><p>  case 0xFE:hang=5;break; //P1.0為第6行</p><p>  case 0xFD:hang=4;break; //P1.1為第5行</p><p>  case 0xFB:hang=3;break; //P1.2為第4行</p><p>  case 0xF7:hang

30、=2;break; //P1.3為第3行</p><p>  case 0xEF:hang=1;break; //P1.4為第2行</p><p>  case 0xDF:hang=0;break; //P1.5為第1行</p><p><b>  }</b></p><p>  P1=0;

31、 //P1全低電平 </p><p>  P3=0xFF;//P3全高電平</p><p>  switch(P3&0xFF)</p><p><b>  {</b></p><p>  case 0xFE:lie=4;break; //P1.0為第5列</p><p

32、>  case 0xFD:lie=3;break; //P0.5為第4列</p><p>  case 0xFB:lie=2;break; //P0.6為第3列</p><p>  case 0xF7:lie=1;break; //P0.7為第2列</p><p>  case 0xEF:lie=0;break; //P0.7為第1列</p>&

33、lt;p><b>  }</b></p><p>  P1=0xFF; //P1全高電平 </p><p>  P3=0; //P3全低電平</p><p>  while(P1!=0xFF||P3!=0); //按鍵松開后才返回值</p><p>  key=tab1[hang][lie];</p&

34、gt;<p><b>  }</b></p><p><b>  else</b></p><p>  key='_'; //沒鍵按下返回空</p><p>  return (key);</p><

35、p><b>  }</b></p><p>  1.3.3 LCD12864顯示模塊的驅(qū)動程序</p><p>  LCD12864顯示模塊的程序作為顯示部分的底層程序,用戶可直接調(diào)用其函數(shù)來達到驅(qū)動和顯示功能。</p><p>  主要顯示命令和顯示的函數(shù)說明如下:</p><p>  清顯示屏:void Cl

36、earLCD() ,將LCD上的顯示字符清空</p><p>  漢字的顯示函數(shù):void hz_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag) ;</p><p>  其中X Y為漢字的起始坐標,n為字數(shù),hz為存儲漢字字模碼(后述)的地址,flag為顯示為黑還

37、是白。</p><p>  英文的顯示函數(shù)為:void en_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag) ;</p><p>  其中其中X Y為字母的起始坐標,n為字數(shù),asc為存儲字形碼(后述)的地址,flag為顯

38、示為黑還是白。</p><p>  LCD12864顯示一個單詞的示例代碼如下:</p><p>  en_disp(6,0,8,Asc,"correct:",1); //在第7行,第1列開始顯示correct;</p><p>  LCD12864顯示一個漢字的示例代碼如下:</p><p>  hz_disp

39、(0,48,1,hz1+hz_Num*32,1); //在第1行,第49列開始顯示測試的漢字</p><p>  1.3.4 顯示字模碼的提取</p><p>  為了使LCD12864能夠顯示用戶存儲的中文漢字和英文單詞,用戶必須將要顯示的漢字字模及英文字母字模碼存入單片機存儲器中,因LCD12864只能顯示點陣圖形,因此存儲入單片機的字模碼必須是通過點陣碼轉(zhuǎn)換而成,為了軟換更方便,設(shè)

40、計使用了字模轉(zhuǎn)換軟件實現(xiàn)漢字和英文碼的取模。</p><p>  圖12 中英文取字模軟件界面</p><p>  例如漢字“中國”,取得的字模碼為:</p><p>  /*-- 文字: 中 --*/</p><p>  0x00,0x00,0xFC,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x

41、08,0xFC,0x08,0x00,0x00,</p><p>  0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,</p><p>  /*-- 文字: 國 --*/</p><p>  0x00,0xFE,0x02,0x0A,0x8A,0x8A,

42、0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,</p><p>  0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,</p><p>  將此碼存入單片機程序存儲器里,使用液晶顯示的函數(shù)就可方便地顯示漢字或英文字形。</

43、p><p>  本單片機記憶測試系統(tǒng)的程序中將英文字符的字模碼表以asc.h文件形式保存,為節(jié)約單片機的RAM,生成的二進制文件以只讀形式儲在單片機的FLASH ROM中。</p><p>  1.3 系統(tǒng)軟件主程序結(jié)構(gòu)及其函數(shù)</p><p>  系統(tǒng)主程序完成主循環(huán)和對各模塊函數(shù)的調(diào)用,調(diào)用的文件包括:reg52.h、asc.h、 12864.h,其中reg

44、52.h是 8051內(nèi)核單片機的標準頭文件,定義了單片機內(nèi)部各寄存器的地址,使用戶編程更方便;asc.h存儲了本單詞記憶測試器的單詞和中文漢字字模塊,供顯示函數(shù)調(diào)用,而12864.h為LCD12864顯示屏的底層驅(qū)動程序,包括了屏顯示的指令函數(shù)和顯示中英文的函數(shù)。</p><p>  在KEIL uV3環(huán)境下將 主程序文件和reg52.h、asc.h、12864.h放在同一工程工作組中,以便主程序調(diào)用,如圖13。

45、</p><p>  圖13 keil下的 程序工程文件</p><p><b>  主程序的函數(shù):</b></p><p>  主程序首先進行存儲變量的定義:</p><p>  bit ERROR; //輸入字符錯誤標志位,輸入錯誤為 1</p><p>  bi

46、t result; //輸入的最終結(jié)果對錯的標志位,為0是正確</p><p>  bit verify; //標志按過一次確認鍵</p><p>  sbit ERR=P2^7; //P2.7 口接一個指示燈警告輸入錯誤</p><p>  uchar correctNUM; /

47、/統(tǒng)計測試正確的單詞數(shù),即得分</p><p>  uchar code SL[10]={4,4,5,3,2,4,4,3,4,3}; </p><p>  //存儲各測試單詞的長度,如果輸入的單詞長度與存儲的不同,也為錯誤</p><p>  為能動態(tài)地顯示測試的單詞,先將要測試的單詞存在一個二維數(shù)組中,顯示了該數(shù)組中的字符時,12864.h中的顯示函數(shù)會調(diào)用

48、相應字符的字模碼(asc.h中);</p><p>  /*****************************************</p><p>  /** 存儲要測試的單詞,放在ROM中</p><p>  /****************************************/</p><p>  uchar co

49、de S[10][5]={ "tree ", //樹</p><p>  "rain ", //雨</p><p>  "water", //水</p><p>  "fly ", //飛</p>

50、<p>  "go ", //去</p><p>  "fish ", //魚</p><p>  "snow ", //雪</p><p>  "eat ", //吃</p><

51、p>  "rice ", //米</p><p>  "ice ", //冰</p><p><b>  } ;</b></p><p>  該二維數(shù)組為行*列 10*5,即10行5列,10行表示有10個單詞,實際根據(jù)存儲ROM的大小,可以增加單詞數(shù);列數(shù)表示

52、單詞在存儲器中占的字符數(shù),以最長單詞(5個字符)定義,不足5個字符的單詞后補空格表示。</p><p>  前節(jié)介紹過鍵盤的輸入是通過矩陣掃描的方法,通過矩陣掃描可使單片機找到按鍵所在的某行某列,但要得到一個英文字母值,還得在單片機返回的某行某列位置預先定義個字母值,因此5*6矩陣鍵盤的整個返回字母表可定義一個二維數(shù)組存儲:</p><p>  /*********************

53、********************</p><p>  /** 存儲鍵盤的字母值 ,放在ROM中</p><p>  /****************************************/</p><p>  uchar code tab1[6][5]={{'a','b','c','d

54、9;,'e'},</p><p>  {'f','g','h','i','j' },</p><p>  {'k','l','m','n','o' },</p><p>  {'p

55、','q','r','s','t' },</p><p>  {'u','v','w','x','y'},</p><p>  {'z', 1, 2 , 3 , 4} };</p><p> 

56、 例如在按下鍵盤時,單片機返回鍵盤位置為 第二行第三列,就可從上表中查出是對應位置的字母。 鍵盤掃描函數(shù)返回的是鍵值。 </p><p>  key=tab1[hang][lie];</p><p>  進入主程序后,先對LCD12864屏進行初始化和清屏操作,然后在LCD12864屏上顯示單片機單詞記憶測試器的靜態(tài)的圖文,需要動態(tài)刷新的字符則在主循環(huán)中進行。</p>

57、<p>  LCD12864_init();//LCD12864初始化</p><p>  ClearLCD();//清屏</p><p>  en_disp(2,1,11,Asc,"INPUT WORD:",1); //在第3行 第21列 顯示"INPUT WORD:"</p><p>  //最

58、后的“1”表示顯示為白底黑字,如是0則為黑底白字,即反顯</p><p>  en_disp(4,1,1,Asc,">",1); //在第5行,第5列開始顯示">"</p><p>  en_disp(6,0,8,Asc,"correct:",1); //在

59、第7行,第1列開始顯示"correct:"</p><p>  en_disp(6,80,5,Asc,"00/10",1); //在第7行 第81列顯示"00/10"</p><p>  LCD12864的顯示效果如下,此時系統(tǒng)進入單詞輸入測試就緒狀態(tài)。</p><p>  在系統(tǒng)

60、進入單詞輸入測試就緒狀態(tài)后,主程序即進入while(1)的主循環(huán)中,循環(huán)進行鍵盤掃描,并判斷鍵盤輸入值,再與待測試的單詞進行比較,如果輸入的字符和字符長度均與被測試的單詞一致,則顯示correct加1,即為加1分,并進入下一個單詞的測試,測試完10個單詞后,重新進入第1個單詞的測試。</p><p>  主程序的主循環(huán)部分代碼及注釋如下:</p><p><b>  while(

61、1)</b></p><p>  { </p><p>  KeyNum[iword]=kbscan(); //進行矩陣按鍵掃描,得到掃描鍵盤的輸入值</p><p>  hz_disp(0,48,1,hz1+hz_Num*32,1); //在第1行,第49列開始顯示測試的漢字<

62、;/p><p>  temp[0]=(hz_Num+1)/10+0x30; //將十進制數(shù)轉(zhuǎn)換為ASCII字符</p><p>  //temp數(shù)組用來存儲測試的序號 </p><p>  temp[1]=(hz_Num+1)%10+0x30; //算出測試漢字的序號的第一位和第二位&l

63、t;/p><p>  en_disp(0,20,1,Asc,":",1); //在第1行 第21列顯示":"</p><p>  en_disp(0,4,2,Asc,temp,1); //在第1行 第5列顯示測試序號 </p><p>  if(KeyNum[iword]!='_

64、9;) //鍵盤有按鍵按下,無按下返回的是'_'</p><p><b>  {</b></p><p>  if(KeyNum[iword]==1) //如果按下了確定鍵</p><p><b>  {</b></p><p&g

65、t;  if(SL[hz_Num]==iword&&verify) </p><p>  //輸入長度等于測試單詞的長度,則正確 ,verify表示按下了確認后有效一次</p><p><b>  {</b></p><p>  correctNUM+=1;</p><p>  if(correct

66、NUM>10)</p><p><b>  {</b></p><p>  correctNUM=10; //最多10個正確的</p><p><b>  }</b></p><p>  verify=0; //標志位清零</p>&

67、lt;p>  hz_Num++; //測試下一個單詞</p><p>  if(hz_Num==10) hz_Num=0; //最多設(shè)10個單詞</p><p>  temp[0]=(correctNUM)/10+0x30; //將十進制數(shù)轉(zhuǎn)換為ASCII字符</p><p>  temp[1]=

68、(correctNUM)%10+0x30; //算出測試漢字的序號的第一位和第二位</p><p>  en_disp(6,80,2,Asc,temp,1); //在第7行 第81列</p><p><b>  iword=0;</b></p><p><b>  Nword=0;</b></p

69、><p>  en_disp(4,16,8,Asc," ",1); //在第5行,第17列開始顯示 </p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(KeyNum[iword]==2||KeyNum

70、[iword]==4)</p><p>  //如果按下了“不認識”或“下一個”鍵 ,直接跳到下一個單詞</p><p><b>  {</b></p><p>  result=0; //跳下一個時錯誤燈滅</p><p><b>  ERROR=0;</b></p>

71、<p>  hz_Num++; //測試下一個單詞</p><p>  if(hz_Num==10) hz_Num=0; //最多設(shè)10個單詞</p><p><b>  iword=0;</b></p><p><b>  Nword=0;</b><

72、;/p><p>  en_disp(4,16,8,Asc," ",1); //在第5行,第17列開始顯示 </p><p><b>  }</b></p><p>  else if(KeyNum[iword]==3) //如果按下了“上一個”鍵 ,直接跳到上一個單詞</p>

73、<p><b>  {</b></p><p>  result=0; //跳下一個時錯誤燈滅</p><p><b>  ERROR=0;</b></p><p><b>  //測試下一個單詞</b></p><p>  if(hz_Num==0

74、) hz_Num=10; //最多設(shè)10個單詞</p><p>  hz_Num--; </p><p><b>  iword=0;</b></p><p><b>  Nword=0;</b></p><p>  en_disp(4,16,8,Asc,"

75、",1); //在第5行,第17列開始顯示 </p><p><b>  }</b></p><p>  else if(S[hz_Num][iword]==KeyNum[iword])//輸入的字符與測試的標準字符比較</p><p>  { temp[0]=KeyNum[iword];</p><p&

76、gt;  ERROR=0; //正確就標志位置0</p><p>  en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列開始顯示 </p><p><b>  iword++;</b></p><p>  if(iword==8) iword=0;</p>&

77、lt;p>  Nword=iword*8;</p><p>  verify=1; </p><p><b>  }</b></p><p><b>  else </b></p><p>  { temp[0]=KeyNum[iword];&

78、lt;/p><p>  ERROR=1;//錯誤就置1</p><p>  en_disp(4,Nword+16,1,Asc,temp,1); //在第5行,第17列開始顯示 </p><p><b>  iword++;</b></p><p>  if(iword==8) iword=0;</p

79、><p>  Nword=iword*8;</p><p><b>  }</b></p><p>  result=ERROR|result;//0表示結(jié)果正確 </p><p><b>  }</b></p><p>  ERR=!result; //

80、錯誤指示燈</p><p><b>  }</b></p><p><b>  }</b></p><p>  1.4 軟件的仿真</p><p>  軟件的仿真使用protues環(huán)境,在畫好protues原理圖后,將keil環(huán)境下生成的目標文件HEX文件載入protues中,即可進行軟件仿真。因

81、仿真軟件中沒有STC89C52元件 ,故可使用完全兼容的AT89C52單片機仿真。</p><p><b>  仿真的結(jié)果:</b></p><p>  輸入錯誤時黃色LED報警:</p><p><b>  第二章 結(jié)語</b></p><p>  由于本人對單片機的認識有限,在設(shè)計過程中遇到不

82、少困難。在設(shè)計程序方面出現(xiàn)不少問題,所以用了比較簡單的程序運算。雖然花了幾個月的時間盡力把畢業(yè)做好,但由于本人能力的原因,整個系統(tǒng)做的并不理想,但是在整個設(shè)計的過程中我積累了不少的經(jīng)驗,學會一些系統(tǒng)的應用。</p><p>  我一直認為畢業(yè)設(shè)計重在過程。確實是這樣的。這個畢業(yè)設(shè)計的過程,其實也就是我不斷學習的過程。在這個過程中我學到了許多新的知識,能力也提高了不少。這些收獲給我?guī)淼南矏傔h遠超過了完成畢業(yè)設(shè)計時

83、給我?guī)淼南矏偂N蚁嘈?,以后再做這些設(shè)計的時候一定還可以做得更好。</p><p><b>  參考文獻</b></p><p>  [1] 何立民主編. 單片機應用文集. 北京:北京航空航天大學出版社,1994</p><p>  [2] 王福瑞主編. 單片微機測控系統(tǒng)設(shè)計大全. 北京:北京航空航天大學出版社,</p><

84、p><b>  1999</b></p><p>  [3] 夏繼強 沈德金主編. 單片機實驗與實踐教程. 北京:北京航空航天大學出版社,2002</p><p>  [4] 李朝青主編. PC機及單片機數(shù)據(jù)通信技術(shù). 北京:北京航空航天大學出版社,2001</p><p>  [5] 馬忠梅主編. 單片機的c語言應用程序設(shè)計.北京:北京

85、航空航天大學出版社,2003</p><p>  [6] 沈美明、溫冬嬋主編.IBM-PC匯編語言程序設(shè)計.北京:清華大學出版社2003</p><p>  [7] 何立民主編. MCS-51系列單片機應用系統(tǒng)設(shè)計.北京:北京航空航天大學出版社2001</p><p>  [8] 劉慶江 張曉光. 一種實用的集成芯片測試儀的設(shè)計. 中國礦業(yè)大學信息與電氣工程學院,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論