此次畢業設計論文的下半部分,上半部分請打開http://m.zg4o1577.cn/mcu/608.html
4.2講話子程序設計
4.2.1講話子程序的幾種模式處理
此工業語音提示器軟件設計講13句話可以畫出一個大的程序流程圖,但畫出來的流程圖太大,因此我把這個大的流程圖按畫出的程序流程圖的的模式可分為5種,同一種程序流程圖模式中的一句話的程序流程圖,變化里面的條件,即可以得到另一句話的程序流程圖。
第一種模式為講第1、2、3、6句話的程序流程圖,下面以第1句話程序流程圖為例,“見圖4-3”。
第二種模式為講第4、5句話時的程序流程圖,下面以第4句話程序流程圖為例,“見圖4-4”。
第三種模式為講第7、8句話時的程序流程圖,下面以第7句話程序流程圖為例,“見圖4-5”。
第四種模式為講第9、12、13句話時的程序流程圖,下面以第9句話程序流程圖為例,“見圖4-6”。
第五種模式為講第10、11句話時的程序流程圖,下面以第10句話程序流程圖為例,“見圖4-7”。
圖4-3 講第1句話的流程圖
4.2.2講話判斷程序設計
⑴ 講第1句話判斷
判斷同一個計劃爐號是否講第1句話,已講第1句話,就轉去講第2句話,如果同一個計劃爐號是沒講第1句話,則判斷是否符合講第1句話的條件,即要滿
圖4-4 講第4句話的流程圖
足(1)推焦車的方向在連續3秒內都是對準(100)。(2)推焦沒開始。只要任意一個
條件不符合,則轉去講第2句話,以上兩個條件都符合,設置已講第1句話標志,開始講第1句話,,延時6ms后,關閉講話。
圖4-5 講第7句話的流程圖
圖4-6 講第9句話的流程圖
所寫程序如下:
JH1: JB YJH1,JH2 ;已講第1句話,就轉去講第2句話
圖4-7 講第10句話的流程圖
MOV A,20H
ANL A,#07H
CJNE A,#04H,JH2 ;T 車方向是否對準確100,沒有就轉去講第2句話
JB 04H,JH2 ;推焦開始不講第1句話,轉去講第2句話
SETB YJH1 ;設置已講第1句話標志
MOV P1,#41H ;講第1句話的控制值
CLR P1.6 ;開始講
LCALL DELAY ;調用延時程序
SETB P1.6 ;關閉講話
MOV P1 ,#0FFH ;關閉聲音
⑵ 講第2句話判斷
判斷同一個計劃爐號是否講第2句話,已講第2句話,就轉去講第3句話,如果同一個計劃爐號是沒講第2句話,則判斷是否符合講第2句話的條件,即要滿足(1)攔焦車的方向在連續3秒內都是對準(100)。(2)推焦沒開始。只要有任意一個條件不符合,則轉去講第3句話,以上兩個條件都符合,設置已講第2句話標志,開始講第2句話,,延時6ms后,關閉講話。
⑶ 講第3句話判斷
判斷同一個計劃爐號是否講第3句話,已講第3句話,就轉去講第4句話,如果同一個計劃爐號是沒講第3句話,則判斷是否符合講第3句話的條件,即要滿足(1)熄焦車的方向在連續3秒內都是對準(100)。(2)推焦沒開始。只要有任意一個條件不符合,則轉去講第4句話,以上兩個條件都符合,設置已講每時3句話標志,開始講第3句話,延時6ms后,關閉講話。
⑷ 講第4句話判斷
判斷同一個計劃爐號是否講第4句話,已講第4句話,就判斷裝煤是否結束,不是就講第5句話,裝煤結束,則清已講第4句話標志。
JHD4: JNB 2BH,JH5 ;裝煤沒結束講第5句話
CLR YJH4 ;裝煤結束,清已講第4句話標志
如果沒講第4句話,則判斷同一個計劃爐號是否符合講第4句話的條件,即要滿足(1)裝煤車的方向在連續3秒內都是對準(100)。(2)裝煤沒開始。只要有任意一個條件不符合,則轉去講第5句話,以上兩個條件都符合,設置已講每時4句話標志,開始講第4句話,延時6ms后,關閉講話。
⑸ 講第5句話判斷
判斷同一個計劃爐號是否講第5句話,已講第5句話,再判斷裝煤是否結束,沒結束,則講轉去講第6句話,結束了,則清講第5句話標志。如果同一個計劃爐號是沒講第5句話,則判斷是否符合講第5句話的條件,即要滿足(1)除塵車的方向在連續3秒內都是對準(100)。(2)裝煤沒開始。只要有任意一個條件不符合,則轉去講第5句話,以上兩個條件都符合,設置已講每時5句話標志,開始講第5句話,延時6ms后,關閉講話。
⑹ 講第6句話判斷
判斷同一個計劃爐號是否講第6句話,已講第6句話,就轉去講第7句話,調用延時程序,看計劃推焦時間與標準時間是否相差5分鐘,不是則講第7句話,是的話就判斷是否為推焦開始,是就講第第7句話,不是就設置已講每時6句話標志,開始講第6句話,延時6ms后,關閉講話。
⑺ 講第7句話判斷
判斷同一個計劃爐號是否講第7句話,已講第7句話,就轉去講第8句話,沒有講的話就判斷是否為推焦開始,是就設置已講每時7句話標志,開始講第7句話,延時6ms后,關閉講話。否則轉去講第8句話。
⑻ 講第8句話判斷
判斷同一個計劃爐號是否講第8句話,已講第8句話,就轉去講第9句話,沒有講的話就判斷是否為推焦結束,是就設置已講第8句話標志,開始講第8句話,延時6ms后,關閉講話。否則轉去講第9句話。
⑼ 講第9句話判斷
不要講第9句話,就轉去講第10句話,要講第9句話,則清要講第9句話標志, 開始講第9句話,延時6ms后,關閉講話。
⑽ 講第10句話判斷
判斷同一個計劃爐號是否講第10句話,已講第10句話,則判斷是否裝煤結束,是的話就講第10句話,否則講第11句話,沒有講第10句的話就判斷是否為裝煤開始,不是則講11句話,是就設置已講第10句話標志,開始講第10句話,延時6ms后,關閉講話。
⑾ 講第11句話判斷
判斷同一個計劃爐號是否講第11句話,已講第11句話,則判斷是否裝煤開始,是的話就講第11句話,否則講第12句話,沒有講第11句的話就判斷是否為裝煤結束,不是則講12句話,是就設置已講第11句話標志,開始講第11句話,延時6ms后,關閉講話。
⑿ 講第12句話判斷
不要講第12句話,就轉去講第13句話,要講第12句話,則清要講第12句話標志, 開始講第12句話,延時6ms后,關閉講話。
⒀ 講第13句話判斷
不要講第13句話,就去接收下一次報文,要講第13句話,則清要講第13句話標志, 開始講第13句話,延時6ms后,關閉講話,并去接收下一次報文。
以上這個軟件設計每一次只能講一句話,假如同時接收到二句話,那么按這個軟件設計則按先后順序只能講最先收到的一句話,后來收到的第二句話則沒有講了,而是轉去講下一次接收到的要講的第1句話了,因此這個軟件設計還存在不足之處,我個人認為如果設置一個可以變化的標志量,用來保存每一次接收到要講話的個數,當講完一句話后,這個標志量就減1,依此循環下去,當標志量的值為0時,開始講下一次接收到要講的話,直到不接收為止。
4.3 時間比較子程序設計
圖4-8 時間比較子程序流程圖
該子程序是為講第6句話:“推焦時刻快到,請各車加快準備。”而用的,因為講話條件是:計劃推焦時間提前5分鐘時才講。因此要計算:計劃推焦時間一標準時間=5分鐘。注意:要考慮跨天,例如:00:01—23:56=5。先把計劃推焦時間(時)與標準時間(時)進行比較,看是否相等,相等的話,則計劃推焦時間(分)減去5分鐘后與標準時間(分)相比較,相等,則置相等標志為1(即講第6句話標志),不相等則不講第6句話。如果計劃推焦時間(時)與標準時間(時)不相等,則看計劃推焦時間(時)是否為0時(即考慮跨天),如果不為0時,則計劃推焦時間(時)減去1小時,再與標準時間(時)比較,相等則計劃推焦時間(分)加60分鐘后再減去5分鐘與標準時間(分)相比較,相等,則置相等標志為1,不相等則不講第6句話。如果計劃推焦時間(時)減去1后與標準時間(時)不相等,則不講第6句話。如果計劃推焦時間(時)是為0時,則計劃推焦時間(時)加24小時,把計劃推焦時間(時)減去1小時,再與標準時間(時)比較,相等則計劃推焦時間(分)加60分鐘后再減去5分鐘與標準時間(分)相比較,相等,則置相等標志為1,不相等則不講第6句話,計劃推焦時間(時)減去1小時與標準時間(時)不相等,則不講第6句話。
4.4 延時子程序設計
單片機的晶振頻率為11.059MHz,則1個機器周期是1us,一條DJNZ指令為2個機器周期,因此執行一條DJNZ指令時間為2us。
延時程序如下:
DELAY: MOV R7,#0CH
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
RET
執行小循環時所需要的時間為:255×2=510us
執行大循環時所需要的時間為:510us×103×12=6ms
5 語音提示器軟件調試
5.1 模擬仿真調試
5.1.1 介紹MEDWIN
MEDWIN是萬利電子有限公司Insight®系列仿真開發系統的高性能集成開發環境,集編輯、編譯/編匯、在線及模擬調試為一體,VC風格的用戶界面,支持Franklinklin/Keil C擴展OMF格式文件,支持所有變量類型及表達式,配合Insight®系列仿真器,是開發80C51系列單片機的理想開發工具。
5.1.2 用MEDWIN匯編
⑴ 如果你在外部編輯時,要采用寫字板或記事本,匯編程序后綴要ASM。如果是用WORD編輯的,一定要粘貼到寫字板或記事本上,如果只改名,則匯編出錯,錯誤信息是一行太長。我是用記事本里編寫源程序代碼:點擊開始→所有程序→附件→記事本,在記事本編輯程序代碼,并以擴展名.ASM保存在桌面上。
⑵ 用PMEDWIN模擬仿真調試:在網上下載PmedWin,雙擊PmedWin壓縮文件,在出現在文件中找到medWin.exe,雙擊medWin.exe,出現的下圖“見圖5-1”。
圖5-1 模擬仿真
在圖 5-1中點擊模擬仿真,出現下圖“見圖5-2”。
點擊文件→打開(如打開12這個文件)出現如下圖“見圖5-3”
點擊打開,出現圖5-2所示的界面,并在界面的編輯窗口內所編輯的程序代碼。
用MEDWIN匯編,是為產生機器碼,在程序的編寫中,可能會出現語法錯誤和警告。點擊項目管理→產生代碼,將提示你程序代碼的錯誤,當你改正一處錯誤后,你可以再點擊項目管理→重新產生全部代碼,將提示你程序代碼的錯誤,當你把所有的錯誤都改正后,才能進行調試。點擊調試→開始調試,將在程序開始的第一行出現一個箭頭,按F8將一步一步執行程序,點擊查看→數據區Idata,在數據區Idata內可以修改地址內的值。再點擊查看→數據區Bit查看結果是否正確。
圖5-2 打開MEDWIN
點擊文件→打開(如打開12這個文件)出現如下圖“見圖5-3”
![]() |
圖5-3 打開文件
⑶在匯編中出現的問題,解決辦法及最后出現結果
在這我只列出了部分程序的在匯編中出現的問題、解決辦法及最后出現的結果。
點擊項目管理→產生代碼,提示你程序代碼的錯誤如下:
Translating JH.ASM...
--------- 80C51宏匯編器,版本V1.05 ---------
版權所有(C) 萬利電子有限公司 2001-2002
匯編過程中發現: 警告(1), 錯誤(59)。匯編結束!
在第一次調試時,出現了59個語法錯誤,1個警告,例如其中部分錯誤為:
ERROR #7 IN 1 (JH.ASM, LINE 1): 符號沒有定義
ERROR #20 IN 6 (JH.ASM, LINE 6): 期待位段符號
WARNING IN 90 (JH.ASM, LINE 90): 期待“END”語句
Translate complete and find errors!
說明: 這個錯誤在文件名為JH.ASM中的第1行,符號沒有定義。
這個錯誤在文件名為JH.ASM中的第6行,期待位段符號。
這個警告在文件名為JH.ASM中的第90行期待“END”語句。
部分錯誤糾正為在程序的開始部分,加上
YJH1 BIT 70H
YJH2 BIT 71H
把16行和24行,32行ANL A,#O7H都改成ANL A #07H,因為在全角下輸入的字母不能識別,所以是錯誤的。
把第47行CLR YHJ4改成CLR YJH4
再點擊項目管理→產生代碼,則沒有其它的錯誤出現,只是有期待位段符號,是因為其它的幾個程序沒和這個程序連在一起。
如果文件取名為時間比較程序.ASM,雖然匯編可以通過,但不能進入開始調試,把文件名改成SHIJIAN.ASM,文件名是漢字命名的將匯編不完整。改名之后匯編完整。
把幾個程序全連在一起,可以通過匯編,但點擊調試,不能進入開始調試,是因為沒有接收到報文,所以要在報文接收前加一條LJMP LSLS 而在報文處理后的第一行加一條:LSLS: NOP指令,再保存。
點擊項目管理→產生代碼,出現如下的提示:
匯編過程中發現: 警告(0), 錯誤(0)。匯編結束!
說明:最后匯編時有0個警告,0個錯誤。而且可以進入調試。
5.1.2 用MEDWIN模擬調試
點擊調試→開始調試,將出現一個箭頭,點擊查看→數據區Idata,“見圖5-4”。
圖5-4 數據圖
設定你所要地址單元的內容,如按F8單步執行并可觀察及地址中內容的變化,例1:在地址10H、11H、12H、13H中設置內容為03、09、03、06,如圖:
圖5-5 輸入數據時數據圖
按F8單步執行,地址內的內容變化為如圖:
圖5-6 按單步執行后的數據圖
再點擊查看→數據區Bit查看結果是否正確,“見圖5-7”。
結果正確,因為計劃推焦時間為03時09分,而標準時間為03時06分,計劃焦時間減去標準時間不等于05分鐘,所以時間等于標志(7f單元內容)為0。
圖5-7 按單步執行后的數據區Bit圖
5.2 實際設備調試
5.2.1 寫片
先把芯片插入RP3000中,按前面提到的模擬調試步驟執行到出現圖5-1中點擊仿真器,在項目管理器→產生代碼并裝入→擦除→讀并裝入→完成。
5.2.2 實際調試
把芯片裝入機子上,開始檢查是否能達到你所需要的效果。出現下見圖:
![]() |
圖5-8 設備調試發送數據圖
在上圖中設置你所要的報文,則根據你設定的報文開始講話。如你設定了一個計劃爐號,并把推焦方向對準100,推焦開始設為0,則開始講“推焦車已到計劃爐號,準備工作完畢”。當你變了計劃爐號又開始講這句話,如果你的計劃爐號沒變化將不講這句話。計劃推焦時間與標準時間相差5分鐘,則講“推焦時刻到,請各車加快準備”。推焦結束設為1,則講“推焦順利完成,請按計劃到新爐號推焦”。經過很多次測驗,所寫的程序能達到所需要的要求。
6 結束語
通過這幾個月對單項片機的學習,熟悉了單片機程序的調試步驟,使我對單片機有了更深一步的了解,同時也增強了我獨立處理問題的能力,使我對單片機產生了濃厚興趣,同時培養了我對問題全面考慮,對我以后的工作、生活、學習有很大的幫助。
[1] 張毅剛,彭喜元等.新編MCS-51單片機應用設計[M].哈爾濱:工業大學出版社,2003.
[2] ATMEL 8-Bit Microcontroller with 4K Bytes Flash AT89C51 In-circuit Programming. WWW.ATMEL.COM下載
[3] ATMEL 8-Bit Microcontroller with 4K Bytes Flash AT89C51. m.zg4o1577.cn下載
[4] VP-1410A Digital Voices Processor.WWW.MAXIM-IC.COM下載
[5] 劉雨時.語音處理芯片VP1410的工作原理及應用[M].電子技術,2000.9
[6] Low-Cost,uP Supervisory Circuits.WWW.MAXIM-IC.COM下載
[7] 童本敏.標準TTL集成電路數據手冊[M]. 北京:電子工業出版社,1989-05.
[8]童本敏.標準CMOS集成電路數據手冊[M]. 北京:電子工業出版社,1992-10.
[9] 李華主編.MCS-51系列單片機實用接口技術[M].北京:航空航天大學出版社,1999.
[10] 李朝青主編著.單片機原理及接口技術[M].北京: 航空航天大學出版社,1999.
[11] 童詩白主編.模擬電子技術基礎[M].高等教育出版社,1998.
[12]京輝熱點工作室編著.Prote199電路設計實有指南[M].電子工業出版社,2003.
致 謝
本論文是在陳進老師和千盟公司工作人員的的悉心指導和熱情關懷下完成的。陳老師的嚴謹細致、一絲不茍的作風一直是我工作、學習中的榜樣,他循循善誘的教導和不拘一格的思路給予我無盡的啟迪這將使我終身受益。千盟公司工作人員的友善,讓我學會了怎樣與人溝通,同時,我還要感謝答辯老師,他將給我人生中一個新的起點。
在論文即將完成之際,我的心情無法平靜,從開始進入課題到論文的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!