一、項(xiàng)目介紹
為了提高公交車(chē)站點(diǎn)信息的實(shí)時(shí)性和準(zhǔn)確性,方便乘客及時(shí)了解公交車(chē)到站信息,從而提高公交出行的便利性和舒適度。傳統(tǒng)的公交車(chē)到站信息是通過(guò)人工喊話(huà)或者靜態(tài)的站牌來(lái)實(shí)現(xiàn)的,這種方式存在信息不及時(shí)、不準(zhǔn)確、不方便等問(wèn)題。當(dāng)前設(shè)計(jì)基于STC89C52單片機(jī)和MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊的公交車(chē)LED屏,通過(guò)SYN6288進(jìn)行語(yǔ)音播報(bào)到站信息,可以更加準(zhǔn)確地展示到站信息,提高公交出行的效率和便利性。
通過(guò)STC89C52單片機(jī)控制MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊,將需要顯示的信息轉(zhuǎn)化成點(diǎn)陣圖像,然后通過(guò)MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊控制2*8的LED顯示屏顯示出來(lái)。同時(shí),通過(guò)SYN6288語(yǔ)音模塊,將到站信息轉(zhuǎn)化成語(yǔ)音播報(bào)出來(lái),方便乘客聽(tīng)取。這樣,乘客不僅可以看到到站信息,還可以聽(tīng)到語(yǔ)音播報(bào),提高了信息的實(shí)時(shí)性和準(zhǔn)確性,方便乘客及時(shí)了解公交車(chē)的到站信息。
二、設(shè)計(jì)思路
2.1 硬件設(shè)計(jì)
本設(shè)計(jì)采用STC89C52單片機(jī)作為主控芯片,MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊控制2*8的LED顯示屏,SYN6288語(yǔ)音模塊進(jìn)行語(yǔ)音播報(bào)。
具體硬件設(shè)計(jì):
(1)STC89C52單片機(jī)
STC89C52單片機(jī)是一種高性能、低功耗的8位單片機(jī),具有豐富的外設(shè)資源,支持ISP下載和在線(xiàn)仿真調(diào)試,適合于各種應(yīng)用場(chǎng)合。
(2)MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊
MAX7219是一種集成電路,可以驅(qū)動(dòng)8×8點(diǎn)陣LED顯示屏,具有串行輸入、并行輸出的特點(diǎn),可以方便地控制多個(gè)LED顯示屏。本設(shè)計(jì)采用MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊控制2*8的LED顯示屏,實(shí)現(xiàn)公交車(chē)站點(diǎn)信息的展示。
(3)SYN6288語(yǔ)音模塊
SYN6288是一種語(yǔ)音合成芯片,可以將文字轉(zhuǎn)換成語(yǔ)音輸出。本設(shè)計(jì)采用SYN6288語(yǔ)音模塊進(jìn)行語(yǔ)音播報(bào),實(shí)現(xiàn)公交車(chē)到站信息的語(yǔ)音提示。
2.2 軟件設(shè)計(jì)
本設(shè)計(jì)采用Keil C51編譯器進(jìn)行軟件開(kāi)發(fā),具體軟件設(shè)計(jì)如下:
(1)LED顯示屏控制程序
LED顯示屏控制程序主要實(shí)現(xiàn)MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊控制2*8的LED顯示屏,顯示公交車(chē)站點(diǎn)信息。
具體實(shí)現(xiàn)過(guò)程:
① 初始化MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊,設(shè)置顯示模式、掃描限制、亮度等參數(shù)。
② 將需要顯示的信息轉(zhuǎn)換成點(diǎn)陣數(shù)據(jù),存儲(chǔ)在數(shù)組中。
③ 將點(diǎn)陣數(shù)據(jù)通過(guò)SPI總線(xiàn)發(fā)送給MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊,實(shí)現(xiàn)LED顯示屏的顯示。
(2)語(yǔ)音播報(bào)程序
語(yǔ)音播報(bào)程序主要實(shí)現(xiàn)SYN6288語(yǔ)音模塊進(jìn)行語(yǔ)音播報(bào),實(shí)現(xiàn)公交車(chē)到站信息的語(yǔ)音提示。
具體實(shí)現(xiàn)過(guò)程:
① 初始化SYN6288語(yǔ)音模塊,設(shè)置波特率、語(yǔ)音速度、音量等參數(shù)。
② 將需要播報(bào)的信息轉(zhuǎn)換成語(yǔ)音數(shù)據(jù),存儲(chǔ)在數(shù)組中。
③ 將語(yǔ)音數(shù)據(jù)通過(guò)串口發(fā)送給SYN6288語(yǔ)音模塊,實(shí)現(xiàn)語(yǔ)音播報(bào)。
2.3 設(shè)計(jì)實(shí)現(xiàn)
本設(shè)計(jì)采用STC89C52單片機(jī)作為主控芯片,MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊控制2*8的LED顯示屏,SYN6288語(yǔ)音模塊進(jìn)行語(yǔ)音播報(bào)。
代碼設(shè)計(jì)思路:
(1)LED顯示屏控制程序
① 初始化MAX7219點(diǎn)陣LED驅(qū)動(dòng)模塊
void Init_MAX7219(void)
{
Send_Max7219(0x09, 0x00); // 譯碼方式:BCD碼
Send_Max7219(0x0a, 0x03); // 亮度
Send_Max7219(0x0b, 0x07); // 掃描界限:8個(gè)數(shù)碼管
Send_Max7219(0x0c, 0x01); // 關(guān)閉顯示測(cè)試
Send_Max7219(0x0f, 0x00); // 正常工作模式
}
② 將需要顯示的信息轉(zhuǎn)換成點(diǎn)陣數(shù)據(jù),存儲(chǔ)在數(shù)組中
unsigned char code LED_Data[16][8] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}, // 全部亮
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 空
{0x00,0x00,0x00