久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2714|回復(fù): 0
收起左側(cè)

51單片機(jī)16*16漢字點(diǎn)陣滾動(dòng)如何增加按鍵控制功能

[復(fù)制鏈接]
ID:458326 發(fā)表于 2018-12-30 12:40 | 顯示全部樓層 |閱讀模式
/*-----------------------------------------------
  名稱:16x16漢字屏流動(dòng)顯示
  修改:無(wú)
  硬件:LY-51S V4.0 單片機(jī)開發(fā)板
  內(nèi)容:
        P1.0-P1.3分別連接A、B、C、D,用于控制16行,通過(guò)2路HC138控制
                SER接P1.4 通過(guò)2片HC595控制
        CLK時(shí)鐘連接P1.5
        LAT鎖存連接P1.6
                OE接P1.7

  現(xiàn)象:使用普通速度51系列單片機(jī)。1個(gè)漢字顯示屏,向左流動(dòng)顯示多個(gè)漢字,重復(fù)循環(huán)顯示。
------------------------------------------------*/
#include<reg52.h>

sbit J32_LAT = P1^6;       //鎖存引腳
sbit J32_SER = P1^4;       //數(shù)據(jù)引腳
sbit J32_CLK = P1^5;       //時(shí)鐘引腳
sbit J32_OE  = P1^7;       //使能引腳

unsigned char MoveBitNum,MoveBitNumtemp,IncNum;//移動(dòng)位數(shù),臨時(shí)移動(dòng)位數(shù),大于一個(gè)字節(jié)增加字節(jié)數(shù)
unsigned int HzNum;//漢字個(gè)數(shù)
unsigned char buff[10];

