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

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)字開發(fā)與實(shí)踐</b></p><p><b>  課</b></p><p><b>  程</b></p><p><b>  設(shè)</b></p><p><b>  計(jì)</b></p>

2、<p>  題目: 用DS1302與LCD1602 </p><p>  設(shè)計(jì)可調(diào)式電子日歷時鐘 </p><p>  班級: </p><p>  姓名: </p>

3、;<p>  學(xué)號: </p><p>  學(xué)院: </p><p>  二O一二年 六 月 五 日</p><p>  用DS1302與LCD1602設(shè)計(jì)</p><p>  

4、的可調(diào)式電子日歷時鐘</p><p><b>  一、總體設(shè)計(jì)</b></p><p><b>  1.1、設(shè)計(jì)目的</b></p><p>  為鞏固所學(xué)的單片機(jī)知識,把所學(xué)理論運(yùn)用到實(shí)踐中,用LCD1602與DS1302 設(shè)計(jì)可調(diào)式電子日歷時鐘。 </p><p><b>  1.2、

5、設(shè)計(jì)要求</b></p><p> ?。?)顯示:年、月、日、時、分、秒和星期;</p><p> ?。?)設(shè)置年、月、日、時、分、秒和星期的初始狀態(tài);</p><p>  (3)能夠用4個按鍵調(diào)整日歷時鐘的年、月、日、時、分、秒和星期 ;

6、 </p><p>  完成可調(diào)式電子日歷時鐘的硬件和軟件的設(shè)計(jì),包括單片機(jī)的相關(guān)內(nèi)容;日歷時鐘模塊的設(shè)計(jì),液晶顯示模塊的設(shè)計(jì),按鍵模塊的設(shè)計(jì)??刂瞥绦虻木帉懙?。</p><p>  備注:本程序另外添加了每到上午8:10和下午2:10的鬧鐘提醒功能。</p><p>  1.3、 系統(tǒng)基本方案選擇和論證</p><

7、;p>  1.3.1、單片機(jī)芯片的選擇方案</p><p><b>  方案一: </b></p><p>  采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容。</p><p><b>  方案二:</b></

8、p><p>  采用STC12C5A60S2系列單片機(jī)是宏晶科技生產(chǎn)的單時鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對電機(jī)控制,強(qiáng)干擾場合。但造價較高。</p><p>  1.3.2 、顯示模塊選擇方案和論證:<

9、;/p><p><b>  方案一:</b></p><p>  采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用顯示數(shù)字顯得太浪費(fèi),且價格也相對較高。所以不用此種作為顯示。</p><p><b>  方案二:</b></p><p>  采用LED數(shù)碼管動

10、態(tài)掃描,雖然LED數(shù)碼管價格適中,但要顯示多個數(shù)字所需要的個數(shù)偏多,功耗較大,顯示出來的只是拼音,而不是漢字。所以也不用此種作為顯示。</p><p><b>  方案三:</b></p><p>  采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量字符,且視覺效果較好,外形美觀。LCD1602可實(shí)現(xiàn)顯示2行十六個字符。</p><p&g

11、t;  1.3.3、時鐘芯片的選擇方案和論證:</p><p><b>  方案一:</b></p><p>  直接采用單片機(jī)定時計(jì)數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時間誤差較大。所以不采用此方案。</p><p><b>  方案二:</b&g

12、t;</p><p>  采用DS1302時鐘芯片實(shí)現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、星期、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,31*8位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓范圍為2.5V~5.5V,2.5V時耗電小于300nA。</p><p>  1.3.4、 電路設(shè)計(jì)最終方案決定</p><p>  綜上各方案所述,對

13、此次作品的方案選定:采用80C51作為主控制系統(tǒng); DS1302提供時鐘;LCD1602液晶帶漢字庫顯示屏作為顯示部分。</p><p><b>  二、硬件設(shè)計(jì)</b></p><p>  2.1、電路設(shè)計(jì)模塊圖如圖2-1所示</p><p><b>  圖 2-1</b></p><p>  2

14、.2、系統(tǒng)總體設(shè)計(jì)原理圖</p><p>  2.3、 要求用proteus仿真軟件仿真并抓圖。</p><p><b>  三、軟件設(shè)計(jì)</b></p><p>  3.1、畫出各個函數(shù)流程圖。</p><p>  3.1.1、DS1302實(shí)時控制芯片的流程圖如圖3-1</p><p><

