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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  基于51單片機(jī)的燈光控制系統(tǒng)</p><p>  摘 要:本設(shè)計(jì)主要以ATMEL公司生產(chǎn)的AT89C52為核心處理器,利用其內(nèi)部的定時(shí)器進(jìn)行精確定時(shí),并通過(guò)74HC573鎖存器做驅(qū)動(dòng)通過(guò)I/O口在數(shù)碼管顯示時(shí)間,通過(guò)CPU檢測(cè)程序設(shè)定的時(shí)間,控制5v繼電器的通斷已達(dá)到控制照明器件的通斷。本系統(tǒng)還具有外部可調(diào)時(shí)間部分以便対誤差進(jìn)行修正,以及備用電源防止停電造成單片機(jī)復(fù)位,使下次來(lái)電時(shí)不能對(duì)程序

2、設(shè)定的時(shí)間進(jìn)行準(zhǔn)確響應(yīng)。本試驗(yàn)通過(guò)在研展YZ200單片實(shí)驗(yàn)箱上進(jìn)行硬件調(diào)試,用Keil uVision3進(jìn)行軟件的調(diào)試。通過(guò)調(diào)試仿真是單片機(jī)能精確地控制電源的通斷時(shí)間即照明設(shè)備的通斷時(shí)間,調(diào)試之后定時(shí)可以精確到秒。</p><p>  關(guān)鍵詞:AT89C52 定時(shí)器 仿真調(diào)試</p><p>  1 方案比較,設(shè)計(jì)與論證</p><p>  方案一:通過(guò)單片機(jī)內(nèi)部定

3、時(shí),不接外部顯示設(shè)備(數(shù)碼管)以及外部調(diào)整設(shè)備(獨(dú)立鍵盤)。只要單片機(jī)內(nèi)部定時(shí)器到程序設(shè)定的時(shí)間就控制繼電器的通斷,以達(dá)到控制照明設(shè)備通斷的目的,但存在誤差不能修正</p><p>  方案二:通過(guò)單片機(jī)控制數(shù)碼管把單片機(jī)內(nèi)部程序控制時(shí)間直觀的在數(shù)碼管上顯示出來(lái),在用三個(gè)獨(dú)立鍵盤來(lái)控制時(shí)間即便是出現(xiàn)誤差也可以通過(guò)鍵盤來(lái)調(diào)整,是誤差始終在容許范圍之內(nèi)已實(shí)現(xiàn)精確的定時(shí)。</p><p>  方

4、案一:不能直觀的顯示單片機(jī)內(nèi)部情況,而且對(duì)系統(tǒng)產(chǎn)生的誤差時(shí)間不能修正,雖說(shuō)可以通過(guò)仿真調(diào)試減小誤差短時(shí)間內(nèi)影響不是很大但是長(zhǎng)時(shí)間使用的話誤差還是很大的。 </p><p>  方案二:不但直觀地顯示了單片機(jī)內(nèi)部的情況,而且對(duì)系統(tǒng)經(jīng)過(guò)時(shí)間累積產(chǎn)生的誤差進(jìn)行修正,再加上仿真調(diào)試減小誤差,以達(dá)到定時(shí)精確到秒的要求。</p><p>  2 理論分析系統(tǒng)設(shè)計(jì)</p><p>

5、;<b>  2.1定時(shí)顯示模塊</b></p><p>  單片機(jī)時(shí)鐘產(chǎn)生方式有兩種,一是內(nèi)部時(shí)鐘方式(圖a),二是外部時(shí)鐘方式(圖b) ,內(nèi)部時(shí)鐘方式要在單片機(jī)的XTAL1和XTAL2引腳外接晶振即可。圖中電容器CI和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率要小于12MHz,典型值為6MHz,12MHz或11.05926MHz。<

6、/p><p>  外部時(shí)鐘方式是把外部已有的時(shí)鐘信號(hào)引如單片機(jī)內(nèi),此方式多用于多片80C51單片機(jī)同時(shí)工作,并要求各單片機(jī)同步運(yùn)行的場(chǎng)所。本實(shí)驗(yàn)因?yàn)槭嵌〞r(shí)所以采用12MHz晶振。          </p><p>  圖a   圖b</p><p>  晶振周期為最小的時(shí)序單位,晶振信號(hào)經(jīng)分頻后形成兩相錯(cuò)開的信號(hào)P

7、1和P2。P1和P2的周期也稱為S狀態(tài),他是晶振周期的2倍,即一個(gè)S狀態(tài)包含2個(gè)晶振周期。在每個(gè)S狀態(tài)的前半周期,相位1(P1)信號(hào)有效;在每個(gè)S狀態(tài)的前后半周期,相位2(P2)信號(hào)有效;每個(gè)S狀態(tài)有兩個(gè)節(jié)拍(相),P1和P2,CPU以P1和P2為基本節(jié)拍指揮各個(gè)部件協(xié)調(diào)工作。晶振信號(hào)12分頻后形成機(jī)器周期,即一個(gè)機(jī)器周期包含12個(gè)晶蕩周期。</p><p>  這樣以來(lái)采用12MHZ晶振則機(jī)器周期為1us,本設(shè)

