單片機(jī)課程設(shè)計(jì)報(bào)告 (2)_第1頁
已閱讀1頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論