新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機+點陣8*8上、下、左、右移顯示C程序

        51單片機+點陣8*8上、下、左、右移顯示C程序

        作者: 時間:2012-07-10 來源:網絡 收藏

        }
        void xian()
        {
        uchar i;
        while(word24)//需要顯示3個字,公式=8*N個字,比如四個字就是4*8=32
        {
        for(move=0;move8;move++)//要移多少位?
        {
        for(i=0;ishudu;i++)//一字移動的速度
        {
        for(line=0;line8;line++)//掃描8次,即完成一個字的移動
        {
        yixian();//調用一線子程序
        yipai();//調用數據轉換子程序
        LINE=line;//打開行線,即行線端
        CLKR=1;//在74HC595處鎖存起來
        CLKR=0;
        CLKR=1;
        }
        }
        }
        word=word+8;//一個字顯示完了,就顯示下一個字
        }
        word=0;//清0重新開始
        }
        /********************************/
        /************主程序*************/
        /********************************/
        void main()
        {
        while(1)
        {
        xian();
        }
        }

        四、右移

        #includereg52.h>
        #define uchar unsigned char
        #define uint unsigned int
        #define LINE P1//定義行線IO口,即74HC154控制端
        #define shudu 120//字移動的速度
        sbit DATA=P3^5;//74HC595數據端
        sbit CLK=P3^7;//74HC595移位脈沖端
        sbit CLKR=P3^6;//74HC595數據鎖存端
        uchar move;//移動幾位變量
        uchar line;//行變量
        uint word;//字節變量
        uchar BUF[2];//2組緩存數組以便動態更改數據
        uchar code table[]={
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x3C,0x00,0x18,0x00,0x7E,0x00,0x00,
        0x08,0x08,0x7F,0x49,0x7F,0x08,0x08,0x08,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        };//字模數組
        /********************************/
        /**74HC595移位寄存器送數子函數***/
        /********************************/
        void song(uchar z)//帶參數函數
        {
        uchar num,hang;//定義變量
        hang=z;//將形參給變量
        for(num=0;num8;num++)//移動8次將數據發送完畢
        {
        if(hang0x01==1)//將高7位屏蔽掉,保留最低位判斷
        DATA=1;//為1就將74HC595數據端置1
        else
        DATA=0;//否則給0
        CLK=0;//上升沿送走數據
        CLK=1;//高電平形成上升沿
        hang>>=1;//將數移走一位
        }
        }
        /********************************/
        /*裝一線數據子函數(即一行數據)*/
        /********************************/
        void yixian()
        {
        BUF[0]=table[word+line];//第1個字代碼裝入緩存數組0,line表示行數,word表示字數
        BUF[1]=table[word+8+line];//第2個字代碼裝入緩存數組1
        }
        /********************************/
        /*將一行數據轉換出來,然后顯示*/
        /********************************/
        void yipai()
        {
        uchar temp,yi;//定義兩個變量
        yi=move;//將要移多少位給變量yi
        temp=(BUF[1](8-yi))|(BUF[0]>>yi);/*將第1個字即數組0左移yi(yi只是代號,比如1位)位
        ,然后將第下一個字即數組1右移8-yi位,然后或一下,這樣就會得到要發送的數*/
        song(~temp);//發送給74HC595
        }
        void xian()
        {
        uchar i;
        while(word24)//需要顯示3個字,公式=8*N個字,比如四個字就是4*8=32
        {
        for(move=0;move8;move++)//要移多少位?
        {
        for(i=0;ishudu;i++)//一字移動的速度
        {
        for(line=0;line8;line++)//掃描8次,即完成一個字的移動
        {
        yixian();//調用一線子程序
        yipai();//調用數據轉換子程序
        LINE=line;//打開行線,即行線端
        CLKR=1;//在74HC595處鎖存起來
        CLKR=0;
        CLKR=1;
        }
        }
        }
        word=word+8;//一個字顯示完了,就顯示下一個字
        }
        word=0;//清0重新開始
        }
        /********************************/
        /************主程序*************/
        /********************************/
        void main()
        {
        while(1)
        {
        xian();
        }
        }


        上一頁 1 2 3 下一頁

        關鍵詞: 51單片機 點陣 74HC138

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金湖县| 杭锦后旗| 三都| 东乡| 临桂县| 梁山县| 海原县| 寻乌县| 个旧市| 湾仔区| 益阳市| 扶绥县| 贞丰县| 涞源县| 灌云县| 巴彦淖尔市| 增城市| 苍溪县| 南城县| 上虞市| 南和县| 旬阳县| 平江县| 济阳县| 伊宁县| 文山县| 建瓯市| 林西县| 修武县| 山东| 新野县| 屯门区| 安徽省| 汕头市| 拜城县| 逊克县| 鄂州市| 四会市| 南川市| 朔州市| 江阴市|