15、b>  圖3-1</b></p><p>  3.1.2、LCD1602液晶顯示控制流程圖如圖3-2</p><p><b>  圖 3-2</b></p><p>  3.1.3、鬧鐘提醒控制流程如圖3-3</p><p><b>  如圖3-3 </b></p>

16、<p>  3.1.4、調(diào)時函數(shù)控制流程如圖3-4</p><p><b>  圖3-3</b></p><p>  3.2、寫出程序代碼。</p><p>  /**************DS1302及1602時鐘設(shè)計(jì) **********/</p><p>  #include <reg52.h&g

17、t;</p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define SECOND 0x81</p><p>  #def

18、ine MINUTE 0x83</p><p>  #define HOUR 0x85</p><p>  sbit rs=P2^0;</p><p>  sbit rw=P2^1;</p><p>  sbit ep=P2^2;</p><p>  sbit DS1302_IO= P1^0; </p&g

19、t;<p>  sbit DS1302_SCLK = P1^1; </p><p>  sbit DS1302_RST = P1^2; </p><p>  sbit M=P3^1; //選擇</p><p>  sbit U=P3^2; // 加</p><p>  sbit D=P3^3;

20、// 減</p><p>  sbit W=P3^4;//確定</p><p>  sbit SPK=P3^7; //蜂鳴器</p><p>  uchar sel=0;</p><p>  uchar code DIS1[]={"10 ji ying "};</p><p>  uch

21、ar code DIS2[]={"ke cheng she ji"};</p><p>  /////////////////////////延時////////////////////////////////</p><p>  void delay(uint ms)</p><p><b>  {</b></p&g

22、t;<p>  unsigned int a,b;</p><p>  for(a=0;a<ms;a++)</p><p>  for(b=0;b<124;b++); </p><p><b>  } </b></p><p>  //////////////////////

23、//////////////////////////////////////</p><p>  /***************DS1302驅(qū)動************************/ </p><p>  //////////////////////////////////////////////////////////// </p>

24、<p>  void DS1302_Write(uchar D)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b>&

25、lt;/p><p>  DS1302_IO =D&0x01;</p><p>  DS1302_SCLK=1;</p><p>  DS1302_SCLK=0;</p><p>  D=D>>1;</p><p><b>  }</b></p><p&

26、gt;<b>  }</b></p><p>  uchar DS1302_Read()</p><p><b>  {</b></p><p>  uchar TempDat=0,i;</p><p>  for(i=0;i<8;i++)</p><p>  {Te

27、mpDat>>=1; </p><p>  if(DS1302_IO) TempDat=TempDat|0x80;</p><p>  DS1302_SCLK=1;</p><p>  DS1302_SCLK=0;</p><p><b>  }</b></p><p>  ret

28、urn TempDat;</p><p><b>  }</b></p><p>  void WDS1302(uchar ucAddr, uchar ucDat)</p><p><b>  {</b></p><p>  DS1302_RST = 0;</p><p>

29、  DS1302_SCLK = 0;</p><p>  DS1302_RST = 1;</p><p>  DS1302_Write(ucAddr); </p><p>  DS1302_Write(ucDat); </p><p>  DS1302_SCLK = 1;</p><p>  DS13

30、02_RST = 0;</p><p><b>  } </b></p><p>  uchar RDS1302(uchar ucAddr)</p><p><b>  {</b></p><p>  uchar ucDat;</p><p>  DS1302_RST = 0

31、;</p><p>  DS1302_SCLK = 0;</p><p>  DS1302_RST = 1;</p><p>  DS1302_Write(ucAddr); </p><p>  ucDat=DS1302_Read(); </p><p>  DS1302_SCLK = 1;&l

32、t;/p><p>  DS1302_RST = 0;</p><p>  return ucDat;</p><p><b>  }</b></p><p>  /////////////////DS1302的初始狀態(tài)的時間設(shè)定/////////////////////</p><p>  void

