時間溫度萬年歷電子系統(tǒng)實訓(xùn)報告_第1頁
時間溫度萬年歷電子系統(tǒng)實訓(xùn)報告_第2頁
時間溫度萬年歷電子系統(tǒng)實訓(xùn)報告_第3頁
時間溫度萬年歷電子系統(tǒng)實訓(xùn)報告_第4頁
時間溫度萬年歷電子系統(tǒng)實訓(xùn)報告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

物理與機(jī)電工程學(xué)院課程設(shè)計報告

課程名稱:電子系統(tǒng)實訓(xùn)報告

專業(yè)班級:2012級電子信息工程(信班

學(xué)號:____________________________

學(xué)生姓名:____________________________

指導(dǎo)教師:____________________________

完成時間:2015.3.17—2015616

報告成績:____________________________

評閱意見:

評閱教師日期

時間溫度萬年歷

一、設(shè)計任務(wù)與要求

1.具有年、月、日、星期、時、分、秒等功能。

2.具有溫度計的功能。

3.具有年、月、日、星期、是、分、秒等校準(zhǔn)功能。

4.具有復(fù)位功能。

二、方案設(shè)計與論證

2.1顯示模塊選擇方案與論證:

方案一:

采用LED數(shù)碼管動態(tài)掃描,對于數(shù)字顯示比較合適而且價格也比較合

適。采用動態(tài)掃描法與單片機(jī)連接,占用單片機(jī)線口少。但是顯示容量有所不足,

不太適合采用。

方案二:

采用LED液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,

雖然價格比較昂貴,但是比較適合作為本次試驗的顯示模塊。

方案三:

采用點陣式數(shù)碼管顯示。點陣式數(shù)碼管是由八行八列的發(fā)光二極管組

成,對于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費,且難度也相對較高,

所以不用此種作為顯示。

經(jīng)過綜合比較最終選擇方案二,即選擇LED液晶顯示屏作為顯示模塊。

2.2溫度采集方案論證:

方案一:

利用傳統(tǒng)的溫度采集電路,該電路需要經(jīng)過溫度采集、信號放大、濾波、

A\D轉(zhuǎn)換等一系列工作才能得到溫度的數(shù)字量。因此電路的結(jié)構(gòu)非常復(fù)雜,并且

這種方式不僅是電路復(fù)雜、元器件個數(shù)多,而且溫度采集的線性度和準(zhǔn)確度都不

理想,抗干擾能力弱,不太適合采用。

方案二:

利用數(shù)字溫度傳感器DS18B20,該溫度傳感器功率消耗低、準(zhǔn)確度高,

而且比傳統(tǒng)的溫度傳感器有著更好的線性表現(xiàn),并且電路簡單是單總線控制,使

得系統(tǒng)的調(diào)制和維護(hù)比較簡單,而且抗干擾能力較傳統(tǒng)也比較理想。

經(jīng)過綜合比較最終選擇方案二,即選擇溫度傳感器DS18B20作為溫度采集。

2.3單片機(jī)芯片的選擇方案與論證:

方案一:

采用89C51芯片作為硬件核心,89C51是一種帶4K字節(jié)閃爍可編程

可擦除只讀存儲器,采用FlashROM,內(nèi)部具有4KBROM存儲空間,能于3V的

超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,與工業(yè)標(biāo)準(zhǔn)的MCS-51指

令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯

片中,89C51是一種高效微控制器,單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種

靈活性高且價廉的方案。

方案二:

采用STC12C5A60S2單片機(jī),STC12C5A60S2單片機(jī)是宏晶科技生產(chǎn)的

單時鐘/機(jī)器周期(1T)的單片一機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單

片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專

用復(fù)位電路,2路PW,8路高速10位A/D轉(zhuǎn)換,針對電機(jī)控制,強(qiáng)干擾場。

STC12C5A60S2單片機(jī)內(nèi)部有60KB的程序Flash存儲器,1KB的數(shù)據(jù)Flash

存儲器,具有在線編程可擦除技術(shù),當(dāng)在對電路進(jìn)行調(diào)試時,由于程序的錯誤

修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,不需要對芯片多次拔插,所以不會

對芯片造成損壞,但是總體比較昂貴不太適合學(xué)生使用。

經(jīng)過綜合比較最終選擇方案一,即選擇89C51作為主控制器。

2.4時鐘芯片的選擇方案和論證:

方案一:

采用單片機(jī)定時。單片機(jī)集成度高、功能強(qiáng)、可靠性高、體積小、功耗

低、使用方便、價格低廉等一系列優(yōu)點,單片機(jī)的應(yīng)用領(lǐng)域已從面向工業(yè)控制、

通訊、交通、智能儀表等迅速發(fā)展到家用消費產(chǎn)品、辦公自動化、汽車電子、

PC機(jī)外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。直接采用單片機(jī)定時計數(shù)器提供秒信號,

計數(shù)的脈沖由外部提供,定時的脈沖由外部晶振提供,定時加1的周期為一個

機(jī)器周期;定時時間與初值和晶振頻率有關(guān)。使用程序?qū)崿F(xiàn)年、月、日、星期、