8、計(jì)用定時(shí)器0的定時(shí)方式1,即十六位,設(shè)定</p><p> ?。裕停希?0x01  </p><p> ?。裕龋?(65536-50000)/256</p><p>  TL0=(65536-50000)%256 </p><p>  這樣定時(shí)時(shí)間為50ms,計(jì)數(shù)200次就是一秒。滿60秒則分鐘加1而秒清零,滿60分鐘時(shí)小時(shí)數(shù)加1分鐘清零,把

9、時(shí)分秒分成兩位分別在數(shù)碼管上顯示,顯示電路如下:  </p><p>  本設(shè)計(jì)選用的數(shù)碼管是共陽(yáng)極的及圖中所示的com1到com4,而P00到P07則控制相應(yīng)的各段及圖中二極管的a,b,c,d,e,f,dp.分別送十六進(jìn)制顯示碼是不同的二極管發(fā)光已達(dá)到顯示不同數(shù)的目地,如要左邊第一個(gè)顯示顯示‘1’其他不顯示,則P1口要送0x80而P0口要送0xf9以此類推就可以顯示各數(shù)字了。本設(shè)計(jì)鎖存器74HC573主

10、要做驅(qū)動(dòng)使數(shù)碼管發(fā)光因?yàn)閱纹瑱C(jī)的驅(qū)動(dòng)能力很弱不能驅(qū)動(dòng)數(shù)碼管顯示,而顯示原理是數(shù)碼管動(dòng)態(tài)顯示原理,分別給每個(gè)數(shù)碼管送十六進(jìn)制顯示編碼,然后延時(shí)在給下一個(gè)數(shù)碼管送十六進(jìn)制顯示編碼,以此類推給八位送完后循環(huán)再送新的一組十六進(jìn)制編碼,使數(shù)碼掛動(dòng)態(tài)顯示時(shí)間。值得注意的是要在顯示過(guò)程中消隱,及送完一位后要給P0口送0xff,使數(shù)碼管短時(shí)熄滅(小于5ms),再給下一位送數(shù)顯示,以不影響下一位的顯示。使顯示更清晰以防出現(xiàn)亂碼。</p>&

11、lt;p><b>  2.2 鍵盤模塊</b></p><p>  本設(shè)計(jì)再用三個(gè)獨(dú)立鍵盤來(lái)控制數(shù)碼管的時(shí)分秒顯示,相應(yīng)按鍵按下后時(shí)分秒相對(duì)應(yīng)的加1,已達(dá)到調(diào)整時(shí)間的目的,更可以對(duì)內(nèi)部程序的時(shí)間進(jìn)行修正。使系統(tǒng)誤差也得到修正,這樣單片機(jī)就能更準(zhǔn)確地定時(shí)。但需要注意的是,按鍵按下時(shí)由于機(jī)械接觸點(diǎn)的彈性作用,按鍵在閉合時(shí)不會(huì)馬上接通,在斷開時(shí)也不會(huì)一下斷開。所以在閉合瞬間伴有一連串的抖動(dòng)

12、,抖動(dòng)時(shí)間長(zhǎng)短由按鍵的機(jī)械性及操作人員按鍵動(dòng)作決定,一般為5到20毫秒,按鍵穩(wěn)定閉合時(shí)間的長(zhǎng)短是有操作人員按鍵按壓時(shí)間長(zhǎng)短決定的,一般為零點(diǎn)幾秒至數(shù)秒不等。所以在程序中要用程序進(jìn)行延時(shí)消抖。</p><p>  按鍵原理是單片機(jī)上電后所有的IO口都是高電平,而當(dāng)按鍵按下后是單片機(jī)的IO口接地這樣一相應(yīng)的IO口就變成了低電平,只要通過(guò)單片機(jī)檢測(cè)接鍵盤的哪個(gè)IO口變成低電平就知道哪個(gè)鍵按下了,再通過(guò)相應(yīng)的程序控制顯示

