王莉軍
【摘 要】單片機(jī)是一種集成度很高的微型計(jì)算機(jī),是現(xiàn)代電子系統(tǒng)中重要的智能化工具,廣泛應(yīng)用于工業(yè)自動(dòng)化控制、家用電器、智能儀表、汽車(chē)電子、航天電子等。在單片機(jī)課程教學(xué)中,理論結(jié)合實(shí)踐的綜合性課程設(shè)計(jì)項(xiàng)目教學(xué)是非常重要的。本論文介紹了一個(gè)單片機(jī)課程設(shè)計(jì)中非常經(jīng)典的電子鐘設(shè)計(jì)項(xiàng)目,通過(guò)該案例的設(shè)計(jì)分析,可以使同學(xué)們能夠熟練掌握并靈活運(yùn)用所學(xué)的知識(shí),了解一個(gè)產(chǎn)品開(kāi)發(fā)的全過(guò)程,鍛煉學(xué)生的創(chuàng)新、獨(dú)立思考、解決問(wèn)題的能力。
【關(guān)鍵詞】電子鐘;Proteus;LCD1602;DS1302
中圖分類(lèi)號(hào): F426.63 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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液晶顯示屏的普及,很多地方我們都能看到電子鐘的應(yīng)用,比如電子手表、測(cè)試儀器、智能家電、公共場(chǎng)合的大屏幕時(shí)間顯示屏等。本論文介紹了一個(gè)基于Proteus單片機(jī)仿真平臺(tái)的電子鐘設(shè)計(jì)[1]。
1 總體設(shè)計(jì)
本電子鐘的功能是通過(guò)液晶顯示屏實(shí)時(shí)顯示時(shí)鐘。電子鐘包括時(shí)鐘模塊、顯示模塊,具體的流程是先把設(shè)置的初始時(shí)間寫(xiě)入時(shí)鐘芯片并驅(qū)動(dòng)時(shí)鐘運(yùn)行,然后單片機(jī)每隔一段時(shí)間讀出時(shí)鐘芯片的當(dāng)前時(shí)間,并通過(guò)液晶顯示屏顯示出來(lái)。
2 詳細(xì)設(shè)計(jì)
2.1 時(shí)鐘模塊
2.1.1 DS1302模塊電路設(shè)計(jì)
時(shí)鐘模塊采用DS1302芯片,該芯片總共包括8個(gè)引腳:1腳VCC2為主電源和8腳VCC1為后備電源,可接電池;2腳X1和3腳X2為晶振引腳,外接32768Hz晶振;4腳GND接地;5腳/RST為復(fù)位/片選引腳;6腳I/O為串行數(shù)據(jù)輸入輸出引腳;7腳SCLK為串行時(shí)鐘引腳。單片機(jī)通過(guò)5、6、7腳控制DS1302時(shí)鐘芯片。5腳/RST連接到單片機(jī)P1.7, 6腳I/O連接到單片機(jī)P3.4,7腳SCLK連接到單片機(jī)P3.5[1]。
2.1.2 DS1302模塊軟件設(shè)計(jì)
對(duì)DS1302的操作實(shí)際上就是對(duì)主要的8個(gè)時(shí)鐘寄存器進(jìn)行讀寫(xiě)。具體的控制流程是先寫(xiě)入控制字,然后再寫(xiě)入或讀出寄存器數(shù)據(jù)。寄存器控制字包括讀寫(xiě)的寄存器地址和讀寫(xiě)操作等信息,最高位bit7固定為1,bit6為RAM和時(shí)鐘的選擇位,bit5~bit1為寄存器地址位,bit0為讀寫(xiě)選擇位。
接下來(lái)就是怎樣寫(xiě)入寄存器控制字和讀寫(xiě)寄存器數(shù)據(jù),這就要涉及到DS1302讀寫(xiě)時(shí)序。DS1302
單字節(jié)一次讀取和寫(xiě)入過(guò)程可以看成是對(duì)兩個(gè)字節(jié)的讀寫(xiě)操作,即1個(gè)字節(jié)的寄存器控制字和1個(gè)字節(jié)的讀寫(xiě)寄存器數(shù)據(jù)。例如單字節(jié)讀時(shí)序是先寫(xiě)入一個(gè)字節(jié)的寄存器控制字(以便知道要讀取哪個(gè)寄存器數(shù)據(jù)),然后再讀出對(duì)應(yīng)寄存器的一個(gè)字節(jié)數(shù)據(jù)。單字節(jié)寫(xiě)時(shí)序也是先寫(xiě)入一個(gè)字節(jié)的寄存器控制字,然后寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)到對(duì)應(yīng)的寄存器。而且對(duì)于一個(gè)字節(jié)的寄存器控制字和寄存器數(shù)據(jù),它們的寫(xiě)過(guò)程是一樣的,也就是說(shuō)寫(xiě)一個(gè)寄存器控制字和寫(xiě)一個(gè)寄存器數(shù)據(jù)可以調(diào)用同一個(gè)函數(shù)的,所以可以只設(shè)計(jì)兩個(gè)底層接口函數(shù),用于讀、寫(xiě)單個(gè)字節(jié):void write_byte(uchar addr)和uchar read_byte(void)。DS1302單字節(jié)讀時(shí)序可以調(diào)用寫(xiě)控制字write_byte(addr)和讀數(shù)據(jù)read_byte()兩個(gè)函數(shù),對(duì)上一層的接口函數(shù)為uchar read_ds1302(uchar addr),即從某個(gè)寄存器中讀取數(shù)據(jù)。而DS1302單字節(jié)寫(xiě)時(shí)序可以調(diào)用寫(xiě)控制字write_byte(addr)和寫(xiě)數(shù)據(jù)write_byte(data),對(duì)上層的接口函數(shù)為write_ds1302(uchar addr,uchar dat),即將數(shù)據(jù)寫(xiě)入指定地址的寄存器。
寫(xiě)單字節(jié)函數(shù)void write_byte(uchar addr)的流程是在時(shí)鐘的上升沿將每一個(gè)數(shù)據(jù)位寫(xiě)入DS1302,具體流程為:將字節(jié)從低位開(kāi)始依次寫(xiě)入DS1302,即先取數(shù)據(jù)的最低位放在I/O數(shù)據(jù)線(xiàn)上,然后SCLK電平設(shè)為高電平,產(chǎn)生上升沿,此時(shí)I/O上數(shù)據(jù)會(huì)寫(xiě)入DS1302,再將SCLK置為低電平,數(shù)據(jù)右移一位,為下一次數(shù)據(jù)位傳輸做準(zhǔn)備,然后又進(jìn)入下一位數(shù)據(jù)的傳輸。讀單字節(jié)函數(shù)uchar read_byte(void)的流程是在時(shí)鐘的下降沿時(shí)通知DS1302要取數(shù)據(jù)位,在低電平一段時(shí)間等DS1302準(zhǔn)備好數(shù)據(jù)后,再?gòu)腎/O數(shù)據(jù)線(xiàn)上讀取一位數(shù)據(jù),而且在寫(xiě)控制字的最后一位的時(shí)鐘周期,要讀取的數(shù)據(jù)最低位已經(jīng)在I/O數(shù)據(jù)線(xiàn)上,具體流程為:先讀取I/O數(shù)據(jù)線(xiàn)上的數(shù)據(jù)位,將它保存在一個(gè)數(shù)據(jù)的最高位,SCLK置為高電平,然后再置為低電平,產(chǎn)生下降沿,通知DS1302要取下一位數(shù)據(jù),并且將保存的數(shù)據(jù)右移一位,以便將新接收的數(shù)據(jù)位放在保存數(shù)據(jù)的最高位[2]。endprint
2.1.3 DS1302模塊仿真測(cè)試
通過(guò)Proteus和Keil軟件聯(lián)合仿真DS1302時(shí)鐘模塊,寫(xiě)入時(shí)間2017年9月1日 12點(diǎn)30分30秒能正常寫(xiě)入,仿真結(jié)果如圖1所示:
圖1 DS1302模塊仿真測(cè)試結(jié)果
圖2 LCD1602液晶顯示流程圖
2.2 顯示模塊
2.2.1 電路設(shè)計(jì)
顯示模塊采用LCD1602,它總共能顯示32個(gè)字符,分兩行顯示。LCD1602芯片總共有16個(gè)引腳。主要的控制和數(shù)據(jù)引腳有:RS指令/數(shù)據(jù)寄存器選擇引腳4,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器,接單片機(jī)P1.0;RW讀寫(xiě)選擇引腳5,高電平時(shí)讀操作,低電平時(shí)寫(xiě)操作,接單片機(jī)P1.1;E使能引腳6,接單片機(jī)P1.5;D0~D7數(shù)據(jù)引腳7~14,接單片機(jī)P0端口[3]。
2.2.2 軟件設(shè)計(jì)
單片機(jī)主要是通過(guò)4腳寄存器選擇RS、5腳讀寫(xiě)選擇RW、6腳使能E來(lái)控制LM1602液晶顯示模塊。
LM1602有16×2個(gè)顯示位,每個(gè)顯示位對(duì)應(yīng)于一個(gè)RAM單元,而且系統(tǒng)規(guī)定,寫(xiě)操作時(shí)的地址最高位為1,讀操作時(shí)的地址最高位為0,所以讀操作時(shí)RAM的地址范圍為:第一行00H~0FH,第二行40H~4FH,寫(xiě)操作時(shí)RAM的地址范圍為:第一行80H~8FH,第二行C0H~CFH。根據(jù)RAM地址表,可以確定如何顯示字符,即先寫(xiě)入字符顯示的首地址,然后依次連續(xù)寫(xiě)入要顯示的字符。那么如何將顯示的地址和顯示的字符寫(xiě)入LCD1602呢,它們都是根據(jù)LM1602芯片的讀寫(xiě)操作控制時(shí)序?qū)懭氲模?dāng)E為下降沿脈沖時(shí)寫(xiě)入指令或數(shù)據(jù),當(dāng)E為高電平時(shí)讀出狀態(tài)字或數(shù)據(jù),而且它是并行數(shù)據(jù)傳輸?shù)?,時(shí)序相對(duì)于DS1302的串行數(shù)據(jù)傳輸簡(jiǎn)單些。
要在液晶顯示器上顯示兩行字符串,可以將需要顯示的兩行字符串分別存放在兩個(gè)字符數(shù)組里,流程圖如圖2所示。LCD的初始化主要是設(shè)置LCD的工作模式、清屏、光標(biāo)顯示方式等,即清屏顯示指令為0x01,表示清除所有顯示數(shù)據(jù);輸入模式指令為0x06,表示讀寫(xiě)一個(gè)字符后地址指針會(huì)自動(dòng)加1;顯示開(kāi)關(guān)控制指令為0x0F,表示整屏顯示;顯示模式指令為0x38,表示8位數(shù)據(jù)接口,雙行顯示。設(shè)置第一、二行首地址,寫(xiě)命令和寫(xiě)數(shù)據(jù)操作可以根據(jù)LM1602芯片的讀寫(xiě)操作控制方式寫(xiě)出[4]。
2.2.3 仿真測(cè)試
LCD1602模塊顯示功能測(cè)試結(jié)果如圖3所示,第一二行都能正常顯示字符。
圖3 LCD1602模塊仿真測(cè)試結(jié)果
圖4 電子鐘系統(tǒng)仿真測(cè)試結(jié)果
2.3 系統(tǒng)測(cè)試
將時(shí)鐘模塊和液晶顯示模塊聯(lián)合仿真測(cè)試,結(jié)果如圖4所示,設(shè)置的初始時(shí)間為2017年9月1日,12點(diǎn)30分30秒,星期五,設(shè)置后,時(shí)鐘能正常工作。圖中也包括單片機(jī)的時(shí)鐘、復(fù)位電路[5]。(下轉(zhuǎn)第7頁(yè))
(上接第5頁(yè))
3 結(jié)語(yǔ)
本文介紹了基于Proteus的電子鐘項(xiàng)目的教學(xué)實(shí)踐過(guò)程,它的特點(diǎn)是在沒(méi)有硬件開(kāi)發(fā)平臺(tái)的環(huán)境下,同學(xué)們也可以進(jìn)行項(xiàng)目的開(kāi)發(fā)實(shí)踐,并且通過(guò)該項(xiàng)目,同學(xué)們可以了解一個(gè)項(xiàng)目的開(kāi)發(fā)流程,以及熟練掌握常用的時(shí)鐘模塊DS1302、液晶顯示模塊LCD1602的設(shè)計(jì)方法。
【參考文獻(xiàn)】
[1]老楊.51單片機(jī)工程師是怎樣煉成的-基于C語(yǔ)言和Proteus仿真[M].北京:電子工業(yè)出版社,2012:284-298.
[2]宋雪松,李冬明,崔長(zhǎng)勝.手把手教你學(xué)51單片機(jī)[M].北京:清華大學(xué)出版社,2014:264-298.
[3]魏芬主,戴麗佼,李紅霞.基于Proteus的單片機(jī)實(shí)驗(yàn)與課程設(shè)計(jì)[M].北京:清華大學(xué)出版社,2015:218-222.
[4]林立,張俊亮.單片機(jī)原理及應(yīng)用-基于Proteus和Keil C. 第3版[M].北京:電子工業(yè)出版社,2014:213-218.
[5]張霞,周克,何威,張超.基于MCS-51單片機(jī)的液晶顯示設(shè)計(jì)[J].自動(dòng)控制,2014.3:71-74.endprint