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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  課程名稱(chēng): 電子時(shí)鐘 </p><p>  班 級(jí): 11電科(2)班 </p><p>  姓 名: </p><p>  學(xué) 號(hào):

2、 </p><p>  指導(dǎo)老師: </p><p><b>  目錄</b></p><p><b>  摘要1</b></p><p><b>  一.設(shè)計(jì)目標(biāo)1</b></p><p><b> 

3、 二.仿真電路圖2</b></p><p>  三. 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2</p><p>  3.1 數(shù)字鐘電路設(shè)計(jì)框圖2</p><p>  3.2系統(tǒng)硬件概述3</p><p>  3.3硬件電路結(jié)構(gòu)的設(shè)計(jì)3</p><p>  3.3.1 單片機(jī)主控制模塊的設(shè)計(jì)3</p>

4、<p>  3.3.2 顯示模塊的設(shè)計(jì)4</p><p>  3.3.3 按鍵模塊的設(shè)計(jì)5</p><p>  四. 系統(tǒng)的軟件設(shè)計(jì)5</p><p><b>  程序流程圖5</b></p><p><b>  程序代碼6</b></p><p>&l

5、t;b>  參考文獻(xiàn)13</b></p><p><b>  摘要</b></p><p>  該課程設(shè)計(jì)為數(shù)字電子鐘的設(shè)計(jì)。以STC89C51為核心,配合液晶顯示器和按鍵為用戶(hù)提供長(zhǎng)期、連續(xù)、可靠、穩(wěn)定的工作環(huán)境。該數(shù)字電子鐘有時(shí)分秒顯示和日期顯示以及具有時(shí)間調(diào)整的功能。系統(tǒng)軟件設(shè)計(jì)包括單片編程,其主要功能是指令發(fā)送以及數(shù)據(jù)的顯示和存儲(chǔ),利用其內(nèi)

6、部定時(shí)器來(lái)T0定時(shí)每50ms中斷1次,中斷20次就是一秒鐘(晶振為12MH),外部模塊還有鍵盤(pán)、LED數(shù)碼管等。系統(tǒng)的硬件資源有:74LS245,按鍵。</p><p>  關(guān)鍵詞: 單片機(jī) 數(shù)碼管 按鍵</p><p><b>  一.設(shè)計(jì)目標(biāo)</b></p><p>  以89C51單片機(jī)控制的時(shí)鐘,在LED數(shù)碼管上顯示當(dāng)前的時(shí)間與日期。&

7、lt;/p><p><b>  具體功能如下:</b></p><p>  用2個(gè)功能鍵操作來(lái)設(shè)置當(dāng)前時(shí)間。功能鍵功能如下。</p><p>  (1)K1——進(jìn)入設(shè)置現(xiàn)在的時(shí)間。</p><p> ?。?)K2——上調(diào)數(shù)據(jù)。</p><p> ?。?)K3——復(fù)位鍵</p><p

8、>  程序執(zhí)行后工作指示燈閃動(dòng),表示程序開(kāi)始執(zhí)行,LED數(shù)碼管顯示“23:59:53;13-11-11”,然后開(kāi)始計(jì)時(shí)。</p><p>  按下K1,進(jìn)入設(shè)置時(shí)間狀態(tài),只有時(shí)顯示在LED數(shù)碼管,按K2進(jìn)行時(shí)間秒的大調(diào)節(jié),然后再按K1,只有分顯示在LED數(shù)碼管,再按K2進(jìn)行分的大調(diào)節(jié),以此類(lèi)推,便可以完成時(shí)間與日期的設(shè)置。</p><p><b>  二.仿真電路圖<

9、/b></p><p>  三. 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)</p><p>  3.1 數(shù)字鐘電路設(shè)計(jì)框圖</p><p>  圖3-1電路設(shè)計(jì)框圖</p><p><b>  3.2系統(tǒng)硬件概述</b></p><p>  該電路是由AT89C51單片機(jī)為控制核心,具有在線(xiàn)編程功能,低功耗,能

10、在5V超低壓工作;時(shí)鐘電路也由AT89C51單片機(jī)提供,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),可以通過(guò)按鍵進(jìn)行時(shí)間設(shè)置,。時(shí)間顯示部分采用LED數(shù)碼管模塊。</p><p>  3.3硬件電路結(jié)構(gòu)的設(shè)計(jì)</p><p>  3.3.1 單片機(jī)主控制模塊的設(shè)計(jì)</p><p>  此次單片機(jī)數(shù)字時(shí)鐘的設(shè)計(jì)采用AT89C51為主控制芯片,并由其定時(shí)器提供時(shí)鐘,利用LE

11、D數(shù)碼管進(jìn)行時(shí)間按顯示。</p><p>  3.3.2 顯示模塊的設(shè)計(jì)</p><p><b>  LED數(shù)碼管</b></p><p>  LED數(shù)碼管實(shí)際上是由七個(gè)發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a,b,c,d,e,f,g,dp來(lái)表示。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看到的

