2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩17頁(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><b>  單片機(jī)原理及應(yīng)用</b></p><p><b>  課程設(shè)計(jì)</b></p><p>  學(xué)院名稱:計(jì)算機(jī)科學(xué)與通信工程學(xué)院</p><p>  專業(yè)班級(jí):通信工程0901</p><p><b>  學(xué)生姓名:</b></p>&

2、lt;p><b>  學(xué)生學(xué)號(hào):</b></p><p><b>  指導(dǎo)教師: </b></p><p><b>  一、 設(shè)計(jì)目的</b></p><p>  1、熟悉鍵盤(pán)的工作原理,掌握HD7279A芯片實(shí)現(xiàn)鍵盤(pán)掃描程序設(shè)計(jì)及調(diào)試方法;</p><p> 

3、 2、了解掌握定時(shí)器的選擇和編程方法,了解定時(shí)器中斷服務(wù)程序設(shè)計(jì)方法;內(nèi)部功能模塊如定時(shí)器/計(jì)數(shù)器、中斷、片內(nèi)外存儲(chǔ)器、I/O口、串行口通訊等;</p><p>  3、進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)和工作原理;</p><p>  4、通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù);</p><p>  5、在課程設(shè)計(jì)過(guò)程中,不斷調(diào)試程序和修改程序,提

4、高了對(duì)單片機(jī)的應(yīng)用能力,分析問(wèn)題和解決問(wèn)題的能力;</p><p>  6、熟悉日歷時(shí)鐘的編程方法。</p><p>  二、設(shè)計(jì)方案(包括文字說(shuō)明,程序框圖,加注釋的核心源程序清單)</p><p><b>  1、功能要求</b></p><p>  1)能在LED顯示器上實(shí)現(xiàn)正常的時(shí)分秒計(jì)時(shí);</p>

5、<p>  2)能通過(guò)鍵盤(pán)輸入當(dāng)前時(shí)間,并從該時(shí)間開(kāi)始計(jì)時(shí);</p><p>  3)有校時(shí) 、校分功能;</p><p>  4)有報(bào)時(shí)功能,通過(guò)指示燈表示;</p><p>  5)有鬧時(shí)功能,鬧時(shí)時(shí)間可以設(shè)定,通過(guò)指示燈表示。</p><p><b>  2、文字說(shuō)明</b></p>&l