時、分、秒計數(shù)。采用此種方案減少芯片的使用,節(jié)約成本,但程序復(fù)雜度較

r?i。

方案二:

采用DS1302時鐘芯片。DS1302是美國DALLAS公司推出的一種高性

能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、星期、時、分、

秒進(jìn)行計時,具有閏年補(bǔ)償功能,工作電壓為2.5V?5.5V。采用雙電源供電

(主電源和備用電源),可設(shè)置備用電源充電方式,提供了對后背電源進(jìn)行涓

細(xì)電流充電的能力。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)

點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄,因此廣泛應(yīng)用于測量

系統(tǒng)中。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個

字節(jié)的時鐘信號或RAM數(shù)據(jù)。

經(jīng)過綜合比較最終選擇方案二,即采用DS1302時鐘芯片。

2.5電路設(shè)計最終方案確定:

最終選擇LED液晶顯示屏作為顯示模塊,選擇溫度傳感器DS18B20作

為溫度采集,選擇89C51作為主控制器,采用DS1302時鐘芯片設(shè)計最簡單的

最適合學(xué)生的比較廉價的溫度時間萬年歷。

三、系統(tǒng)硬件電路設(shè)計

3.1元器件清單如下圖所示:

32.768晶振1

11.0592晶振1

4腳開關(guān)4

10uF電容1

100uF電容1

30pF電容2

1k電阻2

10k電阻1

10k排阻1

10k藍(lán)白電位器1

A89c51單片機(jī)1

DS13021

DS18B201

8腳插座1

40腳插座1

16孔排插1

LCD1602液晶顯示器1

3.2總體電路結(jié)構(gòu)圖如下:

主控模塊采用性價比較高的89c51單片機(jī)芯片,在其內(nèi)部燒寫好程序,可

通過程序的運行控制測溫模塊進(jìn)行測溫;測溫模塊主要是由DS18B20構(gòu)成,將

其與所測對象進(jìn)行接觸即可獲取被測對象的溫度數(shù)據(jù),而所測得的溫度和時鐘

芯片測得的實時日歷將通過顯示模塊的液晶顯示器以數(shù)字形式顯示;單片機(jī)調(diào)

用程序,讀取DS1302內(nèi)寄存器,可以得到萬年歷的時間數(shù)據(jù),經(jīng)過程序處理就

可以輸出在LCD上;鍵盤電路可對實時日歷進(jìn)行調(diào)整。

3.3各單元模塊功能分析及模塊電路設(shè)計

3.3.1復(fù)位電路

3.3.2晶振電路

C1

-4

-L

口料2p

1叩o

Ip

!瑜n

-CRpo.,up

但PD02p

XPo1H軀□

HL2Ip

Po鍬h

ONIp

PDSMDsp

做h6I]

9PQvIP

RMNK,

3.3.3控制電路

PN7欣伯

