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

下載本文檔

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

文檔簡介

1、<p>  第一節(jié) 系統(tǒng)總體方案</p><p><b>  1.1設(shè)計要求</b></p><p>  1)南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運行,主干道每次通行時間都設(shè)為80秒、支干道每次通行間為60秒。</p><p>  2)在綠燈轉(zhuǎn)為紅燈時,要求黃燈先亮3秒鐘,才能變換運行車道;<

2、/p><p>  3)黃燈亮?xí)r,要求每秒閃亮一次。</p><p>  4)東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進(jìn)行顯示(采用計時的方法)。</p><p><b>  1.2設(shè)計任務(wù)</b></p><p>  1)東西、南北車輛交替運行</p><p>  2

3、)綠燈轉(zhuǎn)為紅燈時,黃燈閃亮(間隔3秒)。</p><p>  3)能顯示剩余時間。</p><p>  4)能對交通運行進(jìn)行控制。</p><p>  5)能夠?qū)r間進(jìn)行修改并正常運行。</p><p><b>  1.3 總體設(shè)計</b></p><p><b>  第二節(jié) 硬件設(shè)計

4、</b></p><p><b>  2.1單片機選型</b></p><p><b>  AT89C51</b></p><p><b>  引腳結(jié)構(gòu)圖</b></p><p><b>  2.2 硬件電路圖</b></p>&

5、lt;p><b>  第三節(jié) 軟件設(shè)計</b></p><p><b>  3.1 設(shè)計流程圖</b></p><p>  3.2 緊急中斷流程圖</p><p>  3.3 設(shè)計程序及說明</p><p>  #include<reg51.h> </p><

6、p>  #define uchar unsigned char </p><p>  #define uint unsigned int </p><p>  uchar code table[]={ //共陰極數(shù)碼管碼表1-F </p><p>  0x3f,0x06,0x5b,0x4f, </p><p>  0x66,0x6

7、d,0x7d,0x07, </p><p>  0x7f,0x6f,0x77,0x7c, </p><p>  0x39,0x5e,0x79,0x71, </p><p>  0xC9,0xFF,0x40};//設(shè)置碼,測試碼,不計時碼 </p><p>  void delay(uint x);//延時函數(shù) </p><

8、p>  void display(uchar,uchar,uchar,uchar); //數(shù)碼管顯示函數(shù) </p><p>  void mkeys(); //鍵盤函數(shù) </p><p>  void traffic(); //交通燈函數(shù) </p><p>  uchar num,num1,num2, //1南北 2東西 </p>

9、<p>  shi1,ge1,shi2,ge2, </p><p>  value1,value2,//南北 綠燈時間 黃燈時間 </p><p>  value3,value4,//東西 綠燈時間 黃燈時間 </p><p>  count1,count2,flag1,flag2; //南北標(biāo)記 東西標(biāo)記 </p><p&

