畢業(yè)設(shè)計(jì)(論文)魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 摘要隨著我國(guó)水產(chǎn)養(yǎng)殖業(yè)的不斷發(fā)展,養(yǎng)殖密度不斷加大,一味追求高產(chǎn)高效的養(yǎng)殖措施對(duì)養(yǎng)殖水環(huán)境造成很大的污染,其中有魚(yú)塘池水養(yǎng)濃度偏低,導(dǎo)致魚(yú)類(lèi)缺氧致死。為解決魚(yú)塘池水缺氧問(wèn)題,大多數(shù)魚(yú)塘都使用供養(yǎng)機(jī)器為魚(yú)塘池水提供更多的氧氣溶于水中,而魚(yú)塘供養(yǎng)機(jī)器可以是隨機(jī)或定時(shí)的工作,傳統(tǒng)的人工控制機(jī)器的工作使用很費(fèi)時(shí)費(fèi)力,這就需要單片機(jī)定時(shí)控制系統(tǒng)來(lái)控制機(jī)器定時(shí)工作,提高工作效率。本文主要介紹了單片機(jī)定時(shí)控制器的硬件設(shè)計(jì)過(guò)程,單片機(jī)作為主控器件,是整個(gè)系統(tǒng)的核心,起到主要控制作用;時(shí)鐘芯片為系統(tǒng)提空數(shù)字鐘,定時(shí)功能的實(shí)現(xiàn)要依賴(lài)它;液晶模塊為系統(tǒng)顯示提供載體。關(guān)鍵詞:水產(chǎn)養(yǎng)殖;池水養(yǎng)濃度;單片機(jī)定時(shí)控制系統(tǒng)

2、;時(shí)鐘芯片;液晶模塊abstractalong with the development of aquaculture, increasing the breeding density, devotion to high yield and high efficiency water aquaculture environment of breeding measures did a lot of pollution, among them are a low concentration of water fish ponds, lead to a lack of oxygen fish to

3、 death。to solve the problem of oxygen pool water fish ponds, most of the fish ponds are used for feed machine to provide more oxygen fish ponds pond water soluble in water, and fish ponds machine can support is random or regular work, the traditional manual control machines work use very time-consum

4、ing, this needs the single chip microcomputer control system to control the timing machine work time, improve the work efficiency。this article mainly introduced the single chip microcomputer controller hardware design process of timing, microcontroller as the main control devices, is the core of the

5、 whole system, have main control function; the clock chips for system carry empty a digital clock, the realization of the function of timing to rely on it; lcd module for systems show provide vehicle. key words : aquaculture; vital water concentration ;scm timing control system;clock chip;lcd module

6、目錄摘要 iabstractii1 緒論11.1 引言11.1.1 單片機(jī)定時(shí)控制設(shè)計(jì)要求12 元器件選擇22.1 單片機(jī)選擇22.1.1 功能特性描述22.1.2 引腳結(jié)構(gòu)22.1.3 功能介紹32.1.4 復(fù)位信號(hào)及其產(chǎn)生42.2 顯示元器件選擇52.2.1 引腳功能說(shuō)明52.3 計(jì)時(shí)芯片選擇62.3.1 引腳的功能介紹72.3.2 讀寫(xiě)時(shí)序說(shuō)明83 硬件系統(tǒng)結(jié)構(gòu)103.1 系統(tǒng)設(shè)計(jì)思路103.2 最小單片機(jī)系統(tǒng)113.3 時(shí)鐘模塊電路113.4 鍵盤(pán)接口電路123.5 電源電路123.6 系統(tǒng)總硬件框圖144 軟件設(shè)計(jì)164.1 軟件設(shè)計(jì)原則164.2 系統(tǒng)功能模塊圖164.3 程序流程