12、60;2個(gè)8數(shù)碼管字樣了。如:顯示一個(gè)“2”字,那么應(yīng)當(dāng)是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED數(shù)碼管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸數(shù)碼管的顯示筆畫(huà)常用一個(gè)發(fā)光二極管組成,而大尺寸的數(shù)碼管由二個(gè)或多個(gè)發(fā)光二極管組成,一般情況下,單個(gè)發(fā)光二極管的管壓降為1.8V左右,電流不超過(guò)30mA。發(fā)光二極管的陽(yáng)極連接到一起連接到電源正極的稱(chēng)為共陽(yáng)數(shù)碼管,發(fā)光二極管的陰極連接到一起連接到電源負(fù)極的稱(chēng)為共陰數(shù)

13、碼管。常用LED數(shù)碼管顯示的數(shù)字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。</p><p>  3.3.3 按鍵模塊的設(shè)計(jì)</p><p>  四. 系統(tǒng)的軟件設(shè)計(jì)</p><p><b>  程序流程圖</b></p><p><b>  程序代碼</b></p

14、><p>  #include<reg52.h> </p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uchar secshi=1,secge=1,minshi=1,minge=1,hourshi=1,hourge=1

15、,dayshi=1,dayge=1,monshi=1,monge=1,yearshi=1,yearge=3;</p><p>  uint num=0,t=0,sec=53,min=59,hour=23,day=11,month=11,year=13; </p><p>  uint lq=2000; </p><p>  uchar flag,flag1;<

16、/p><p>  sbit K1=P3^3;//切換按鍵</p><p>  sbit K2=P3^4;//加一按鍵</p><p>  uchar code table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};//0-9段碼表</p><p><b>  /*函數(shù)

17、聲明*/</b></p><p>  void delay(uchar k ); //延時(shí)子程序</p><p>  void time_pro( ); //時(shí)間處理子程序</p><p>  void display( ); //顯示子程序</p><p>  void display1( );<

18、;/p><p>  void display2();</p><p>  void keyscan( ); //鍵盤(pán)掃描子程序</p><p>  void keyscan1( );</p><p>  /*****************************/</p><p><b

19、>  /*延時(shí)子程序*/</b></p><p>  /****************************/</p><p>  void delay (uint k)</p><p><b>  {</b></p><p><b>  uint j;</b></p&g

20、t;<p>  while((k--)!=0)</p><p><b>  {</b></p><p>  for(j=0;j<125;j++)</p><p><b>  {;}</b></p><p><b>  }</b></p><

21、;p><b>  } </b></p><p>  /**************************/</p><p>  /*時(shí)間處理子程序*/</p><p>  /**************************/</p><p>  void time_pro( void)</p&g

22、t;<p><b>  { </b></p><p>  if(seconde==60) //秒鐘設(shè)為60進(jìn)制</p><p>  { seconde=0;</p><p><b>  minite++;</b></p><p>  if( min

23、ite==60) //分鐘設(shè)為60進(jìn)制</p><p>  { minite=0;</p><p><b>  hour++;</b></p><p>  if(hour==24) //時(shí)鐘設(shè)為24進(jìn)制</p><p><b>  {hour=0;</b

24、></p><p><b>  day++;</b></p><p>  if(month==1)</p><p><b>  {</b></p><p>  if(day==32)</p><p>  {day=1;month++;}}</p><

25、p>  if(month==2)</p><p>  {if(((year+lq)%100!=0&&(year+lq)%4==0)||(year+lq)%400==0)</p><p><b>  {</b></p><p>  if(day==30)</p><p>  {day=1;month+

26、+;} }</p><p>  else if(day==29)</p><p>  {day=1;month++;}</p><p><b>  }</b></p><p>  if(month==3)</p><p><b>  {</b></p><

27、p>  if(day==32)</p><p>  {day=1;month++;}}</p><p>  if(month==4)</p><p><b>  {</b></p><p>  if(day==31)</p><p>  {day=1;month++;}}</p>

28、<p>  if(month==5)</p><p><b>  {</b></p><p>  if(day==32)</p><p>  {day=1;month++;}} </p><p>  if(month==6)</p><p><b>  {</b>

29、;</p><p>  if(day==31)</p><p>  {day=1;month++;}}</p><p>  if(month==7)</p><p><b>  {</b></p><p>  if(day==32)</p><p>  {day=1;mon

30、th++;}}</p><p>  if(month==8)</p><p><b>  {</b></p><p>  if(day==32)</p><p>  {day=1;month++;}}</p><p>  if(month==9)</p><p><b

