單片機(jī)時(shí)鐘芯片ds1302在lcd1602上顯示年月日時(shí)分秒圖文_第1頁
單片機(jī)時(shí)鐘芯片ds1302在lcd1602上顯示年月日時(shí)分秒圖文_第2頁
單片機(jī)時(shí)鐘芯片ds1302在lcd1602上顯示年月日時(shí)分秒圖文_第3頁
單片機(jī)時(shí)鐘芯片ds1302在lcd1602上顯示年月日時(shí)分秒圖文_第4頁
單片機(jī)時(shí)鐘芯片ds1302在lcd1602上顯示年月日時(shí)分秒圖文_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)設(shè)計(jì)實(shí)驗(yàn) 內(nèi)容摘要:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)是通過proteus仿真并且與keil相結(jié)合使用控制單片機(jī)使其在仿真中完成一系列所設(shè)計(jì)的程序。我們這個(gè)小組所做的實(shí)驗(yàn)是仿真一個(gè)數(shù)字時(shí)鐘,通過ds1302這個(gè)芯片從計(jì)算機(jī)上讀取時(shí)間信息,再由51單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理、分配,將其輸出在lcd1602上,實(shí)現(xiàn)簡(jiǎn)單的數(shù)字時(shí)鐘的功能。設(shè)計(jì)內(nèi)容及要求:(1)根據(jù)設(shè)計(jì)課題的技術(shù)指標(biāo)和給定條件,在教師指導(dǎo)下,能夠獨(dú)立而正確地進(jìn)行方案論證和設(shè)計(jì)計(jì)算,要求概念清楚、方案合理、方法正確、步驟完整;(2)要求學(xué)生掌握單片機(jī)的設(shè)計(jì)內(nèi)容、方法和步驟;(3)要求會(huì)查閱有關(guān)參考資料和手冊(cè)等;(4)要求學(xué)會(huì)選擇有關(guān)元件和參數(shù);(5)要求學(xué)會(huì)繪

2、制有關(guān)電路圖和設(shè)計(jì)流程圖;(6)要求學(xué)會(huì)編寫設(shè)計(jì)說明書。系統(tǒng)框圖:硬件選擇:1、 at89c51at89c51是一種帶4k字節(jié)flash存儲(chǔ)器(fperomflash programmable and erasable read only memory)的低電壓、高性能cmos 8位微處理器,俗稱單片機(jī)。at89c2051是一種帶2k字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用atmel高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel的at89c5

3、1是一種高效微控制器,at89c2051是它的一種精簡(jiǎn)版本。at89c51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 at89c51外形及引腳排列主要特性:與mcs-51 兼容 4k字節(jié)可編程flash存儲(chǔ)器 壽命:1000寫/擦循環(huán) 數(shù)據(jù)保留時(shí)間:10年 全靜態(tài)工作:0hz-24mhz 三級(jí)程序存儲(chǔ)器鎖定 1288位內(nèi)部ram 32可編程i/o線 兩個(gè)16位定時(shí)器/計(jì)數(shù)器 5個(gè)中斷源 可編程串行通道 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時(shí)鐘電路 特性概述:at89c51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié)flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部ram,32 個(gè)i/o 口線,兩個(gè)16位

4、定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),at89c51可降至0hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止cpu的工作,但允許ram,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存ram中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。 管腳說明: vcc:供電電壓。 gnd:接地。 p0口:p0口為一個(gè)8位漏級(jí)開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p0口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在fiash編程時(shí),p0 口作為

5、原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須接上拉電阻。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為低八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或

6、16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一些特殊功能口,如下所示: 口管腳 備選功能 p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.

7、2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(記時(shí)器0外部輸入) p3.5 t1(記時(shí)器1外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通) p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的低位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的

8、。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此

9、間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。振蕩器特性: xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。2、ds1302 ds1302 是美國dallas公司推出的一種高性能、低功耗、帶ram的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)