1

.r1口

I.P1ITT2P3IVRXD

n11

P1.1H2EXP3.1HXD~~iF

/F12pa^irro

sP13

b1*

P3.4/TD5

TP1SP3ST1

S

P1J6P3J&WR

PI?PZ3.7何□L

A

EIfT&tP-

ARED

todNI

3.3.4顯不模塊

四、仿真過程與仿真結(jié)果

4.1仿真操作過程:

(1)新建工程。打開Keil,單擊Project菜單,在彈出的下拉菜單

選擇NewProjecto

(2)選擇要保存的路徑,輸入工程文件名字“時間溫度萬年歷”,保

存。

(3)新建一個工程后彈出一個對話框,根據(jù)需要選擇使用單片機(jī)型號,

單擊確定。

(4)單擊“File”,選擇“New”,新建文件并在其中輸入程序代碼,然

后保存為C語言文件。

(5)回到編輯界面后,單擊“Target1”前面的“+”號,然后在“Source

Group1”單擊右鍵選擇"AddFileToGroup'SourceGroup1'”,選中上一步

保存的“時間溫度萬年歷.C”文件。

(6)單擊“Project”菜單,選中“BuiltTarget",完成程序的編譯,

在工程文件夾中找到“時間溫度萬年歷.hex”文件即可。

(7)打開Proteus軟件,新建一個文件將硬件原理圖繪入圖中。

(8)將KEIL生成的HEX文件下載入單片機(jī)中,點擊“開始”進(jìn)行仿真。

4.2仿真結(jié)果:

五、電路原理圖的繪制、PCB的制作、電路的焊接、實物的展示

5.1電路原理圖的繪制

利用AltiumDesigner軟件電路原理圖繪制時遇到了很多困難,其中遇

到最大的困難時有些元器件無法找到封裝,導(dǎo)致原理圖轉(zhuǎn)為PCB時無法成功。

后來經(jīng)過向同學(xué)請教以及百度得到了解決。自己也學(xué)會了制作封裝。這也是

一個很大的收獲。

成圖如圖所示:

5.2PCB制作

制作PCB時發(fā)現(xiàn)滑動變阻器的封裝是貼片的封裝,如下圖所示:

經(jīng)過自己重新繪制滑動變阻器的封裝后修改PCB如下:

5.3電路的焊接

電路焊接過程中出現(xiàn)了一些問題(檢測時發(fā)現(xiàn)電路連接不正常,

經(jīng)過修改后已經(jīng)沒有得到改善)導(dǎo)致了第一次焊接電路板的失敗。

第二次制作的電路板焊接時也出現(xiàn)虛焊,后來經(jīng)過調(diào)試終于可

以正常顯示了,焊接電路板如下圖所示:

5.4實物的展示

經(jīng)過最終測試得到實物展示的結(jié)果如下圖顯示:

設(shè)置鍵按下:

n4

0'■''

o?1

Mon08:30三

09/12/10.

增加鍵按下:

.

33

C三

09/12/IS

-r

減小鍵按下:

復(fù)位鍵按下:

六、實驗總結(jié)

本次實訓(xùn)完成的結(jié)果比較理想,最終成品也達(dá)到預(yù)期想要的結(jié)果,只是本次

實訓(xùn)最讓我遺憾的地方。縱觀本次實訓(xùn)的所有流程以及最后的結(jié)果,發(fā)現(xiàn)自己存

在太多的不足。平時上課沒有注意積累相應(yīng)的知識,導(dǎo)致做實驗時基本就是處在

很茫然的一個狀態(tài),無從下手;幸虧的到同學(xué)的幫助才得以使實訓(xùn)可以繼續(xù)下去。

但是過程依舊充滿著波折。對元器件的選擇和使用方面出現(xiàn)了很大的難題,由于

對元器件缺乏最基本的認(rèn)識,所以在設(shè)計電路是用錯了很多元件,直接導(dǎo)致進(jìn)行