33、init_1302() </p><p><b>  { </b></p><p>  WDS1302(0x8e,0x00);//開保護(hù)寄存器 </p><p>  WDS1302(0x80,0x50);//秒 </p><p>  WDS1302(0x82,0x01);//分 </p><p>

34、  WDS1302(0x84,0x14);//時 </p><p>  WDS1302(0x8A,0x03);//星期 </p><p>  WDS1302(0x86,0x06);//日 </p><p>  WDS1302(0x88,0x06);//月 </p><p>  WDS1302(0x8C,0x12);//年 </p>

35、<p>  WDS1302(0x90,0xab);//卷電流充電 </p><p>  WDS1302(0x8e,0x80);//關(guān)保護(hù)寄存器 </p><p><b>  } </b></p><p>  /************************1602驅(qū)動************************/<

36、/p><p>  bit lcd_bz()</p><p><b>  { </b></p><p>  bit result; </p><p><b>  rs = 0; </b></p><p><b>  rw = 1; </b></p>

37、<p><b>  ep = 1; </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b&

38、gt;  _nop_(); </b></p><p>  result = (bit)(P0 & 0x80); </p><p><b>  ep = 0; </b></p><p>  return result; </p><p><b>  } </b></p>

39、<p>  //////////////////////////////////////////////////////// </p><p>  void lcd_wcmd(uchar cmd) </p><p><b>  { </b></p><p>  while(lcd_bz()); </p><p&

40、gt;<b>  rs = 0; </b></p><p><b>  rw = 0; </b></p><p><b>  ep = 0; </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_

41、(); </b></p><p>  P0 = cmd; </p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p>

42、;<b>  _nop_(); </b></p><p><b>  ep = 1; </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_

43、(); </b></p><p><b>  _nop_(); </b></p><p><b>  ep= 0; </b></p><p><b>  } </b></p><p>  ///////////////////////////////////////

44、//////////////////</p><p>  void lcd_pos(unsigned char pos) </p><p><b>  { </b></p><p>  lcd_wcmd(pos | 0x80); </p><p><b>  } </b></p>&l

45、t;p>  /////////////////////////////////////////////////////////</p><p>  void lcd_wdat(unsigned char dat) </p><p><b>  { </b></p><p>  while(lcd_bz()); </p>&l

46、t;p><b>  rs = 1; </b></p><p><b>  rw = 0; </b></p><p><b>  ep = 0; </b></p><p>  P0 = dat; </p><p><b>  _nop_(); </b>

47、</p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  ep = 1; </b></p><p

48、><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  _nop_(); </b></p><p><b>  e

49、p = 0; </b></p><p><b>  } </b></p><p>  //////////////////////////////////////////////////////////</p><p>  void lcd_init() </p><p><b>  { &l

50、t;/b></p><p>  lcd_wcmd(0x38); </p><p>  delay(1); </p><p>  lcd_wcmd(0x0c); </p><p>  delay(1); </p><p>  lcd_wcmd(0x06); </p><p>  delay(

51、1); </p><p>  lcd_wcmd(0x01); </p><p>  delay(1); </p><p><b>  }</b></p><p>  /////////////////////////////////////////////////////////</p><p>

52、;  /*********************調(diào)時函數(shù)*************************/</p><p>  ///////////////////////////////////////////////////////// </p><p>  void set_time()</p><p><b>  { </b>&l

53、t;/p><p>  signed char address,item;</p><p>  signed char max,mini;</p><p><b>  if(M==0)</b></p><p><b>  {</b></p><p><b>  sel+

54、+; </b></p><p>  delay(300);</p><p>  //if(sel==7) sel=0;</p><p>  if(sel==2) {address=0x82; max=59;mini=0; } //分</p><p>  if(sel==1) {address=0x84; max=23;m

55、ini=0; } //時</p><p>  if(sel==6) {address=0x8c; max=99;mini=9;} //年</p><p>  if(sel==4) {address=0x88; max=12;mini=1; } //月</p><p>  if(sel==5) {address=0x86; max=31;mini=1;

56、 } //日</p><p>  if(sel==3) {address=0x8A; max=07;mini=1;} //星期</p><p><b>  M=1; </b></p><p><b>  }</b></p><p>  item=((RDS1302(address+

57、1))/16)*10 + (RDS1302(address+1))%16;</p><p>  if(U == 0)</p><p><b>  {</b></p><p>  delay(200);</p><p><b>  U=1;</b></p><p><b&

58、gt;  item++; </b></p><p><b>  }</b></p><p>  if(D == 0)</p><p><b>  {</b></p><p>  delay(200);</p><p><b>  D=1;</b&

59、gt;</p><p><b>  item--; </b></p><p><b>  }</b></p><p>  if(W == 0)</p><p><b>  {</b></p><p>  delay(200);</p>&l

60、t;p><b>  sel=0;</b></p><p><b>  W=1;</b></p><p><b>  }</b></p><p>  if(item>max) item=mini;</p><p>  if(item<mini) item=max