7、圖174.4 源程序代碼175 畢業(yè)設(shè)計(jì)總結(jié)366 結(jié)束語(yǔ)37參考文獻(xiàn)38附錄一39附錄二40致謝411 緒論1.1 引言中國(guó)水產(chǎn)養(yǎng)殖經(jīng)過(guò)改革開(kāi)放以來(lái)的高速發(fā)展,魚(yú)塘養(yǎng)殖也快速發(fā)展,為滿(mǎn)足水產(chǎn)品供應(yīng)需求,產(chǎn)量不斷增加,養(yǎng)殖密度增大。而由于魚(yú)塘池水不流動(dòng),養(yǎng)殖密度增加的同時(shí),致使水中含氧量不足,導(dǎo)致魚(yú)類(lèi)缺氧死亡,早成重大經(jīng)濟(jì)損失。目前國(guó)內(nèi)魚(yú)塘養(yǎng)殖為解決池水中氧氣不足,大都使用供養(yǎng)機(jī)器增加水中養(yǎng)濃度。供養(yǎng)機(jī)器長(zhǎng)時(shí)間不間斷的工作會(huì)造成機(jī)器的嚴(yán)重?fù)p壞,也會(huì)造成資源浪費(fèi)。而依靠人工控制機(jī)器工作費(fèi)時(shí)費(fèi)力,造成勞力浪費(fèi)。魚(yú)塘池水缺氧一般在黎明前后和傍晚時(shí)分。本魚(yú)塘供養(yǎng)機(jī)器單片機(jī)定時(shí)控制系統(tǒng)設(shè)計(jì)可以有效解決此

8、問(wèn)題,通過(guò)單片機(jī)控制魚(yú)塘供養(yǎng)機(jī)器定時(shí)分時(shí)段工作,節(jié)約電力資源和人力資源,提高機(jī)器供養(yǎng)效率。1.1.1 單片機(jī)定時(shí)控制設(shè)計(jì)要求(1) 熟悉lcd圖形顯示器的工作原理及硬件結(jié)構(gòu)。(2) 了解時(shí)鐘芯片的工作原理及接口技術(shù)。(3) 熟悉stc89c52單片機(jī)工作原理及接口技術(shù)。(4) 自行設(shè)計(jì)(軟、硬件)、制作和調(diào)試。(5) 實(shí)現(xiàn)數(shù)字、字母的lcd顯示。(6) 畫(huà)出硬件設(shè)計(jì)圖和軟件流程圖(7) 根據(jù)軟、硬件設(shè)計(jì)完成硬件制作和軟件調(diào)試(8) 實(shí)現(xiàn)每天定時(shí)時(shí)段的定時(shí)控制,通過(guò)軟件可以任意設(shè)置每個(gè)時(shí)間段的起始和結(jié)束時(shí)間2 元器件選擇2.1 單片機(jī)選擇stc89c52單片機(jī)目前在我國(guó)單片機(jī)市場(chǎng)中占有相當(dāng)大的市

9、場(chǎng)份額,容易購(gòu)買(mǎi)到。主要性能:1、兼容mcs51指令系統(tǒng)2、8k可反復(fù)擦寫(xiě)flash rom3、32個(gè)雙向i/o口4、256x8bit內(nèi)部ram5、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷6、時(shí)鐘頻率0-24mhz7、2個(gè)串行中斷8、可編程uart串行通道9、2個(gè)外部中斷源10、共6個(gè)中斷源11、2個(gè)讀寫(xiě)中斷口線12、3級(jí)加密位13、低功耗空閑和掉電模式14、軟件設(shè)置睡眠和喚醒功能2.1.1 功能特性描述stc89c52是一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制

10、應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,512字節(jié)ram, 32 位i/o 口線,看門(mén)狗定時(shí)器,內(nèi)置4kb eeprom,max810復(fù)位電路,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 stc89x52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35mhz,6t/12t可選。2.1.2 引腳結(jié)構(gòu) 引腳結(jié)構(gòu)如圖1:圖12.1.3