13、時(shí)間達(dá)到修正時(shí)間的目的,本設(shè)計(jì)是當(dāng)按鍵按下時(shí),對(duì)應(yīng)的時(shí)分秒各自加1,使時(shí)間得到調(diào)整保持精確這樣定時(shí)時(shí)間就更加準(zhǔn)確,之所以加這個(gè)顯示電路和控制電路是因?yàn)閱纹瑱C(jī)自身執(zhí)行程序時(shí)要消耗時(shí)間,即便是經(jīng)過(guò)精確的調(diào)試修改延時(shí)等手段這個(gè)時(shí)間誤差總是存在的,隨所短時(shí)間內(nèi)影響不大但長(zhǎng)時(shí)間的工作后日積月累這個(gè)誤差當(dāng)然就不可忽視了。加這個(gè)電路后當(dāng)發(fā)現(xiàn)時(shí)間誤差在秒上時(shí)就可以修正了,讓時(shí)間更加精確,還有當(dāng)長(zhǎng)時(shí)間停電時(shí)備用電池電量耗完,如果沒(méi)這個(gè)電路當(dāng)再次來(lái)電時(shí)內(nèi)部

14、程序復(fù)位這樣定時(shí)就亂了,而加上這的電路后當(dāng)點(diǎn)來(lái)時(shí)就可以人工調(diào)整時(shí)間,時(shí)使用更加方便,定時(shí)更加精確。</p><p><b>  獨(dú)立鍵盤原理圖</b></p><p><b>  2.3繼電器模塊</b></p><p>  本設(shè)計(jì)采用的繼電器是5V繼電器,有電路圖可知當(dāng)通電時(shí)LED2點(diǎn)亮說(shuō)明繼電器模塊電源正常反之則沒(méi)有電

15、,而LED1的作用是當(dāng)開關(guān)三極管導(dǎo)通也就是說(shuō)繼電器工作時(shí)它點(diǎn)亮,而二極管D1的作用是當(dāng)繼電器斷電后,防止繼電器內(nèi)部的電磁感應(yīng)現(xiàn)象所產(chǎn)生的反向電動(dòng)勢(shì),對(duì)發(fā)光極管等造成損害。因?yàn)槠綍r(shí)D1是不導(dǎo)通的而當(dāng)繼電器產(chǎn)生反向電動(dòng)勢(shì)時(shí),產(chǎn)生的電動(dòng)勢(shì)就會(huì)經(jīng)過(guò)二極管形和繼電器本身形成通路,這樣就保護(hù)了整個(gè)電路中的器件。當(dāng)單片機(jī)輸出一個(gè)低電平時(shí)三極管導(dǎo)通,繼電器通電內(nèi)部就產(chǎn)生了磁場(chǎng)把開關(guān)K1通過(guò)磁力吸下使其與3閉合這樣使外部設(shè)備的電路接通達(dá)到了用低電壓控制高

16、壓的的目的。</p><p><b>  3 軟件設(shè)計(jì)</b></p><p><b>  程序如下:</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  

17、uchar shi,shi1,shi2,fen,fen1,fen2,miao,miao1,miao2,num,tt,h,h1,h2,f,f1,f2,m,m1,m2;</p><p>  uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p>  void display();</

18、p><p>  void display1();</p><p>  void keyscan1();</p><p>  sbit s1=P3^0;</p><p>  sbit s2=P3^1;</p><p>  sbit s3=P3^2;</p><p>  sbit s4=P3^3;<

