<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的數字秒表設計

          基于單片機的數字秒表設計

          作者: 時間:2012-03-07 來源:網絡 收藏

          2.4 數碼管顯示電路
          本系統(tǒng)使用了6個共陽極數碼管、LED顯示驅動是一個非常重要的問題,顯示電路由LED顯示器、段驅動電路和位驅動電路組成。由于的并行口驅動電流太小,不能直接驅動LED顯示器,段驅動電路通過74LS245雙向總線收發(fā)器使P0口與數碼管的八段相連,可增加P0的驅動能力。位驅動電路通過六只NPN三極管驅動使P2口的低六位作為位選信號,使之產生足夠大的電流,來驅動LED達到足夠的亮度,顯示器才能正常工作。如果驅動電路能力差,即驅動電流過小,數碼管顯示亮度不夠,而驅動電路驅動電流太大容易損壞數碼管。
          LED顯示器顯示控制方式有兩種:靜態(tài)和動態(tài)。本方案選擇的是動態(tài)控制方式。由于一位數據的顯示是由段碼和位碼信號共同配合完成的,因此,要同時考慮段和位的驅動能力,而且段的驅動能力決定位的驅動能力。
          2.5 按鍵電路
          本系統(tǒng)設置3個功能按鍵分別為KEY1、KEY2和KEY3,其中KEY1是開始按鍵,與P3.0相連,按下時數碼管開始計時;KEY2是停止按鍵,與P3.1相連,按下時數碼管停止計時:KEY3是清零按鍵,與P3.2相連,按下時數碼管全部清零。當數碼管計時時,不能直接按清零按鍵,只能按停止按鍵才能停止,再按清零按鍵全部顯示初始化0。

          3 系統(tǒng)軟件
          系統(tǒng)軟件由主程序模塊、延時模塊、鍵盤掃描程序模塊以及數碼管驅動程序模塊組成。
          本設計中,計時采用定時器T0中斷完成,其余狀態(tài)循環(huán)調用顯示子程序,當功能按鍵按下時,轉入相應功能程序。其主程序流程圖如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/171931.htm

          d.jpg



          4 仿真結果
          程序在Keil uVision3環(huán)境下編寫,編譯通過后生成.hex文件加載到Proteus下可正常運行。程序剛運行前數碼管顯示初值為0000.0 0,按下鍵KEY1系統(tǒng)開始計時,程序中每0.01s進入一次定時中斷。在程序運行過程中若按下鍵KEY2系統(tǒng)暫停計時,數碼管顯示計時截至狀態(tài);若按下鍵KEY3,數碼管清零。圖5為鍵KEY1抬起、鍵KEY2按下的狀態(tài)。

          e.jpg



          5 結束語
          本文利用AT89C52設計了具有計時開始、暫停及清零功能的,計時最大值為59分59.99秒,計時精度為0.01秒。利用Proteus和Keil軟件進行了仿真,達到了預期的效果。整體電路的計時精度高,電路結構簡單,抗干擾能力強,具有廣泛的應用前景。

          加速度計相關文章:加速度計原理
          施密特觸發(fā)器相關文章:施密特觸發(fā)器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();