10、gt;  void main() </p><p><b>  { </b></p><p>  TMOD=0x01; </p><p>  TH0=(65536-45872)/256; </p><p>  TL0=(65536-45872)%256; </p><p><b> 

11、 EA=1; </b></p><p><b>  ET0=1; </b></p><p><b>  TR0=1; </b></p><p><b>  /*初狀態(tài)*/ </b></p><p>  value1=60; //南北 黃綠燈默認(rèn)值 <

12、/p><p>  value2=3; </p><p>  value3=80; //東西 黃綠燈默認(rèn)值 </p><p>  value4=3; </p><p>  num1=value1; //南北數(shù)碼管先綠燈時間 </p><p>  num2=value2+value1;//東西紅燈時間 </

13、p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p>  P1=0x41;//初始狀態(tài):東西紅燈 南北綠燈 </p><p>  whi

14、le(1){ </p><p>  if(num==20) //定時器1s </p><p><b>  { </b></p><p><b>  num=0; </b></p><p><b>  num1--; </b></p><p>

15、;<b>  num2--; </b></p><p>  traffic(); </p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p>

16、<p>  } mkeys();//掃描按鍵 </p><p>  display(shi1,ge1,shi2,ge2);//調(diào)用數(shù)碼管顯示函數(shù) </p><p><b>  } </b></p><p><b>  } </b></p><p>  void traffic() //

17、紅綠燈主控制程序 </p><p><b>  { </b></p><p>  if(num1==0){ </p><p>  count1++; </p><p>  if(count1==1){ </p><p>  P1=0x42;//東西紅燈 南北黃燈 </p>&l

18、t;p>  num1=value2; </p><p><b>  } </b></p><p>  if(count1==2){ </p><p>  num1=value3+value4;//東西綠燈 南北紅燈 </p><p><b>  P1=0x14; </b></p&g

19、t;<p><b>  } </b></p><p>  if(count1==3){ </p><p>  P1=0x41;// 東西黃燈 南北紅燈 </p><p>  num1=value4; </p><p>  count1=0; </p><p>&

20、lt;b>  } </b></p><p><b>  } </b></p><p>  if(num2==0){ </p><p>  count2++; </p><p>  if(count2==1){ </p><p>  //P1=0x14;//東西綠燈 南北紅燈

21、 </p><p>  num2=value3; </p><p><b>  } </b></p><p>  if(count2==2){ </p><p>  P1=0x24;//東西黃燈 南北紅燈 </p><p>  num2=value4; </p><p&g

22、t;<b>  } </b></p><p>  if(count2==3){ </p><p>  num2=value1+value2; //東西紅燈 南北綠燈 </p><p>  num1=value1; </p><p>  count2=0; </p><p><b>  

23、} </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2) //數(shù)碼管顯示子函數(shù) </p><p><b>

24、;  { </b></p><p>  uchar temp; </p><p><b>  temp=P2; </b></p><p><b>  P2=0xfe; </b></p><p>  P0=table[shi1]; </p><p>  de

25、lay(5); </p><p><b>  P2=0xfd; </b></p><p>  P0=table[ge1]; </p><p>  delay(5); </p><p><b>  P2=0xfb; </b></p><p>  P0=table[shi2];

26、</p><p>  delay(5); </p><p><b>  P2=0xf7; </b></p><p>  P0=table[ge2]; </p><p>  delay(5); </p><p><b>  } </b></p><p

27、>  void delay(uint x)//延時子函數(shù) </p><p><b>  { </b></p><p>  uint i,j; </p><p>  for(i=x;i>0;i--) </p><p>  for(j=110;j>0;j--); </p><p>&

28、lt;b>  } </b></p><p>  void mkeys() //4*4矩陣鍵盤功能子函數(shù) </p><p><b>  { </b></p><p>  uchar temp,key; </p><p>  P3=0xfe;//第一行線 </p><p>&l

29、t;b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0) </p><p><b>  { </b></p><p>  delay(10); </p><p><b>  t

30、emp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0){ </p><p><b>  temp=P3; </b></p><p>  switch(temp) </p><p><b>  {

31、 </b></p><p>  case 0xee: </p><p><b>  key=0; </b></p><p><b>  break; </b></p><p>  case 0xde: </p><p><b>  key=1; <

32、/b></p><p><b>  break; </b></p><p>  case 0xbe: </p><p><b>  key=2; </b></p><p><b>  break; </b></p><p>  case 0x7e:

33、 </p><p><b>  key=3; </b></p><p><b>  break; </b></p><p><b>  } </b></p><p>  while(temp!=0xf0) </p><p><b>  { &l

34、t;/b></p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p><b>  } </b></p><p>  if(key==0) {//按鍵1:暫停 </p><p>  TR0=~TR

35、0; //定時器取反 </p><p>  flag1=~flag1;//南北能夠設(shè)置標(biāo)志 0有效 </p><p>  flag2=~flag2;//東西能夠設(shè)置標(biāo)志 </p><p><b>  } </b></p><p>  if(key==1&&flag1==0){ //按鍵2:設(shè)置時間

36、按鈕 </p><p><b>  TR0=0; </b></p><p>  P1=0x44;//禁止東南西北車輛 全為紅燈 可以設(shè)置 </p><p>  shi1=ge1=shi2=ge2=16; </p><p><b>  } </b></p><p>  if

37、(key==2&&flag2==0){//按鍵3:設(shè)置完成 重啟 </p><p><b>  TR0=1; </b></p><p>  num=0; //定時器 初始化 </p><p>  P1=0x41; //重新開始初狀態(tài) </p><p>  num1=value1; //南北數(shù)碼管

38、先綠燈時間 </p><p>  num2=value2+value1;//東西紅燈時間 </p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p

39、><b>  } </b></p><p>  if(key==3&&P1==0x44){ //按鍵4:測試交通燈各個設(shè)備的好壞 </p><p><b>  P1=0xff; </b></p><p>  delay(1000); </p><p><b>  P1

40、=~P1; </b></p><p>  shi1=ge1=shi2=ge2=17; </p><p><b>  P1=0x44; </b></p><p><b>  } </b></p><p><b>  } </b></p><p>

41、;<b>  } </b></p><p>  P3=0xfd;//第二行線 </p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0) </p><p><b

