新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機4位數(shù)碼管計數(shù)C程序

        AVR單片機4位數(shù)碼管計數(shù)C程序

        作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
        AVR單片機4位數(shù)碼管計數(shù),從0000-5000一直循環(huán)。位選端接在PC的低4位,而段選端接在PA口。程序如下:

        #include//頭文件
        #include//頭文件
        #define uchar unsigned char//宏定義
        #define uint unsigned int//宏定義
        uchar i;//定義變量
        uint num;//定義計數(shù)變量
        #pragma data:code//數(shù)組存放位置
        const table[]={
        0xc0,0xf9,0xa4,0xb0,0x99,
        0x92,0x82,0xf8,0x80,0x90,
        0x88,0x83,0xc6,0xa1,0x86,
        0x8e
        };//共陽數(shù)碼管0--9代碼
        /*************************************************************/
        /*********************延時子程序******************************/
        /*************************************************************/
        void delay(uint z)//一個帶參數(shù),不帶返回值的子函數(shù)
        {
        uint x,y;//定義兩個變量
        for(x=0;x<55;x++)//外循環(huán)
        for(y=z;y>0;y--);//內(nèi)循環(huán)
        }
        /*************************************************************/
        /*********************顯示子程序******************************/
        /*************************************************************/
        void xian()
        {
        for(i=0;i<20;i++)//顯示20次,使整體看起來不閃爍
        {
        PORTA=table[num/1000];//將千位數(shù)給PA口
        PORTC&=~BIT(3);//打開千位位選端
        delay(2);//延時一會兒
        PORTC|=BIT(3);//關(guān)掉千位
        PORTA=table[num%1000/100];//將百位數(shù)給PA口
        PORTC&=~BIT(2);
        delay(2);
        PORTC|=BIT(2);
        PORTA=table[num%100/10];//將十位數(shù)給PA口
        PORTC&=~BIT(1);
        delay(2);
        PORTC|=BIT(1);
        PORTA=table[num%10];//將個位數(shù)給PA口
        PORTC&=~BIT(0);
        delay(2);
        PORTC|=BIT(0);
        }
        num++;//將它加1,形成動態(tài)計數(shù)
        if(num>5000)//如果它大于5000就將計數(shù)器清0
        num=0;//清0
        }
        /*************************************************************/
        /*************************主程序******************************/
        /*************************************************************/
        void main()
        {
        DDRA=0xff;//設(shè)置PA口為輸出
        DDRC=0xff;//設(shè)置PC口為輸出
        while(1)
        {
        xian(); //調(diào)用顯示子函數(shù)
        }
        }

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


        評論


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

        關(guān)閉
        主站蜘蛛池模板: 丹棱县| 安新县| 获嘉县| 都匀市| 乐平市| 二连浩特市| 临汾市| 西充县| 静海县| 临高县| 北流市| 渝中区| 博湖县| 礼泉县| 八宿县| 敦煌市| 琼结县| 石渠县| 竹山县| 汶上县| 太湖县| 大丰市| 观塘区| 华坪县| 昌乐县| 囊谦县| 宜城市| 新河县| 北碚区| 丹棱县| 扎鲁特旗| 开阳县| 伊春市| 台江县| 中阳县| 长兴县| 嘉鱼县| 贵港市| 昭平县| 宁远县| 敦煌市|