2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘要</b></p><p>  本設(shè)計(jì)是設(shè)計(jì)一個單片機(jī)控制秒表系統(tǒng)。</p><p>  近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷的走向深入,同時帶動著傳統(tǒng)控制檢測日新月異更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個核心部件來使用,僅單片機(jī)方面的知識是不夠的,還要根據(jù)具體的硬件結(jié)構(gòu),以及針對具體的應(yīng)用對象的軟

2、件結(jié)合,加以完善。秒表的出現(xiàn),解決了傳統(tǒng)的由于人為因素造成的誤差和不公平性。</p><p>  設(shè)計(jì)一個8位LED數(shù)碼顯示“多功能秒表”,初始顯示時間為00—00—00,每毫秒自動加一,每十毫秒自動加一秒。增加一個“復(fù)位按鍵(即清零),一個“暫?!焙汀伴_始”按鍵。其中軟件系統(tǒng)采用c語言編寫程序,包括顯示程序,加計(jì)數(shù)程序,中斷,延時程序,按鍵消抖程序等,簡單切易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。<

3、/p><p>  關(guān)鍵字:單片機(jī),秒表,C語言</p><p><b>  目錄</b></p><p>  1課程設(shè)計(jì)的目的和任務(wù)</p><p>  1.1 單片機(jī)的功能</p><p>  1.2 單片機(jī)秒表課程設(shè)計(jì)的概述</p><p>  1.3課程設(shè)計(jì)思路及描述&l

4、t;/p><p>  1.4 課程設(shè)計(jì)任務(wù)和要求</p><p><b>  2軟件的設(shè)計(jì)流程</b></p><p><b>  2.1軟件方案設(shè)計(jì)</b></p><p>  3試驗(yàn)程序及設(shè)計(jì)效果</p><p><b>  3.1源程序及注釋</b>&

5、lt;/p><p><b>  3.2課程設(shè)計(jì)效果</b></p><p><b>  4 參考文獻(xiàn)</b></p><p>  1.1 單片機(jī)的功能</p><p>  單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲器 RAM、只讀存儲器ROM、多種

6、I/O口和中斷系統(tǒng)、定時器/計(jì)時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計(jì)算機(jī)系統(tǒng)。</p><p>  MCS-51系列單片機(jī),其主要功能如下:</p><p>  ·8位CPU·4kbytes 程序存儲器(ROM)·128bytes的數(shù)據(jù)存儲器(RAM)·32條I

7、/O口線·111條指令,大部分為單字節(jié)指令·21個專用寄存器·2個可編程定時/計(jì)數(shù)器·5個中斷源,2個優(yōu)先級·一個全雙工串行通信口·外部數(shù)據(jù)存儲器尋址空間為64kB·邏輯操作位尋址功能·雙列直插40PinDIP封裝·單一+5V電源供電</p><p>  40個引腳按引腳功能大致可分為4個種類:電源、時鐘、

8、控制和I/O引腳。 </p><p><b>  ⒈ 電源: </b></p><p> ?、?VCC - 芯片電源,接+5V; </p><p>  ⑵ VSS - 接地端; </p><p>  注:用萬用表測試單片機(jī)引腳電壓一般為0v或者5v,這是標(biāo)準(zhǔn)的TTL電平。但有時候在單片機(jī)程序正在工作時候測試結(jié)果并不是這個

9、值而是介于0v-5v之間,其實(shí)這是萬用表的響應(yīng)速度沒這么快而已,在某一個瞬間單片機(jī)引腳電壓仍保持在0v或者5v。 </p><p> ?、?時鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 </p><p> ?、?控制線:控制線共有4根, </p><p> ?、?ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖 </p>&

10、lt;p> ?、?ALE功能:用來鎖存P0口送出的低8位地址 </p><p>  ② PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 </p><p>  ⑵ PSEN:外ROM讀選通信號。 </p><p>  ⑶ RST/VPD:復(fù)位/備用電源。 </p><p>  ① RST(Reset)功能

11、:復(fù)位信號輸入端。 </p><p> ?、?VPD功能:在Vcc掉電情況下,接備用電源。 </p><p> ?、?EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 </p><p>  ① EA功能:內(nèi)外ROM選擇端。 </p><p>  ② Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 <

12、/p><p><b> ?、?I/O線 </b></p><p>  80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。 </p><p>  P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線) </p><p>  5. P3口第二功能 </p><p>

13、  P30 RXD 串行輸入口 </p><p>  P31 TXD 串行輸出口 </p><p>  P32 INT0 外部中斷0(低電平有效) </p><p>  P33 INT1 外部中斷1(低電平有效) </p><p>  P34 T0 定時計(jì)數(shù)器0 </p><p>  P35 T1 定時計(jì)數(shù)器1 <