11、 功能介紹 主電源引腳(2根)vcc(pin40):電源輸入,接5v電源gnd(pin20):接地線外接晶振引腳(2根)xtal1(pin19):片內(nèi)振蕩電路的輸入端xtal2(pin20):片內(nèi)振蕩電路的輸出端控制引腳(4根)rst/vpp(pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。ale/prog(pin30):地址鎖存允許信號(hào)psen(pin29):外部存儲(chǔ)器讀選通信號(hào)ea/vpp(pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令??删幊梯斎?輸出引腳(32根)stc89c52單片機(jī)有4組8位的可編程i/

12、o口,分別位p0、p1、p2、p3口,每個(gè)口有8位(8根引腳),共32根。po口(pin39pin32):8位雙向i/o口線,名稱(chēng)為p0.0p0.7p1口(pin1pin8):8位準(zhǔn)雙向i/o口線,名稱(chēng)為p1.0p1.7 p2口(pin21pin28):8位準(zhǔn)雙向i/o口線,名稱(chēng)為p2.0p2.7 p3口(pin10pin17):8位準(zhǔn)雙向i/o口線,名稱(chēng)為p3.0p3.72.1.4 復(fù)位信號(hào)及其產(chǎn)生rst引腳是復(fù)位信號(hào)的輸入端。復(fù)位信號(hào)是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期(即二個(gè)機(jī)器周期)以上。若使用頗率為6mhz的晶振,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過(guò)4us才能完成復(fù)位操作。產(chǎn)生復(fù)位信號(hào)的

13、電路邏輯如圖2:圖2整個(gè)復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(hào)(rst)送至施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個(gè)機(jī)器周期的s5p2時(shí)刻對(duì)施密特觸發(fā)器的輸出進(jìn)行采樣,然后才得到內(nèi)部復(fù)位操作所需要的信號(hào)。復(fù)位操作有上電自動(dòng)復(fù)位相按鍵手動(dòng)復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的,其電路如圖3.1所示。這佯,只要電源vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過(guò)使復(fù)位端經(jīng)電阻與vcc電源接通而實(shí)現(xiàn)的,其電路如圖3.2所示;而按鍵脈沖復(fù)位則是利用rc微分電路產(chǎn)生的正

14、脈沖來(lái)實(shí)現(xiàn)的,如圖3.3所示。 3.1 3.2 3.3圖32.2 顯示元器件選擇本設(shè)計(jì)采用的是顯示部分是lcd1602,可以顯示漢字和阿拉伯?dāng)?shù)字。本顯示器微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。lcd1602基本特性: 1,正5v電壓,對(duì)比度可調(diào)。 2,內(nèi)含復(fù)位電路。 3,提供各種控制命令,如清屏、字符閃爍、光標(biāo)閃爍、顯示移位等各種功能。 4,有80字節(jié)顯示數(shù)據(jù)儲(chǔ)存器ddrm。 5,內(nèi)建有192個(gè)5x7點(diǎn)陣的字型字符發(fā)生器cgrom. 6,8個(gè)可由用戶(hù)自定義的5x7的字符發(fā)生器cgram.2.2.1 引腳功能說(shuō)明圖4 1602采用標(biāo)準(zhǔn)的16腳接口,其中: 第

15、1腳:vss為電源地。 第2腳:vdd接5v電源正極。 第3腳:v0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比對(duì)最弱,接地電源時(shí)對(duì)比度最高。 第4腳:rs為寄存器選擇,高電平為1時(shí)選擇數(shù)據(jù)儲(chǔ)存器、低電平0時(shí)選擇指令寄存器。 第5腳:rw為讀寫(xiě)信號(hào)線,高電平1時(shí)進(jìn)行讀操作,低電平0時(shí)進(jìn)行寫(xiě)操作。 第6腳: e端為使能端。 第714腳:d0d7為8位雙向數(shù)據(jù)端。 第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。2.3 計(jì)時(shí)芯片選擇 本設(shè)計(jì)采用采用ds1302作為主要計(jì)時(shí)芯片。ds1302是美國(guó)dallas公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加31字節(jié)靜態(tài)ram,采用spi三線

