新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 8位共陰數碼管動態掃描自增自減

        8位共陰數碼管動態掃描自增自減

        作者: 時間:2016-11-30 來源:網絡 收藏
        #include//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
        sbit duan=P2^2;//定義P2.2為段操作,愛設置哪個都行
        sbit wei=P2^3;//定義P2.3為位操作
        /*------------------------------------------------
        程序主要作用于動態掃描,沒什么實際應用
        ----------------------查表表格--------------------------*/
        unsigned char code shuzhi[]={
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
        };//數字表0123456789abcdef定義進RAM
        unsigned char code weizhi[]={
        0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
        };//共陰數碼管位置表01234567定義進RAM
        unsigned char huanchong[8];//定義一個一維數組做為緩沖區
        /*---------------------------定義進入ROM
        函數聲明
        ------------------------------------------------*/
        void yeishi(unsigned int t);//函數聲明
        /*------------------------------------------------
        主函數
        ------------------------------------------------*/
        main ()
        {

        unsigned char i,j;
        //定義一個char型變量 i 取值范圍 0~255,如果定義j為unsigned long int就可以實現0~4294967295
        while (1)//主循環
        {
        j=0;
        j++;//j不斷加1,直到255溢出,如果改成--j就是自減

        for(i=0;i<8;i++)//for循環,i初始為0自加小于8,0-7
        {
        ///////////////拆分數j//////////////////////////
        huanchong[0]=shuzhi[j/100];
        huanchong[1]=shuzhi[(j/10)%10];
        huanchong[2]=shuzhi[j%10];
        ////////通過數學運算得到每個位的數值并賦值給緩沖區因為只有255三位
        只定義三位
        別問我為什么要這樣算,我數理化英都不好,沒看見我的變量定義全是拼音么?而且我都不能保證
        拼音是對的
        有一定規律:
        huanchong[0]=shuzhi[j/10000000];
        huanchong[1]=shuzhi[(j/1000000)%10];
        huanchong[2]=shuzhi[(j/100000)%10];
        huanchong[3]=shuzhi[(j/10000)%10];
        huanchong[4]=shuzhi[(j/1000)%10];
        huanchong[5]=shuzhi[(j/100)%10];
        huanchong[6]=shuzhi[(j/10)%10];
        huanchong[7]=shuzhi[j%10];
        ////////////////////只用P0口,P0的定義已經在頭文件里面了////////////*/
        P0=weizhi[i];
        wei=1;//位開關,1為開,0為關
        wei=0;
        P0=huanchong[i];//通過前面的運算,調用緩沖區數值
        duan=1;//段開關,1為開,0為關
        duan=0;
        yeishi(300);//延時函數調用設置為300,按情況定,越大沒效果,越小有重影
        }
        }
        }
        /*------------------------------------------------
        含有輸入參數 unsigned int t,無返回值 unsigned int 是定義無符號整形變量,其值的范圍是
        0~65535
        ------------------------------------------------*/
        void yeishi(unsigned int t)
        {
        while(--t);
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 内丘县| 怀来县| 通辽市| 敦煌市| 汕尾市| 石景山区| 西和县| 东安县| 渝北区| 隆德县| 康保县| 西丰县| 绥芬河市| 莆田市| 肇东市| 浠水县| 宁国市| 二连浩特市| 罗江县| 象山县| 阿克苏市| 柯坪县| 武城县| 调兵山市| 黑河市| 潼关县| 丰都县| 北京市| 荥经县| 南陵县| 凯里市| 神池县| 柘城县| 杂多县| 东平县| 永靖县| 九龙城区| 应用必备| 怀仁县| 山阴县| 阳原县|