/*-----------------------------------------------
             16x16漢字取模數(shù)據(jù)
------------------------------------------------*/
unsigned char code hztest[][32]=    //取模選擇字節(jié)正序
{


        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //前面一屏大小的空字符,不顯示,這里根據(jù)屏的大小修改,這個(gè)是1個(gè)漢字屏
        //所以寫入1個(gè)漢字
        /*--  文字:  湖  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x01,0x00,0x21,0x1E,0x11,0x12,0x17,0xD2,0x81,0x12,0x41,0x1E,0x41,0x12,0x17,0xD2,
0x14,0x52,0x24,0x5E,0xE4,0x52,0x27,0xD2,0x24,0x52,0x20,0x22,0x20,0x2A,0x00,0x44,

/*--  文字:  北  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x44,0x04,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x42,0x1C,0x42,0xE4,0x42,0x44,0x3E,0x04,0x00,

/*--  文字:  汽  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x01,0x00,0x21,0x00,0x11,0xFC,0x12,0x00,0x84,0x00,0x41,0xF8,0x48,0x00,0x08,0x00,
0x13,0xF8,0x10,0x08,0xE0,0x08,0x20,0x08,0x20,0x0A,0x20,0x0A,0x20,0x06,0x00,0x02,

/*--  文字:  車  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x02,0x00,0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x09,0x00,0x11,0x00,0x21,0x00,
0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,

/*--  文字:  工  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,

/*--  文字:  業(yè)  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x44,0x44,0x24,0x44,0x24,0x48,0x14,0x48,
0x14,0x50,0x14,0x60,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0xFF,0xFE,0x00,0x00,

/*--  文字:  學(xué)  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,

/*--  文字:  院  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x40,0x78,0x20,0x4B,0xFE,0x52,0x02,0x54,0x04,0x61,0xF8,0x50,0x00,0x48,0x00,
0x4B,0xFE,0x48,0x90,0x68,0x90,0x50,0x90,0x41,0x12,0x41,0x12,0x42,0x0E,0x44,0x00,

/*--  文字:  科  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x08,0x10,0x1D,0x10,0xF0,0x90,0x10,0x90,0x10,0x10,0xFD,0x10,0x10,0x90,0x38,0x90,
0x34,0x10,0x50,0x1E,0x53,0xF0,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,

/*--  文字:  技  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,0xFC,0x20,0x10,0x20,0x10,0x20,0x15,0xFC,
0x18,0x84,0x30,0x88,0xD0,0x48,0x10,0x50,0x10,0x20,0x10,0x50,0x51,0x88,0x26,0x06,

/*--  文字:  學(xué)  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,

/*--  文字:  院  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x40,0x78,0x20,0x4B,0xFE,0x52,0x02,0x54,0x04,0x61,0xF8,0x50,0x00,0x48,0x00,
0x4B,0xFE,0x48,0x90,0x68,0x90,0x50,0x90,0x41,0x12,0x41,0x12,0x42,0x0E,0x44,0x00,

/*--  文字:  K  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0xEE,0x00,0x44,0x00,0x48,0x00,0x50,0x00,0x70,0x00,
0x50,0x00,0x48,0x00,0x48,0x00,0x44,0x00,0x44,0x00,0xEE,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  電  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,

/*--  文字:  信  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x08,0x40,0x08,0x20,0x0B,0xFE,0x10,0x00,0x10,0x00,0x31,0xFC,0x30,0x00,0x50,0x00,
0x91,0xFC,0x10,0x00,0x10,0x00,0x11,0xFC,0x11,0x04,0x11,0x04,0x11,0xFC,0x11,0x04,

/*--  文字:  1  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  5  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x78,0x00,
0x44,0x00,0x02,0x00,0x02,0x00,0x42,0x00,0x44,0x00,0x38,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  1  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x08,0x00,0x08,0x00,0x08,0x00,
0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  龔  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x04,0x20,0x04,0x10,0x7F,0xFC,0x09,0x20,0x09,0xC4,0x17,0x04,0x20,0xFC,0xC4,0x40,
0x04,0x40,0x3F,0xF8,0x04,0x40,0x04,0x40,0xFF,0xFE,0x08,0x20,0x10,0x10,0x20,0x08,

/*--  文字:  俊  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x08,0x40,0x08,0x40,0x08,0x88,0x11,0x04,0x13,0xFE,0x30,0x02,0x30,0x88,0x51,0x44,
0x92,0x42,0x10,0xF8,0x11,0x88,0x12,0x50,0x10,0x20,0x10,0x50,0x11,0x88,0x16,0x06,

/*--  文字:  宇  --*/
/*--  宋體12;  此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16   --*/
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x3F,0xF8,0x01,0x00,0x01,0x00,
0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,







////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //尾部的一屏的空字符,用于清屏,參數(shù)和屏大小有關(guān)。
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


};



/*-----------------------------------------------
             向595寫入一個(gè)字節(jié) 單紅色
------------------------------------------------*/
void InputByte( unsigned  char DataR1) //寫一個(gè)字節(jié)
{
        unsigned  char i;
        for(i=8; i>0; i--)
        {
                J32_SER = (DataR1&0x01);
                J32_CLK = 0;
                J32_CLK = 1;
                DataR1 = DataR1 >> 1;
        }
}


/*-----------------------------------------------
                    延時(shí)程序
------------------------------------------------*/
void Delay(unsigned int t)
{
        while(--t);
}


