張路瑩, 許亞迪, 鄭文青, 周麟坤
(山東科技大學電氣信息系, 山東 濟南 230031)
本文設計了基于STM32的萬年歷,以STM32F103V CT6作為開發板的核心部件,以SYSCLK為基礎實現時間流動。同時,選擇ili9320顯示屏作為顯示模塊,選擇NRF24L01作為無線通信模塊,選擇DS1820作為溫度傳感器。時鐘電路可以準確提供計時等功能,通過編程,可以最終實現顯示溫度、時間、日期、星期以及定時等功能。
系統設計流程如圖1、圖2所示。

圖1 上位機主程序流程圖

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

圖3 下位機主頁面

圖4 上位機主頁面