基于ISD4004單片機(jī)的火車站自動(dòng)語音播報(bào)系統(tǒng)
1.6 信號(hào)變換
系統(tǒng)信號(hào)取自車站信號(hào)室控制繼電器的觸點(diǎn),主要是交流24 V的開關(guān)量信號(hào),必須將其轉(zhuǎn)換為單片機(jī)系統(tǒng)可以匹配的TTL電平,也就是將交流24 V變換為直流5 V,其信號(hào)電平變換電路如圖5所示。交流信號(hào)由二極管D32整流,電容C32濾波,經(jīng)限流電阻R32輸入光電耦合器4N25,經(jīng)內(nèi)部發(fā)光管和光敏接收管有效實(shí)現(xiàn)光電轉(zhuǎn)換,同時(shí)將外部信號(hào)的電氣網(wǎng)絡(luò)與單片機(jī)控制系統(tǒng)隔離開來,提高系統(tǒng)的可靠性和抗干擾能力。變換后輸出的信號(hào)是低電平,為保持輸入信號(hào)和輸出信號(hào)電平同步,后級加反相器,輸出標(biāo)準(zhǔn)的TTL 5 V信號(hào),送往并行接口8255。
2 軟件總體設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)直接影響到系統(tǒng)的整體性能。軟件主要功能是通過對鐵路信號(hào)進(jìn)行實(shí)時(shí)查詢,準(zhǔn)確判斷信號(hào)是否有效,并可靠查找信號(hào)所對應(yīng)的語音存儲(chǔ)地址,取出信息進(jìn)行實(shí)時(shí)播報(bào)。軟件程序包括主控程序、信號(hào)查詢程序、語音播報(bào)程序、數(shù)據(jù)傳送程序、ISD4004的上電和掉電程序。程序中多次使用延時(shí)子程序,由于結(jié)構(gòu)簡單、通用性強(qiáng)、本文不再闡述。
2.1 主控程序
主控程序流程見圖6,系統(tǒng)上電時(shí)要進(jìn)行初始化,完成對I/O口、信號(hào)單元及信號(hào)標(biāo)志位的清零和ISD4004及8255的初始化設(shè)置,并完成在系統(tǒng)上電時(shí)自檢和產(chǎn)品信息廣告的的語音播報(bào)。然后進(jìn)入信號(hào)的查詢和語音播報(bào)的循環(huán)控制流程。為了防止系統(tǒng)誤報(bào)、漏報(bào)或連報(bào),在程序設(shè)計(jì)時(shí)充分考慮這方面的因素,如采用信號(hào)延時(shí)防抖判定,信號(hào)電平的高低交錯(cuò)標(biāo)志判斷及信號(hào)單元地址查表等方法,提高系統(tǒng)的可靠性。
2.2 信號(hào)查詢子程序
信號(hào)查詢子程序的流程見圖7,系統(tǒng)30多路信號(hào)分別占用AT89C51單片機(jī)的部分I/O線和可編程接口8255的A、B、C口24路輸入線。程序?qū)Χ嗦沸盘?hào)進(jìn)行逐一查詢,并對到來的有效信號(hào)進(jìn)行分單元標(biāo)記儲(chǔ)存,以便將參數(shù)傳遞給主控程序。
2.3 語音播報(bào)子程序
ISD4004芯片所有操作必須由微控制器控制的操作命令,通過串行通信協(xié)議SPI接口送入。SPI控制寄存器控制芯片的錄放音、信息檢索、上電、掉電、開始和停止等功能,由軟件編程指令改變SPI控制寄存器的控制位來實(shí)現(xiàn),SPI控制寄存器的控制位如圖8所示,指令格式是:8位控制碼+16位地址碼。ISD的任何操作在運(yùn)行位C4置1時(shí)開始,置0時(shí)結(jié)束,如果遇到EOM或OVF,則產(chǎn)生一個(gè)中斷,使用“讀”指令使中斷狀態(tài)位移出ISD的MISO引腳時(shí),控制及地址數(shù)據(jù)也同步從MOSI端移入。因此要注意移入的數(shù)據(jù)是否與器件當(dāng)前進(jìn)行的操作兼容。當(dāng)然,也允許在一個(gè)SPI周期里,同時(shí)執(zhí)行讀狀態(tài)和開始新的操作(即新移入的數(shù)據(jù)與器件當(dāng)前的操作可以不兼容)。
評論