/*-----------------------------------------------
                      主程序
------------------------------------------------*/
main()
{
        unsigned char count;//16行掃描數(shù)據(jù),范圍0-15
        unsigned int i, j;
        unsigned char temp;
        //計(jì)算數(shù)組的元素個(gè)數(shù),最終需要的是漢字的個(gè)數(shù)
        int lenTotal = sizeof(hztest) / sizeof(int);  //所有
        int lenLow = sizeof(hztest[0]) / sizeof(int);  //低位
        int lenHigh = lenTotal / lenLow;  //高位

        while(1)
        {
                i++;
                if(i==240)//更改流動(dòng)速度,1T單片機(jī)和12T單片機(jī)速度大約5-8倍,注意更改參數(shù)
                {
                        i=0;
                        MoveBitNum++;
                        if(MoveBitNum==16)//每次移動(dòng)完一個(gè)漢字大小后循環(huán)
                        {
                                MoveBitNum=0;
                                HzNum+=1;    //調(diào)用下一個(gè)漢字
                                if(HzNum>=lenHigh-1)//需要顯示的漢字個(gè)數(shù),包括前面的一屏空字符的個(gè)數(shù),后面清屏的空字符不包含在內(nèi),這里是(漢字個(gè)數(shù)+1)
                                        HzNum=0;   //完全顯示完后循環(huán)調(diào)用
                        }
                }


                Delay(1);//控制掃描頻率
                //讀取漢字對(duì)應(yīng)屏幕緩沖區(qū)的數(shù)據(jù),不同大小的屏幕不一樣
                for(j=0; j<2; j++) //取每個(gè)漢字的前2個(gè)字節(jié),
                {
                        //漢字個(gè)數(shù)+1
                        buff[j+j+1]=hztest[HzNum+j][count+count+1];  //每次移動(dòng)完一個(gè)漢字后,選擇下一個(gè)漢字
                        buff[j+j]=hztest[HzNum+j][count+count];

                }
                //判斷移動(dòng)的位數(shù)
                if(MoveBitNum<8)                   //  判讀移動(dòng)距離是大于一個(gè)字節(jié)還是小于一個(gè)字節(jié),因?yàn)橐粋(gè)字節(jié)左移右移最大只能8位
                {
                        IncNum=0;
                        MoveBitNumtemp=MoveBitNum;
                }
                else
                {
                        IncNum=1;    //大于8就減去8得到的數(shù)值還是小于8
                        MoveBitNumtemp=MoveBitNum-8;
                }

                J32_LAT=0;       //鎖存無(wú)效

                for(j=2; j>0; j--)        //按bit的方式移動(dòng)緩沖區(qū)的內(nèi)容,然后輸出到595,即取出的數(shù)值每個(gè)字節(jié)左移一定的位數(shù),
                {
                        //后面左移出的數(shù)據(jù)整合到前面的字節(jié)中,保持?jǐn)?shù)據(jù)的連續(xù)性
                        temp=(buff[j-1+IncNum]<<MoveBitNumtemp)|(buff[j+IncNum]>>(8-MoveBitNumtemp));//這句比較重要,需要自行拿出2個(gè)字節(jié)的數(shù)據(jù)模擬分析
                        InputByte(temp);//輸出到595
                }//8個(gè)字節(jié)傳輸完鎖存輸出
                //控制使能端
                J32_OE  = 1;
                P1=count;//用P0口的前4位控制16行,屏內(nèi)部通過(guò)4-16譯碼器工作,循環(huán)掃描16行
                J32_LAT=1;      //鎖存有效,此時(shí)一行的數(shù)據(jù)顯示到屏上
                J32_OE = 0;


                count++;
                if(count==16)
                        count=0;
        }
}


ccc.zip

16.62 KB, 下載次數(shù): 20, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天干夜夜操视频 | 911影院 | 91精品亚洲 | 亚洲第一区久久 | 国产精品久久久久久久免费大片 | 国产精品视频一 | 精品国产高清一区二区三区 | 拍拍无遮挡人做人爱视频免费观看 | 日韩av在线一区二区三区 | 亚洲欧美在线一区 | 天堂一区二区三区 | 欧美在线观看免费观看视频 | 欧美精品在线一区二区三区 | 国产精品永久免费 | 欧美成人一级 | 国产精品视频久久久久久 | 国产一区不卡 | 国产国语精品 | 99re视频在线免费观看 | 国内久久 | 日韩欧美成人精品 | 久久久人成影片一区二区三区 | 欧美黄在线观看 | 黑人巨大精品欧美一区二区免费 | av毛片 | 日朝毛片 | 欧美一区二区久久 | 成人av一区 | 国产美女在线免费观看 | 亚洲人在线 | 欧美4p| 久久久久久久一区二区三区 | 日韩无 | 中文字幕在线视频精品 | 亚洲国产日韩欧美 | 国产一区二区三区四区 | 91久久综合 | 国产精品久久久久久久久久尿 | 国产乱码精品一区二区三区五月婷 | 亚洲一区二区三区在线视频 | 国产精品久久久久久久 |