仿真時達(dá)不到所要求的結(jié)果,后來借鑒了同學(xué)的元器件的使用以后,選擇出了正

確的元器件,是的仿真的個方面的指標(biāo)勉強(qiáng)達(dá)到要求。但是在由于對Altium

Designer軟件的的使用方法不夠了解,在電路圖轉(zhuǎn)為PCB的過程中出現(xiàn)了一點

小問題,后來看過同學(xué)的操作以后才會這一方法。PCB布線也是一大難點,雖

然有自動布線,但是自動布線后還是有許多方面是不符合要求的,有些線路不可

避免的重復(fù)在一起,倒置布線的失?。蝗绱朔磸?fù)多次以后才得以解決這一問題。

在硬件電路焊接和軟件程序設(shè)計分別完成的基礎(chǔ)之上,進(jìn)行軟硬件的結(jié)合與

調(diào)試。通過下載將在電腦上已完成的程序下載到單片機(jī)芯片中。在調(diào)試中發(fā)現(xiàn)

軟件中存在的問題,及時解決問題,確保系統(tǒng)能正常工作并達(dá)到設(shè)計要求。通過

反復(fù)的調(diào)試與實驗,可以證明該系統(tǒng)能夠較好地完成設(shè)計所需的基本要求。即能

夠正確的顯示萬年歷。在完成軟件系統(tǒng)時,剛開始我是用的是11.0592M的晶振,

所有器件正常,后來我換了12M的晶振,結(jié)果溫度就不正常了,經(jīng)過認(rèn)真排查

才發(fā)現(xiàn)是由于DS18B20在數(shù)據(jù)讀取時,對時間要求很精確,由于晶振的不同造

成了讀數(shù)據(jù)的錯誤,經(jīng)過這次調(diào)試,讓我更清晰的認(rèn)識到了時序?qū)υ骷闹?/p>

要性。經(jīng)過萬年歷的設(shè)計,讓我學(xué)到了很多,讓我認(rèn)識到了學(xué)習(xí)基礎(chǔ)知識的重

要性,當(dāng)設(shè)計完整的系統(tǒng)時,要考慮到硬件和軟件兩者的結(jié)合,有時硬件的不

足,我們可以用軟件程序來彌補(bǔ),從而節(jié)約硬件成本,在設(shè)計軟件程序時要模

塊化,可以提高程序的可讀性。

七、參考文獻(xiàn)

[1]李群芳,肖看.單片機(jī)原理、接口及應(yīng)用.北京:清華大學(xué)出版社,2007

[2]譚浩強(qiáng).C語言程序設(shè)計.北京:清華大學(xué)出版社,2006

[3]張義和,王敏男,許宏昌等.例說51單片機(jī).北京:人民郵電出版社,2008

[4]劉坤,宋戈,趙紅波等.51單片機(jī)C語言應(yīng)用技術(shù)開發(fā)技術(shù)大全.北京:人民

郵電出版社,2008

[5]白延敏.51單片機(jī)典型系統(tǒng)開發(fā)實例精講.北京:電子工業(yè)出版社,2009

[6]周麗娜.Protel99SE電路設(shè)計技術(shù).北京:中國鐵道出版社,2009

[7]王為青,程國鋼.單片機(jī)KeilCX應(yīng)用開發(fā)技術(shù).北京:人民郵電出版

社,200751

[8]江志紅.51單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選.北京:清華大學(xué)出版

社,2009

八、程序

#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitlcden=P2A7;//定義下面通過Icden來操作P2A7口,1602液晶使能控制

sbitlcdwr=P2A5;//定義下面通過Icdrw來操作P2A5口,1602讀寫選擇端

sbitlcdrs=P2A6;〃定義選數(shù)據(jù)寄存器選指令寄存器控制端

sbitsck=P3A6;//定義時鐘總線

sbitsda=P3A4;//定義DS1302數(shù)據(jù)總線

sbitrst=P3A5;//DS1320復(fù)位

sbitsl=P3AO;〃定義設(shè)置按鈕