14、;/p><p>  P36 WR 外部數(shù)據(jù)存儲器寫選通(低電平有效) </p><p>  P37 RD 外部數(shù)據(jù)存儲器讀選通(低電平有效)1.2 單片機(jī)秒表課程設(shè)計(jì)的概述</p><p>  設(shè)計(jì)一個單片機(jī)控制的秒表系統(tǒng)。利用單片機(jī)的定時器/計(jì)數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及按鍵來設(shè)計(jì)計(jì)時器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行加計(jì)時

15、,數(shù)碼管能夠正確地顯示時間。</p><p>  1.3課程設(shè)計(jì)思路及描述</p><p>  1. 開機(jī)時數(shù)碼管顯示00—00—00秒。</p><p>  2. 八位數(shù)碼管顯示,顯示時間為00—00—00秒。</p><p>  3. 每毫秒自動加一,每一百毫秒自動加一秒。 </p><p>  4. 按鍵控制計(jì)數(shù)

16、,用一個按鍵同時控制開始計(jì)數(shù)、停止計(jì)數(shù)和歸零</p><p><b>  5. 方框圖如下圖</b></p><p><b>  6 實(shí)驗(yàn)電路</b></p><p><b>  . </b></p><p>  1.4 課程設(shè)計(jì)任務(wù)和要求</p><p&g

17、t;<b>  1.設(shè)計(jì)要求</b></p><p><b>  理解實(shí)驗(yàn)原理</b></p><p><b>  軟件編程與調(diào)試;</b></p><p><b>  電路仿真與調(diào)試;</b></p><p>  寫出完整、詳細(xì)的課程設(shè)計(jì)報告。</

18、p><p><b>  2.1軟件方案設(shè)計(jì)</b></p><p>  在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn)。把一個多功能的復(fù)雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。</p><p>  應(yīng)用系統(tǒng)的程序由包含多個模塊

19、的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務(wù),實(shí)現(xiàn)某個具體的功能,如:加計(jì)數(shù)延時,計(jì)數(shù)和顯示等,在具體需要時調(diào)用相應(yīng)的模塊即可。</p><p><b>  3.1源程序及注釋</b></p><p>  #include <reg51.h> </p><p>  #include <intrins.h&g

20、t; </p><p>  #define uchar unsigned char </p><p>  void delay_ms(uchar ms); // 延時毫秒@12M,ms最大值255 </p><p>  void key_scan(); // 按鍵掃描 </p><p>  void

21、 key_to(); // 按鍵處理 </p><p>  uchar code dis_code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; </p><p>  //0 1 2 3 4 5 6 7 8 9 — </p><p>

22、;  uchar data dis[8]; // dis[0]為百分之一秒值,dis[1]為十分之一秒值 </p><p>  // dis[2],dis[5]為'-'段碼的偏移量 </p><p>  // dis[3]為秒個位值,dis[4]為秒十位值 </p><p>  // dis[6]為分個位值,dis[7]

23、為分十位值 </p><p>  uchar data dot = 0; // 百分之一秒計(jì)數(shù)器(0.00s-0.99s) </p><p>  uchar data sec = 0; // 秒計(jì)數(shù)器(00s-59s) </p><p>  uchar data min = 0; // 分計(jì)數(shù)器(00m-99m)

24、 </p><p>  uchar data dis_b; // dis_b為位碼選通數(shù)碼管 </p><p>  uchar data dis_r; // dis_r為取段碼時的偏移量 </p><p>  uchar data key_t = 0; // 按鍵次數(shù),初始為0 </p><p&

25、gt;  sbit K = P1^4; // K鍵與P1.4相連 </p><p>  sbit wela=P2^3;</p><p>  sbit dula=P2^2; </p><p>  void main() </p><p><b>  { </b></p&

26、gt;<p>  P0= 0xff; // 關(guān)所有數(shù)碼管 改 </p><p>  P1 = 0xff; // p1為準(zhǔn)雙向口,作輸入時先寫1 </p><p>  dis[2] = 10; // '-'在段碼表中偏

27、移量為10 </p><p>  dis[5] = 10; // '-'在段碼表中偏移量為10 </p><p>  dis_b = 0x7f; // 初始選通P2.7口數(shù)碼管 </p><p>  dis_r = 0; // 初始化偏移量為0 </p><

28、p><b>  wela=0;</b></p><p>  dula=0; </p><p>  TMOD = 0x11; // 定時/計(jì)數(shù)器0,1工作于方式1 </p><p>  TH0 = 0xd8; // 預(yù)置定時常數(shù)55536(d8f0),產(chǎn)生10ms時基信號 </p&g

29、t;<p>  TL0 = 0xf0; </p><p>  TH1 = 0xfc; // 預(yù)置定時常數(shù)64536(fc18),產(chǎn)生1ms間隔用于動態(tài)顯示 </p><p>  TH1 = 0x18; </p><p>  EA = 1; // 開總中斷 </p><

30、;p>  ET0 = 1; // 定時/計(jì)數(shù)器0允許中斷 </p><p>  ET1 = 1; // 定時/計(jì)數(shù)器1允許中斷 </p><p>  TR0 = 0; // 關(guān)閉定時/計(jì)數(shù)器0 </p><p>  TR1 = 1; // 啟動定時

