• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于單片機的DS1302日歷時鐘的設計和實現(xiàn)

      2019-02-24 03:05:58
      關鍵詞:光標字符寄存器

      嚴 敏

      (江蘇旅游職業(yè)學院 信息工程學院,江蘇 揚州 225127)

      在日常生活中,日歷時鐘應用于各種場所,如商場、超市、辦公室、家庭、學校等.與傳統(tǒng)的機械時鐘相比,數(shù)字日歷時鐘具有精度高,顯示直觀,壽命長等一系列優(yōu)點.本文即以AT89C51單片機為主控制器,利用DS1302時鐘芯片設計日歷時鐘,在Proteus仿真平臺中進行系統(tǒng)的硬件設計,在MedWin V3.0開發(fā)環(huán)境中進行系統(tǒng)的軟件設計.

      1 系統(tǒng)硬件設計

      1.1 總體結(jié)構(gòu)

      以AT89C51單片機為主控制器,利用DS1302時鐘芯片設計日歷時鐘,其總體結(jié)構(gòu)如圖1所示.

      圖1 系統(tǒng)的總體結(jié)構(gòu)

      設計的日歷時鐘不僅要具有小時、分鐘和秒的時間顯示功能,還要具有年、月、日和星期的顯示功能.系統(tǒng)的控制核心是AT89C51單片機,通過單片機控制DS1302顯示日歷和時間,并在LCD1602液晶屏上顯示輸出結(jié)果.

      1.2 DS1302時鐘模塊

      DS1302是DALLAS公司生產(chǎn)的時鐘芯片,具有低功耗、高性能的特點,可以通過簡單的同步串行模式與微控制器進行通信聯(lián)絡,且只需要三根I/O線,即復位(RST)、I/O數(shù)據(jù)線和串行時鐘(SCLK).

      1.2.1 DS1302的外部引腳及內(nèi)部結(jié)構(gòu)

      DS1302的外部引腳及功能說明如圖2所示.

      VCC2-主電源引腳;X1,X2-32.768 kHz晶振引腳;GND-地;

      VCC1-電池引腳;SCLK-串行時鐘;I/O-數(shù)據(jù)輸入/輸出;RST-復位.

      圖2 DS1302引腳圖

      DS1302的內(nèi)部結(jié)構(gòu)如圖3所示,主要有實時時鐘、數(shù)據(jù)存儲器RAM、振蕩電路與分頻器、輸入移位寄存器、命令與控制邏輯等組成.

      圖3 DS1302的內(nèi)部結(jié)構(gòu)

      1.2.2 DS1302的寄存器和控制命令

      DS1302時鐘芯片有7個與日歷時鐘相關的寄存器,如表1所示.

      表1 DS1302內(nèi)部主要寄存器

      DS1302和單片機之間的聯(lián)絡信號通過簡單的同步串行通信實現(xiàn).根據(jù)DS1302的工作時序要求,不管是單片機從DS1302進行讀操作通信還是單片機向DS1302進行寫操作通信,每次通信都由單片機先發(fā)起.也就是說,在執(zhí)行相應的讀或?qū)懖僮髦?,單片機必須向DS1302寫入一個字節(jié)的命令字,字節(jié)命令字的八位數(shù)據(jù)如圖4所示.

      圖4 DS1302的命令字結(jié)構(gòu)

      1.3 LCD1602液晶顯示模塊

      LCD1602屏幕可以顯示兩行字符,每行16個,總共32個字符.LCD1602內(nèi)部有一個80*8位的顯示數(shù)據(jù)存儲器DDRAM緩沖區(qū),字符顯示位與DDRAM地址的對應關系見表2.

      表2 字符顯示位與DDRAM的對應關系

      DDRAM第一行的地址從00H開始到27H結(jié)束,第二行的地址從40H開始到67H結(jié)束,每行40個地址,而LCD1602每行顯示16個字符,因此在編寫程序時,選用DDRAM的前16個地址即可,需要特別注意的是第二行地址從40H開始.如果要在LCD1602屏幕的某行某列顯示一個字符,就將這個字符對應的ASCII碼寫入某行某列相對應的DDRAM地址,這時會發(fā)現(xiàn)液晶屏幕上并不能正常顯示出這個字符,原因是必須在該地址的基礎上加上80H.比如,要在第二行第二列顯示電壓單位伏特的符號“V”,就要先將第二行第二列對應的DDRAM地址41H加上80H,即C1H,然后在C1H地址寫入“V”字符對應的ASCII碼0x56,這樣才能正常顯示.其他字符的顯示依此類推,不再贅述.

      2 系統(tǒng)軟件設計

      軟件程序主要完成日歷時鐘的數(shù)據(jù)讀取、轉(zhuǎn)換及液晶顯示等功能.

      2.1 DS1302時鐘子程序設計

      sbit RST=P1^0;//DS1302復位端口定義在P1.0引腳

      sbit SCLK=P1^1;// DS1302時鐘輸出端口定義在P1.1引腳

      sbit DATA=P1^2;// DS1302數(shù)據(jù)輸出端口定義在P1.2引腳

      (1)單片機向DS1302寫一個字節(jié)數(shù)據(jù)的程序

      void write1302(unsigned char dat)

      {unsigned char i;

      SCLK=0;//為上升沿寫入數(shù)據(jù)做好準備

      delaynus(2);

      for (i=0;i<8;i++)//連續(xù)寫入八位數(shù)據(jù)

      {DATA=dat&0x01;//將dat的bit0數(shù)據(jù)寫入DS1302

      delaynus(2);

      SCLK=1;//上升沿寫入數(shù)據(jù)

      delaynus(2);

      SCLK=0;//

      dat>>=1;//向右移一位}}

      (2)單片機從DS1302讀一個字節(jié)數(shù)據(jù)的程序

      unsigned char read1302(void)

      {unsigned char i,dat;

      delaynus(2);

      for (i=0;i<8;i++)//連續(xù)讀取八位數(shù)據(jù)

      {dat>>=1;//右移一位

      if (DATA==1)//如果讀出的數(shù)據(jù)是1

      dat|=0x80;//將1取出,寫在dat的最高位

      SCLK=1;//將SCLK置于高電平,為下降沿讀出

      delaynus(2);

      SCLK=0;//拉低SCLK,形成脈沖下降沿

      delaynus(2);}

      return dat;//將讀出的數(shù)據(jù)返回}

      2.2 LCD1602液晶顯示子程序設計

      LCD1602液晶屏的驅(qū)動程序編寫相對復雜,一定要弄清楚1602的各個操作指令的用法和意義,主要包括顯示模式設置,顯示開關控制,輸入模式控制,從DDRAM中讀取數(shù)據(jù),對DDRAM進行寫數(shù)據(jù),清屏、光標歸位設定,數(shù)據(jù)地址指針設置,LCD目前的忙碌工作標志等[1],其部分代碼設計如下:

      ……

      void Lcd_initial() //初始化LCD

      { E=0;

      Lcd_writecmd(0x38); //16*2顯示,5*7點陣

      msdelay (1);

      Lcd_writecmd(0x08); //顯示關閉

      msdelay (2);

      Lcd_writecmd(0x01); //顯示清屏

      msdelay (2);

      Lcd_writecmd(0x06); //設置光標,讀寫一個字符后,光標加1

      msdelay (1);

      Lcd_writecmd (0x0c); //顯示打開,不顯示光標

      msdelay (1); }

      3 仿真與結(jié)果分析

      在Proteus平臺上繪制日歷時鐘的硬件電路圖,如圖5所示.

      圖5 日歷時鐘的硬件電路圖

      在Medwin V3.0開發(fā)環(huán)境中使用C51語言編寫好系統(tǒng)程序,編譯調(diào)試,并將編譯生成的HEX十六進制文件加載到單片機芯片中,啟動仿真就可以看到基于1602LCD顯示的DS1302日歷時鐘設計系統(tǒng)的仿真運行效果.當前北京時間為2019年5月28日11點42分25秒,仿真結(jié)果如圖6所示.

      圖6 日歷時鐘的仿真運行結(jié)果

      由圖6可以看出,液晶屏上能夠?qū)崟r、準確地顯示當前的日期和時間.

      4 結(jié)語

      日歷時鐘在我們的生活中無處不在.本文以AT89C51單片機為主控制器,利用DS1302實時時鐘芯片設計日歷時鐘系統(tǒng),在Proteus仿真軟件中設計了硬件電路,在Medwin V3.0開發(fā)環(huán)境中編寫相應的C51程序.Proteus和MedWin V3.0這兩款軟件的聯(lián)合使用,極大地提高了單片機系統(tǒng)設計的效率,降低了成本,縮短了開發(fā)周期[2-5].

      猜你喜歡
      光標字符寄存器
      尋找更強的字符映射管理器
      Lite寄存器模型的設計與實現(xiàn)
      計算機應用(2020年5期)2020-06-07 07:06:44
      字符代表幾
      一種USB接口字符液晶控制器設計
      電子制作(2019年19期)2019-11-23 08:41:50
      消失的殖民村莊和神秘字符
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
      電腦迷(2015年4期)2015-05-30 10:48:04
      Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
      電腦迷(2015年8期)2015-05-30 08:36:03
      Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
      電腦迷(2015年10期)2015-04-29 15:14:20
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應用
      民乐县| 磴口县| 习水县| 浦城县| 温州市| 厦门市| 吉木乃县| 永川市| 遂川县| 稻城县| 新宁县| 佳木斯市| 大渡口区| 乡城县| 奈曼旗| 南漳县| 湘乡市| 青海省| 郯城县| 棋牌| 晋中市| 北碚区| 台中县| 锡林郭勒盟| 林甸县| 湘潭县| 高陵县| 商洛市| 乐平市| 洛浦县| 龙里县| 客服| 怀集县| 仪陇县| 黔江区| 白朗县| 会理县| 广水市| 泗水县| 忻州市| 来凤县|