簡(jiǎn)易萬(wàn)年歷設(shè)計(jì)制作_第1頁(yè)
簡(jiǎn)易萬(wàn)年歷設(shè)計(jì)制作_第2頁(yè)
簡(jiǎn)易萬(wàn)年歷設(shè)計(jì)制作_第3頁(yè)
簡(jiǎn)易萬(wàn)年歷設(shè)計(jì)制作_第4頁(yè)
簡(jiǎn)易萬(wàn)年歷設(shè)計(jì)制作_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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)介

簡(jiǎn)易萬(wàn)年歷

目錄

弓I言.........................P2

方案選擇....P2

硬件選擇...????????■P2

AT89S52………P2

LCD1602……P3

DS18B20P4

程序流程.........................P5

參考文獻(xiàn).........................P6

總結(jié)..............................P7

附件1.實(shí)驗(yàn)程序....................P8

附件2.模塊實(shí)物圖.................P24

—.引言

液晶技術(shù)在在最近單片機(jī)的發(fā)展中顯的越來(lái)越重要,因此,學(xué)習(xí)和熟練應(yīng)用液晶模塊是每個(gè)

學(xué)電子的大學(xué)生應(yīng)該有的本事。本文就以用89C52單片機(jī)來(lái)控制LCD1602液晶來(lái)模擬一個(gè)

簡(jiǎn)單的萬(wàn)年歷實(shí)驗(yàn)。該系統(tǒng)就以實(shí)驗(yàn)室中提供的簡(jiǎn)單材.料,來(lái)學(xué)習(xí)和應(yīng)用液晶模塊的應(yīng)用。

通過(guò)實(shí)踐,基本掌握了液晶的應(yīng)用方法,還在該基礎(chǔ)上,用溫度傳感器DS18B20添加了顯示

當(dāng)前溫度的功能。

關(guān)鍵詞:LCD1602,51單片機(jī),溫度傳感器DS18B20。

二.方案選擇

控制方面:

方案一:采用三星公司的ARM9芯片,該芯片功能強(qiáng)大,可以極大的提高系統(tǒng)的性能和速

度,但是價(jià)格偏貴,對(duì)實(shí)驗(yàn)類(lèi)的項(xiàng)目不合算。

方案二:采用使用Atmel公司的AT89s52單片機(jī),該單片機(jī)具有方便,簡(jiǎn)單控制,成本

低等特點(diǎn),在實(shí)驗(yàn)室中普及行好。

綜合考慮,我們選擇方案二,用89s52來(lái)進(jìn)行對(duì)LCD的控制。

顯示方面:

方案一:采用4個(gè)點(diǎn)陣連接起來(lái),閃動(dòng)顯示,這種方案需要用到4個(gè)寄存器,這樣程序龐

大,硬件復(fù)雜。

方案二:采用數(shù)碼管顯示,該方案程序簡(jiǎn)單,但是不能滿(mǎn)足本設(shè)計(jì)的所有要求。

方案三:采用LCD1602作為顯示器,該方案的特點(diǎn)是操作方便,能夠容易把模塊轉(zhuǎn)移轉(zhuǎn)移

到別的模塊上。且能滿(mǎn)足本實(shí)驗(yàn)的所有功能。

綜上所述,我們選擇方案三。

三.硬件選擇

主要器件選擇如下:

(1)AT89S52

ATMEL的AT89S52是一種高效微控制器,AT89S52有以下主要特點(diǎn):

a)與MCS-51兼容

b)8K字節(jié)可編程閃爍存儲(chǔ)器

c)壽命:1000寫(xiě)/擦循環(huán)

d)32可編程I/O線(xiàn)

AT89s52是普遍使用的控制芯片,能很好的滿(mǎn)足本設(shè)計(jì)的要求。性能優(yōu)越,性?xún)r(jià)比相較于同類(lèi)設(shè)備高。

(2)LCD1602液晶顯示器

LCD1602是一種點(diǎn)陣液晶顯示器,其能顯示32個(gè)字符,指令系統(tǒng)簡(jiǎn)單,能很好滿(mǎn)足設(shè)計(jì)顯示且不必進(jìn)

行日期時(shí)間之間的切換顯示,既減少了硬件的資源,也減少了軟件設(shè)計(jì)的復(fù)雜度。功耗低,體積小,適用于