31、/計(jì)數(shù)器1 </p><p>  while(1) </p><p><b>  { </b></p><p>  if(K != 1) // 有鍵按下 </p><p><b>  { </b></p><p>  de

32、lay_ms(10); // 延時10ms去抖 </p><p>  if(K != 1) // 確定是有鍵按下 </p><p><b>  { </b></p><p>  while(K != 1); // 等待鍵松開 </p><p>  key_to();

33、 // 按鍵處理 </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p&

34、gt;  void key_to() // 按鍵處理子程序 </p><p><b>  { </b></p><p>  key_t++; // 按鍵次數(shù)加1 </p><p>  if(key_t == 1) // 第一次按下

35、 </p><p>  TR0 = 1; // 啟動定時器0 </p><p><b>  else </b></p><p><b>  { </b></p><p>  if(key_t == 2) // 第二次按下 </

36、p><p>  TR0 = 0; // 關(guān)閉定時器0 </p><p><b>  else </b></p><p><b>  { </b></p><p>  if(key_t == 3) // 第三次按下 </p><p>

37、;<b>  { </b></p><p>  dot = 0; // 三個計(jì)數(shù)器清零 </p><p>  sec = 0; </p><p>  min = 0; </p><p>  key_t = 0; // 按鍵次數(shù)清零 </p><p>

38、;<b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void tiem0(void) interrupt 1

39、 // T/C0中斷服務(wù)程序(產(chǎn)生10ms時基信號) </p><p><b>  { </b></p><p>  dot++; // 百分之一秒計(jì)數(shù)器加1 </p><p>  if(dot == 100) // 計(jì)數(shù)值到100 </p>

40、<p><b>  { </b></p><p>  dot = 0; // 清零 </p><p>  sec++; // 秒計(jì)數(shù)器加1(進(jìn)位10ms*100=1s) </p><p>  if(sec == 60) // 秒計(jì)數(shù)值到

41、60 </p><p><b>  { </b></p><p>  sec = 0; // 秒計(jì)數(shù)器清零 </p><p>  min++; // 分計(jì)數(shù)器加1(進(jìn)位60s=1m) </p><p>  if(min == 100) // 分計(jì)

42、數(shù)到100 </p><p>  min = 0; // 分計(jì)數(shù)器清零 </p><p><b>  } </b></p><p><b>  } </b></p><p>  TH0 = 0xd8; // 重置定時常數(shù) <

43、;/p><p>  TL0 = 0xf0; </p><p><b>  } </b></p><p>  void time1(void) interrupt 3 // T/C1中斷服務(wù)程序(延時1ms數(shù)碼管動態(tài)顯示) </p><p><b>  { </b></p

44、><p>  dis[0] = dot % 10; // 百分之一秒計(jì)數(shù)器個位分離出來賦紿dis[0] </p><p>  dis[1] = dot / 10; // 百分之一秒計(jì)數(shù)器十位分離出來賦紿dis[1] </p><p>  dis[3] = sec % 10; // 秒計(jì)數(shù)器個位賦紿dis[3]

45、 </p><p>  dis[4] = sec / 10; // 秒計(jì)數(shù)器十位賦紿dis[4] </p><p>  dis[6] = min % 10; // 分計(jì)數(shù)器個位賦紿dis[6] </p><p>  dis[7] = min / 10; // 分計(jì)數(shù)器十位賦紿dis[7] <

46、/p><p>  P0 = dis_code[dis[dis_r]]; </p><p><b>  dula=1;</b></p><p>  dula=0;// 段碼送P0口(dis[0]...dis[7]) 改 </p><p><b>  P0 = 0;</b></p><

47、;p>  P0 = dis_b; // 位碼送P2口 </p><p>  wela=1; </p><p><b>  wela=0;</b></p><p>  dis_r++; // 偏移量加1,下次中斷時顯示下個數(shù) </p><p&

48、gt;  dis_r &= 0x07; // dis_r增到8時自動清0(使之在0到7間循環(huán)) </p><p>  dis_b = _cror_(dis_b,1); // 位碼循環(huán)右移,下次中斷時選通下個數(shù)碼管 </p><p>  TH1 = 0xfc; // 重置定時常數(shù) </p>&l

49、t;p>  TL1 = 0x18; </p><p><b>  } </b></p><p>  void delay_ms(uchar ms) // 延時毫秒@12M,ms最大值255 </p><p><b>  { </b></p><p>  uc

50、har i; </p><p>  while(ms--) </p><p>  for(i = 0; i < 124; i++); </p><p><b>  } </b></p><p><b>  3.2課程設(shè)計(jì)效果</b></p><p&g

51、t;<b>  1.整體效果</b></p><p><b>  2.開始倒計(jì)時</b></p><p>  3.倒計(jì)時到不同時間</p><p><b>  4 參考文獻(xiàn)</b></p><p>  【1】郭天祥編著.51單片機(jī)C語言教程-入門、提高、開發(fā)、拓展全攻略.電子工

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論