31、>  {</b></p><p>  if(day==31)</p><p>  {day=1;month++;}}</p><p>  if(month==10)</p><p><b>  {</b></p><p>  if(day==32)</p><

32、p>  {day=1;month++;}}</p><p>  if(month==11)</p><p><b>  {</b></p><p>  if(day==31)</p><p>  {day=1;month++;}}</p><p>  if(month==12)</p&

33、gt;<p><b>  {</b></p><p>  if(day==32)</p><p>  {day=1;month++;}}</p><p>  if(month==13)</p><p>  {month=1;year++;</p><p>  if(year==23)

34、</p><p>  {year=13;}} </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

35、<p>  /*****************************/</p><p>  /* 顯示子程序*/</p><p>  /*****************************/</p><p>  void display(void) </p><p><b>  { </b&

36、gt;</p><p><b>  P2=0x7f;</b></p><p>  P0=dispcode[hour/10]; //顯示小時(shí)的十位</p><p><b>  delay(2);</b></p><p><b>  P2=0xbf;</b

37、></p><p>  P0=(dispcode[(hour%10)]); //顯示小時(shí)的個(gè)位</p><p><b>  delay(2);</b></p><p><b>  P2=0xef;</b></p><p>  P0=dispcode[minite/10];

38、 //顯示分的十位</p><p><b>  delay(2);</b></p><p><b>  P2=0xf7;</b></p><p>  P0=(dispcode[minite%10]); //顯示分的個(gè)位</p><p><b>  dela

39、y(2);</b></p><p><b>  P2=0xfd;</b></p><p>  P0=dispcode[seconde/10]; //顯示秒的十位</p><p><b>  delay(2);</b></p><p><b>  P2=0

40、xfe;</b></p><p>  P0=dispcode[seconde%10]; //顯示秒的個(gè)位</p><p>  delay(2); </p><p><b>  P2=0xdb;</b></p><p>  P0=dispcode[20]; delay(2); <

41、/p><p><b>  }</b></p><p>  void display2(void)</p><p>  {if(a==0){P0=0x00;}</p><p><b>  if(a==1)</b></p><p><b>  {</b><

42、/p><p>  time_pro( ); //時(shí)間處理</p><p>  display( );</p><p><b>  }</b></p><p><b>  if(a==2)</b></p><p>  { if(P1_1==0)

43、 //秒的設(shè)置</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p>  seconde++;</p><p>  i

44、f(seconde==60)</p><p>  {seconde=0; }</p><p><b>  }</b></p><p><b>  }</b></p><p>  time_pro( );//時(shí)間處理</p><p><b>  P2=0xfd;<

45、;/b></p><p>  P0=dispcode[seconde/10]; //顯示秒的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xfe;</b></p><p>  P0=dispcode[seconde%1

46、0]; //顯示秒的個(gè)位</p><p>  delay(4); </p><p><b>  }</b></p><p><b>  if(a==3) </b></p><p>  { if(P1_1==0) //分的設(shè)置&l

47、t;/p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p><b>  minite++;</b></p><p

48、>  if(minite==60)</p><p>  {minite=0;}</p><p><b>  }</b></p><p><b>  } </b></p><p>  time_pro( );</p><p><b>  P2=0xef;<

49、/b></p><p>  P0=dispcode[minite/10]; //顯示分的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xf7;</b></p><p>  P0=(dispcode[minite%1

50、0]); //顯示分的個(gè)位</p><p><b>  delay(4);</b></p><p><b>  }</b></p><p><b>  if(a==4)</b></p><p>  { if(P1_1==0) /

51、/按鍵3小時(shí)的調(diào)整</p><p><b>  { </b></p><p>  delay(300);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p><b>  hour++;</b></p&

52、gt;<p>  if(hour==24)</p><p>  {hour=0; }</p><p><b>  }</b></p><p><b>  }</b></p><p>  time_pro( );</p><p><b>  P2=0x7

53、f;</b></p><p>  P0=dispcode[hour/10]; //顯示小時(shí)的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xbf;</b></p><p>  P0=(dispcode[(

54、hour%10)]); //顯示小時(shí)的個(gè)位</p><p><b>  delay(4);</b></p><p><b>  } </b></p><p><b>  if(a==5)</b></p><p>  {//keyscan1( ); //按

55、鍵掃描</p><p>  time_pro( ); //時(shí)間處理</p><p>  display1( );</p><p><b>  } </b></p><p><b>  if(a==6)</b></p><p>  {if(P1_1==0)

56、 //按鍵1秒的調(diào)整</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p><b>  day++;</b&g

57、t;</p><p>  if(day==32)</p><p><b>  {day=1; }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  time_pro( );</p>

58、<p><b>  P2=0xfd;</b></p><p>  P0=dispcode[day/10]; //顯示秒的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xfe;</b></p><p