19、;/p><p>  sbit relay=P3^5;</p><p>  void delay(uchar z)</p><p><b>  {</b></p><p>  uchar x,y;</p><p>  for(x=z;x>0;x--)</p><p>  f

20、or(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void init()</p><p><b>  {</b></p><p><b>  shi=0;</b></p><p><b> 

21、 fen=0;</b></p><p><b>  miao=0;</b></p><p><b>  tt=0;</b></p><p>  TMOD=0x01;</p><p>  TH0=(65536-49990)/256</p><p>  TL0=(65

22、536-49990)%256</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  P3=0xff;</b></p>&

23、lt;p><b>  }</b></p><p>  void keyscan()</p><p><b>  { </b></p><p><b>  if(s1==0)</b></p><p><b>  { </b><

24、/p><p>  delay(5) ;</p><p><b>  if(s1==0)</b></p><p><b>  { </b></p><p><b>  TR0=0;</b></p><p><b>  shi++;</b

25、></p><p>  if(shi==24)</p><p><b>  shi=0;</b></p><p>  while(!s1);</p><p><b>  TR0=1;</b></p><p><b>  }</b></p>

26、;<p>  else display();</p><p>  } </p><p><b>  if(s2==0)</b></p><p><b>  { </b></p><p><b>  delay(5);</b></p&

27、gt;<p><b>  if(s2==0)</b></p><p><b>  {</b></p><p><b>  TR0=0;</b></p><p><b>  fen++;</b></p><p>  if(fen==60)<

28、;/p><p><b>  fen=0;</b></p><p>  while(!s2);</p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  else display();</p>

29、<p><b>  }</b></p><p><b>  if(s3==0)</b></p><p><b>  { </b></p><p><b>  delay(5);</b></p><p><b>  if(s3==0)&l

30、t;/b></p><p><b>  {</b></p><p><b>  EA=0;</b></p><p>  TH0=(65536-49990)/256</p><p>  TL0=(65536-49990)%256</p><p><b>  mi

31、ao++;</b></p><p>  if(miao==60)</p><p><b>  miao=0;</b></p><p>  while(!s3);</p><p><b>  EA=1;</b></p><p><b>  }</b&

32、gt;</p><p>  else display();</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><

33、p><b>  init();</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  shi2=shi/10;</p><p>  shi1=shi%10;</p><p>  

34、fen2=fen/10;</p><p>  fen1=fen%10;</p><p>  miao2=miao/10;</p><p>  miao1=miao%10;</p><p>  keyscan();</p><p>  display();</p><p><b>  }

35、</b></p><p><b>  }</b></p><p>  void time() interrupt 1</p><p><b>  { </b></p><p>  TH0=(65536-49990)/256</p><p>  TL0=(65536

36、-49990)%256</p><p><b>  tt++;</b></p><p>  if(tt==20)</p><p><b>  {</b></p><p><b>  tt=0; </b></p><p><b>  miao

37、++;</b></p><p>  if((shi==1)&(fen==1)&(miao==3))</p><p><b>  relay=0;</b></p><p>  if((shi==1)&(fen==1)&(miao==9))</p><p><b>  r

38、elay=1;</b></p><p>  if(miao==60)</p><p><b>  {</b></p><p><b>  miao=0;</b></p><p><b>  fen++;</b></p><p>  if(fe

39、n==60)</p><p><b>  {</b></p><p><b>  fen=0;</b></p><p><b>  shi++;</b></p><p>  if(shi==24)</p><p><b>  shi=0;<

40、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void display()<

41、/p><p><b>  {</b></p><p><b>  P1=0x01;</b></p><p>  P0=table[miao1];</p><p><b>  delay(5);</b></p><p><b>  P0=0xff;&

42、lt;/b></p><p><b>  P1=0x02;</b></p><p>  P0=table[miao2];</p><p><b>  delay(5);</b></p><p><b>  P0=0xff;</b></p><p>

43、<b>  P1=0x04;</b></p><p>  P0=0xbf; //送間隔符</p><p><b>  delay(5);</b></p><p><b>  P0=0xff;</b></p><p><b>  P1=0x08;</b>

44、;</p><p>  P0=table[fen1];</p><p><b>  delay(5);</b></p><p><b>  P0=0xff;</b></p><p><b>  P1=0x10;</b></p><p>  P0=tabl

45、e[fen2];</p><p><b>  delay(5);</b></p><p><b>  P0=0xff;</b></p><p><b>  P1=0x20;</b></p><p>  P0=0xbf; //送間隔符</p><p&g

46、t;<b>  delay(5);</b></p><p><b>  P0=0xff;</b></p><p><b>  P1=0x40;</b></p><p>  P0=table[shi1];</p><p><b>  delay(5);</b>

47、;</p><p><b>  P0=0xff;</b></p><p><b>  P1=0x80;</b></p><p>  P0=table[shi2];</p><p><b>  delay(5);</b></p><p><b>

48、  P0=0xff;</b></p><p><b>  }</b></p><p><b>  4仿真調(diào)試</b></p><p>  本設(shè)計(jì)主要通過(guò)對(duì)定時(shí)時(shí)間進(jìn)行調(diào)試,已達(dá)到精確定時(shí)的目的。仿真工具是Keil uVision3,當(dāng)給定時(shí)器T0分別裝TH0=(65536-50000)/256, TH0=(65

49、536-50000)%256;調(diào)試結(jié)果如下圖:</p><p>  則每分鐘的誤差=0.01289400秒; 每小時(shí)誤差=0.74915800秒;</p><p>  24小時(shí)誤差= 24*0.7491588=17.9798112秒; </p><p>  最終調(diào)試后當(dāng)給TH0=(65536-49983)/256; TL0=(65536-49983)%256

50、;</p><p>  則每分鐘的誤差=0.000113秒; 每小時(shí)誤差=0.031233秒;</p><p>  24小時(shí)誤差=224*0.031233=0.749592秒;</p><p><b>  如下圖所示:</b></p><p><b>  參考文獻(xiàn):</b></p>&

51、lt;p>  李全利,單片機(jī)原理及接口技術(shù)【M】2版。高等教育出版社,2009.</p><p>  孫煥名,趙會(huì)成,王金,51單片機(jī)C程序應(yīng)用實(shí)例詳解【M】。北京航空航天大學(xué)出版社,2011.3</p><p>  趙建領(lǐng),薛圓圓,零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì)【M】。機(jī)械工業(yè)出版社,2009.4</p><p>  郭天祥,新概念51單片機(jī)C語(yǔ)言教程 ——入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論