6、t;p>  HD7279是一片具有串行接口的,可用于驅(qū)動(dòng)8位共陰極式數(shù)碼管(或64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可連接多達(dá)64鍵的鍵盤(pán)矩陣,單片即可完成LED顯示、鍵盤(pán)接口的全部功能。</p><p>  HD7279內(nèi)部含有譯碼器,可直接接受BCD碼或者16進(jìn)制碼,并同時(shí)具有兩種譯碼方式,此外還有消隱、閃爍、左移、右移、段尋址等多種控制指令。</p><p>  H

7、D7279具有片選信號(hào),可方便地實(shí)現(xiàn)多于8位的顯示或多于64鍵的鍵盤(pán)接口。</p><p>  3、程序框圖: </p><p>  4、核心源程序清單:</p><p>  //******************************test7279*******************************</p><p

8、>  #include "c8051f020.h" </p><p>  #include <intrins.h></p><p>  //和通信10屆的同學(xué)一起上電路分析很愉快。成績(jī)一般吧,90分。還有,我一</p><p>  //直想聲明一點(diǎn),我不是來(lái)重修的,電路分析沒(méi)上過(guò)補(bǔ)修而已。要知道坐在第一</p>&

9、lt;p>  //排被學(xué)弟學(xué)妹們用看重修生的眼光來(lái)看待是多么...如果你在文庫(kù)里找到了另外</p><p>  //一份08屆一班學(xué)號(hào)12號(hào)上傳、財(cái)富值為5分的,最好不要下載,很讓人抓狂。</p><p>  //如果已經(jīng)下載…我也無(wú)話可說(shuō)。</p><p>  sbitHD7279_DAT=P1^7; </p><p>  sbi

10、tHD7279_CLK=P1^6;</p><p>  #define NOSELECT7279 P5 |= 0x80//片選置1,未選中</p><p>  #define SELECT7279 P5 &= ~(0x80) //片選清零,選中</p><p>  #define Set7279DAT HD7279_DAT=1 /

11、/數(shù)據(jù)線置1</p><p>  #define Clr7279DAT HD7279_DAT=0 //數(shù)據(jù)線置0</p><p>  #define Set7279CLK HD7279_CLK=1 //時(shí)鐘高電平</p><p>  #define Clr7279CLK HD7279_CLK=0 //時(shí)鐘低電平</p>&

12、lt;p>  // HD7279測(cè)試/演示程序 </p><p>  //I/O口初始化 </p><p>  void Delay1ms(unsigned char T); //延時(shí)T毫秒</p><p>  void Delay1s(unsigned char T); // 延時(shí)T秒</p>&l

13、t;p>  void Delay1us(unsigned char T); //延時(shí)T微秒</p><p>  //仿真總線時(shí)序發(fā)送一個(gè)字節(jié)</p><p>  void Send7279Byte(unsigned char ch)</p><p><b>  {</b></p><p><b&g

14、t;  char i;</b></p><p>  SELECT7279; //置CS低電平 </p><p>  Delay1us(50); //延時(shí)50μ</p><p>  for (i=0;i<8;i++) </p><p><b>  {</b&g

15、t;</p><p>  if (ch&0x80) //輸出7位到HD7279A的DATA端 1000 0000</p><p><b>  {</b></p><p>  Set7279DAT; //數(shù)據(jù)線置1</p><p><b>  }</b>

16、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  Clr7279DAT; //數(shù)據(jù)線置0</p><p><b>  }</b></p><p>  Set7279CLK;

17、 //置CLK高電平 </p><p>  ch=ch<<1; //待發(fā)數(shù)據(jù)左移 </p><p>  Delay1us(8); //延時(shí)8μ</p><p>  Clr7279CLK; //置CLK低電平 </p><p>  Delay1us(8);

18、 //延時(shí)50μ</p><p><b>  }</b></p><p>  Clr7279DAT; //發(fā)送完畢,DATA端置低,返回 </p><p><b>  }</b></p><p>  //總線時(shí)序接收一個(gè)字節(jié)</p><p> 

19、 unsigned char Receive7279Byte(void)</p><p><b>  {</b></p><p>  unsigned char i,ch;</p><p><b>  ch=0;</b></p><p>  Set7279DAT; //DATA端置

20、為高電平,輸入狀態(tài)</p><p>  Delay1us(50); //延時(shí)50μ</p><p>  for (i=0;i<8;i++)</p><p><b>  {</b></p><p>  Set7279CLK; //置CLK高電平</p><p>  

21、Delay1us(8); //延時(shí)8μ</p><p>  ch=ch<<1; //接收數(shù)據(jù)左移1位</p><p>  if (HD7279_DAT)</p><p>  ch+=1; //接收1位數(shù)據(jù)</p><p>  Clr7279CLK; //置CLK低

22、電平</p><p>  Delay1us(8); //延時(shí)8μ</p><p><b>  }</b></p><p>  Clr7279DAT; //接收完畢,DATA端重新置成低電平(輸出狀態(tài))</p><p>  return ch;</p><p><

23、b>  }</b></p><p>  void BlankLED(unsigned char ch)</p><p><b>  {</b></p><p>  Send7279Byte(0x98); //發(fā)消隱指令 </p><p>  Send7279Byte(ch); //

24、1-顯示 0-消隱</p><p>  NOSELECT7279; //置CS高電平 </p><p><b>  }</b></p><p>  unsigned char code BdSeg[]={</p><p>  0x7e,0x30,0x6d,0x79, // 0 1 2 3 </p&g

25、t;<p>  0x33,0x5b,0x5f,0x70, // 4 5 6 7</p><p>  0x7f,0x7b,0x77,0x1f, // 8 9 a b</p><p>  0x4e,0x3d,0x4f,0x47, // c d e f</p><p>  0x00,0x01}; </p><p><b> 

26、 /*</b></p><p><b>  b6</b></p><p><b>  ---</b></p><p>  b1| b0 |b5</p><p>  ---- small</p><p>  b2| b3 |b4</p>

27、<p><b>  ---- .b7</b></p><p><b>  */</b></p><p>  void DispLED(char *DispBuf,char ShowDot) // ShowDot顯示小數(shù)點(diǎn)位 </p><p><b>  {</b></p>

28、<p>  char i,ch;</p><p>  ShowDot--;</p><p>  for (i=0;i<6;i++)</p><p><b>  {</b></p><p>  ch=DispBuf[i]; //取一字符</p><p&

29、gt;  if ((ch>='a') && (ch<='f')) //將字符轉(zhuǎn)換成數(shù)字</p><p><b>  {</b></p><p>  ch-='a';ch+=0xa;</p><p><b>  }</b></p&

30、gt;<p>  if ((ch>='A') && (ch<='F'))</p><p><b>  {</b></p><p>  ch-='A';ch+=0xa;</p><p><b>  }</b></p>&l

31、t;p>  Send7279Byte(0x90+5-i); //用不譯碼方式顯示第i位</p><p>  if (ch==' ')</p><p>  Send7279Byte(0x00); </p><p><b>  else</b></p><p>  if (ch==

32、'-')</p><p>  Send7279Byte(0x01); </p><p><b>  else </b></p><p><b>  {</b></p><p>  if (ShowDot==i) //查表顯示,同時(shí)點(diǎn)亮小數(shù)點(diǎn)</p>&l

33、t;p>  Send7279Byte(0x80|BdSeg[ch&0x0f]); </p><p><b>  else</b></p><p>  Send7279Byte(BdSeg[ch&0x0f]); </p><p><b>  }</b></p><p><b

34、>  }</b></p><p>  NOSELECT7279; / /置CS高電平 </p><p><b>  }</b></p><p>  //*****************************S-3530A****************************