59、>  P0=dispcode[day%10]; //顯示秒的個(gè)位</p><p>  delay(4); </p><p><b>  }</b></p><p><b>  if(a==7) </b></p><p>  { if(P1_1==0)

60、 //按鍵2分的調(diào)整</p><p><b>  { </b></p><p>  delay(30);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p><b>  month++;

61、</b></p><p>  if(month==13)</p><p>  {month=1;}</p><p><b>  }</b></p><p><b>  }</b></p><p>  time_pro( );</p><p>

62、;<b>  P2=0xf7;</b></p><p>  P0=dispcode[month/10]; //顯示分的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xfb;</b></p><p>

63、  P0=(dispcode[month%10]); //顯示分的個(gè)位</p><p><b>  delay(4);</b></p><p><b>  }</b></p><p>  if(a==8) </p><p>  { if(P1_1==0)

64、 //按鍵3小時(shí)的調(diào)整</p><p><b>  { </b></p><p>  delay(300);</p><p>  if(P1_1==0)</p><p><b>  {</b></p><p><b>  year++;</b>

65、</p><p>  if(year==24)</p><p>  {year=13; }</p><p><b>  }</b></p><p><b>  }</b></p><p>  time_pro( );</p><p><b>

66、  P2=0xdf;</b></p><p>  P0=dispcode[year/10]; //顯示小時(shí)的十位</p><p><b>  delay(4);</b></p><p><b>  P2=0xef;</b></p><p>  P0=(di

67、spcode[(year%10)]); //顯示小時(shí)的個(gè)位</p><p><b>  delay(4);</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  void display1(void)

68、 </p><p><b>  { </b></p><p><b>  P2=0xdf;</b></p><p>  P0=dispcode[year/10]; //顯示年的十位</p><p><b>  delay(2);</b>

69、;</p><p><b>  P2=0xef;</b></p><p>  P0=(dispcode[(year%10)])|0X80; //顯示小年的個(gè)位</p><p><b>  delay(2);</b></p><p><b>  P2=0xf7;</b&g

70、t;</p><p>  P0=dispcode[month/10]; //顯示月的十位</p><p><b>  delay(2);</b></p><p><b>  P2=0xfb;</b></p><p>  P0=(dispcode[month%10])|0X

71、80; //顯示月的個(gè)位</p><p><b>  delay(2);</b></p><p><b>  P2=0xfd;</b></p><p>  P0=dispcode[day/10]; //顯示天的十位</p><p><b>  dela

72、y(2);</b></p><p><b>  P2=0xfe;</b></p><p>  P0=dispcode[day%10]; //顯示天的個(gè)位</p><p>  delay(2); </p><p><b>  P2=0x7f;</b></p&g

73、t;<p>  P0=dispcode[21];</p><p><b>  delay(2);</b></p><p><b>  P2=0xbf;</b></p><p>  P0=dispcode[22]; delay(2); </p><p><b>  }&l

74、t;/b></p><p>  /*******************************/</p><p>  /*鍵盤(pán)掃描子程序*/</p><p>  /*******************************/</p><p>  void timer0(void) interrupt 1 using 0 /

75、/定時(shí)器0方式1,50ms中斷一次</p><p><b>  {</b></p><p><b>  TH0=0x3c;</b></p><p>  TMOD = 0x11;</p><p><b>  mstcnt++;</b></p><p>  

76、if(mstcnt==20)</p><p><b>  {</b></p><p>  seconde++;</p><p>  mstcnt=0; //注意點(diǎn)。對(duì)計(jì)數(shù)單元的清零十分的重要,本次調(diào)試中就是</p><p>  } //因?yàn)楹雎粤诉@一點(diǎn),給我造成了很大的被動(dòng)。</p

77、><p><b>  }</b></p><p>  /**************************/</p><p><b>  /*主函數(shù)*/</b></p><p>  /**************************/</p><p>  void main

78、(void)</p><p>  { P1=0xff; //初始化p1口,全設(shè)為1 </p><p>  TMOD = 0x11; //time0為定時(shí)器,方式1</p><p>  TH0=0x3c; //預(yù)置計(jì)數(shù)初值</p><p><b>  TL0=

79、0xb0;</b></p><p><b>  EA=1; </b></p><p><b>  ET0=1; </b></p><p><b>  TR0=1; </b></p><p><b>  while (1)</b></p&g

80、t;<p><b>  { </b></p><p>  if(P1_0==0)</p><p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(P1_0==0)</p><p>

81、;<b>  {</b></p><p>  a++;if(a==9)</p><p><b>  a=0;</b></p><p><b>  }</b></p><p>  while(!P1_0);</p><p><b>  delay

82、(5);</b></p><p>  while(!P1_0); }</p><p>  display2( );</p><p><b>  }}</b></p><p><b>  參考文獻(xiàn)</b></p><p>  李群芳 肖看 張士軍,單片微型計(jì)算機(jī)與

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論