16、接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)和ram數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與31天時(shí)可以自動(dòng)調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá)2.55.5v。采用雙電源供電(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。ds1302的外部引腳分配如圖1所示及內(nèi)部結(jié)構(gòu)如圖2所示。ds1302用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄上,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄,因此廣泛應(yīng)用于測(cè)量系統(tǒng)中。圖5 圖6 2.3.1 引腳的功能介紹 vcc1:主電源;vcc2:備份電源。當(dāng)vcc2vcc1+0.2

17、v時(shí),由vcc2向ds1302供電,當(dāng)vcc2 vcc1時(shí),由vcc1向ds1302供電。 sclk:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出; i/o: 三線接口時(shí)的雙向數(shù)據(jù)線; ce: 輸入信號(hào),在讀、寫(xiě)數(shù)據(jù)期間,必須為高。該引腳有兩個(gè)功能:第一,ce開(kāi)始控制字訪問(wèn)移位寄存器的控制邏輯;其次,ce提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?.3.2 讀寫(xiě)時(shí)序說(shuō)明ds1302是spi總線驅(qū)動(dòng)方式。它不僅要向寄存器寫(xiě)入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與ds1302通信,首先要先了解ds1302的控制字。ds1302的控制如下圖??刂谱值淖罡哂行唬ㄎ?)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)

18、入到ds1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1(a4a0):指示操作單元的地址; 位0(最低有效位):如為0,表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作??刂谱挚偸菑淖畹臀婚_(kāi)始輸出。在控制字指令輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入ds1302,數(shù)據(jù)輸入從最低位(0位)開(kāi)始。同樣,在緊跟8位的控制字指令后的下一個(gè)sclk脈沖的下降沿,讀出ds1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫(xiě)時(shí)序如下圖。圖73 硬件系統(tǒng)結(jié)構(gòu)3.1 系統(tǒng)設(shè)計(jì)思路 系統(tǒng)以lcd1602液晶模塊作為顯示的載體,可以實(shí)現(xiàn)比較美觀的顯示界面。他在實(shí)現(xiàn)定時(shí)功能的基礎(chǔ)

19、上,可以實(shí)現(xiàn)數(shù)字鐘走時(shí)的功能,能夠進(jìn)行時(shí)分秒和字母的顯示。根據(jù)液晶顯示模塊,鍵盤(pán)接口模塊。確定了系統(tǒng)的組成模塊:?jiǎn)纹瑱C(jī)主控模塊、時(shí)鐘模塊、液晶顯示模塊、鍵盤(pán)接口模塊、控制輸出模塊。本系統(tǒng)采用c語(yǔ)言編程,增強(qiáng)了軟件的可讀性和可移植性,便于糾錯(cuò)和擴(kuò)展。基于系統(tǒng)的設(shè)計(jì)要求,本設(shè)計(jì)采用ds1302時(shí)鐘芯片,單片機(jī)stc89c52從ds1302中讀取時(shí)間數(shù)據(jù)信息,放入內(nèi)部?jī)?chǔ)存器中,然后單片機(jī)執(zhí)行顯示程序。整個(gè)定時(shí)控制系統(tǒng)電路可分為五大部分:?jiǎn)纹瑱C(jī)最小系統(tǒng)、電源電路部分、顯示部分、鍵盤(pán)輸入部分。系統(tǒng)功能圖如圖8: 圖83.2 最小單片機(jī)系統(tǒng)最小單片機(jī)系統(tǒng)由單片機(jī)、晶振電路、復(fù)位電路組成。如圖9所示: 圖9

20、3.3 時(shí)鐘模塊電路單片機(jī)的時(shí)鐘信號(hào)通常有兩種產(chǎn)生方式:一是內(nèi)部時(shí)鐘方式,二是外部時(shí)鐘方式。本設(shè)計(jì)采用的是外部時(shí)鐘方式。采用外部時(shí)鐘能讓定時(shí)更加準(zhǔn)確。單片機(jī)與ds1032連接的電路圖如圖10。圖103.4 鍵盤(pán)接口電路它是整個(gè)系統(tǒng)中最簡(jiǎn)單的部分,根據(jù)功能要求,本系統(tǒng)共需四個(gè)按鍵:功能選擇鍵、功能加鍵、確定鍵、功能減鍵。按確定鍵將依次業(yè)顯時(shí)間和各個(gè)定時(shí)時(shí)間,如果再按選擇就可以選擇要調(diào)整的時(shí)間按增加鍵就可以調(diào)整時(shí)間或定時(shí)時(shí)間。調(diào)整完成后按確定鍵就完成參數(shù)設(shè)定。圖113.4 電源電路電路為輸出電壓+5v、輸出電流1.5a的穩(wěn)壓電源。它由電源變壓器t1,由in4007整流二極管組成橋式整流電路,濾波電