61、; </p><p>  WDS1302(0x8e,0x00);//允許寫操作</p><p>  WDS1302(address,(item/10)*16+item%10); //寫入DS1302 //轉(zhuǎn)成BCD碼</p><p>  WDS1302(0x8e,0x80);//寫保護(hù),禁止寫操作 </p><p><

62、;b>  }</b></p><p>  /////////////////////////////////////////////////////////</p><p>  /*********************顯示子函數(shù)************************/</p><p>  ///////////////////////

63、//////////////////////////////////</p><p>  void lcdshow_u(uchar i,uchar y)</p><p><b>  {</b></p><p>  lcd_wcmd(0x80+i);</p><p>  lcd_wdat(y);</p>&l

64、t;p><b>  }</b></p><p>  void lcdshow_d(uchar i,uchar y)</p><p><b>  {</b></p><p>  lcd_wcmd(0xC0+i);</p><p>  lcd_wdat(y);</p><p&g

65、t;<b>  }</b></p><p>  /*******************顯示函數(shù)****************************/</p><p>  void display(void)</p><p><b>  {</b></p><p>  uchar x,y;&l

66、t;/p><p>  x=RDS1302(HOUR);//時</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_u(6,0x30+x);</p><p>  y=y&0x0f;lcdshow_u(7,0x30+y);</p><p&

67、gt;  lcdshow_u(8,':');</p><p>  x=RDS1302(MINUTE);//分</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_u(9,0x30+x);</p><p>  y=y&0x0f;lcds

68、how_u(0x0a,0x30+y);</p><p>  lcdshow_u(0x0b,':');</p><p>  x=RDS1302(SECOND);//秒</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_u(0x0c,0x30+x

69、);</p><p>  y=y&0x0f;lcdshow_u(0x0d,0x30+y);</p><p>  x=RDS1302(0x8b);</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_u(0x0e,0x30+x);</p>

70、;<p>  y=y&0x0f; lcdshow_u(0x0f,0x30+y);</p><p>  x=RDS1302(0x8d);</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_d(8,0x30+x);</p><p>  

71、y=y&0x0f;lcdshow_d(9,0x30+y);</p><p>  lcdshow_d(0x0a,'-');</p><p>  x=RDS1302(0x89);</p><p><b>  y=x;</b></p><p>  x=x>>4; lcdshow_d(0

72、x0b,0x30+x);</p><p>  y=y&0x0f;lcdshow_d(0x0c,0x30+y);</p><p>  lcdshow_d(0x0d,'-');</p><p>  x=RDS1302(0x87);</p><p><b>  y=x;</b></p>

73、<p>  x=x>>4; lcdshow_d(0x0e,0x30+x);</p><p>  y=y&0x0f;lcdshow_d(0x0f,0x30+y);</p><p>  /////////////////////下面的if實(shí)現(xiàn)每到8:10和14:10的提醒功能/////////////////////////////////</p>

74、;<p>  if((RDS1302(HOUR)==0x14 & RDS1302(MINUTE)==0x10)| ( RDS1302(HOUR)==0x08 & RDS1302(MINUTE)==0x10))</p><p><b>  {</b></p><p><b>  SPK = 0;</b></p&g

75、t;<p>  delay(200);</p><p><b>  SPK = 1;</b></p><p><b>  }</b></p><p>  for(x=45;x>0;x--)</p><p><b>  {</b></p><

76、;p>  set_time();</p><p>  delay(10);</p><p><b>  }</b></p><p><b>  }</b></p><p>  /**************************主函數(shù)***************************

77、***/</p><p>  void main()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  lcd_init();</p><p>  delay(10); </p><p>

78、  lcd_pos(0x03);</p><p><b>  i = 0; </b></p><p>  while(DIS1[i] != '\0') </p><p><b>  { </b></p><p>  lcd_wdat(DIS1[i]); </p><

79、;p><b>  i++;</b></p><p>  delay(200); </p><p><b>  } </b></p><p>  lcd_pos(0x41); </p><p><b>  i = 0; </b></p><p>  

80、while(DIS2[i] != '\0') </p><p><b>  { </b></p><p>  lcd_wdat(DIS2[i]);</p><p>  delay(200);</p><p><b>  i++; </b></p><p>&l

81、t;b>  } </b></p><p>  init_1302();</p><p>  delay(1000);</p><p>  for(i=0;i<17;i++)</p><p><b>  {</b></p><p>  lcdshow_u(i,'>

82、;');</p><p>  delay(150);</p><p><b>  }</b></p><p>  for(i=0;i<17;i++)</p><p><b>  {</b></p><p>  lcdshow_d(i,'<'

83、;);</p><p>  delay(150);</p><p><b>  }</b></p><p>  lcd_init();</p><p>  delay(10);</p><p>  lcdshow_u(0,'T');</p><p>  l

