新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機計數器C語言練習

        單片機計數器C語言練習

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

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


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

          #include "reg51.h"

          #define uchar unsigned char

          #define uint unsigned int

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

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

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

          uchar DispBuf[6]; //顯示緩沖區

          void Timer1() interrupt 3

          { uchar tmp;

          uchar Count; //,顯示程序通過它得知現正顯示哪個數碼管

          TH1=(65536-3000)/256;

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

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

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

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

          tmp=DispBuf[Count];//取出待顯示的數

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

          P0=tmp;

          Count++;

          if(Count==6)

          Count=0;

          }

          void main()

          { uint tmp;

          P1=0xff;

          P0=0xff;

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

          TH1=(65536-3000)/256;

        塵埃粒子計數器相關文章:塵埃粒子計數器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西乌珠穆沁旗| 长治市| 肥东县| 西贡区| 苏州市| 姚安县| 丰顺县| 南雄市| 拜泉县| 连南| 惠州市| 邯郸市| 尼玛县| 莱州市| 灵武市| 阿坝| 漳平市| 江北区| 社旗县| 贞丰县| 恩平市| 淅川县| 苏尼特右旗| 巴彦县| 淮北市| 岳西县| 南涧| 南开区| 全州县| 佛山市| 集安市| 安国市| 万州区| 深州市| 蒙自县| 开封县| 海盐县| 马龙县| 塘沽区| 静海县| 梅河口市|