新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機流水線計數器設計

        單片機流水線計數器設計

        作者: 時間:2016-12-01 來源:網絡 收藏
        幾年晚上一個網友找我做流水線計數器,于是想起了半年前我上傳到百度文庫的這個文檔。呵呵,當年

        濰坊學院第二屆電子設計大賽

        本文引用地址:http://www.104case.com/article/201612/324451.htm

        #include

        #define uint unsigned int

        #define uchar unsigned char

        uchar code tabel[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//這個數組存放0~9

        uint counter;//定義計數器,用來計量脈沖次數

        sbit wei_ge=P1^0; //定義位選引腳

        sbit wei_shi=P1^1;

        sbit wei_bai=P1^2;

        sbit wei_qian=P1^3;

        sbit BUZZER=P2^0;

        void delay_(unsigned int j)

        {

        unsigned int k;

        while (--j!=0)

        {

        for (k=0;k<600;k++);

        }

        }

        /*延時子程序*******************************************************/

        void delay(uint xms)

        {

        uint j;

        for(;xms>0;xms--)

        for(j=110;j>0;j--);

        }

        /*數碼管掃描顯示子程序************************************************/

        void shuma_show(uint date)

        {

        uchar ge,shi,bai,qian;//數碼管顯示變量聲明

        ge=date%10;//個位數換算

        shi=date/10%10;//十位換算

        bai=date/100%10;//百位換算

        qian=date/1000;//千位換算

        wei_ge=1;//打開個位顯示

        P0=tabel[ge]; //數據輸入數碼管內

        delay(2);//延時顯示2ms

        wei_ge=0;//關閉個位顯示

        wei_shi=1;//打開個位顯示

        P0=tabel[shi]; //數據輸入數碼管內

        delay(2);//延時顯示2ms

        wei_shi=0;//關閉個位顯示

        wei_bai=1;//打開個位顯示

        P0=tabel[bai]; //數據輸入數碼管內

        delay(2);//延時顯示2ms

        wei_bai=0;//關閉個位顯示

        wei_qian=1;//打開個位顯示

        P0=tabel[qian]; //數據輸入數碼管內

        delay(2);//延時顯示2ms

        wei_qian=0;//關閉個位顯示

        }

        /*初始化子程序**********************************************************/

        void inti()

        {

        wei_ge=wei_shi=wei_bai=wei_qian=0;//各I/O口初始化

        TMOD=0x05;//設置計數器0工作方式1,為16位計數器,且為外部計數

        TH0=0;//計數器高8位裝0

        TL0=0;//計數器低8位裝0

        TR0=1;//開計數器

        }

        /*主程序***************************************************************/

        void main()

        {

        BUZZER=0;

        inti();

        while(1)

        {

        counter=TH0*255+TL0;//讀計數器數據

        }

        if(counter==1000)

        {

        TH0=TL0=0;

        } //計滿清零

        shuma_show(counter);//數碼管掃描顯示

        if((counter%100==0)&& counter!=0)//逢百提醒

        {

        BUZZER=1;

        delay(500);

        BUZZER=1;

        }

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 许昌市| 邳州市| 蒙自县| 辉南县| 漳浦县| 勃利县| 延川县| 兴和县| 广饶县| 徐闻县| 泰安市| 贵南县| 沙湾县| 康马县| 丹凤县| 靖远县| 临西县| 任丘市| 庆阳市| 西贡区| 安塞县| 堆龙德庆县| 杨浦区| 富蕴县| 荣成市| 高陵县| 松江区| 酒泉市| 武宁县| 错那县| 股票| 丰都县| 襄垣县| 屏南县| 乃东县| 马关县| 桃园市| 竹北市| 馆陶县| 沁水县| 文水县|