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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機計數(shù)器C語言練習

          單片機計數(shù)器C語言練習

          作者: 時間:2013-02-18 來源:網(wǎng)絡 收藏
          要求:編寫一個程序,將T0作為來使用,對外部信號計數(shù),將所計數(shù)字顯示在數(shù)碼管上。

            該部分的硬件電路如圖所示,U1的P0口和P2口的部份引腳構(gòu)成了6位LED數(shù)碼管驅(qū)動電路,數(shù)碼管采用共陽型,使用PNP型三極管作為片選端的驅(qū)動,所有三極管的發(fā)射極連在一起,接到正電源端,它們的基極則分別連到P2.0…P2.5,當P2.0…P2.5中某引腳輸是低電平時,三極管導通,給相應的數(shù)碼管供電,該位數(shù)碼管點亮哪些筆段,則取決于筆段引腳是高或低電平。圖中看出,所有6位數(shù)碼管的筆段連在一起,通過限流電阻后接到P0口,因此,哪些筆段亮就取決于P0口的8根線的狀態(tài)。


            編寫程序時,首先根據(jù)硬件連線寫出LED數(shù)碼管的字形碼、位驅(qū)動碼,然后編寫程序如下:

            #include "reg51.h"

            #define uchar unsigned char

            #define uint unsigned int

            uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; //位驅(qū)動碼

            uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,

          0x83,0xC6,0xA1,0x86,0x8E,0xFF}; //字形碼

            uchar DispBuf[6]; //顯示緩沖區(qū)

            void Timer1() interrupt 3

            { uchar tmp;

            uchar Count; //,顯示程序通過它得知現(xiàn)正顯示哪個數(shù)碼管

            TH1=(65536-3000)/256;

            TL1=(65536-3000)%256; //重置初值

            tmp=BitTab[Count]; //取位值

            P2=P2|0xfc; //P2與11111100B相或

            P2=P2tmp; //P2與取出的位值相與

            tmp=DispBuf[Count];//取出待顯示的數(shù)

            tmp=DispTab[tmp]; //取字形碼

            P0=tmp;

            Count++;

            if(Count==6)

            Count=0;

            }

            void main()

            { uint tmp;

            P1=0xff;

            P0=0xff;

            TMOD=0x15; //定時器0工作于計數(shù)方式1,定時器1工作于定時方式1

            TH1=(65536-3000)/256;

          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();