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