42、>  { </b></p><p>  delay(10); </p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0){ </p><p><b>  tem

43、p=P3; </b></p><p>  switch(temp) </p><p><b>  { </b></p><p>  case 0xed: </p><p><b>  key=0; </b></p><p><b>  break; &l

44、t;/b></p><p>  case 0xdd: </p><p><b>  key=1; </b></p><p><b>  break; </b></p><p>  case 0xbd: </p><p><b>  key=2; </b&

45、gt;</p><p><b>  break; </b></p><p>  case 0x7d: </p><p><b>  key=3; </b></p><p><b>  break; </b></p><p><b>  } &l

46、t;/b></p><p>  while(temp!=0xf0) </p><p><b>  { </b></p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p><b>  }

47、 </b></p><p>  if(key==0&&P1==0x44){ //按鍵5:設(shè)置南北綠燈時間+ </p><p>  num1=value1; </p><p>  if(num2!=159){ //@@@@保證交通合理,紅燈最大值計時159s,綠燈不再增加 </p><p><b>  n

48、um1++; </b></p><p>  value1=num1; </p><p><b>  } </b></p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  num2=value1+value2;//顯示東西紅燈

49、時間 </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p><b>  } </b></p><p>  if(key==1&&P1==0x44){ //按鍵6:設(shè)置南北黃燈時間+ </p><p>  num1=va

50、lue2; </p><p>  if(num2!=159){ </p><p><b>  num1++; </b></p><p>  value2=num1; </p><p><b>  } </b></p><p>  shi1=num1/10; </p>

51、;<p>  ge1=num1%10; </p><p>  num2=value1+value2;//顯示東西紅燈時間 </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p><b>  } </b></p><p>

52、  if(key==2&&P1==0x44&&value1>3){ //按鍵7:設(shè)置南北綠燈時間- @@@@保證交通合理,綠燈最小值計時3s,綠燈不再減少 </p><p>  num1=value1; </p><p><b>  num1--; </b></p><p>  value1=num1;

53、</p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  num2=value1+value2;//顯示東西紅燈時間 </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p>

54、<b>  } </b></p><p>  if(key==3&&P1==0x44&&value2>3){ //按鍵8:設(shè)置南北黃燈時間- </p><p>  num1=value2; </p><p><b>  num1--; </b></p><

55、p>  value2=num1; </p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p>  num2=value1+value2;//顯示東西紅燈時間 </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; &

56、lt;/p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  P3=0xfb;//第三行線 </p><p><b>  temp=P3; </b>

57、</p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0) </p><p><b>  { </b></p><p>  delay(10); </p><p><b>  temp=P3; </b></p>

58、<p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0){ </p><p><b>  temp=P3; </b></p><p>  switch(temp) </p><p><b>  { </b></p><p

59、>  case 0xeb: </p><p><b>  key=0; </b></p><p><b>  break; </b></p><p>  case 0xdb: </p><p><b>  key=1; </b></p><p>&

60、lt;b>  break; </b></p><p>  case 0xbb: </p><p><b>  key=2; </b></p><p><b>  break; </b></p><p>  case 0x7b: </p><p><b&

61、gt;  key=3; </b></p><p><b>  break; </b></p><p><b>  } </b></p><p>  while(temp!=0xf0) </p><p><b>  { </b></p><p>

62、;<b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p><b>  } </b></p><p>  if(key==0&&P1==0x44){ //按鍵9:設(shè)置東西綠燈時間+ </p><p>  num2=valu

63、e3; </p><p>  if(num1!=159){ </p><p><b>  num2++; </b></p><p>  value3=num2; </p><p><b>  } </b></p><p>  shi2=num2/10; </p>

64、<p>  ge2=num2%10; </p><p>  num1=value3+value4;//顯示南北紅燈時間 </p><p>  shi1=num1/10; </p><p>  ge1=num1%10; </p><p><b>  } </b></p><p>  if

65、(key==1&&P1==0x44){ //按鍵10:設(shè)置東西黃燈時間+ </p><p>  num2=value4; </p><p>  if(num1!=159){ </p><p><b>  num2++; </b></p><p>  value4=num2; </p>&l

66、t;p><b>  } </b></p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p>  num1=value3+value4;//顯示南北紅燈時間 </p><p>  shi1=num1/10; </p><p>  ge1=

67、num1%10; </p><p><b>  } </b></p><p>  if(key==2&&P1==0x44&&value3>3){ //按鍵11:設(shè)置東西綠燈時間- </p><p>  num2=value3; </p><p><b>  num2-

68、-; </b></p><p>  value3=num2; </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p>  num1=value3+value4;//顯示南北紅燈時間 </p><p>  shi1=num1/10; </p&g

69、t;<p>  ge1=num1%10; </p><p><b>  } </b></p><p>  if(key==3&&P1==0x44&&value4>3){ //按鍵12:設(shè)置東西黃燈時間- </p><p>  num2=value4; </p><p>

70、;<b>  num2--; </b></p><p>  value4=num2; </p><p>  shi2=num2/10; </p><p>  ge2=num2%10; </p><p>  num1=value3+value4;//顯示南北紅燈時間 </p><p>  shi1=

71、num1/10; </p><p>  ge1=num1%10; </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  P3=0xf7;//第四行線

72、2個按鍵未用 </p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0) </p><p><b>  { </b></p><p>  delay(10); <

73、;/p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p>  if(temp!=0xf0){ </p><p><b>  temp=P3; </b></p><p>  switch(temp) <

74、;/p><p><b>  { </b></p><p>  case 0xe7: </p><p><b>  key=0; </b></p><p><b>  break; </b></p><p>  case 0xd7: </p>&

75、lt;p><b>  key=1; </b></p><p><b>  break; </b></p><p>  case 0xb7: </p><p><b>  key=2; </b></p><p><b>  break; </b><

76、;/p><p>  case 0x77: </p><p><b>  key=3; </b></p><p><b>  break; </b></p><p><b>  } </b></p><p>  while(temp!=0xf0) </p

77、><p><b>  { </b></p><p><b>  temp=P3; </b></p><p>  temp=temp&0xf0; </p><p><b>  } </b></p><p>  if(key==0&&P1

78、==0x44){ //按鍵13:南北緊急情況:南北綠燈常亮 東西紅燈常亮 </p><p><b>  P1=0x41; </b></p><p>  shi1=ge1=shi2=ge2=18; </p><p><b>  } </b></p><p>  if(key==1&&a

79、mp;P1==0x44){ //按鍵14:東西緊急情況:東西綠燈常亮 南北紅燈常亮 </p><p><b>  P1=0x14; </b></p><p>  shi1=ge1=shi2=ge2=18; </p><p><b>  } </b></p><p>  if(key==2

80、&&P1==0x44){//按鍵15:編程預(yù)留 </p><p><b>  } </b></p><p>  if(key==3&&P1==0x44){//按鍵16:編程預(yù)留 </p><p><b>  } </b></p><p><b>  } &l

81、t;/b></p><p><b>  } </b></p><p><b>  } </b></p><p>  void T0_time() interrupt 1 //定時器T0 中斷子程序 </p><p><b>  { </b></p>&l

82、t;p>  TH0=(65536-45872)/256; </p><p>  TL0=(65536-45872)%256; </p><p>  num++; }</p><p>  3.4 主要函數(shù)說明</p><p>  1) 延時函數(shù):delay(uint x); 主要控制數(shù)碼管動態(tài)顯示,x用來控制延時長短 </p&g

83、t;<p>  2) 十字路口剩余時間數(shù)碼管顯示函數(shù):display(uchar,uchar,uchar,uchar); 給P0東西南北方向數(shù)碼管每段十位、個位送數(shù)據(jù) </p><p>  3) 鍵盤函數(shù):mkeys();交通燈時間、狀態(tài)的設(shè)置 </p><p>  4) 交通南北東西燈紅黃綠工作順序函數(shù):traffic()。交通燈運行規(guī)則控制。</p><