sbits2=P3A1;//定義調(diào)時按鈕

sbits3=P3A2;//定義確定按鈕

sbitDQ=P3A7;//定義DS18B2O通信端口

sbitACC0=ACCA0;

sbitACC7=ACCA7;

charfen,shi,miao,ri,yue,nian,zhou,s1num,s2num,flag1,flag2;

ucharcodetable[]={M20--”};//要寫入1602液晶的數(shù)據(jù)

ucharcodetable1[]={""};//字庫中的字可直接以外加""號

的形式直接寫入

ucharcode

Weeks[][3]={{"SUN"},{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SA

T"},{"SUN"}};

uchari,j;

voiddelayO(uintz)

(

while(z-);

)

voiddelay(uintz)

(

uintx,y;

fbr(x=z;x>0;x—)

for(y=l10;y>0;y");

)

voidwrite_com(ucharcom)

(

lcdwr=0;//Icdwr為讀寫控制端,lcdwr=0,這里可不寫

lcdrs=0;〃液晶rs接口為0時,寫指令,rs為1時寫數(shù)據(jù)

P0=com;〃將要寫的指令賦給P0口,

delay(5);〃由1602讀寫操作時序圖,先將指令賦給P0口,延時后

將使能

lcden=1;//端Icden置高,再延時一段時間,然后將Icden置低,

這樣指令

delay(5);//就寫入到LCD了

lcden=0;

voidwrite_data(uchardate)

lcdrs=l;〃與寫指令類似,這里Icdrs設(shè)為1

PO=date;

delay(5);

lcden=l;

delay(5);

lcden=O;

)

voidinit_1602()

(

lcdwr=0;

lcden=0;

write_com(0x38);〃設(shè)置LCD為16*2顯示、5*7點陣、8位數(shù)據(jù)接口

模式

write_com(0x0c);〃開顯示、不顯示光標(biāo)

write_com(0x06);〃寫一個字符后,地址指針加1

write_com(0x01);〃顯示清0

P0=0xff;

)

//DS18B20初始化函數(shù)

voidInit_DS18B20(void)

(

unsignedcharx=0;

DQ=1;//DQ復(fù)位

delay0(8);〃稍做延時

DQ=0;//單片機(jī)將DQ拉低

delay0(80);〃精確延時大于480us

DQ=1;//拉高總線

delay0(14);

x=DQ;〃稍做延時后如果x=0則初始化成功x=l則初始化失敗

delay0(20);

)

//DS18B20讀一個字節(jié)

ucharReadOneChar(void)

(

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i-){

DQ=0;//給脈沖信號

dat?=l;

DQ=1;〃給脈沖信號

if(DQ)dat|=0x80;

delay0(4);

)

return(dat);

)

//DS18B20寫一個字節(jié)

voidWriteOneChar(unsignedchardat)

(

unsignedchari=0;

for(i=8;i>0;i-){

DQ=0;

DQ=dat&OxOl;

delay0(5);

DQ=1;

dat?=l;

//DS18B20讀取溫度

uintReadTemperature(void)

(

unsignedchara=0;

unsignedcharb=0;

unsignedinttemp=0;

floattt=O;

Init_DS18B20();

WriteOneChar(OxCC);//跳過讀序號列號的操作

WriteOneChar(Ox44);//啟動溫度轉(zhuǎn)換

Init_DS18B20();

WriteOneChar(OxCC);//跳過讀序號列號的操作

WriteOneChar(OxBE);//讀取溫度寄存器等前兩個就是溫度

a=ReadOneChar();

b=ReadOneChar();

temp=b;

temp?=8;

temp=temp|a;

if(temp>Oxfff)

(

temp=(?temp)+l;

flag2=l;

write_com(0x80+0x40+10);

write_data(1-1);

)

else

flag2=0;

write_com(0x80+0x40+10);

write_data(,+,);

)

tt=temp*0.0625;//將溫度的高位與低位合并

temp=tt*10+0.5;//對結(jié)果進(jìn)行4舍5入

return(temp);

)

voidgudingtime_1602()

(

ucharnum;

write_com(0x80);〃將指針指向初始位置

for(num=0;num<16;num++)//循環(huán)函數(shù),用于將"2012--

"寫入液晶

write_data(table[num]);

write_com(0x80+0x40);〃將指針指向1602液晶的第二行

for(num=0;num<16;num++)〃功能與上同,用于將"::

"寫入

write_data(table1[num]);

)

voidwrite_sfm(ucharadd,uchartime)//用于在1602上顯示年、月、日、時、

分、秒。Add為顯示位置,time為要顯示的內(nèi)容

(

ucharshiwei,gewei;

shiwei=time/16;〃將從DS1302中讀取的BCD碼數(shù)

據(jù)轉(zhuǎn)化成十六進(jìn)制十位

gewei=time%16;//十六進(jìn)制個位

write_com(add+0x80);〃定義顯示在液晶的什么位置

write_data(0x30+shiwei);〃由1602液晶字庫可知,0~9的數(shù)據(jù)碼

分別對應(yīng)0x30~0x39

write_data(0x30+gewei);〃初使化中設(shè)定了寫一個字符后,地

址指針加1,因此這里

}//不用重新光標(biāo)寫位

voidwrite_temp(ucharadd,uinttemp)〃用于在1602上顯示年、月、日、時、

分、秒。Add為顯示位置,time為要顯示的內(nèi)容

(

ucharshi,ge,xshu;

shi=temp/100;//將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成

10進(jìn)制個位和10

ge=temp%100/10;〃進(jìn)制十位

xshu=temp%10;

write_com(add+0x80);//定義顯示在液晶的什么位置

write_data(0x30+shi);〃由1602液晶字庫可知,0~9的數(shù)據(jù)碼分別

對應(yīng)0x30-0x39

write_data(0x30+ge);〃初使化中設(shè)定了寫一個字符后,地址指針加1,

因此這里

write_com(0x80+0x40+14);

write_data(0x30+xshu);//不用重新光標(biāo)寫位

)

voidwrite_zhou(uchartimel)//用于在1602上顯示周信息,與顯示

(〃時間日期子函數(shù)類似

uchargewei;

gewei=timel%16;〃一周七天,因此只需個位

write_com(0x80+14);

write_data(0x30+gewei);

)

voidInput_lbyte(ucharTD)〃寫一字節(jié)數(shù)據(jù)

uchari;

ACC=TD;

for(i=8;i>0;i-)

sda=ACCO;

sck=1;

sck=O;

ACC=ACC?1;

)

)

ucharOutput_lbyte(void)〃讀一字節(jié)數(shù)據(jù)

(

uchari;

for(i=8;i>0;i-)

(

ACC=ACC?1;

ACC7=sda;

sck=1;

sck=0;

)

sda=0;

return(ACC);

)

voidwrite_1302(ucharDS_ADD,ucharDS_DAT)〃寫操作

(

rst=O;

sck=0;

rst=l;

Input_lbyte(DS_ADD);

Input_lbyte(DS_DAT);

sck=1;

rst=O;

ucharread_1302(ucharDS_ADD)〃讀操作

ucharDS_INF;

rst=O;

sck=O;

rst=1;

Input_1byte(DS_ADD);

DS_INF=Output_1byte();

sck=1;

rst=O;

retum(DS_INF);

)

voidinital_1302()

(

write」302(0x8e,0x00);//禁止寫保護(hù)

write」302(0x90,Oxaa);〃定義充電

write」302(0x80,0x53);//秒

write」302(0x82,0x56);//分

write_l302(0x84,0x09);〃時

write_l302(0x8c,0x15);〃年

write」302(0x88,0x05);〃月

write_l302(0x86,Ox15);//日

write_1302(0x8a,0x03);〃星期

write」302(0x8e,0x80);//開保護(hù)

)

voidkeyscan()

(

if(sl==O)//按鍵1按下且s4在此之前未曾按過

delay(5);

if(sl==O)

flag1=1;

slnum++;

while(!sl);

if(slnum==l)

(

write_com(0x80+4);〃光標(biāo)移動至I」**位置

write_com(OxOf);〃顯示光標(biāo)

)

if(slnum==2)

(

write_com(0x80+7);

)

if(slnum==3)

{

write_com(0x80+10);

)

if(slnum==4)

(

write_com(0x80+14);

)

if(slnum==5)

(

write_com(0x80+0x40+2);

}

if(slnum==6)

write_com(0x80+0x40+5);

if(slnum==7)

write_com(0x80+0x40+8);

if(slnum==8)

flag1=0;

slnum=0;

write_com(0x0c);〃不顯示光標(biāo)

write_l302(0x8e,0x00);

write_l302(0x80,miao);

write_l302(0x84,shi);

write_l302(0x82,fen);

write_l302(0x8a,zhou);

write_l302(0x8c,nian);

write_l302(0x88,yue);

write_l302(0x86,ri);

write_l302(0x8e,0x80);

gudingtime_1602();

if(slnum!=0)〃按鍵1按下*次且s4再次之前未曾按過

if(s2==0)

(

delay(5);

if(s2==0)

while(!s2);

if(slnum==l)

intxl,x2;

xIonian%16;

x2=nian/16;

xl++;

if(x2==9&&xl>9)

(

xl=l;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

nian=xl+x2*16;

write_sfm(3,nian);

write_com(0x80+4);

)

if(slnum==2)

{

intxl,x2;

xl=yue%16;

x2=yue/16;

xl++;

if(x2>=1&&x1>=3)

xl=l;

x2=0;

if(xl==10)

(

xl=O;

x2++;

)

yue=xl+x2*16;

write_sfm(6,yue);

write_com(0x80+7);

)

if(slnum==3)

(

intxl,x2;

xl=ri%16;

x2=ri/16;

xl++;

if(x2>=3&&x1>=1)

(

xl=l;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

ri=xl+x2*16;

write_sfm(9,ri);

write_com(0x80+10);

if(slnum==4)

zhou++;

if(zhou==8)

zhou=l;

write_zhou(zhou);

write_com(0x80+14);

)

if(slnum==5)

{

intxl,x2;

xl=shi%16;

x2=shi/16;

xl++;

if(x2>=2&&xl>=4)

(

xl=O;

x2=0;

)

if(xl==10)

(

xl=O;

x2++;

)

shi=xl+x2*16;

write_sfm(l+0x40,shi);

write__com(0x80+0x40+2);

if(slnum==6)

intxl,x2;

xl=fen%16;

x2=fen/16;

xl++;

if(xl==10)

(

xl=O;

x2++;

if(x2==6)

(

x2=0;

)

)

fen=xl+x2*16;

write_sfm(4+0x40,fen);

write_com(0x80+0x40+5);

)

if(slnum==7)

(

intx5,x6;

x5=miao%16;

x6=miao/16;

x5++;

if(x5==10)

(

x5=0;

x6++;

if(x6==6)

x6=0;

)

}

miao=x5+x6*16;

write_sfm(7+0x40,miao);〃將修改的數(shù)送到1602

顯示

write_com(0x80+0x40+8);〃挪回光標(biāo)

I

}

)

if(s3==0)

(

delay(5);

if(s3==0)

(

while(!s3);

if(slnum==l)

(

intxl,x2;

xl=nian%16;

x2=nian/16;

xl-;

if(x2<=0&&x1==-1)

(

xl=9;

x2=9;

if(xl==-l)

xl=O;

x2-;

)

nian=xl+x2*16;

write_sfm(3,nian);

write__com(0x80+4);

)

if(slnum==2)

{

intxl,x2;

xl=yue%16;

x2=yue/16;

xl-;

if(x2<=0&&xl<=0)

(

xl=2;

x2=l;

)

if(xl==O)

(

xl=9;

x2-;

)

yue=xl+x2*16;

溫馨提示

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

評論

0/150

提交評論