版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 近年來隨著計(jì)算機(jī)在社會(huì)各領(lǐng)域的滲透,單片機(jī)的應(yīng)用正在不斷地走向深入。由于其功能強(qiáng),體積小,功耗低,工作可靠,使用方便,因此特別適合于和控制有關(guān)的系統(tǒng)。它也越來越廣泛地應(yīng)用到自動(dòng)控制,智能化儀器、儀表,數(shù)據(jù)采集以及家電等領(lǐng)域。在這些領(lǐng)域,單片機(jī)往往是作為一個(gè)核心部件來使用,再根據(jù)具體硬件結(jié)構(gòu),并針對(duì)具體對(duì)象的特點(diǎn)進(jìn)行軟件結(jié)合,達(dá)到
2、完善功能的目的。</p><p> 單片機(jī)課程設(shè)計(jì)是指以單片機(jī)為核心,配上一定的外圍電路和輔助軟件,從而實(shí)現(xiàn)用戶所要求的功能的系統(tǒng)。通過課程設(shè)計(jì),檢驗(yàn)學(xué)生學(xué)習(xí)單片機(jī)知識(shí)的前后聯(lián)系能力,同時(shí)有助于學(xué)生鞏固單片機(jī)以及數(shù)電、模電的相關(guān)知識(shí)。</p><p> 電子鐘是一種典型的數(shù)字電路,它包括了組合邏輯電路和時(shí)序電路。因此,我此次設(shè)計(jì)數(shù)字鐘是為了了解數(shù)字鐘的原理,進(jìn)而學(xué)會(huì)設(shè)計(jì)數(shù)字鐘。而且通過
3、數(shù)字鐘的設(shè)計(jì)進(jìn)一步了解各種中小規(guī)模集成電路的作用。</p><p><b> 一.設(shè)計(jì)要求</b></p><p> ?。?)能通過鍵盤預(yù)置時(shí)間、星期,采用增量鍵盤;</p><p> ?。?)采用字符型LCD液晶顯示器或七位共陰LED顯示星期、時(shí)、分、秒;</p><p> ?。?)具有整點(diǎn)報(bào)時(shí)功能;</p&g
4、t;<p> ?。?)可采用12小時(shí)制或24小時(shí)制;</p><p> ?。?)顯示驅(qū)動(dòng)器可采用MC14543、CD14543。</p><p> 二、系統(tǒng)總體方案設(shè)計(jì)</p><p><b> 1.系統(tǒng)框圖</b></p><p> 系統(tǒng)框圖如下圖所示,主要包括單片機(jī)、顯示器、鍵盤輸入、蜂鳴器。&l
5、t;/p><p><b> 數(shù)字鐘系統(tǒng)框圖</b></p><p><b> 2.系統(tǒng)框圖說明:</b></p><p><b> 1、單片機(jī)</b></p><p> 單片機(jī)是一種集成電路芯片,本設(shè)計(jì)采用AT89C51。</p><p><b
6、> 2、顯示器</b></p><p> 顯示電路采用字符型LCD液晶顯示器。</p><p><b> 3、鍵盤輸入</b></p><p> 本次課程設(shè)計(jì)采用獨(dú)立鍵盤。</p><p><b> 4、蜂鳴器</b></p><p> 為了實(shí)現(xiàn)
7、數(shù)字鐘整點(diǎn)報(bào)時(shí)功能,在電路中加入蜂鳴器。它由單片機(jī)控制,低電平有效,并采用PNP型三極管驅(qū)動(dòng)。</p><p><b> 三、系統(tǒng)硬件設(shè)計(jì)</b></p><p><b> 1、單片機(jī)</b></p><p> 單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的CPU、RAM、ROM、I/O口和
8、中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能集成到一塊硅晶片上構(gòu)成的一個(gè)小但完善的計(jì)算機(jī)系統(tǒng)。</p><p> 單片機(jī)有40個(gè)引腳,可分為4類:電源、時(shí)鐘、控制和I/O口。 </p><p><b> 電源:</b></p><p> VCC—芯片電源,接+5V;</p><p><b> VSS—接地端 <
9、/b></p><p><b> 時(shí)鐘:</b></p><p> XTAL1—晶體振蕩電路反相輸入端;</p><p> XTAL2—晶體振蕩電路反相輸出端。 </p><p><b> 控制線:</b></p><p><b> 控制線共有4根
10、</b></p><p> 1、ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖</p><p> ALE功能:用來鎖存P0口送出的低8位地址;PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。</p><p> 2、PSEN:外ROM讀選通信號(hào)</p><p> 3、RST/VPD:復(fù)
11、位/備用電源</p><p> RST功能:復(fù)位信號(hào)輸入端;VPD功能:在Vcc掉電情況下,接備用電源。 </p><p> 4、EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 </p><p> EA功能:內(nèi)外ROM選擇端。</p><p> Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電壓Vpp。 &
12、lt;/p><p><b> 四、I/O口</b></p><p> ATC89C51共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口。 </p><p> P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0口寫“1”后,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地
13、址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上電阻。但是P0口在程序校驗(yàn)作為輸出指令字節(jié)時(shí),需要外部加上拉電阻。</p><p> P1口:P1口是一個(gè)內(nèi)部具有上拉電阻的8位雙向I/O口。P1口緩沖器能接收輸出4個(gè)TTL門電流。P1口寫“1”后,內(nèi)部上拉電阻將其拉高,此時(shí)可以作為作輸入口使用。作為輸入口使用時(shí),被外部拉低的引腳由于存在內(nèi)部電阻,會(huì)輸出電流。</p><p> P2口:P2
14、口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口。P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 口寫“1”后,內(nèi)部上拉電阻將其拉高,此時(shí)可以作為輸入口使用。</p><p> P3口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P3 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”后,內(nèi)部上拉電阻將其拉高,此時(shí)可以作為輸入口使用。作輸入口時(shí),被外部拉低的P3 口將用上拉電阻輸出電流。
15、</p><p><b> 2、LCD顯示器</b></p><p> 字符型LCD液晶顯示器是由字符液晶顯示器件和專用的行、列驅(qū)動(dòng)器、控制器及必要的連接件、結(jié)構(gòu)件裝配而成的。它可以顯示數(shù)字和西文字符,是一類專用于顯示字母、數(shù)字的液晶顯示器。</p><p> LCD1602主要技術(shù)參數(shù):</p><p> 一、
16、顯示容量:16×2個(gè)字符;</p><p> 二、芯片工作電壓:4.5—5.5V;</p><p> 三、工作電流:2.0mA </p><p> 本次設(shè)計(jì)LCD1602采用標(biāo)準(zhǔn)的16腳接口,各引腳如下表所示:</p><p> 字符型液晶顯示模塊的引腳主要分為3類:數(shù)據(jù)線(D0~D7);控制線(RS、R/W、E);電源線(
17、VDD、VSS、VL)。</p><p><b> 引腳功能介紹:</b></p><p> D0~D7:數(shù)據(jù)總線。用于與單片機(jī)數(shù)據(jù)總線連接。</p><p> RS: 寄存器選擇端。</p><p><b> R/W:讀寫端。</b></p><p><b&g
18、t; E:芯片使能端。</b></p><p> VDD:電源線。LCD顯示器電源為+5V。</p><p><b> VSS:接地線。</b></p><p> VL:液晶顯示偏壓。接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。</p><
19、;p> BLA:背光源正極。</p><p> BLK:背光源負(fù)極。</p><p><b> 3、鍵盤輸入</b></p><p> 本次課程設(shè)計(jì)采用獨(dú)立鍵盤,通過鍵盤開關(guān)觸點(diǎn)的斷開、閉合來實(shí)現(xiàn)高低電平的輸入。單片機(jī)接受該指令,然后做出相應(yīng)的動(dòng)作。</p><p><b> 4、整點(diǎn)報(bào)時(shí)<
20、;/b></p><p> 整點(diǎn)報(bào)時(shí)采用蜂鳴器實(shí)現(xiàn),由PNP型三極管驅(qū)動(dòng),低電平有效。當(dāng)P3.0輸出電平時(shí),三極管導(dǎo)通,蜂鳴器接通并發(fā)出報(bào)時(shí)聲音。</p><p><b> 整點(diǎn)報(bào)時(shí)電路</b></p><p><b> 四、系統(tǒng)軟件</b></p><p> 1.系統(tǒng)軟件主框圖
21、 2.LCD初始化程序流程圖</p><p><b> 3.按鍵流程圖</b></p><p><b> 五、總結(jié)</b></p><p> 通過本次課程設(shè)計(jì),讓我認(rèn)識(shí)到僅學(xué)習(xí)書本上的知識(shí)是不夠的。要想真正用于實(shí)踐還要學(xué)習(xí)很多。另外,還有必要采取理論與實(shí)踐相結(jié)合的學(xué)習(xí)方式。在查
22、閱資料并動(dòng)手設(shè)計(jì)的過程中,雖然各種資料對(duì)于本課設(shè)多少有介紹,但是拿過來自己做,并完整地做出來還是有困難的。但是,最終我做出了課程設(shè)計(jì),同時(shí)鍛煉了自己的獨(dú)立思考并解決問題的能力。另外,本次課程設(shè)計(jì)要用到一些軟件如Protel 99se,我學(xué)了這些軟件其中很多功能。雖然學(xué)習(xí)這些軟件的過程比較累,但是當(dāng)畫出了理想的圖形時(shí)的成就感是不言而喻的。</p><p> 總之,通過這次課程設(shè)計(jì),我收獲非常大。獨(dú)立設(shè)計(jì)成功了基于
23、AT89C51和LCD1602的的數(shù)字鐘(包括硬件電路和軟件部分)。這次課程設(shè)計(jì)我也付出了很多努力,同時(shí)也學(xué)習(xí)到了很多實(shí)際的知識(shí),自己的能力也得到了鍛煉。我為自己的成長感到驕傲。</p><p><b> 參考文獻(xiàn)</b></p><p> 1.張毅剛,彭喜元,彭宇. 單片機(jī)原理及應(yīng)用(第二版). 高等教育出版社,2010.</p><p>
24、; 2.林志琦.基于Proteus的單片機(jī)可視化軟硬件仿真[M].北京:北京航空航天大學(xué)出版社,2006. </p><p> 3.黃正謹(jǐn).綜合電子設(shè)計(jì)與實(shí)踐[M].東南大學(xué)出版社.2002.</p><p> 4.楊欣等.電子設(shè)計(jì)從零開始[M].清華大學(xué)出版社.2005.</p><p> 5.謝嘉奎.電子線路[M].高等教育出版社.2003.&
25、lt;/p><p> 6.汪道輝.單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:電子工業(yè)出版社.2006</p><p> 7.施隆照.?dāng)?shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制器及其應(yīng)用[J].國外電子元器件,2004.</p><p> 8.張毅剛.新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003.</p><p> 9.張毅剛.單
26、片機(jī)原理與應(yīng)用設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008.</p><p> 10.張毅剛.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2004.</p><p> 11、王幸之.AT89系列單片機(jī)原理與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2004.</p><p><b> 附錄A</b></p><p&
27、gt;<b> 附錄B</b></p><p> 數(shù)字鐘程序如下所示:</p><p> #include<reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><
28、p> uchar hour,min,sec,count,hour1,hour2,</p><p> sec1,sec2,min1,min2,keystopc,temp;</p><p> sbit keystop=P1^4;</p><p> sbit keyh=P1^5;</p><p> sbit keym=P1^6;&l
29、t;/p><p> sbit keys=P1^7;</p><p> sbit lcden=P3^4;</p><p> sbit lcdrs=P3^5;</p><p> uchar code table[]={</p><p> '0','1','2','
30、;3','4','5','6','7','8','9',':'};</p><p> void init()</p><p><b> {</b></p><p><b> count=0;<
31、/b></p><p><b> hour=23;</b></p><p><b> min=59;</b></p><p><b> sec=50;</b></p><p> TMOD=0x01;</p><p> TH0=(65536
32、-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> TR0=1;</b></p><p><b> ET0=1;</b></p><p><b> EA=1;</b></p><p>
33、;<b> }</b></p><p> void delay(uint z) </p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)<
34、/p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com)</p><p><b> {</b></p><p><b> lcdrs=0;</
35、b></p><p><b> P0=com;</b></p><p><b> delay(0);</b></p><p><b> lcden=1;</b></p><p><b> delay(0);</b></p>&l
36、t;p><b> lcden=0;</b></p><p><b> }</b></p><p> void write_data(uchar date)</p><p><b> {</b></p><p><b> lcdrs=1;</b&g
37、t;</p><p><b> P0=date;</b></p><p><b> delay(1);</b></p><p><b> lcden=1;</b></p><p><b> delay(1);</b></p><
38、p><b> lcden=0;</b></p><p><b> }</b></p><p> void init_1602()</p><p><b> {</b></p><p><b> lcden=0;</b></p&
39、gt;<p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x01);</p><p> write_com(0x80);</p><p><b>
40、}</b></p><p> void display(uchar hour1,uchar hour2,uchar min1,uchar min2,uchar sec1,uchar sec2) </p><p><b> {</b></p><p> init_1602();</p><p> /
41、/write_com_nextl(0x80+0x40+0x03);</p><p> write_data(table[hour1]);</p><p> write_data(table[hour2]);</p><p> write_data(table[0x0a]);</p><p> write_data(table[min1
42、]);</p><p> write_data(table[min2]);</p><p> write_data(table[0x0a]);</p><p> write_data(table[sec1]);</p><p> write_data(table[sec2]);</p><p><b>
43、; }</b></p><p> void count0() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><
44、b> count++;</b></p><p> if(count==20)</p><p><b> {</b></p><p><b> count=0;</b></p><p><b> sec++;</b></p><p&
45、gt; if(sec==60)</p><p><b> {</b></p><p><b> sec=0;</b></p><p><b> min++;</b></p><p> if(min==60)</p><p><b>
46、 {</b></p><p><b> min=0;</b></p><p><b> hour++;</b></p><p> if(hour==24)</p><p><b> {</b></p><p><b> h
47、our=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
48、}</b></p><p> void main()</p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {
49、</b></p><p> if(keystop==0) </p><p><b> {</b></p><p> delay(10);</p><p> if(keystop==0)</p><p><b>
50、 {</b></p><p> if(keystopc!=1) keystopc++; </p><p> else keystopc=0;</p><p> while(keystop==0); </p><p><b> delay(5
51、);</b></p><p> while(keystop==0); </p><p><b> }</b></p><p> switch(keystopc)</p><p><b> {</b></p><p> case 1:TR0=0;break
52、; </p><p> case 0:TR0=1;break;</p><p> default:break;</p><p><b> }</b></p><p><b> }</b></p><p> if(keyh==0)
53、 </p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(keyh==0)</p><p><b> {</b></p><p> if(hour!=23)
54、hour++;</p><p> else hour=0;</p><p><b> }</b></p><p> while(!keyh); </p><p><b> delay(5);</b></p><p> while(!ke
55、yh);</p><p> hour1=hour/10; </p><p> hour2=hour%10;</p><p> min1=min/10;</p><p> min2=min%10;</p><p> sec1=sec/10;</p><p> sec2=sec
56、%10;</p><p> display(hour1,hour2,min1,min2,sec1,sec2);</p><p><b> }</b></p><p> if(keym==0) </p><p><b> {</b></p><p
57、><b> delay(5);</b></p><p> if(keym==0)</p><p><b> {</b></p><p> if(min!=59)</p><p><b> {</b></p><p><b>
58、 min++;</b></p><p><b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> min=0;</b></p><p>&
59、lt;b> }</b></p><p><b> }</b></p><p> while(!keym);</p><p><b> delay(5);</b></p><p> while(!keym);</p><p> hour1=ho
60、ur/10;</p><p> hour2=hour%10;</p><p> min1=min/10;</p><p> min2=min%10;</p><p> sec1=sec/10;</p><p> sec2=sec%10;</p><p> display(hour1
61、,hour2,min1,min2,sec1,sec2); </p><p><b> }</b></p><p> if(keys==0) </p><p><b> {</b></p><p><b> delay(5);</b></p&
62、gt;<p> if(keys==0)</p><p><b> {</b></p><p> if(sec!=59)</p><p><b> {</b></p><p><b> sec++;</b></p><p><
63、;b> }</b></p><p><b> else </b></p><p><b> {</b></p><p><b> sec=0;</b></p><p><b> }</b></p><p>
64、;<b> }</b></p><p> while(!keys);</p><p><b> delay(5);</b></p><p> while(!keys);</p><p> hour1=hour/10;</p><p> hour2=hour%10;
65、</p><p> min1=min/10;</p><p> min2=min%10;</p><p> sec1=sec/10;</p><p> sec2=sec%10;</p><p> display(hour1,hour2,min1,min2,sec1,sec2);</p><
66、;p><b> }</b></p><p> hour1=hour/10;</p><p> hour2=hour%10;</p><p> min1=min/10;</p><p> min2=min%10;</p><p> sec1=sec/10;</p>&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 《單片機(jī)課程設(shè)計(jì)》報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì) (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)及dsp課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告doc
- 單片機(jī)課程設(shè)計(jì)課題報(bào)告
- btec單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)應(yīng)用課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告-日歷
評(píng)論
0/150
提交評(píng)論