21、容c1、c3,防止自激電容c2和一只固定式三端穩(wěn)壓器(7805)極為簡(jiǎn)捷方便地搭成的。220v交流市電通過(guò)電源變壓器變換成交流低壓,再經(jīng)過(guò)橋式整流電路和濾波電容c1的整流和濾波,在固定式三端穩(wěn)壓器lm7805的vin和gnd兩端形成一個(gè)并不十分穩(wěn)定的直流電壓(該電壓常常會(huì)因?yàn)槭须婋妷旱牟▌?dòng)或負(fù)載的變化等原因而發(fā)生變化)。此直流電壓經(jīng)過(guò)lm7805的穩(wěn)壓和c3的濾波便在穩(wěn)壓電源的輸出端產(chǎn)生了精度高、穩(wěn)定度好的直流輸出電壓。本穩(wěn)壓電源可作為ttl電路或單片機(jī)電路的電源。三端穩(wěn)壓器是一種標(biāo)準(zhǔn)化、系列化的通用線性穩(wěn)壓電源集成電路,以其體積小、成本低、性能好、工作可靠性高、使用簡(jiǎn)捷方便等特點(diǎn),成為目前穩(wěn)

22、壓電源中應(yīng)用最為廣泛的一種單片式集成穩(wěn)壓器件。 圖113.6 系統(tǒng)總硬件框圖根據(jù)要求說(shuō)設(shè)計(jì)的硬件電路如下圖所示。 圖124 軟件設(shè)計(jì)軟件是系統(tǒng)的靈魂,在軟件的支配下硬件電路才能正常工作,整個(gè)系統(tǒng)才能實(shí)現(xiàn)既定的功能。4.1 軟件設(shè)計(jì)原則軟件是電路的靈魂,一個(gè)系統(tǒng)沒(méi)有軟件,那么硬件電路就只是擺設(shè),無(wú)任何作用,只有配合軟件,硬件電路才能完成人們?cè)O(shè)計(jì)時(shí)需要的功能。軟件的設(shè)計(jì)又是建立在硬件的基礎(chǔ)上的,在編寫(xiě)程序時(shí),使得cpu能夠按照人們?cè)O(shè)想給出脈沖從而在硬件電路上實(shí)現(xiàn)其功能。 本軟件設(shè)計(jì)中,單片機(jī)應(yīng)用軟件系統(tǒng)的設(shè)計(jì)包括功能模塊劃分、程序流程確立、模塊接口設(shè)計(jì)以及程序代碼編寫(xiě)。依據(jù)系統(tǒng)的功能要求,將整體軟

23、件系統(tǒng)分割成若干個(gè)獨(dú)立的程序模塊。本設(shè)計(jì)采用c語(yǔ)言編程。c語(yǔ)言簡(jiǎn)潔緊湊、靈活方便,運(yùn)算符豐富,語(yǔ)言限制寬松,程序設(shè)計(jì)自由度大,且程序生成的代碼質(zhì)量高,程序執(zhí)行效率高,一般比匯編語(yǔ)言生成的程序代碼效率低10%-20%。在需要系統(tǒng)硬件進(jìn)行操作的場(chǎng)合,用c語(yǔ)言?xún)?yōu)于其他語(yǔ)言。 4.2 系統(tǒng)功能模塊圖根據(jù)系統(tǒng)功能要求所設(shè)計(jì)的定時(shí)控制器軟件框圖如圖13:圖134.3 程序流程圖圖144.4 源程序代碼 #include#include#define uint unsigned int#define uchar unsigned charuchar code displaywelcome=happy eve

