freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的公交車語音報(bào)站器的設(shè)計(jì)與制作(編輯修改稿)

2024-12-16 04:02 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 程序、一線發(fā)碼子程序。主程序直接調(diào)用這些子程序,結(jié)構(gòu) 清晰明了,又方便調(diào)試和修改程序 。設(shè)置是否有鍵按下的標(biāo)志 F0, F0為 1,有鍵按下; F0 為 0,則無鍵按下。軟件編程具體的流程圖如圖31所示。 開 始初 始 化啟 動(dòng) 上 行 線發(fā) 送 語 音 或命 令 碼顯 示 站 臺(tái)按 鍵 掃 描F 0 = 1 ? ?上 行 線 按 鍵處 理運(yùn) 行 到 上 行 線 終 點(diǎn) 站嗎 ?顯 示 站 臺(tái)一 線 發(fā) 碼 子程 序啟 動(dòng) 下 行 線發(fā) 送 語 音 或命 令 碼顯 示 站 臺(tái)按 鍵 掃 描F 0 = 1 ?下 行 線 按 鍵處 理運(yùn) 行 到 下 行 線 終 點(diǎn) 站嗎 ?一 線 發(fā) 碼 子程 序顯 示 站 臺(tái)YNYNYNYN 圖 31 主程序流程圖 10 顯示子程序設(shè)計(jì) 把要顯示的站數(shù)存放在單片機(jī)的 60H地址中,通過按鍵改變這個(gè)地址中的數(shù)值。由于本系統(tǒng)單向公交線上一共有 40 個(gè)站,所以在這個(gè)地址內(nèi)的數(shù)值不能超過 40,通過動(dòng)態(tài)顯示將公交車到達(dá)站數(shù)顯示出來。 顯示子程序設(shè)計(jì)的設(shè)計(jì)流程圖如圖 32所示。 開 始要 顯 示 的 值 大于 4 0 ?拆 分 個(gè) 位 與 十位將 各 位 和 十位 分 別 送 顯示結(jié) 束YN 圖 32 顯示子程序流程圖 鍵盤 掃描 子程序設(shè)計(jì) 在本系統(tǒng)中,設(shè)置了八個(gè)按鍵,其中與 STC89C5 1RC 單片機(jī) ~ 為相連的按鍵是服務(wù)語觸發(fā)按鍵;與 相連的按鍵為起步 /到站按鍵,按一次,播放起步語音,再按一次,播放到站語音,通過這個(gè)按鍵,也來控制要顯示的值;與 相連的按鍵為停止語音播放按鍵;與 相連的按鍵為公交車播報(bào)越站時(shí),后退播報(bào)的按鍵。 鍵盤子程序的設(shè)計(jì)流程圖如圖 33所示。 開 始將 是 否 有 鍵 按下 的 標(biāo) 志 F 0 清零將 F 0 置 1有 鍵 按 下 嗎 ?結(jié) 束YN鍵 釋 放 了嗎 ?YN 圖 33 鍵盤掃描子程序流程圖 11 上行線按鍵處理子程序 設(shè)計(jì) 要使語音模塊地址中的語音觸發(fā),就要通過單片機(jī) 引腳發(fā)送這個(gè)地址。將要觸發(fā)語音模塊的地址數(shù)據(jù)存放在單片機(jī)的 77H中。 55H 存放語音模塊中起步 /到站語的地址數(shù)據(jù), 54H 存放語音模塊中服務(wù)語的地址或者停止命令數(shù)據(jù),最后只需將 55H或者 54H中的數(shù)據(jù)發(fā)送給 77H 即可。在按鍵處理子程序中,因?yàn)槭怯墟I按下的時(shí)間才調(diào)用這個(gè)按鍵處理程序的,所以如果當(dāng) P2口的 8 個(gè)按鍵中有 7 個(gè)按鍵沒有按下的話,那么剩下的那個(gè)按鍵肯定被按下了。 上 行線按鍵處理子程序的設(shè)計(jì)流程圖如圖 34所示。 開 始是 服 務(wù) 語 按 鍵按 下 嗎 ?是 停 止 按 鍵按 下 嗎 ?是 起 步 / 到 站鍵 按 下 ?退 后 播 報(bào) 鍵 一定 按 下設(shè) 置 5 4 H 為 相應(yīng) 的 語 音 地 址設(shè) 置 5 4 H 為 相應(yīng) 的 停 止 命 令5 5 H 內(nèi) 容 加 15 5 H = 7 9 ?6 0 H 內(nèi) 容 加 15 5 H 是 偶 數(shù)嗎 ?結(jié) 束5 5 H = 0 ?5 5 H 內(nèi) 容 減 15 5 H 是 偶 數(shù)嗎 ?6 0 H 內(nèi) 容 減 15 4 H 內(nèi) 容 給 7 7 H5 5 H 內(nèi) 容 給 7 7 H5 5 H = 7 9 , 6 0 H = 1YNYNYYNYNNYYN 圖 34 上行線按鍵處理子程序的設(shè)計(jì)流程圖 12 下 行線按鍵處理子程序 設(shè)計(jì) 如果 P2口的 8個(gè)按鍵中有 7個(gè)按鍵沒有按下的話,那么剩下的那個(gè)按鍵肯定被按下了,因?yàn)橄滦芯€按鍵處理是在有鍵按下的情況下才執(zhí)行的。 下行線按鍵處理子程序的設(shè)計(jì)流程圖如圖 35所示。 開 始是 服 務(wù) 語 按 鍵按 下 嗎 ?是 停 止 按 鍵 按下 嗎 ?是 起 步 / 到 站鍵 按 下 ?退 后 播 報(bào) 鍵 一定 按 下設(shè) 置 5 4 H 為 相應(yīng) 的 語 音 地 址設(shè) 置 5 4 H 為 相應(yīng) 的 停 止 命 令5 5 H 內(nèi) 容 加 15 5 H = 1 5 8 ?6 0 H 內(nèi) 容 加 15 5 H 是 偶 數(shù)嗎 ?結(jié) 束5 5 H = 7 9 ?5 5 H 內(nèi) 容 減 15 5 H 是 偶 數(shù)嗎 ?6 0 H 內(nèi) 容 減 15 4 H 內(nèi) 容 給 7 7 H5 5 H 內(nèi) 容 給 7 7 H5 5 H = 0 , 6 0 H = 1YNYNYYNNYNYNY 圖 35 下 行線按鍵處理子程序的設(shè)計(jì)流程圖 一線發(fā)碼 子程序設(shè)計(jì) 在本系統(tǒng) 中采用 WT588B28P 語音模塊,并采用其一線控制模式。在這種模式下,要觸發(fā)語音模塊中的地址,或者觸發(fā)語音模塊中的命令碼,就是通過單片機(jī) 向語音模塊 P03 口發(fā)送地址或命令碼的數(shù)據(jù)實(shí)現(xiàn)的。但是要根據(jù) WT588B28P 語音模塊的數(shù) 13 據(jù)通信線控制時(shí)序圖來實(shí)現(xiàn),依照單片機(jī) 腳電平占空比不同來代表不同的數(shù)據(jù)位。要發(fā)送的數(shù)據(jù)存放在單片機(jī) 77H中。 根據(jù)語音模塊在受一線控制下的控制時(shí)序圖,在發(fā)送數(shù)據(jù)時(shí),應(yīng)先將數(shù)據(jù)信號(hào)線單片機(jī) 腳拉低 5ms,再發(fā)送數(shù)據(jù),發(fā)送的數(shù)據(jù)位是從低位開始發(fā)送的,也就是說,通過單片 機(jī) 腳要發(fā)送的數(shù)據(jù),是由低位開始發(fā)送的,一位一位發(fā)送。如果要發(fā)送的數(shù)據(jù)位為 0,則要使數(shù)據(jù)信號(hào)線(即單片機(jī) 腳)上高電平與低電平數(shù)據(jù)占空比為 1:3,如果要發(fā)送的數(shù)據(jù)位為 1,則要使數(shù)據(jù)信號(hào)線(即單片機(jī) 腳)高電平與低電平數(shù)據(jù)占空比為 3: 1。 發(fā)送的數(shù)據(jù) 00H~ DBH 為地址指令,觸發(fā)在語音模塊中這些地址內(nèi)的語音; E0H~ E7H為音量調(diào)節(jié)命令, F2H 為循環(huán)命令, FEH 為停止命令。在本系統(tǒng)中,用到的命令就只有停止命令。 一線發(fā)碼子程序流程圖如圖 36所示。 開 始P 1 . 0 口 清 零5 m sP 1 . 0 口 置 1發(fā) 送 的 數(shù) 據(jù) 位 是低 電 平 嗎 ?延 時(shí) 6 0 0 U SP 1 . 0 口 清 零2 0 0 U S延 時(shí) 2 0 0 U SP 1 . 0 口 置 一2 0 0 U S8 位 數(shù) 據(jù) 發(fā) 送完 了 嗎 ?結(jié) 束YNYNY 圖 36 一線發(fā)碼子程序流程圖 14 4 軟件抗干擾技術(shù) 在單片機(jī)控制系統(tǒng)中,正確的采用軟件抗干擾技術(shù),與硬件干擾措施構(gòu)成雙層抗干擾防線,肯定能大大提高控制系統(tǒng)的可靠性。經(jīng)常采用的軟件抗干擾技術(shù)是數(shù)字濾波技術(shù)、開關(guān)量的軟件抗干擾技術(shù)、指令冗余技術(shù)、軟件陷阱技術(shù)等。分析干擾的來源,再根據(jù)系統(tǒng)設(shè)計(jì)有效的抗干擾方法。因此,本系統(tǒng)軟件中用到了開關(guān)量的軟件抗干擾技術(shù)。 開關(guān)信號(hào)存在抖動(dòng)干擾的問題,在單片機(jī)設(shè)計(jì)中常用軟件的方法消除抖動(dòng)。在本系統(tǒng)設(shè)計(jì)中,由于鍵盤是由機(jī)械觸點(diǎn)構(gòu)成的,所以在機(jī)械觸點(diǎn)斷開、閉合 時(shí),會(huì)有抖動(dòng),這種抖動(dòng)對(duì)人來說是感覺不到的,但對(duì)單片機(jī)來說,是完全可以感應(yīng)到的,因?yàn)閱纹瑱C(jī)處理的速度是在微秒級(jí),而機(jī)械抖動(dòng)的時(shí)間至少是毫秒級(jí),這對(duì)單片機(jī)而言,時(shí)間算是很長(zhǎng)了。所以要判斷一個(gè)按鍵是否真正按下就需要把這些干擾去掉。按鍵與單片機(jī)的 I/O口相連,當(dāng)檢測(cè)到 I/O 口為低的信號(hào)時(shí),不是立即認(rèn)為按鍵按下,而是延時(shí) 20ms 的時(shí)間后再檢測(cè) I/O 口的信號(hào),如果仍為低電平,那就可以認(rèn)定按鍵真的按下了,這實(shí)際上就是消除了按鍵按下時(shí)的抖動(dòng),對(duì)按鍵是否釋放就可以采取查詢的方法,直到檢測(cè)到位高電平為止就說明按鍵釋放了。一般 情況下,不用對(duì)按鍵釋放的后沿進(jìn)行處理,也能滿足要求。 5 調(diào)試 在完成硬件的基礎(chǔ)上,我開始根據(jù)要實(shí)現(xiàn)的功能來設(shè)計(jì)軟件流程圖,軟件程序編好后,我用 KEIL C51 軟件編譯 ,選擇 Intel8052,編譯 好后,再用 Protues 軟件進(jìn)行仿真。 在仿真的過程中,在原理圖設(shè)計(jì)時(shí)用了兩個(gè)一位的共陰數(shù)碼管,且在公共端接了8050 三極管后再接到單片機(jī)的 I/O 口的,但在 Protues 仿真軟件中就直接選用兩位一體的共陰數(shù)碼管,然后將位線直接接到單片機(jī)的 I/O 口。由于本系統(tǒng)用到的 WT588D28P模塊在 Protues 軟件中是 沒有的,但是我是用一線控制方式的,發(fā)送數(shù)據(jù)給語音模塊是通過單片機(jī)的 口來發(fā)送的,而且是從低位開始發(fā)送的,所以我就可以用示波器觀看單片機(jī)的 口的波形,波形就能體現(xiàn)單片機(jī)發(fā)送的數(shù)據(jù),且低位在前,高位在后。當(dāng)我按鍵按下的時(shí)候出現(xiàn)波形,根據(jù)這個(gè)波形看是否是我要發(fā)送的數(shù)據(jù)。 在 Protues 仿真軟件中畫好圖后,我將通過 KEIL C51 軟件編譯好的十六進(jìn)制文件裝到 Protues 仿真軟件中的單片機(jī)中,實(shí)現(xiàn)了系統(tǒng)上電后就執(zhí)行上行線,當(dāng)上行線運(yùn)行到終點(diǎn)自動(dòng)切換到下行線,下行線運(yùn)行到終點(diǎn)也自動(dòng)切換到上行線。觸發(fā)的每 個(gè)語音地址數(shù)據(jù)或者停止命令,也通過波形顯示出來了。顯示剛開始就是動(dòng)態(tài)顯示不穩(wěn)定,出現(xiàn)抖動(dòng)的狀態(tài),我在改短了顯示延時(shí)的時(shí)間后,顯示穩(wěn)定。由于我是根據(jù)起步 /到站按鍵 15 K7來控制的 55H 單元來判斷顯示是否要加一的,而且 K7 按一次播放起步語音,再次按動(dòng)播放到站語音,所以我要在播放到站語音的時(shí)候顯示加一,也就是 K7 按第二次的時(shí)候顯示才加一,當(dāng)顯示到達(dá) 40 后,下一次就又從 1 開始顯示,實(shí)現(xiàn)了這個(gè)功能。按下服務(wù)語按鍵,也能觸發(fā)對(duì)應(yīng)的語音地址。按下退后播報(bào)鍵,能退后播報(bào),并顯示正確的站數(shù)。所以,本系統(tǒng)的設(shè)計(jì)要求在 Protues 仿真軟件中都實(shí)現(xiàn)了。 但是在 Protues 仿真中,數(shù)碼管公共極沒有接起開關(guān)作用的三極管,所以我將顯示程序中送顯示時(shí)位線的電平反了一下。在實(shí)物調(diào)試中,直流穩(wěn)壓電源采用 +5V,數(shù)字萬用表主要用來測(cè)分立元件的電阻、壓降等參數(shù)。然后我將程序下載到單片機(jī)中,在實(shí)物中開始調(diào)試,發(fā)現(xiàn)語音這一塊已經(jīng)可以實(shí)現(xiàn)了,但是在實(shí)物中發(fā)現(xiàn)數(shù)碼管不能點(diǎn)亮,但是語音模塊能正常工作。經(jīng)過分析,我猜想可能是上拉電阻阻值太大了,驅(qū)動(dòng)不了數(shù)碼管顯示,因?yàn)樵谠韴D設(shè)計(jì)時(shí)我并沒有計(jì)算多大的上拉電阻阻值能使數(shù)碼管發(fā)光,通過計(jì)算,發(fā)現(xiàn)上拉電阻太大,而且又在經(jīng)過 10K的上拉電阻 后在數(shù)碼管每一段上加了 300Ω的限流電阻,通過數(shù)碼管每一段的電流只有 ,完全不能驅(qū)動(dòng)數(shù)碼管發(fā)光。于是我將將上拉電阻換成 510Ω,然后又把限流電阻拆掉并在板子上將接限流電阻的地方短接,這樣,通過數(shù)碼管每一段的電流就達(dá)到了 10mA,完全能驅(qū)動(dòng)數(shù)碼管發(fā)光。可是換了之后,卻又發(fā)現(xiàn)數(shù)碼管還是不能點(diǎn)亮。于是我就用萬用表測(cè)試了三極管集電極與發(fā)射極之間的電壓,發(fā)現(xiàn)三極管根本不能飽和導(dǎo)通,通過分析,我認(rèn)為是在單片機(jī) I/O 口與基極之間 1K的電阻在起到對(duì)單片機(jī) I/O口的保護(hù)作用后不能達(dá)到三極管飽和導(dǎo)通的條件,所以我就在基 極焊了個(gè)上拉電阻,然后再通電調(diào)試,數(shù)碼管能正常顯示了。但是原本在設(shè)計(jì)原理圖的時(shí)候,是想讓公交車在行駛時(shí)能通過按上 /下行切換鍵來達(dá)到上 /下行的切換,但是在軟件編程的時(shí)候,不能實(shí)現(xiàn)這個(gè)按鍵的功能,于是我就在軟件設(shè)計(jì)時(shí)沒用到這個(gè)按鍵,而是設(shè)置撐上電公交車默認(rèn)為上行線,當(dāng)上行線或者下行線運(yùn)行到終點(diǎn)時(shí)能自動(dòng)切換到下行線或者上行線。所以我就將板子上原先設(shè)定的那個(gè)上 /下行切換鍵拆下來了。經(jīng)過調(diào)試后,實(shí)物系統(tǒng)能實(shí)現(xiàn)設(shè)計(jì)要求,而且結(jié)果穩(wěn)定可靠。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1