張路瑩, 許亞迪, 鄭文青, 周麟坤
(山東科技大學(xué)電氣信息系, 山東 濟(jì)南 230031)
本文設(shè)計(jì)了基于STM32的萬(wàn)年歷,以STM32F103V CT6作為開發(fā)板的核心部件,以SYSCLK為基礎(chǔ)實(shí)現(xiàn)時(shí)間流動(dòng)。同時(shí),選擇ili9320顯示屏作為顯示模塊,選擇NRF24L01作為無(wú)線通信模塊,選擇DS1820作為溫度傳感器。時(shí)鐘電路可以準(zhǔn)確提供計(jì)時(shí)等功能,通過編程,可以最終實(shí)現(xiàn)顯示溫度、時(shí)間、日期、星期以及定時(shí)等功能。
系統(tǒng)設(shè)計(jì)流程如圖1、圖2所示。
圖1 上位機(jī)主程序流程圖
圖2 下位機(jī)主程序流程圖
1)主程序模塊:原理主函數(shù)模塊分為上位機(jī)與下位機(jī)。通過初始化函數(shù)、定時(shí)函數(shù)、中斷函數(shù)、顯示函數(shù)、觸摸函數(shù)、初始化2401函數(shù)、字庫(kù)字模函數(shù)等主程序來(lái)完成所需主程序模塊。主程序先初始化所有函數(shù)TFT顯示器、定時(shí)器和ili9320觸摸屏,并將初始數(shù)據(jù)寫入顯示屏,在LED燈閃爍計(jì)時(shí)配置好中斷,按下ok鍵進(jìn)入鬧鐘調(diào)整界面,觸摸相應(yīng)位置則可以更改。
2)顯示屏模塊:TFT(ThinFilmTransistor),指薄膜液晶顯示器。ILI9320液晶控制器自帶大小為172820(240*320*18/8)26萬(wàn)色的顯存。模塊各個(gè)像素均由紅綠藍(lán)三種顏色混合而成,16位數(shù)據(jù)線與顯寸的對(duì)應(yīng)關(guān)系高達(dá)565種[1]。
3)觸摸屏模塊:可根據(jù)圖形按鈕坐標(biāo)范圍編寫好的驅(qū)動(dòng)式程序?qū)⒕匦螀^(qū)域中觸摸點(diǎn)(X,Y)的物理位置轉(zhuǎn)換為代表X坐標(biāo)和Y坐標(biāo)的電壓。
4)萬(wàn)年歷算法模塊:根據(jù)日歷的加減設(shè)計(jì)的。秒位上滿60即進(jìn)1,29、30、31時(shí)清零并進(jìn)1,每次月份滿12就進(jìn)1并清零。同時(shí)算法會(huì)判別平年和閏年以實(shí)現(xiàn)對(duì)于二月為29天還是28天的判斷。在公農(nóng)歷的算法轉(zhuǎn)換中,本系統(tǒng)采用了查表的形式,將中國(guó)科學(xué)院紫金山天文臺(tái)歷算組所頒布的近二百年農(nóng)歷對(duì)應(yīng)表輸入進(jìn)STM32,使得農(nóng)歷與公歷能夠一一對(duì)應(yīng)。同時(shí),本系統(tǒng)還加入了判別平閏年的算法以實(shí)現(xiàn)對(duì)二月總天數(shù)的判斷。
5)無(wú)線通信模塊:利用SPI通信中的半雙工通信方式,使MCU與NIF2401建立通訊聯(lián)系,并且與兩個(gè)無(wú)線通訊模塊之間進(jìn)行信息傳輸,在通訊之前要對(duì)無(wú)線通訊模塊進(jìn)行收或發(fā)的設(shè)置,在發(fā)送過程當(dāng)中,需要先發(fā)送校驗(yàn)位,然后是有效數(shù)組,最后是截止位,其傳輸類型為字符串型,所以需要對(duì)發(fā)送數(shù)組進(jìn)行字符串類型處理,在接收時(shí)也需要處理得到想要的類型。
根據(jù)系統(tǒng)硬件的設(shè)計(jì),將系統(tǒng)分為上位機(jī)和下位機(jī)系統(tǒng),其中主要單元有主控芯片模塊、RTC時(shí)鐘模塊、外部中斷模塊、時(shí)鐘芯片模塊、時(shí)間調(diào)整模塊等。單片機(jī)STM32F103單片機(jī)內(nèi)部時(shí)鐘芯片VCT6的控制需要通過程序驅(qū)動(dòng)來(lái)實(shí)現(xiàn),程序主要完成兩個(gè)方面的任務(wù)[2-3]:
1)利用單片機(jī)實(shí)現(xiàn)對(duì)STM32F103寄存器的分頻設(shè)置,分頻得到相應(yīng)的頻率。
2)實(shí)現(xiàn)對(duì)時(shí)鐘中斷的年月日時(shí)分秒的進(jìn)位設(shè)置。同時(shí),也可以使用RTC內(nèi)部時(shí)鐘進(jìn)行分頻設(shè)置,由于RTC內(nèi)部時(shí)鐘是一個(gè)特定的時(shí)鐘,所以其1秒的進(jìn)制較為準(zhǔn)確。首先對(duì)所需的函數(shù)進(jìn)行初始化,并且使用中斷優(yōu)先級(jí)處理,在RTC時(shí)鐘和定時(shí)時(shí)鐘程序運(yùn)行時(shí),主程序仍然可以運(yùn)行。
1)外設(shè)選擇與連接。上位機(jī)是否選擇基于STM 32F103VCT的神舟II號(hào)開發(fā)板,下位機(jī)是否選擇基于STM32F103VCT的戰(zhàn)艦V3開發(fā)板,屏幕是否選擇ili9320,無(wú)線傳輸模塊是否選擇NRF24L01,溫度傳感器是否選擇DS1820。神舟II號(hào)開發(fā)板是否正確連接電源線、串口線及J-Link-ARM V8仿真器,戰(zhàn)艦V3開發(fā)板是否正確連接電源線、串口線及ST-Link仿真器。
2)軟硬匹配。無(wú)線傳輸模塊NRF24L01的管腳配置是否與程序保持一致,即:GND連接開發(fā)板的電源地,VCC連接開發(fā)板的3.3 V電源,CE連接PB12,CS 連 接 PD8,SCK 連 接 PB13,MISO 連 接PB14,MOSI連接PB15,IRQ連接PD9。溫度傳感器DS1820的管腳配置是否與程序保持一致,即:GND連接開發(fā)板的電源地,VCC連接開發(fā)板的3.3V電源,DQ連接PB0。
屏幕顯示如圖3、圖4所示。
圖3 下位機(jī)主頁(yè)面
圖4 上位機(jī)主頁(yè)面