24、ry day;/歡迎界面uchar code digit=0123456789; /數(shù)字代碼uchar mode,amode,alarmmode,minutes,hours,minutea=8,seconds,houra=4;sbit sclk=p22;/ds1302時(shí)鐘輸入sbit io=p23;/ds1302數(shù)據(jù)輸入sbit rst=p24;/ds1302復(fù)位端口sbit set=p34;/ds1302設(shè)置模式選擇位sbit add=p35;/增加sbit red=p36;/減小sbit canl=p37;sbit zs=p11; /指示燈端口void delay1ms(uint i)/1

25、毫秒延時(shí) uint j; for( ;i0;i-) for(j=0;j333;j+) ; void delaynus(uchar n) /延時(shí)若干微秒 uchar i; for(i=0;in;i+);/*ds1302模塊*/ void write1302(uchar date)/向1302寫(xiě)數(shù)據(jù) uchar i;sclk=0;delaynus(2);for(i=0;i=1; void writeset1302(uchar cmd,uchar date) /根據(jù)相應(yīng)的命令輸入相應(yīng)的數(shù)據(jù) rst=0;sclk=0;rst=1;write1302(cmd);delaynus(5);write1302

26、(date);sclk=1;rst=0; uchar read1302(void)/讀取1302數(shù)據(jù) uchar i,date;delaynus(2);for(i=0;i=1;if(io=1)date|=0x80;sclk=1;delaynus(2);sclk=0;delaynus(2);return date; uchar readset1302(uchar cmd)/根據(jù)命令讀取1302相應(yīng)的值uchar date;rst=0;sclk=0;rst=1;write1302(cmd);delaynus(2);date=read1302();sclk=1;rst=0;return date;v

27、oid intds1302(void) /ds1302初始化 uchar flag; flag= readset1302(0x81);if(flag&0x80) /判斷時(shí)鐘芯片是否關(guān)閉 writeset1302(0x8e,0x00); /根據(jù)寫(xiě)狀態(tài)寄存器命令字,寫(xiě)入不保護(hù)指令 writeset1302(0x80,(0/10)4|(0%10); /根據(jù)寫(xiě)秒寄存器命令字,寫(xiě)入秒的初始值writeset1302(0x82,(0/10)4|(0%10); /根據(jù)寫(xiě)分寄存器命令字,寫(xiě)入分的初始值writeset1302(0x84,(0/10)4|(0%10); /根據(jù)寫(xiě)小時(shí)寄存器命令字,寫(xiě)入小時(shí)的初始值

28、writeset1302(0x86,(0/10)4|(0%10); /根據(jù)寫(xiě)日寄存器命令字,寫(xiě)入日的初始值writeset1302(0x88,(0/10)4|(0%10); /根據(jù)寫(xiě)月寄存器命令字,寫(xiě)入月的初始值writeset1302(0x8c,(10/10)4)*10+(value&0x0f);display_second(seconds);value=readset1302(0x83);minutes=(value&0x70)4)*10+(value&0x0f);display_minute(minutes);value=readset1302(0x85);hours=(value&0x

29、70)4)*10+(value&0x0f);display_hour(hours);display_houra(houra);display_minutea(minutea);if(alarmmode!=0)write_address(0x0c);write_date(o);write_date(n);write_date( );if(alarmmode=0)write_address(0x0c);write_date(o);write_date(f);write_date(f);void displaystar(void) /顯示歡迎界面uchar i;write_com(0x0c);wri

30、te_address(0x40);for(i=0;i4)*10+(timevalue&0x0f);while(1)if(add=0)delay1ms(50);if(add=0)hour+;delay1ms(100);while(add=0);if(red=0)delay1ms(50);if(red=0)hour-;delay1ms(100);if(hour=0) hour=23;while(red=0);timevalue=(hour)/10)=24) hour=0;delay1ms(5);if(canl=0) mode=0;write_com(0x0c);break;if(set=0) br

31、eak;writeset1302(0x8e,0x80);void minuteset(void) /調(diào)分uchar timevalue,minute;delay1ms(100);writeset1302(0x8e,0x00);timevalue=readset1302(0x83);minute=(timevalue&0x70)4)*10+(timevalue&0x0f);while(1)if(add=0)delay1ms(10);if(add=0)minute+;if(minute=60) timevalue=0;while(add=0);if(red=0)delay1ms(10);if(re

32、d=0)minute-;delay1ms(100);if(minute=0) minute=59;while(red=0);timevalue=(minute/10)=60) minute=0;delay1ms(5);if(canl=0) mode=0;write_com(0x0c);break;if(set=0) break;writeset1302(0x8e,0x80);void secondset(void) /秒歸零uchar second;delay1ms(100);writeset1302(0x8e,0x00);while(1)if(add=0)delay1ms(10);if(ad

33、d=0)second=0;writeset1302(0x80,0x00);while(add=0);delay1ms(1);display_second(second);write_address(0x48);delay1ms(5);if(canl=0) mode=0;write_com(0x0c);break;if(set=0) break;writeset1302(0x8e,0x80);void alarmhourset(void) /工作時(shí)間上限調(diào)整 delay1ms(100); while(1) if(add=0)delay1ms(20);if(add=0)delay1ms(5);ho

34、ura+;if(houra23) houra=0;while(add=0);if(red=0)delay1ms(20);if(red=0)houra-;if(houra=0) houra=23;while(red=0);display_houra(houra);write_address(0x4b);if(canl=0) delay1ms(100);break; if(set=0) break; writeset1302(0x8e,0x80);void alarmminuteset(void)/工作時(shí)間下限限調(diào)整delay1ms(100); while(1) if(add=0)delay1ms

35、(20);if(add=0)minutea+;if(minutea23) minutea=0;while(add=0) ;if(red=0)delay1ms(20);if(red=0)minutea-;if(minutea=0) minutea=23;while(red=0) ;display_minutea(minutea);write_address(0x4e);if(canl=0)delay1ms(100);break; if(set=0) break; writeset1302(0x8e,0x80);void timeset(void)/時(shí)間調(diào)整函數(shù)display_time();if(

36、set=0)mode+;delay1ms(20);switch(mode)case(1):gbdisplay(0x42);hourset();delay1ms(100); break;case(2):gbdisplay(0x45);minuteset();delay1ms(100); break;case(3):gbdisplay(0x48);secondset();delay1ms(100); break;case(4):gbdisplay(0x4b);alarmhourset();delay1ms(100); break;case(5):gbdisplay(0x4e);alarmminut

37、eset();delay1ms(100); break;if(mode=6) mode=0; /*主函數(shù)*/void main() ie=0x82; /打開(kāi)定時(shí)中斷tmod=0x01;/選擇定時(shí)器0工作在方式1tr0=0;/啟動(dòng)定時(shí)器0intds1302(); /初始化ds1302delay1ms(1);lcd_int();/1602液晶初始化delay1ms(50);displaystar(); /顯示歡迎界面displaymainpart(); /顯示主要部分(不變化)display_time( );while(1) if(hours=houra)&(hours=minutea)zs=0;alarmmode=1;elsezs=1;alarmmode=0;display_time( );timeset( );5 畢業(yè)設(shè)計(jì)總結(jié)通過(guò)這次制作畢業(yè)設(shè)計(jì),我發(fā)現(xiàn)在現(xiàn)實(shí)設(shè)計(jì)中還需要注意很多的細(xì)節(jié),包括程序設(shè)計(jì)和硬件設(shè)計(jì)都要我們小心仔細(xì),一個(gè)地方出錯(cuò)就可能會(huì)整個(gè)系統(tǒng)失效。在硬件設(shè)計(jì)時(shí),由于電路圖轉(zhuǎn)印不好使得腐蝕后的電路板出現(xiàn)斷線,在調(diào)試過(guò)程中引來(lái)很大的麻煩,在寫(xiě)調(diào)整時(shí)間程序時(shí),當(dāng)按選擇鍵擇選要調(diào)整時(shí)還是秒或分時(shí),看不出是要調(diào)整那一位為了方便用戶(hù)看出現(xiàn)在是在調(diào)整那一位,就必須使調(diào)整位閃爍,但顯示的時(shí)候已經(jīng)用動(dòng)態(tài)顯示,如果直接改顯示時(shí)間,就會(huì)使所有的位都閃爍,這樣根本就不能實(shí)現(xiàn),后面經(jīng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論