該時(shí)鐘有四個(gè)模式
模式一:正常的時(shí)鐘,在此模式下可以修改時(shí)間(修改時(shí)間有bug,不能自己跳時(shí)間,例如可以調(diào)出25:00)
模式二:倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束后有鬧鈴,流水燈
模式三:鬧鈴,僅僅顯示鬧鈴
模式4:流水燈
PS:沒(méi)有驗(yàn)證,這是 一個(gè)多月前做的。
感謝論壇一些大佬的指導(dǎo)。壓縮包內(nèi)含設(shè)計(jì)報(bào)告,仿真圖,PCB工程,程序源碼。
摘要 學(xué)習(xí)輔助時(shí)鐘的idea主要來(lái)自于知乎的一個(gè)話題:用自己的專(zhuān)業(yè)知識(shí)做的小發(fā)明。看到有一位答主分享了自己舍友利用C語(yǔ)言編了一款“我要當(dāng)學(xué)霸”應(yīng)用程序,主要功能是設(shè)定時(shí)間提醒學(xué)習(xí),并取得了不錯(cuò)的效果。在羨慕計(jì)算機(jī)學(xué)生的編程能力之余我萌生了一個(gè)想法,利用自己學(xué)的51單片機(jī)來(lái)設(shè)計(jì)一個(gè)學(xué)習(xí)輔助時(shí)鐘,主要功能是時(shí)鐘顯示,定時(shí)學(xué)習(xí),鬧鐘還有一個(gè)絢麗的LED流水燈,既可以用于輔助學(xué)習(xí),還可以用作裝飾。時(shí)鐘源由外設(shè)的DS1302提供,顯示屏采用LCD1602,加上按鍵矩陣模塊用于調(diào)整時(shí)間,選擇單片機(jī)運(yùn)行模式。
目錄 五邑大學(xué)電子設(shè)計(jì)大賽單片機(jī)組 摘要 目錄 1 學(xué)習(xí)輔助時(shí)鐘的總體布局 2 學(xué)習(xí)輔助時(shí)鐘各模塊設(shè)計(jì)原理 2.1 最小系統(tǒng): 2.2 時(shí)鐘模塊: 2.2.1 時(shí)鐘芯片DS1302: 2.2.2 DS1302進(jìn)行讀寫(xiě): 2.3 顯示屏LCD1602: 2.3.1 顯示屏1602液晶模塊引腳功能 2.4 鬧鐘鈴聲 2.5 基于74HC595流水燈 2.5.1 芯片74HC595工作原理 3 工作過(guò)程: 3.1 其控制程序如下: 3.2 lcd1602顯示程序: 3.3 流水燈程序: 4 功能介紹: 4.1 時(shí)鐘功能 4.2 鬧鐘功能 4.3 LED裝飾功能 5 參考文獻(xiàn) 6 程序附錄 1 學(xué)習(xí)輔助時(shí)鐘的總體布局圖1-學(xué)習(xí)輔助時(shí)鐘 圖2-系統(tǒng)控制結(jié)構(gòu)框圖
2 學(xué)習(xí)輔助時(shí)鐘各模塊設(shè)計(jì)原理
2.1 最小系統(tǒng):圖3-最小系統(tǒng)原理圖 2.2 時(shí)鐘模塊:2.2.1 時(shí)鐘芯片DS1302:圖4-時(shí)鐘模塊控制電路 圖4-DS1302芯片說(shuō)明 美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路DS1302的結(jié)構(gòu)、工作原理及其在實(shí)時(shí)顯示時(shí)間中的應(yīng)用。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路DS1302的結(jié)構(gòu)、工作原理及其在實(shí)時(shí)顯示時(shí)間中的應(yīng)用。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。 圖5-DS1302寄存器說(shuō)明 1、秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)初始上電時(shí)該位置為1,時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);只有將秒寄存器的該位置改寫(xiě)為0時(shí),時(shí)鐘才能開(kāi)始運(yùn)行。 2、小時(shí)寄存器(85h、84h)的位7用于定義DS1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是 ,當(dāng)為1時(shí),表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位 3、控制寄存器(8Fh、8Eh)的位7是寫(xiě)保護(hù)位(WP),其它7位均置為0。在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。也就是說(shuō)在電路上電的初始態(tài)WP是1,這時(shí)是不能改寫(xiě)上面任何一個(gè)時(shí)間寄存器的,只有首先將WP改寫(xiě)為0,才能進(jìn)行其它寄存器的寫(xiě)操作。 2.2.2 DS1302進(jìn)行讀寫(xiě): 上面的電路圖可以看出,除了電源和接地,DS1302只有三根線和單片機(jī)連接,SCLK、I/O和RST(有的也寫(xiě)成CE),先看時(shí)序圖: 圖6-DS1302讀寫(xiě)時(shí)序圖 DS1302的數(shù)據(jù)讀寫(xiě)是通過(guò)I/O串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫(xiě)操作時(shí)最少得讀寫(xiě)兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴DS1302是讀還是寫(xiě)操作,是對(duì)RAM還是對(duì)CLOK寄存器操作,以及操作的地址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。 我們先看單字節(jié)寫(xiě):在進(jìn)行操作之前先得將CE(也可說(shuō)是RST)置高電平,然后單片機(jī)將控制字的位0放到I/O上,當(dāng)I/O的數(shù)據(jù)穩(wěn)定后,將SCLK置高電平,DS1302檢測(cè)到SCLK的上升沿后就將I/O上的數(shù)據(jù)讀取,然后單片機(jī)將SCLK置為低電平,再將控制字的位1放到I/O上,如此反復(fù),將一個(gè)字節(jié)控制字的8個(gè)位傳給DS1302。接下來(lái)就是傳一個(gè)字節(jié)的數(shù)據(jù)給DS1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將CE置為低電平,操作結(jié)束。 單字節(jié)讀操作的一開(kāi)始寫(xiě)控制字的過(guò)程和上面的單字節(jié)寫(xiě)操作是一樣,但是單字節(jié)讀操作在寫(xiě)控制字的最后一個(gè)位,SCLK還在高電平時(shí),DS1302就將數(shù)據(jù)放到I/O上,單片機(jī)將SCLK置為低電平后數(shù)據(jù)鎖存,單機(jī)機(jī)就可以讀取I/O上的數(shù)據(jù)。如此反復(fù),將一個(gè)字節(jié)的數(shù)據(jù)讀入單片機(jī)。讀與寫(xiě)操作的不同就在于,寫(xiě)操作是在SCLK低電平時(shí)單片機(jī)將數(shù)據(jù)放到IO上,當(dāng)SCLK上升沿時(shí),DS1302讀取。而讀操作是在SCLK高電平時(shí)DS1302放數(shù)據(jù)到IO上,將SCLK置為低電平后,單片機(jī)就可從IO上讀取數(shù)據(jù)。 圖7-DS1302讀寫(xiě)時(shí)序圖 位0就是讀寫(xiě)位,當(dāng)位0為1時(shí),就是告訴DS1302,下面是進(jìn)行讀出操作,而當(dāng)位0為0時(shí)就是寫(xiě)入操作。 位0-位5是要進(jìn)行操作的DS1302寄存器地址。 位6就是告訴DS1302,是要對(duì)RAM進(jìn)行操作還是對(duì)CLK寄存器進(jìn)行操作,0就是對(duì)時(shí)間寄存器操作,一般我們都是對(duì)時(shí)間寄存器進(jìn)行操作。 位7就是固定的1。為什么是1呢。還記得上面說(shuō)的單字節(jié)讀操作嗎?在寫(xiě)控制字的最后一個(gè)位也就是位7時(shí),DS1302已將它的寄存器數(shù)據(jù)位0放到IO上了,要是控制字的位7是0的話,DS1302就無(wú)法將它的隨后的數(shù)據(jù)放到IO上了。 這也是為什么控制字80H是寫(xiě)秒寄存器,而80H是讀秒寄存!80H換成二進(jìn)制就是10000000。而81H的二進(jìn)制就是10000001,一個(gè)是寫(xiě)操作,另一個(gè)是讀操作! 2.3 顯示屏LCD1602:LCD1602是一種工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。LCD1602液晶顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,即可以顯示出圖形。 圖5-穩(wěn)壓芯片 2.3.1 顯示屏1602液晶模塊引腳功能表1-各引腳接口說(shuō)明 第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。 第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 第15腳:背光源正極。 第16腳:背光源負(fù)極。 表2-各指令說(shuō)明 1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。 指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。 指令7:字符發(fā)生器RAM地址設(shè)置。 指令8:DDRAM地址設(shè)置。 指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令10:寫(xiě)數(shù)據(jù)。 指令11:讀數(shù)據(jù)。 2.4 鬧鐘鈴聲聲音是通過(guò)振動(dòng)產(chǎn)生的。單片機(jī)對(duì)某一引腳以一定的頻率循環(huán)置1置0,該引腳便產(chǎn)生一定頻率的方波,方波通過(guò)放大,作用于一定的物理實(shí)件(蜂鳴器),就產(chǎn)生了一定頻率的聲音。若改變輸出方波的頻率,產(chǎn)生的聲音隨之改變。通過(guò)控制輸出方波的時(shí)間長(zhǎng)短,聲音的長(zhǎng)短也可以得到控制,因此,根據(jù)樂(lè)譜,以類(lèi)似的音及同樣的節(jié)拍,單片機(jī)就可以產(chǎn)生電子音樂(lè)。音樂(lè)的播放選擇可以通過(guò)按鍵的輸入得以實(shí)現(xiàn)。 為簡(jiǎn)便起見(jiàn),以一定的頻率方波產(chǎn)生的音在其每個(gè)周期內(nèi)高低幅值得時(shí)間各占一半因此,輸出引腳在每個(gè)方波周期內(nèi)要?jiǎng)幼鲀纱危阂淮紊,一次降低。即輸出引腳的頻率是原音頻率的兩倍。 方波的產(chǎn)生由定時(shí)器控制。定時(shí)器T0工作在定時(shí)方式1,改變TH0及TL0,產(chǎn)生不同的音頻頻率。必須考慮到中斷響應(yīng)時(shí)間的影響,尤其在高音部分,若忽略中斷響應(yīng)時(shí)間,會(huì)使音頻頻率比標(biāo)準(zhǔn)值低幾十Hz,相當(dāng)于1/4音程,很容易聽(tīng)出來(lái),對(duì)低音部分影響不大。一般中斷響應(yīng)時(shí)間為3~6個(gè)機(jī)器周期,經(jīng)過(guò)反復(fù)試驗(yàn)取5個(gè)機(jī)器周期作為校正最為恰當(dāng),表1中所給的定時(shí)初值就是考慮中斷響應(yīng)后的定時(shí)常數(shù)。另外,為避免T1中斷可能引起雜音,應(yīng)將定時(shí)器T0中斷設(shè)為高優(yōu)先級(jí)。這樣編寫(xiě)出來(lái)的程序播放的音與標(biāo)準(zhǔn)音叉進(jìn)行差頻校音,非常準(zhǔn)確和諧。 在音樂(lè)中使用的各個(gè)固定頻率的音叫音級(jí)。常用符號(hào)C、D、E、F、G、A、B、c、d、e、……a1、b1、c2、d2……表示,它們對(duì)應(yīng)于鋼琴上的白鍵。兩音之間音高的距離叫音程。在上述音級(jí)中,E與F、B與C之間音高的距離僅為其它相鄰音級(jí)之間距離的一半,稱(chēng)它們之間的音程為半音音程,而稱(chēng)其它相鄰各音之間的距離為全音音程。在這些全音音程之間又加入新的半音音級(jí),用符號(hào)﹟C、﹟D、﹟F、﹟G、﹟A、﹟c、﹟d、﹟f、……表示,對(duì)應(yīng)于鋼琴上的黑鍵。音持續(xù)時(shí)間的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。
2.5 基于74HC595流水燈2.5.1 芯片74HC595工作原理74HC595可以將單片機(jī)的串行輸入轉(zhuǎn)換為并行輸出,因此可以大大降低單片機(jī)I/O口的使用率,節(jié)省硬件資源,簡(jiǎn)化硬件電路,降低生產(chǎn)成本,操作方便。 74HC595的引腳功能及主要性能參數(shù)
74595的控制端說(shuō)明: MR (10腳): 低點(diǎn)平時(shí)將移位寄存器的數(shù)據(jù)清零。通常將它接Vcc。 SHCP (11腳):上升沿時(shí)數(shù)據(jù)寄存器的數(shù)據(jù)移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器數(shù)據(jù)不變。(脈沖寬度:5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí)) STCP (12腳):上升沿時(shí)移位寄存器的數(shù)據(jù)進(jìn)入數(shù)據(jù)存儲(chǔ)寄存器,下降沿時(shí)存儲(chǔ)寄存器數(shù)據(jù)不變。通常我將STCP置為低點(diǎn)平,當(dāng)移位結(jié)束后,在STCP端產(chǎn)生一個(gè)正脈沖(5V時(shí),大于幾十納秒就行了。我通常都選微秒級(jí)),更新顯示數(shù)據(jù)。 OE (13腳): 高電平時(shí)禁止輸出(高阻態(tài))。如果單片機(jī)的引腳不緊張,用一個(gè)引腳控制它,可以方便地產(chǎn)生閃爍和熄滅效果。比通過(guò)數(shù)據(jù)端移位控制要省時(shí)省力。 74HC595時(shí)序圖 3 工作過(guò)程: 開(kāi)機(jī)先時(shí)鐘初始化,等待按鍵掃描選擇運(yùn)行功能,通過(guò)掃描矩陣電平變化確定哪個(gè)按鍵按下,從而運(yùn)行相對(duì)的功能。工作狀態(tài)也可以選擇模式,可以從當(dāng)前運(yùn)行模式換到別的模式。 4 功能介紹:4.1 時(shí)鐘功能提供年份日期星期24小時(shí)格式時(shí)間顯示,初始化后可以設(shè)置時(shí)間,選擇模式一后可設(shè)置,通過(guò)對(duì)應(yīng)按鍵加減調(diào)整時(shí)鐘。 4.2 鬧鐘功能初始化的鬧鐘為45分鐘倒計(jì)時(shí),可以根據(jù)按鍵調(diào)整倒計(jì)時(shí)時(shí)間,時(shí)間到了會(huì)發(fā)出鬧鐘鈴聲,燈光閃爍,可以通過(guò)按鍵停止提醒。 4.3 LED裝飾功能通過(guò)按鍵選擇裝飾功能,LED燈展示不同樣式的亮燈模式
結(jié)束語(yǔ)第一次設(shè)計(jì)單片機(jī)作品,用的是51單片機(jī),程序?qū)懫饋?lái)不難,感覺(jué)復(fù)雜而且多,運(yùn)行功能的程序函數(shù)基本上都是要編寫(xiě)的,能夠調(diào)用的函數(shù)很少。程序修改了很多遍,一次又一次的試錯(cuò),最終完成了最后的程序。這個(gè)過(guò)程需要耐心,更需要扎實(shí)的c語(yǔ)言基礎(chǔ)。因?yàn)榛A(chǔ)不過(guò)關(guān),需要的耐心就更多了,好在我們都克服了這兩個(gè)困難。時(shí)間上的緊迫也是我們面臨的一大問(wèn)題,在進(jìn)行這個(gè)比賽設(shè)計(jì)的同時(shí),我們還有兩門(mén)課程設(shè)計(jì)需要進(jìn)行,時(shí)間基本上重疊,為了平衡時(shí)間,我們不得不放棄了原先的一些設(shè)想,比如倒計(jì)時(shí)時(shí)間可以通過(guò)鍵盤(pán)輸入,增設(shè)單片機(jī)播放mp3功能,設(shè)計(jì)心形流水燈,時(shí)間的緊迫讓我們沒(méi)有辦法進(jìn)行更多的開(kāi)發(fā)。好在還是很滿(mǎn)意最后的作品,雖然功能不多,當(dāng)時(shí)很實(shí)用,可以用來(lái)督促學(xué)習(xí),作為學(xué)習(xí)輔助,能夠完成自身的任務(wù)。
全部資料51hei下載地址:
|