王莉軍
【摘 要】單片機是一種集成度很高的微型計算機,是現代電子系統中重要的智能化工具,廣泛應用于工業自動化控制、家用電器、智能儀表、汽車電子、航天電子等。在單片機課程教學中,理論結合實踐的綜合性課程設計項目教學是非常重要的。本論文介紹了一個單片機課程設計中非常經典的電子鐘設計項目,通過該案例的設計分析,可以使同學們能夠熟練掌握并靈活運用所學的知識,了解一個產品開發的全過程,鍛煉學生的創新、獨立思考、解決問題的能力。
【關鍵詞】電子鐘;Proteus;LCD1602;DS1302
中圖分類號: F426.63 文獻標識碼: A 文章編號: 2095-2457(2017)17-0004-002
Practice Teaching of Electronic Clock Project Based on Proteus
WANG Li-jun
(Department of Computer Science and Technology,Sanda University,Shanghai 201209,China)
【Abstract】In Single chip microcomputer course, project teaching of comprehensive curriculum design is very important. This paper introduces a very classic curriculum design of the electronic clock project. Through this project, students can master and apply the knowledge, understand the whole process of a product development. Students' creativity, independent thinking and problem solving skills can be exercised.
【Key words】Electronic Clock; Proteus; LCD1602; DS1302
0 前言
隨著LCD液晶顯示屏的普及,很多地方我們都能看到電子鐘的應用,比如電子手表、測試儀器、智能家電、公共場合的大屏幕時間顯示屏等。本論文介紹了一個基于Proteus單片機仿真平臺的電子鐘設計[1]。
1 總體設計
本電子鐘的功能是通過液晶顯示屏實時顯示時鐘。電子鐘包括時鐘模塊、顯示模塊,具體的流程是先把設置的初始時間寫入時鐘芯片并驅動時鐘運行,然后單片機每隔一段時間讀出時鐘芯片的當前時間,并通過液晶顯示屏顯示出來。
2 詳細設計
2.1 時鐘模塊
2.1.1 DS1302模塊電路設計
時鐘模塊采用DS1302芯片,該芯片總共包括8個引腳:1腳VCC2為主電源和8腳VCC1為后備電源,可接電池;2腳X1和3腳X2為晶振引腳,外接32768Hz晶振;4腳GND接地;5腳/RST為復位/片選引腳;6腳I/O為串行數據輸入輸出引腳;7腳SCLK為串行時鐘引腳。單片機通過5、6、7腳控制DS1302時鐘芯片。5腳/RST連接到單片機P1.7, 6腳I/O連接到單片機P3.4,7腳SCLK連接到單片機P3.5[1]。
2.1.2 DS1302模塊軟件設計
對DS1302的操作實際上就是對主要的8個時鐘寄存器進行讀寫。具體的控制流程是先寫入控制字,然后再寫入或讀出寄存器數據。寄存器控制字包括讀寫的寄存器地址和讀寫操作等信息,最高位bit7固定為1,bit6為RAM和時鐘的選擇位,bit5~bit1為寄存器地址位,bit0為讀寫選擇位。
接下來就是怎樣寫入寄存器控制字和讀寫寄存器數據,這就要涉及到DS1302讀寫時序。DS1302
單字節一次讀取和寫入過程可以看成是對兩個字節的讀寫操作,即1個字節的寄存器控制字和1個字節的讀寫寄存器數據。例如單字節讀時序是先寫入一個字節的寄存器控制字(以便知道要讀取哪個寄存器數據),然后再讀出對應寄存器的一個字節數據。單字節寫時序也是先寫入一個字節的寄存器控制字,然后寫入一個字節數據到對應的寄存器。而且對于一個字節的寄存器控制字和寄存器數據,它們的寫過程是一樣的,也就是說寫一個寄存器控制字和寫一個寄存器數據可以調用同一個函數的,所以可以只設計兩個底層接口函數,用于讀、寫單個字節:void write_byte(uchar addr)和uchar read_byte(void)。DS1302單字節讀時序可以調用寫控制字write_byte(addr)和讀數據read_byte()兩個函數,對上一層的接口函數為uchar read_ds1302(uchar addr),即從某個寄存器中讀取數據。而DS1302單字節寫時序可以調用寫控制字write_byte(addr)和寫數據write_byte(data),對上層的接口函數為write_ds1302(uchar addr,uchar dat),即將數據寫入指定地址的寄存器。
寫單字節函數void write_byte(uchar addr)的流程是在時鐘的上升沿將每一個數據位寫入DS1302,具體流程為:將字節從低位開始依次寫入DS1302,即先取數據的最低位放在I/O數據線上,然后SCLK電平設為高電平,產生上升沿,此時I/O上數據會寫入DS1302,再將SCLK置為低電平,數據右移一位,為下一次數據位傳輸做準備,然后又進入下一位數據的傳輸。讀單字節函數uchar read_byte(void)的流程是在時鐘的下降沿時通知DS1302要取數據位,在低電平一段時間等DS1302準備好數據后,再從I/O數據線上讀取一位數據,而且在寫控制字的最后一位的時鐘周期,要讀取的數據最低位已經在I/O數據線上,具體流程為:先讀取I/O數據線上的數據位,將它保存在一個數據的最高位,SCLK置為高電平,然后再置為低電平,產生下降沿,通知DS1302要取下一位數據,并且將保存的數據右移一位,以便將新接收的數據位放在保存數據的最高位[2]。endprint
2.1.3 DS1302模塊仿真測試
通過Proteus和Keil軟件聯合仿真DS1302時鐘模塊,寫入時間2017年9月1日 12點30分30秒能正常寫入,仿真結果如圖1所示:
圖1 DS1302模塊仿真測試結果
圖2 LCD1602液晶顯示流程圖
2.2 顯示模塊
2.2.1 電路設計
顯示模塊采用LCD1602,它總共能顯示32個字符,分兩行顯示。LCD1602芯片總共有16個引腳。主要的控制和數據引腳有:RS指令/數據寄存器選擇引腳4,高電平時選擇數據寄存器,低電平時選擇指令寄存器,接單片機P1.0;RW讀寫選擇引腳5,高電平時讀操作,低電平時寫操作,接單片機P1.1;E使能引腳6,接單片機P1.5;D0~D7數據引腳7~14,接單片機P0端口[3]。
2.2.2 軟件設計
單片機主要是通過4腳寄存器選擇RS、5腳讀寫選擇RW、6腳使能E來控制LM1602液晶顯示模塊。
LM1602有16×2個顯示位,每個顯示位對應于一個RAM單元,而且系統規定,寫操作時的地址最高位為1,讀操作時的地址最高位為0,所以讀操作時RAM的地址范圍為:第一行00H~0FH,第二行40H~4FH,寫操作時RAM的地址范圍為:第一行80H~8FH,第二行C0H~CFH。根據RAM地址表,可以確定如何顯示字符,即先寫入字符顯示的首地址,然后依次連續寫入要顯示的字符。那么如何將顯示的地址和顯示的字符寫入LCD1602呢,它們都是根據LM1602芯片的讀寫操作控制時序寫入的,當E為下降沿脈沖時寫入指令或數據,當E為高電平時讀出狀態字或數據,而且它是并行數據傳輸的,時序相對于DS1302的串行數據傳輸簡單些。
要在液晶顯示器上顯示兩行字符串,可以將需要顯示的兩行字符串分別存放在兩個字符數組里,流程圖如圖2所示。LCD的初始化主要是設置LCD的工作模式、清屏、光標顯示方式等,即清屏顯示指令為0x01,表示清除所有顯示數據;輸入模式指令為0x06,表示讀寫一個字符后地址指針會自動加1;顯示開關控制指令為0x0F,表示整屏顯示;顯示模式指令為0x38,表示8位數據接口,雙行顯示。設置第一、二行首地址,寫命令和寫數據操作可以根據LM1602芯片的讀寫操作控制方式寫出[4]。
2.2.3 仿真測試
LCD1602模塊顯示功能測試結果如圖3所示,第一二行都能正常顯示字符。
圖3 LCD1602模塊仿真測試結果
圖4 電子鐘系統仿真測試結果
2.3 系統測試
將時鐘模塊和液晶顯示模塊聯合仿真測試,結果如圖4所示,設置的初始時間為2017年9月1日,12點30分30秒,星期五,設置后,時鐘能正常工作。圖中也包括單片機的時鐘、復位電路[5]。(下轉第7頁)
(上接第5頁)
3 結語
本文介紹了基于Proteus的電子鐘項目的教學實踐過程,它的特點是在沒有硬件開發平臺的環境下,同學們也可以進行項目的開發實踐,并且通過該項目,同學們可以了解一個項目的開發流程,以及熟練掌握常用的時鐘模塊DS1302、液晶顯示模塊LCD1602的設計方法。
【參考文獻】
[1]老楊.51單片機工程師是怎樣煉成的-基于C語言和Proteus仿真[M].北京:電子工業出版社,2012:284-298.
[2]宋雪松,李冬明,崔長勝.手把手教你學51單片機[M].北京:清華大學出版社,2014:264-298.
[3]魏芬主,戴麗佼,李紅霞.基于Proteus的單片機實驗與課程設計[M].北京:清華大學出版社,2015:218-222.
[4]林立,張俊亮.單片機原理及應用-基于Proteus和Keil C. 第3版[M].北京:電子工業出版社,2014:213-218.
[5]張霞,周克,何威,張超.基于MCS-51單片機的液晶顯示設計[J].自動控制,2014.3:71-74.endprint