84、cdshow_u(1,'i');</p><p>  lcdshow_u(2,'m');</p><p>  lcdshow_u(3,'e');</p><p>  lcdshow_u(14,' ');</p><p>  lcdshow_d(0,'D');<

85、;/p><p>  lcdshow_d(1,'a');</p><p>  lcdshow_d(2,'t');</p><p>  lcdshow_d(3,'a');</p><p>  lcdshow_d(6,'2');</p><p>  lcdshow_

86、d(7,'0'); //LCD框架描繪</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  set_time();</p><p>  if(sel==2){lcdshow_u(0X09,' ');lc

87、dshow_u(0x0a,' ');delay(500); } </p><p>  if(sel==1){lcdshow_u(0X06, ' ');lcdshow_u(0X07,' ');delay(500); }</p><p>  if(sel==3) {lcdshow_u(0X0E,' ');lcd

88、show_u(0X0F,' ');delay(500); }</p><p>  if(sel==4){lcdshow_d(0x0b,' ');lcdshow_d(0x0c,' ');delay(500); }</p><p>  if(sel==5){lcdshow_d(0x0e,' ');lcdshow_d(0x0f,

89、' ');delay(500); } </p><p>  if(sel==6) {lcdshow_d(0x08,' ');lcdshow_d(0x09,' ');delay(500); } </p><p>  if(sel==8) display(); </p><p>  //調(diào)時LCD閃爍顯示 </p&

90、gt;<p>  display();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  四、專業(yè)實(shí)習(xí)要求</b></p><p>  1、掌握常用設(shè)備的使用;</p><p>  

91、2、掌握keil 編譯環(huán)境的使用,熟悉proteus仿真軟件的使用;</p><p>  3、基本掌握電路板的焊接調(diào)試技巧;</p><p>  4、基本掌握51單片機(jī)最小應(yīng)用系統(tǒng)的組裝、調(diào)試。</p><p><b>  五、附錄</b></p><p>  5.1、附錄一、DS1320的引腳功能及工作時序</p

92、><p>  5.1.1、DS1302的引腳描述</p><p>  在DS1302中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電;當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST

93、是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在VCC大于等于2.5V之前,RST必須保持低電平。只有在SCLK 為低電平時

94、,才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p>  5.1.2、DS1302的引腳功能</p><p>  表5-1 DS1302引腳功能</p><p>  5.1.3、DS1302的操作原理</p><p>  (1) 時鐘芯片DS1302的工作原理</p><p&g

95、t;  DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置“0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖-4所示。表-2為DS1302的控制字格式,此控制字的位7必須置1,若為0則不能把對DS1302進(jìn)行讀寫數(shù)據(jù)。對于位6,若對程序進(jìn)行讀/寫時RAM=1,對時間進(jìn)行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時,該位為1;進(jìn)行寫操作時,該位為0??刂谱止?jié)總是從最低

96、位開始輸入/輸出的。表-2為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運(yùn)行。“WP”是寫保護(hù)位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時,寫保護(hù)位防止對任一寄存器的寫操作。</p><p>  表5-2 DS1302日歷、時鐘各寄存器與控制字對照表</p><p>

97、  (2) DS1302的控制字節(jié)</p><p>  DS1302的控制字如表-3所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。 表5-3 DS1302

98、的控制字格式</p><p>  RAM RD</p><p>  1 A4 A3 A2 A1 A0 </p><p>  / CK /WR

99、 </p><p>  (3) 數(shù)據(jù)輸入輸出(I/O)</p><p>  在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7,如圖-4所示。</p><p>  圖5-1 DS1302單字

100、節(jié)讀/寫時序圖</p><p>  (4) DS1302的寄存器</p><p>  DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表-4。</p><p>  表5-4 DS1302的日歷、時間寄存器</p><p>  此外,DS1302 還有年份寄存器、控制寄存器

101、、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p&g

102、t;  5.2、附錄二、LCD1602液晶顯示器</p><p>  5.2.1、LCD的引腳定義</p><p>  表5-5 、1602引腳定義</p><p>  5.2.2、LCD1602的操作時序圖</p><p>  圖5-2 LCD1602讀時序</p><p>  圖5-3LCD1602寫時序</

溫馨提示

  • 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

提交評論