35、***</p><p>  #include "c8051f020.h" </p><p>  #include <intrins.h></p><p>  #include "test7279.h"</p><p>  Unsigned char Count1

36、ms,set,set1,set2;//set用于標(biāo)識(shí)是否停止計(jì)時(shí),set1用于標(biāo)識(shí)</p><p>  //是否設(shè)置時(shí)間,set 2用于標(biāo)識(shí)是否設(shè)置鬧鐘</p><p>  //按1校時(shí)加1,按2校時(shí)減1,按3校分加1,按4校分減1 static int time[3]={23,59,50};//當(dāng)前時(shí)間<

37、/p><p>  static char disptime[6]={'2','3','5','9','5','0'};//初始時(shí)間</p><p>  int dertime[3]={00,00,01};//存放時(shí)間的中間變量 </p><p>  int nowtime[

38、3]={00,01,00};//鬧鐘時(shí)間</p><p>  void Delay1us(unsigned char us)</p><p><b>  {</b></p><p>  while (us)</p><p><b>  {</b></p><p>  _nop

39、_(); _nop_(); _nop_(); _nop_(); _nop_(); //占用一個(gè)指令周期</p><p><b>  --us;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void SYSCLK_I

40、nit (void)</p><p><b>  {</b></p><p>  int i; // delay counter</p><p>  OSCXCN = 0x67; // start external oscillator with

41、</p><p>  // 22.1184MHz crystal</p><p>  for (i=0; i < 256; i++) ; // Wait for osc. to start up</p><p>  while (!(OSCXCN & 0x80)) ; // Wait for crystal osc

42、. to settle</p><p>  OSCICN = 0x88; // select external oscillator as SYSCLK</p><p>  // source and enable missing clock</p><p>  // detector</p><p> 

43、 //OSCICN = 0x07; </p><p>  //interal 16MHZ</p><p><b>  }</b></p><p>  #define PRT0CF P0MDOUT</p><p>  #define PRT1CF P1MDOUT</p><p>  #defi

44、ne PRT2CF P2MDOUT</p><p>  void PORT_Init (void)</p><p><b>  {</b></p><p>  XBR0 = 0x07; // Enable SMBus, SPI0, and UART0</p><p>  XB

45、R1 = 0x00;</p><p>  XBR2 = 0x44; // Enable crossbar and weak pull-ups</p><p>  EMI0TC = 0x21;</p><p>  P74OUT = 0xFF;</p><p>  P0MDOUT = 0x1

46、5;</p><p>  P1MDOUT |= 0x3C; //P1.2-P1.5推挽輸出</p><p>  P1 &= 0xc3; //P1.2-P1.5=0</p><p><b>  }</b></p><p>  void SPI0_Init (void)</p>

47、;<p><b>  {</b></p><p>  SPI0CFG = 0x07; // data sampled on 1st SCK rising edge</p><p>  // 8-bit data words</p><p>  SPI0CFG|=0xC0;

48、 //CKPOL =1;</p><p>  SPI0CN = 0x03; // Master mode; SPI enabled; flags</p><p>  // cleared</p><p>  SPI0CKR = SYSCLK/2/8000000-1; // SPI clock

49、 <= 8MHz (limited by </p><p>  // EEPROM spec.)</p><p><b>  }</b></p><p>  void Timer0_Init (void)</p><p><b>  {</b></p><p>  CK

50、CON&=0xf7;//12分頻</p><p>  TMOD=0x01; //定時(shí)器0 工作在方式1 </p><p>  TR0 = 0; //啟動(dòng)定時(shí)器</p><p>  Count1ms=40; // STOP Timer0</p><p>  TH0 = 0x9e; </p><p>

51、  TL0 = 0x58;</p><p>  TR0 = 1; // START Timer0</p><p>  IE|= 0x2; //srart interrupt</p><p><b>  }</b></p><p>  char GetKeyValue(void)</p><p

52、><b>  {</b></p><p>  char KeyValue;</p><p>  if (CPT1CN&0x40) return -1; //無(wú)鍵按下</p><p>  Send7279Byte(0x15); //發(fā)送鍵盤(pán)指令 0001 0101</p>

53、<p>  KeyValue=Receive7279Byte();</p><p>  NOSELECT7279; //置CS高電平 </p><p>  return KeyValue; </p><p><b>  }</b></p><p>  void Wai

54、tKeyOff(void) //等待按鍵釋放</p><p><b>  {</b></p><p>  while (!(CPT1CN&0x40)); </p><p><b>  }</b></p><p>  void inputnum(void)

55、 //i=5開(kāi)始,輸入數(shù)字顯示disptime[5-i] i=5--0</p><p>  { //賦給dertime[j]</p><p>  char j,KeyValue,i;</p><p><b>  i=5;</b></p><p&g

56、t;<b>  while(1)</b></p><p><b>  {</b></p><p>  KeyValue=GetKeyValue();</p><p>  WaitKeyOff();</p><p>  if(((KeyValue%16)>=0) && ((Key

57、Value%16)<=9)) //i=5 4 3 2 1 0</p><p><b>  {</b></p><p>  disptime[5-i]=KeyValue;</p><p>  if(((disptime[0]<=1) || ((disptime[0]==2) && (disptime[1]<4

58、))) && (disptime[2]<6) && (disptime[4]<6) )</p><p>  //符合數(shù)字時(shí)鐘的實(shí)際意義</p><p><b>  { </b></p><p>  Send7279Byte(0xC8+i); </p><p>  Send

59、7279Byte(KeyValue);</p><p>  NOSELECT7279; </p><p><b>  i--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

60、 if(i<0) break;</p><p><b>  }</b></p><p>  for (j=0;j<3;j++) //將顯示的時(shí)間賦值給存放時(shí)間的變量</p><p><b>  {</b></p><p>  dertime[j]=disptime[2*j]*10+

61、disptime[2*j+1];</p><p><b>  }</b></p><p><b>  if(set1)</b></p><p><b>  {</b></p><p>  set1=!set1;// 設(shè)置時(shí)間后復(fù)位</p><p><

62、;b>  }</b></p><p><b>  if(set2)</b></p><p><b>  {</b></p><p>  set2=!set2;// 設(shè)置鬧鐘后復(fù)位</p><p><b>  }</b></p><p>

63、<b>  }</b></p><p>  void FlashLED(unsigned char No)</p><p><b>  {</b></p><p><b>  char i;</b></p><p>  Send7279Byte(0x88);//發(fā)閃爍指令 &

64、lt;/p><p><b>  i=0x1;</b></p><p>  while (No)</p><p><b>  {</b></p><p><b>  i=i<<1;</b></p><p><b>  No--;</

65、b></p><p><b>  }</b></p><p>  Send7279Byte(~i); //1閃爍</p><p>  NOSELECT7279; //置CS高電平 </p><p><b>  }</b></p><p>  //***ma

66、in函數(shù)***</p><p>  void main(void)</p><p><b>  {</b></p><p>  char j,KeyValue;</p><p>  WDTCN = 0xde;</p><p>  WDTCN = 0xad; //關(guān)看門狗<

67、/p><p>  SYSCLK_Init (); //初始化時(shí)鐘</p><p>  Timer0_Init();//初始化定時(shí)器</p><p>  PORT_Init (); //初始化IO口</p><p>  SPI0_Init (); //初始化SPI0</p>

68、<p>  CPT1CN|=0x80;//使能比較器1</p><p>  REF0CN = 0x03; //使能片內(nèi)參考電壓</p><p>  DAC0CN |= 0x80;//使能DAC0</p><p>  DAC0H=0;DAC0L=0;</p><p>  EA=1;//開(kāi)中斷</

69、p><p>  Delay1us(25000);//等待25ms復(fù)位時(shí)間 </p><p>  Send7279Byte(0xA4); //發(fā)復(fù)位指令 </p><p>  NOSELECT7279; </p><p>  DispLED(disptime,0); //顯示初始時(shí)間</p><p&g

70、t;  while(1) //見(jiàn)流程圖</p><p><b>  {</b></p><p>  KeyValue=GetKeyValue();</p><p>  WaitKeyOff();</p><p>  if((KeyValue%16)==0x0f)</p><

71、;p><b>  {</b></p><p><b>  set=!set;</b></p><p><b>  }</b></p><p>  if(set) //啟停*****</p><p><b>  {</b></p>

72、<p>  if((KeyValue%16)==0x0e)</p><p><b>  {</b></p><p>  set1=!set1;// 設(shè)置時(shí)間</p><p><b>  }</b></p><p>  if((KeyValue%16)==0x0d)</p>&

73、lt;p><b>  {</b></p><p>  set2=!set2;// 設(shè)置鬧鐘</p><p><b>  }</b></p><p>  if(set1)//設(shè)置時(shí)間**********</p><p><b>  {</b></p><

74、p>  DispLED("------",0);</p><p>  inputnum();</p><p>  for (j=0;j<3;j++) //int-char</p><p><b>  {</b></p><p>  time[j]=dertime[j];</p&

75、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  if(set2)// 設(shè)置鬧鐘********</p><p>  {DispLED("------",0);</p><p>  inputnum();</p

76、><p>  for (j=0;j<3;j++) //int-char</p><p><b>  {</b></p><p>  nowtime[j]=dertime[j];//nowtime[j]鬧鐘時(shí)間</p><p><b>  }</b></p><p>&

77、lt;b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  switch (KeyValue%16)//校時(shí)</p><p>

78、;<b>  {</b></p><p>  case 1:time[0]=(time[0]+1+24)%24;break;</p><p>  case 2:time[0]=(time[0]-1+24)%24;break;</p><p>  case 3:time[1]=(time[1]+1+60)%60;break;</p>

79、<p>  case 4:time[1]=(time[1]-1+60)%60;break;</p><p>  case 0xd:FlashLED(8);break;//暫停閃爍</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }

80、</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Timer0_ISR (void) interrupt 1 </p><p><b>  {</b></p><p>&l

81、t;b>  int i;</b></p><p>  TH0 = 0x9e; </p><p>  TL0 = 0x58;</p><p>  if (set==1)</p><p><b>  return; </b></p><p>  Count1ms--;// u

82、nsigned char Count1ms會(huì)小于0,因?yàn)闊o(wú)符號(hào)會(huì)溢出,計(jì)數(shù)次數(shù)變大所以延遲大。</p><p>  if (Count1ms==0)//秒</p><p><b>  {</b></p><p>  Count1ms=40;</p><p>  time[2]=time[2]+1;</p>

83、<p>  if((time[1]==59) && (time[2]==55))//報(bào)時(shí)功能,接近整點(diǎn)時(shí)閃爍***</p><p>  Send7279Byte(0xbf);</p><p>  //鬧鐘功能 ***********</p><p>  if((time[0]==nowtime[0])&&(time[1]=

84、=nowtime[1])&&(time[2]==nowtime[2]))</p><p>  Send7279Byte(0xbf);</p><p>  if(((time[1]*60+time[2]-nowtime[1]*60-nowtime[2])>10)&&(time[0]==nowtime[0]))</p><p>  

85、FlashLED(8);</p><p>  if (time[2]>=60) //分</p><p><b>  {</b></p><p>  time[2]=0;</p><p>  time[1]=time[1]+1;</p><p>  if (time[1]>=60

86、) // 時(shí)</p><p><b>  {</b></p><p>  time[1]=0;</p><p>  time[0]=time[0]+1;</p><p>  if((time[1]==00) && (time[2]==00))</p><p>  FlashLED

87、(8);</p><p>  if (time[0]>=24) </p><p><b>  {</b></p><p>  time[0]=0;</p><p><b>  }</b></p><p><b>  }</b></p>

88、;<p><b>  }</b></p><p>  if (set!=1)</p><p><b>  {</b></p><p>  for (i=0;i<3;i++) //將time里面的數(shù)字拆開(kāi)放在disptime里</p><p><b>  {<

89、/b></p><p>  disptime[2*i]=time[i]/10;</p><p>  disptime[2*i+1]=time[i]%10;</p><p><b>  }</b></p><p>  DispLED(disptime,0); //顯示時(shí)間************</p&g

