【正文】
//顯示字符串 Display(str,0xc0) //顯示定義字符串 while(1)。 } } void main() { init()。) { write_(position++)。 } void Display(unsigned char *string,unsigned char position) //顯示子程序 { while(*string !=39。 write_(0x06)。 write_(0x08)。 e=0。 e=1。 P0=date。 rw=0。 e=0。 e=1。 P0=。 rw=0。y)。x) for(y=110。 for(x=z。 //定時(shí)器 T0的高 8 位賦初值 } } 39 ********************************************************************* 顯示器程序的設(shè)計(jì) ********************************************************************* include define uchar unsigned char sbitrs=P2^0; sbitrw=P2^1; sbit e=P2^2。 TH0=(6553646083)/256。 TF0=0。 P2=0xff。 //定時(shí)器 T0的高 8 位賦初值 TR0=1。 //使用定時(shí)器 T0的模式 1 TH0=(6553646083)/256。 //開總中斷 // ET0=1。 bz=1。 } } //INT0 中斷函數(shù) void EX_INT0() interrupt 0 { key()。 // while(1) { xianshi()。 //INT0 中斷允許 EX0=1。 LCD1602_string(2,1,zifu1)。 //初始化 lcd1602_init()。 bz=0。input_595(0x00)。 _delay_ms(1000)。input_595(0x00)。input_595(0x00)。input_595(0x00)。input_595(0x00)。input_595(0x80)。input_595(0x40)。input_595(0x20)。input_595(0x10)。input_595(0x08)。input_595(0x04)。input_595(0x02)。input_595(0x01)。 lcd1602_writenumber(0x30+bzout%10)。 lcd1602_adr(0x4e)。 lcd1602_writenumber(0x30+bzin%100/10)。 uchar code zifu1[]=SIGN:01 OUT:01。 } //uchar code zifux[]=0123456789abcdef。 if(in11==0)bzin=11。 if(in9==0)bzin=9。 35 if(in7==0)bzin=7。 if(in5==0)bzin=5。 if(in3==0)bzin=3。 //掃描信號(hào)輸入 void key() { if(in1==0)bzin=1。 uchar bzout=0。 } //定義變量 uchar bz=0。_nop_()。_nop_()。 ST_CP=1。_nop_()。 _nop_()。 34 SH_CP=1。_nop_()。 dat =dat 1。 0x80)DS=1。i8。 //輸出鎖存器脈沖 12 //輸入數(shù)據(jù) void input_595(uchar dat) { uchar i。 //移位時(shí)鐘脈沖 11 sbit DS=P3^5。 p++。 lcd1602_writenumber(*p)。) break。 33 while(1) { if(*p == 39。 b=0。 if(hang == 1) a = 0x00。 } //行顯示 void LCD1602_string(uchar hang,uchar lie,uchar *p) { uchar a。 //顯示開及光標(biāo)設(shè)置 lcd1602_writecrtl(0x01)。 //顯示模式 lcd1602_writecrtl(0x06)。 e0。 e1。//使能信號(hào)置 1 _delay_us(5)。//寫信號(hào)置 0 } //寫 1602 數(shù)據(jù) void lcd1602_writenumber(uchar dat) { rd0。//寫信號(hào)置 1 _delay_us(5)。 PP=dat。//讀信號(hào)置 0 rs0。i){。 } 31 } //延時(shí)函數(shù) us void _delay_us(uchar i) { for(。j120。i0。 //使能信號(hào) define e1 E=1 define rd1 RWW=1 define rs1 RS=1 define e0 E=0 define rd0 RWW=0 define rs0 RS=0 define PP P0 //延 時(shí)函數(shù) ms void _delay_ms(uint i) { uchar j。 //寫信號(hào) sbit RWW=P2^6。//語(yǔ)音信號(hào) 1 30 sbit in12=P2^3。//語(yǔ)音信號(hào) 1 sbit in10=P2^1。//語(yǔ)音信號(hào) 1 sbit in8=P1^7。//語(yǔ)音信號(hào) 1 sbit in6=P1^5。//語(yǔ)音信號(hào) 1 sbit in4=P1^3。//語(yǔ)音信號(hào) 1 sbit in2=P1^1。另外,我還要感謝我的同學(xué)們,感謝你們能給我提供一些意見,使我能認(rèn)識(shí)到我的不足,得以及時(shí)將之糾正。 這次的畢業(yè)論文能順利完結(jié),不僅僅是我一個(gè)人努力的結(jié)果,也要?dú)w功于我的指導(dǎo)老師黃海波老師,是他不厭其煩的教導(dǎo)和解說,令我的許多問題都能迎刃而解。此外,我得出了一個(gè)結(jié)論:知識(shí)必須通過應(yīng)用才能實(shí)現(xiàn)其價(jià)值。 萬事開頭難,但世上許多事情,只要開始做了就并不算難,難的是人們那一顆懶惰的心。以前總以為畢業(yè)設(shè)計(jì)僅僅是對(duì)自己平日所學(xué)的課程知識(shí)的總結(jié)而已,等真正實(shí)踐之后才發(fā)現(xiàn),畢業(yè)設(shè)計(jì)不僅要考驗(yàn)自己的知識(shí)量,更開拓了我們的求知欲,因?yàn)槲覀兛倳?huì)覺得自己學(xué)的還遠(yuǎn)遠(yuǎn)不夠,還需要知道更多、了解更多,才能真正地達(dá)到在實(shí)踐過程中能將知識(shí)運(yùn)用進(jìn)去的目的。在這最后幾個(gè)月的大學(xué)生活中,我也終于完成了我的畢業(yè)設(shè)計(jì)。雖然這個(gè)設(shè)計(jì)做的并不完美,但這段日子所學(xué)到的一切都將是一生受用的寶貴財(cái)富。平日里也會(huì)有同學(xué)的幫助,和大家一起交流,確實(shí)收獲 不少,受益匪淺。 在設(shè)計(jì)主電路系統(tǒng)的時(shí)候遇到了不小的困難,因?yàn)閷?duì)這方面的知識(shí)沒有掌握好,所以請(qǐng)教了老師和同學(xué)很多問題,老師和同學(xué)也都耐心的講解了這些問題。 在設(shè)計(jì)該課題的初期對(duì)語(yǔ)音識(shí)別這一塊幾乎一點(diǎn)都不了解,也請(qǐng)教了黃海波老師這方面的問題,黃海波老師也提供了一些資料去了解,后來上網(wǎng)查閱了相關(guān)的資料,也閱讀了一些關(guān)于語(yǔ)音識(shí)別這一方面的書籍和文檔,對(duì)語(yǔ)音識(shí)別這一方面有了一定的了解后,選擇了很多種種類的語(yǔ)音識(shí)別芯片進(jìn)行了對(duì)比,考慮到了本次設(shè)計(jì)的目的,和功能性、經(jīng)濟(jì)性,最后選擇了 AP7003 系列的語(yǔ)音芯片作為本 設(shè)計(jì)的語(yǔ)音芯片。信號(hào)輸出后 LED4會(huì)處于常開狀態(tài),運(yùn)行完畢后 LED4會(huì)再次處于常閉狀態(tài),則完成模擬語(yǔ)音樓層變更的仿真過程。 圖 25 模擬語(yǔ)音 2的變化現(xiàn)象 仿真模擬樓層變更的現(xiàn)象如圖 26 所示。 圖 24 模擬語(yǔ)音 2的現(xiàn)象 仿真模擬語(yǔ)音關(guān)門的變化現(xiàn)象如圖 25 所示。 圖 23 模擬語(yǔ)音開門的變化現(xiàn)象 仿真模擬語(yǔ)音關(guān)門的現(xiàn)象如圖 24 所示。 圖 22 模擬語(yǔ)音開門的現(xiàn)象 仿真模擬語(yǔ)音開門的變化現(xiàn)象如圖 23 所示。 仿真的結(jié)果 仿真模擬語(yǔ)音開門的現(xiàn)象如圖 22 所示。 開始設(shè)置為寫狀態(tài)設(shè)置寫指令寫地址設(shè)置為寫狀態(tài)設(shè)置為寫數(shù)據(jù)顯示寫數(shù)據(jù)結(jié)束 20 I/O 擴(kuò)展程序設(shè)計(jì) I/O 擴(kuò)展程序的設(shè)計(jì)如圖 21 所示。 顯示器程序設(shè)計(jì) 顯示器程序的設(shè)計(jì)如圖 20所示。 中斷程序設(shè)計(jì) 中斷程序的設(shè)計(jì)如圖 19 所示。 圖 18 主程序流程圖 開始液晶初始化初始化字符顯示配置中斷0顯示輸入信號(hào)提示顯示輸入信號(hào)提示?接收語(yǔ)音標(biāo)志是否為1 語(yǔ)音處理輸出控制信號(hào)結(jié)束NY 18 語(yǔ)音錄入后將進(jìn)行液晶顯示的初始化,然后液晶顯示會(huì)顯示出所需要的指令進(jìn)行語(yǔ)音信號(hào)的識(shí)別,如果信號(hào)正確,將會(huì)輸出控制信號(hào),如果信號(hào)不正確將返回到語(yǔ)音錄入前。 1 2 3 4 5 6 7 8ABCD87654321DCBAT i t l eN u m b e r R e v i s i o nS i z eA3D a t e : 1 7 J u n 2 0 1 5 S h e e t o f F i l e : D : \ s c h 9 9 s e 1 . D D B D r a w n B y :C 1 13 0 P FC 1 03 0 P FR 1 01 K ΩC 1 2C a p P o l 12 2 μ FX1X2R S TK r s tV C C12Y 1 0X T A L晶振 復(fù)位電路1 2 3 4 5 6 7 8ABCD87654321DCBAT i t l eN u m b e r R e v i s i o nS i z eA3D a t e : 1 7 J u n 2 0 1 5 S h e e t o f F i l e : D : \ s c h 9 9 s e 1 . D D B D ra w n B y :C 1 13 0 P FC 1 03 0 P FR 1 01 K ΩC 1 2C a p P o l 12 2 μ FX1X2R S T123456789101112131415166 0 2H e a d e r 1 6 HV C CV C CK rs tV C C12Y 1 0X T A LP 0 0P 0 1P 0 2P 0 3P 0 4P 0 5P 0 6P 0 7P 2 5P 2 6P 2 7R p 1 0 31 0 K Ω晶振 復(fù)位電路 17 3 軟件系統(tǒng)設(shè)計(jì) 主控程序軟件設(shè)計(jì) 自動(dòng)電梯語(yǔ)音控制系統(tǒng)的軟件設(shè)計(jì)采用的 keil 編程軟件進(jìn)行編程。 液晶顯示電路的設(shè)計(jì) 液晶顯示電路的設(shè)計(jì)如圖 17 所示。 圖 16 晶振電路和復(fù)位電路圖 晶振電路是提供時(shí) 鐘信號(hào),一旦時(shí)間停止,語(yǔ)音信號(hào)就切換不了。 P32 是單片機(jī)的P32 口,一旦有