10、、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或ram數(shù)據(jù)。ds1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級(jí)產(chǎn)品,與ds1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。 2.1引腳功能及結(jié)構(gòu)ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc1+0.2v時(shí),vcc2給ds1302

11、供電。當(dāng)vcc2小于vcc1時(shí),ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)ds1302進(jìn)行操作。如果在傳送過程中rst置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc2.0v之前,rst必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向

12、),后面有詳細(xì)說明。sclk為時(shí)鐘輸入端。 下圖為ds1302的引腳功能圖: 2.2 ds1302封裝圖ds1302的控制字節(jié) ds1302 的控制字如圖2所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。 2.3數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個(gè)sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)

13、sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。 2.4 ds1302的寄存器ds1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時(shí)間寄存器及其控制字見表1。此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類:一類是單個(gè)ram單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下

14、可一次性讀寫所有的ram的31個(gè)字節(jié),命令控制字為feh(寫)、ffh(讀)。3、1602液晶1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5x7或者5x11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義cgram,顯示效果也不好)。 1602lcd是指顯示的內(nèi)容為16x2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。目前市面上字符液晶絕大多數(shù)是基于hd44780液晶芯片的,控制原理是完全相同的,因此基

15、于hd44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。 管腳功能 lcd1602引腳圖1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:vss為電源地 第2腳:vcc接5v電源正極 第3腳:v0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對(duì)比度)。 第4腳:rs為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。 第5腳:rw為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。 第6腳:e(或en)端為使能(enable)端。 第714腳:d0d7為8位雙向數(shù)據(jù)端

16、。 第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。電路總圖:所用儀器名稱清單:ds1302芯片,單片機(jī)at89c51,液晶顯示屏lcd1602,晶振,電解電容等。c語言程序:#include #include #include #define uint unsigned int#define uchar unsigned char/定義ds1302與mcu接口sbit io = p10;/io接口sbit sclk = p11;/時(shí)鐘線引腳sbit rst = p12;/復(fù)位線引腳/定義1602與單片機(jī)的接口sbit rs = p20;/指令數(shù)據(jù)選擇sbit rw = p21;

17、/接地,執(zhí)行寫操作sbit en = p22;/信號(hào)使能uchar *week= sun,mon,tus,wen,thu,fri,sat;uchar lcd_dsy_buffer1=date 00-00-00 ;uchar lcd_dsy_buffer2=time 00:00:00 ;uchar datetime7;/*延時(shí)i毫秒函數(shù)*/void delayms(uint ms) uchar i;while(ms-) for(i=0;i120;i+);/*向ds1302寫入1字節(jié)數(shù)據(jù)*/void write_a_byte_to_ds1302(uchar x) uchar i;for(i=0;i

18、=1;/x右移1位,高位補(bǔ)0/*從ds1302中讀出1字節(jié)數(shù)據(jù)*/uchar get_a_byte_from_ds1302() uchar i,b=0x00;for(i=0;i8;i+) b=b|_crol_(uchar)io,i);sclk=1;sclk=0;return b/16*10+b%16;/*讀取ds1302某地址的數(shù)據(jù),先寫命令字,后讀數(shù)據(jù)*/uchar read_data(uchar addr) uchar dat;rst = 0;/復(fù)位sclk=0;/時(shí)鐘脈沖置0 rst=1;/啟動(dòng)數(shù)據(jù)傳送 write_a_byte_to_ds1302(addr);/寫入地址命令字dat =