84、;p>  第四節(jié) Proteus軟件仿真</p><p><b>  4.1 正常運行</b></p><p><b>  4.2 黃燈閃爍</b></p><p><b>  4.3通行轉(zhuǎn)換</b></p><p>  4.4 設(shè)置信號燈時間</p>&

85、lt;p><b>  綠燈時間</b></p><p><b>  黃燈時間</b></p><p>  4.5 設(shè)置后啟動運行</p><p>  第五節(jié) 課程設(shè)計體會</p><p><b>  第六節(jié) 參考文獻(xiàn)</b></p><p> 

86、 【1】祁紅巖,馮麗媛,景維鵬《MCS51 單片機實踐與應(yīng)用》(基于C語言)</p><p>  機械工業(yè)出版社,2012</p><p>  【2】唐穎《單片機技術(shù)及C51程序設(shè)計》 電子工業(yè)出版社,2012</p><p>  【3】李建忠《單片機原理及應(yīng)用》 西安電子科技大學(xué)出版社,2012</p><p> 

87、 【4】王章瑞《單片機原理及應(yīng)用課程實驗及課程設(shè)計》</p><p>  【5】戴佳,戴衛(wèi)恒《51單片機C語言應(yīng)用程序設(shè)計實例精講》</p><p><b>  電子工業(yè)出版社</b></p><p>  【6】求是科技《8051系列單片機C程序設(shè)計完全手冊》</p><p><b>  人民郵電出版社<

88、/b></p><p><b>  附錄</b></p><p><b>  1、同組人姓名</b></p><p><b>  2、實驗分工</b></p><p><b>  1)程序設(shè)計:</b></p><p><

溫馨提示

  • 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

提交評論