小場(chǎng)合的儀表顯示,使用壽命長(zhǎng)久。液晶模塊能穩(wěn)定的顯示出字符,用簡(jiǎn)單的51單片機(jī)就能很好的控制,

下面附上液晶模塊的原理圖:

veerGND

LCD1

濟(jì)-

UI、:皿“1:4

-T-S-

IADOJPOOJ

PLl(TJK)(.Wl)PO.lr

、;yL】XK-

PK:皿吟

P13<AD3)P03DBO

“L心司59

Pl4?:.UM)P0.4DSI

士』一】。DBZ

P1J{.U)*)PO*K?LAbelS~

Pl.6(.AD5:iPO.?D53

V^UbeSITDB4

f.3g-鼠

、《Libe4GIT

刀五3e:::14國(guó)

P35C5?H)(AS)K.O

P3:(INTO)(49*1】象

(AlOjPT:

P3.XT1)(All:iP13

LCD16G:

P5.4(T0)(A11)P14

EA\?P(A14)PL6

(A1*)P1-

KQi

XTAL1KNPN

XTAL2

XST

P3*<XD)

GND

Pg

GND

(3)輸入方面,采用外接4X4矩陣鍵盤(pán)。

(4)溫度傳感器米用DS18B20,DS18B20產(chǎn)品的特點(diǎn):

1).只要求一個(gè)端口即可實(shí)現(xiàn)通信。

(2).在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)

二的序列號(hào)。

(3).實(shí)際應(yīng)用中不需要外部任何元器件即可

實(shí)現(xiàn)測(cè)溫。

(4).測(cè)量溫度范圍在一55。C到+125。C之

間。

(5).數(shù)字溫度計(jì)的分辨率用戶(hù)可以從9位到

12位選擇。

(6).內(nèi)部有溫度上、下限告警設(shè)置。

(7)DDS182O在51單片機(jī)上的連接原理圖

如下:

-

U

N

O17SIMB2OZHUIS(IUW

1

T一

yPL0(T2)(.XDOjPOO

rPlLfHZX)《AD】)P01

nPK(皿)PO二

Pl;,皿)P03

f(AZMJP04

PL4

一Pl-5(AD,)P0,

P14(AD6)P06

Pl?(AD-g-

z±P33<D?fl)(.U)P10

fP3地同(A9g]

(A10)Pr:

P3-XT1)(A11)K3

"P3.4(T0)(A12JK.4

I(A13)IC<

五VPP(A14JP16

(A15)P1-

>XTAL1

z±XTAL:vcc

19

KST<TXD)P3.0