90、t;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  三、調(diào)試過(guò)程(調(diào)試中出現(xiàn)的問(wèn)題、解決的方法)</p><p>  問(wèn)題1:只能通過(guò)修改程序里面的int nowtime[3]={

91、00,01,01};改變鬧鐘時(shí)間。</p><p>  通過(guò)添加程序模塊if(set2)// 設(shè)置鬧鐘********</p><p>  {DispLED("------",0);</p><p>  inputnum();</p><p>  for (j=0;j<3;j++) //int-char<

92、;/p><p><b>  {</b></p><p>  nowtime[j]=dertime[j];//nowtime[j]鬧鐘時(shí)間</p><p><b>  }</b></p><p><b>  }</b></p><p>  可以通過(guò)鍵盤(pán)修改鬧鐘

93、時(shí)間。</p><p>  問(wèn)題2:數(shù)組類型不匹配問(wèn)題</p><p>  static int time[3]={23,59,50};</p><p>  static char disptime[6]={'2','3','5','9','5','0'};</p&

94、gt;<p>  int dertime[3]={00,00,01};</p><p>  通過(guò)程序語(yǔ)句disptime[2*i]=time[i]/10;</p><p>  disptime[2*i+1]=time[i]%10;拆分</p><p>  for (j=0;j<3;j++) //int-char</p><

95、;p><b>  {</b></p><p>  dertime[j]=disptime[2*j]*10+disptime[2*j+1];</p><p><b>  }整合</b></p><p><b>  解決。</b></p><p>  問(wèn)題3:如何實(shí)現(xiàn)數(shù)字時(shí)鐘

96、1s跳一次</p><p>  首先選定定時(shí)器T0,工作在方式1 ,12分頻。計(jì)算初值9e58H,使LED閃爍周期為25000μs,循環(huán)40次,達(dá)到工作頻率為1Hz。CKCON&=0xf7;//12分頻</p><p>  TMOD=0x01; //定時(shí)器0 工作在方式1 </p><p>  TR0 = 0; //啟動(dòng)定時(shí)器</p>

97、<p>  Count1ms=40; // STOP Timer0</p><p>  TH0 = 0x9e; </p><p>  TL0 = 0x58;</p><p>  問(wèn)題4:不能反復(fù)定時(shí)或設(shè)定鬧鈴,只能設(shè)置一次。</p><p>  要對(duì)set1,set2進(jìn)行復(fù)位操作。</p><p>&l

98、t;b>  if(set1)</b></p><p><b>  {</b></p><p>  set1=!set1;// 設(shè)置時(shí)間后復(fù)位</p><p><b>  }</b></p><p><b>  if(set2)</b></p>&

99、lt;p><b>  {</b></p><p>  set2=!set2;// 設(shè)置鬧鐘后復(fù)位</p><p><b>  }</b></p><p>  問(wèn)題5:對(duì)鍵盤(pán)按鍵輸入的數(shù)值進(jìn)行軟件限定</p><p><b>  解決方案:</b></p>&

100、lt;p>  if(((disptime[0]<=1) || ((disptime[0]==2) && (disptime[1]<4))) && (disptime[2]<6) && (disptime[4]<6) ) //符合數(shù)字時(shí)鐘的實(shí)際意義</p><p>  問(wèn)題6:如何實(shí)現(xiàn)在校時(shí)功能中,小時(shí)位置00與23、分鐘位置00與59的

101、互相轉(zhuǎn)換。</p><p><b>  解決方案:</b></p><p>  case 1:time[0]=(time[0]+1+24)%24;break;</p><p>  case 2:time[0]=(time[0]-1+24)%24;break;</p><p>  case 3:time[1]=(time[

102、1]+1+60)%60;break;</p><p>  case 4:time[1]=(time[1]-1+60)%60;break;</p><p>  四、調(diào)試結(jié)論(有無(wú)達(dá)到設(shè)計(jì)要求等)</p><p>  1、程序從23:59:50開(kāi)始運(yùn)行,23:59:55開(kāi)始閃爍,00:00:00時(shí)刻結(jié)束。設(shè)置初始定時(shí)時(shí)間為00:01:01,到這個(gè)時(shí)刻閃爍10秒后停止閃爍

103、。</p><p>  2、按f鍵,可控制時(shí)鐘的停止和開(kāi)始;</p><p>  3、先按f鍵然后按e鍵,可調(diào)整時(shí)鐘的時(shí)間;</p><p>  4、先按f鍵然后按d鍵,可調(diào)整鬧鐘的時(shí)間;</p><p>  5、按1鍵可使時(shí)鐘+1;按2鍵可使時(shí)鐘-1;</p><p>  6、按3鍵可使分鐘+1;按4鍵可使分鐘-1;

104、</p><p><b>  五、經(jīng)驗(yàn)總結(jié)</b></p><p>  我在課程設(shè)計(jì)一開(kāi)始就很快地定下了第四個(gè)課題日歷時(shí)鐘與鍵盤(pán)顯示程序設(shè)計(jì),以為會(huì)很簡(jiǎn)單。但第一次課設(shè)我就意識(shí)到了這種想法有多么可笑。這個(gè)課題比想象中要難很多。絕大多數(shù)人選擇選擇點(diǎn)陣式液晶顯示屏的顯示程序設(shè)計(jì),身為少數(shù)派的自己幾乎沒(méi)有可以一起探討一起研究的同伴。也曾經(jīng)想過(guò)要不要換大眾課題。最終還是放棄了

105、這種想法。路漫漫其修遠(yuǎn)兮,吾將上下而求索。</p><p>  雖然這次的課程設(shè)計(jì)算起來(lái)在實(shí)驗(yàn)室的時(shí)間只有四天,但在這四天學(xué)到了不少東西。平時(shí)上課很多含糊的知識(shí)通過(guò)這次課程設(shè)計(jì)中有點(diǎn)明白了。一開(kāi)始對(duì)代碼修改幾乎毫無(wú)頭緒,通過(guò)幾次實(shí)驗(yàn)的努力與思考,最終能比較熟練的在實(shí)驗(yàn)平臺(tái)上進(jìn)行操作了。</p><p>  要自己熟練地掌握一個(gè)軟件,唯有將更多的功夫得花在課下。只有不停的探索,不住的磨練,才

溫馨提示

  • 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)論