19、 get_a_byte_from_ds1302();/讀出一個(gè)字節(jié)的數(shù)據(jù) sclk=1;rst=0;return dat;void gettime() uchar i,addr=0x81;for(i=0;i7;i+) datetimei=read_data(addr);addr+=2;/*讀出lcd狀態(tài)*/uchar read_lcd_state() uchar state;rs=0;rw=1;en=1;delayms(1);state=p0;en = 0;delayms(1);return state;/*lcd忙檢測(cè)*/void lcd_busy_wait() while(read_lcd

20、_state()&0x80)=0x80);/讀取忙標(biāo)志位bf,bf=1則一直等待delayms(5);/*向lcd寫數(shù)據(jù)*/void write_lcd_data(uchar dat) lcd_busy_wait();/忙檢測(cè)確保上一指令完成,也可用適當(dāng)?shù)难訒r(shí)替換此行rs=1;rw=0;en=0;p0=dat;en=1;delayms(1);en=0;void write_lcd_command(uchar cmd) lcd_busy_wait();rs=0;rw=0;en=0;p0=cmd;en=1;delayms(1);en=0;/*初始化lcd函數(shù)*/void init_lcd() wr

21、ite_lcd_command(0x38);/8位數(shù)據(jù)接口,2行顯示,5*7點(diǎn)陣字符delayms(1);/延時(shí)保證上一指令完成write_lcd_command(0x01);/清ddram和ac值delayms(1);write_lcd_command(0x06);/數(shù)據(jù)讀寫操作畫面不動(dòng),ac自動(dòng)加1delayms(1);write_lcd_command(0x0c);/開顯示,關(guān)光標(biāo)和閃爍delayms(1);void set_lcd_pos(uchar p) write_lcd_command(p|0x80);void display_lcd_string(uchar p,uchar *

22、s) uchar i;set_lcd_pos(p);for(i=0;i16;i+)write_lcd_data(si);delayms(1); /*格式化日期時(shí)間函數(shù)*/void format_datetime(uchar d,uchar *a) a0=d/10+0;a1=d%10+0;/*主函數(shù)*/void main() init_lcd();/初始化液晶while(1) gettime();/獲得當(dāng)前時(shí)間format_datetime(datetime6,lcd_dsy_buffer1+5);/通道號(hào)顯示format_datetime(datetime4,lcd_dsy_buffer1+8

23、);format_datetime(datetime3,lcd_dsy_buffer1+11);strcpy(lcd_dsy_buffer1+13,weekdatetime5);format_datetime(datetime2,lcd_dsy_buffer2+5);format_datetime(datetime1,lcd_dsy_buffer2+8);format_datetime(datetime0,lcd_dsy_buffer2+11);display_lcd_string(0x00,lcd_dsy_buffer1);/液晶顯示display_lcd_string(0x40,lcd_d

24、sy_buffer2);組裝調(diào)試電路的過程及特點(diǎn): 任何一個(gè)科研成果的出現(xiàn), 都離不開實(shí)驗(yàn)及研究記錄, 切不可低估記錄的重要作用。在單片機(jī)開發(fā)過程中,單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。但通常是先排除明顯的硬件故障以后,再和軟件結(jié)合起來調(diào)試以進(jìn)一步排除故障??梢娪布恼{(diào)試是基礎(chǔ),如果硬件調(diào)試不通過,軟件設(shè)計(jì)則是無從做起。利用仿真器調(diào)試與軟件調(diào)試的方法基本相同,同樣可以利用“單步”、“跟蹤”、“斷點(diǎn)”等手段,對(duì)程序進(jìn)行分段調(diào)試或統(tǒng)一調(diào)試。不同的是仿真器把軟件和硬件結(jié)合了起來,使程序在比較真實(shí)的系統(tǒng)中運(yùn)行。 需要指出的是,通過仿真器調(diào)試的程序并不是最后使用的程序,它只是更接近了真實(shí)運(yùn)行的程序,要想在真實(shí)系統(tǒng)中讓程序可靠運(yùn)行,往往還需要結(jié)合真實(shí)系統(tǒng)反復(fù)進(jìn)行調(diào)試。 合理設(shè)置和利用外部中斷能充分開發(fā)和利用單片機(jī)的資源,調(diào)試程序是單片機(jī)外部中斷程序開發(fā)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論