(TXD:J>51

dteP3--(XD).U£P(guān)^£

P3£標(biāo)

四.程序流程圖

開(kāi)始溫度傳感器開(kāi)始.

檢測(cè)

四.參考文獻(xiàn)

郭天祥《51單片機(jī)C語(yǔ)言教程》

AT89S52的中文資料?.pdf

LCD1602液晶完整中文資料.pdf

來(lái)源http://www.willar.com/forum_view.asp?view_id=22376

DS18B20溫度傳感器中文資料。Pdf

來(lái)源http://www.dz3w.com/info/commonIC/0087827.html

四.總結(jié)

在這實(shí)驗(yàn)之后,我們對(duì)于LCD1602液晶的使用方法以基本掌握,對(duì)溫度傳感器

DS18B20也進(jìn)行了初步探索,在傳感器方面有了很大的收獲。對(duì)于整個(gè)實(shí)驗(yàn)來(lái)說(shuō),

還存在一些缺點(diǎn),例如萬(wàn)年歷的穩(wěn)定性還不是很好,要想真正投入工業(yè)生產(chǎn),這些

功能還遠(yuǎn)遠(yuǎn)不夠,還科技進(jìn)行改進(jìn),比如加個(gè)蜂鳴器,在用戶(hù)設(shè)定的時(shí)間響起,起

到一個(gè)鬧鐘的作用,還應(yīng)該有農(nóng)歷的顯示等等,在今后的學(xué)習(xí)中,我們還會(huì)繼續(xù)關(guān)

注這一模塊的發(fā)展,讓自己去不斷學(xué)習(xí),去完善。

附錄1:

完整程序:#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]="wendu=n;

ucharcodetable1[]=n0123456789n";

ucharcodetable2n="time:n;

sbitlcden=PlA4;

sbitlcdrs=PlA2;

sbitds=PlA0;

uinttp,tO,s;

uchar

bai,shi,ge,miao,fen,xiaoshi,miaol,miao2,fen1,fen2,xiaoshil,xiaoshi2,temp,num,k,z,xiaoshi3,xiaoshi4,fen

3,fen4,miao3,miao4;

ucharnian,yue,ri,k1,m1,m2,m3,m4,m5,m6,m7,m8,uI,u2,u3,u4,u5,u6,u7,u8;

floatftp;

voidkey_scan();

voidkey_managel();〃鍵盤(pán)功能分配函數(shù)

voidkey_manage2();

voidkey_manage3();

voidkey_manage4();

voidkey_manage5();

voidkey_manage6();

voidkey_manage7();

voidkey_manage8();

voidkey_manage9();

voidkey_managelO();

voidkey_managel1();

voidkey_managel2();

voidkey_managel3();

voidkey_managel4();

voidkey_managel5();

voidkey_managel6();

voiddelay(uintz)

(

uintx,y;

for(x=z;x>0;x-)

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

)

voidwrite_com(ucharcom)

{

lcdrs=0;

P0=com;

delay(5);

lcden=l;

delay⑸;

lcden=0;

voidwrite_data(uchardate)

(

lcdrs=l;

P0=date;

delay(5);

lcden=l;

delay(5);

lcden=0;

)

voidinit()

lcden=0;

write_com(0x38);

write_com(0x0e);

write_com(0x06);

write_com(0x01);

write_com(0x80);

)

voidtemp_init()

{

uinti;

ds=0;

i=103;

while(i>0)i-;

ds=l;

i=4;

while(i>0)i--;

}

bittempreadbit(void)

(

uinti;

bitdat;

ds=0;i++;

ds=l;i++;i++;

dat=ds;

i=8;while(i>0)i—;

return(dat);

)

uchartempread(void)

{

uchari,j,dat;

dat=0;

for(i=l;i<=8;i++)

(

j=tempreadbit();

dat=(j?7l(dat?1));

}

return(dat);

}

voidtempwritebyte(uchardat)

(

uinti;

ucharj;

bittestb;

for(j=l;j<=8;j++)

(

testb=dat&0x01;

dat=dat?l;

if(testb)

ds=O;

i++;i++;

ds=l;

i=8;while(i>0)i—;

)

else

(

ds=O;

i=8;while(i>0)i—;

ds=l;

i++;i++;

voidtempchang(void)

(

temp_init();

delay(l);

tempwritebyte(Oxcc);

tempwritebyte(0x44);

)

uintmyshu()

(

uchara,b;

temp_init();

delay(l);

tempwritebyte(Oxcc);

tempwritebyte(Oxbe);

a=tempread();

b=tempread();

tp=b;

tp?=8;

tp=tpla;

ftp=tp*0.0625;

tp=ftp*10+0.5;

ftp=ftp+0.05;

returntp;

)

voidmain()

kl=O;

k=0;

z=0;

TMOD=Oxll;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

EA=1;

ETO=1;

TH1=(65536-2400)/256;

TLl=(65536-2400)%256;

ET1=1;

init();

write_com(0x80);

for(s=0;s<6;s++)

{

write_data(table[s]);

}

write_com(0x80+10);

write_data(Oxdf);

write_data(0x63);*/

while(l)

(

while(!z)

(

TR1=O;

TR0=0;

key_scan();

switch(k)

(

case1:

ul=num;

break;

case2:

u2=num;

break;

case3:

u3=num;

break;

case4:

u4=num;

break;

case5:

u5=num;

break;

case6:

u6=num;

break;

case7:

u7=num;

break;

case8:

u8=num;

break;

case9:

xiaoshi3=num;

break;

case10:

xiaoshi4=num;

break;

case11:

fen3=num;

break;

case12:

fen4=num;

break;

case13:

miao3=num;

break;

case14:

miao4=num;

break;

}

write_com(0x80);

write_data(table1[ul]);

write_data(tablel[u2]);

write_data(tablel[u3]);

write_data(tablel[u4]);

write_data(0x20);

write_data(tablel[u5]);

write_data(table1[u6]);

write_data(0x20);

write_data(tablel[u7]);

write_data(table1[u8]);

nian=u1*1000+u2*100+u3*10+u4;

yue=u5*10+u6;

ri=u7*10+u8;

xiaoshi=xiaoshi3*10+xiaoshi4;

fen=fen3*10+fen4;

miao=miao3*10+miao4;

write_com(0x80+69);

write_data(tablel[xiaoshi3]);

write_data(tablel[xiaoshi4]);

write_data(table2[5]);

write_data(tablel[fen3]);

write_data(tablel[fen4]);

write_data(table2[5]);

write_data(table1[miao3]);

write_data(table1[miao4]);

)

tO=O;

TRO=1;

TR1=1;

tempchang();

myshu();

bai=tp/100;

shi=tp/10%10;

ge=tp%10;

if(kl==O)

{

write_com(0x80);

for(s=0;s<6;s++)

(

write_data(table[s]);

)

write_com(0x80+10);

write_data(Oxdf);

write_data(0x63);

write_com(0x80+6);

write_data(tablel[bai]);

write_data(tablel[shi]);

write_data(0x2e);

write_data(table1[ge]);}//chewenbufen

else

{;

ml=nian/1000;

m2=nian/l00%10;

m3=nian/10%10;

m4=nian%10;

m5=yue/10;

m6=yue%10;

m7=ri/10;

m8=ri%10;

write_com(0x80);

write_data(Oxff);

write_data(table

write_data(table1[m2]);

write_data(table1[m3]);

write_data(table1[m4]);

write_data(Oxff);

write_data(table1[m5]);

write_data(table1[m6]);

write_data(Oxff);

write_data(table1[m7]);

write_data(table1[m8]);

write_data(Oxff);

}

write_com(0x80+0x40);

for(s=0;s<5;s++)

{

write_data(table2[s]);

)

key_scan();

if(t0==20)

(

tO=O;

miao++;

)

if(miao>=600)

(

fen++;

miao-=miao;

)

if(fen>=60)

(

fen-=60;

xiaoshi++;

)

if(xiaoshi==24)

{

xiaoshi=0;

ri++;

switch(yue)

(

case1:

if(ri==31)

{yue++;

ri=O;};

break;

case2:

if((nian%100)&(!(nian%4)))

(

if(ri==29)

{yue++;ri=O;}

)

else

(

if(ri==28)

{yue++;ri=O;}

)

break;

case4:

if(ri==30)

(

yue++;

ri=O;

}

break;

case6:

if(ri==30)

{

yue++;

ri=O;

)

break;

case9:

if(ri==30)

(

yue++;

ri=O;

}

break;

case11:

if(ri==30)

(

yue++;

ri=O;

)

break;

if(ri>=31)

ri=O;

yue++;

)

if(yue==13)

{

yue=O;

nian++;

)

write_com(0x80+69);

xiaoshi1=xiaoshi/l0;

xiaoshi2=xiaoshi%10;

fenl=fen/10;

fen2=fen%10;

miaol=miao/100;

miao2=miao/l0%10;

write_data(tablel[xiaoshi1]);

write_data(tablel[xiaoshi2]);

write_data(table2[4]);

write_data(table1[fen1]);

write_data(table1[fen2]);

write_data(table2[4]);

write_data(tablel[miaol]);

write_data(tablel[miao2]);

voidkey_scan()

〃**********掃描第一《行

P2=0xfe;

t0=0;

temp=P2;

temp=temp&0xf0;

if(temp!=0xf0)

delay(lO);

if(temp!=OxfO)

temp=P2;

switch(temp)

caseOxee:

key_managel();

break;

caseOxde:

key_manage2();

break;

caseOxbe:

key_manage3();

break;

case0x7e:

key_manage4();

break;

)

while(temp!=OxfO)

(

temp=P2;

temp=temp&OxfO;

〃**********掃描第二行*********

P2=0xfd;

temp=P2;

temp=temp&OxfO;

if(temp!=OxfO)

(

//TR0=0;

delay(10);

if(temp!=OxfO)

(

temp=P2;

switch(temp)

(

caseOxed:

key_manage5();

break;

caseOxdd:

key_manage6();

break;

caseOxbd:

key_manage7();

break;

case0x7d:

key_manage8();

break;

while(temp!=OxfO)

temp=P2;

temp=temp&OxfO;

〃**********掃描第三行

P2=0xfb;

temp=P2;

temp=temp&OxfO;

if(temp!=OxfO)

(

//TRO=O;

delay(lO);

if(temp!=OxfO)

(

temp=P2;

switch(temp)

(

caseOxeb:

key_manage9();

break;

caseOxd

溫馨提示

  • 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)論