新聞中心

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

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

        作者: 時間:2012-07-10 來源:網絡 收藏
        最近在研究,這東西看起來簡單,但是要完全掌握它,可是要花一定時間的!我現在做得8*8硬件電路是這樣的,行采用+三極管8550驅動,列采用74HC595驅動,這種電路是非常用的,其次的掃描原理就是,先打開第一行,然后送代碼給列,即595端,像這樣掃描8次行,一個字就完成了,具體原理圖如下圖:
        點擊瀏覽下一頁

        下面我將我寫得代碼下載地址分享下:

        一、上移:
        #includereg52.h>
        #define uchar unsigned char
        #define uint unsigned int
        #define LINE P1//定義行線IO口,即74HC154控制端
        #define shudu 50//字移動的速度
        sbit DATA=P3^5;//74HC595數據端
        sbit CLK=P3^7;//74HC595移位脈沖端
        sbit CLKR=P3^6;//74HC595數據鎖存端
        uint word;//字節變量
        uchar line;//字節變量
        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,
        };//字模數組
        void delay(uchar z)
        {
        uchar x,y;
        for(x=8;x>0;x--)
        for(y=z;y>0;y--);
        }
        /********************************/
        /**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 xian()
        {
        uchar i,f;
        for(i=0;ishudu;i++)//一字移動的速度
        {
        word=f;//將字暫存器給計數器
        for(line=0;line8;line++)//掃描8次,即完成一個字的移動
        {
        song(~table[word]);
        CLKR=1;//在74HC595處鎖存起來
        CLKR=0;
        CLKR=1;
        word++;//將計數器加1
        LINE=line;//打開行線,即行線端
        P3=0xff;
        delay(20);
        }
        }
        f+=2;//顯示完一個字后加2形成上移
        if(word>=32)
        {
        word=0;//清0重新開始
        f=0;
        }
        }
        /********************************/
        /************主程序*************/
        /********************************/
        void main()
        {
        while(1)
        {
        xian();
        }
        }


        上一頁 1 2 3 下一頁

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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 渝北区| 遵义市| 霍州市| 惠来县| 邵武市| 武义县| 论坛| 宜黄县| 自治县| 敦化市| 邵武市| 昌江| 久治县| 刚察县| 多伦县| 汤原县| 龙口市| 连云港市| 邹平县| 休宁县| 鲜城| 昌宁县| 梅州市| 武平县| 南宫市| 永兴县| 昔阳县| 县级市| 江西省| 台东县| 大丰市| 乐至县| 育儿| 五常市| 罗平县| 怀柔区| 建宁县| 修武县| 沐川县| 镇安县| 砚山县|