16*64點(diǎn)陣完整資料包
電路原理圖如下:
注意事項(xiàng):
1、提供的電源要插在擴(kuò)展板的電源接口
2、下載程序用USB線通過stc-isp軟件下載程序
3、提供2個(gè)測試程序,不做其他技術(shù)支持
4、由于版權(quán)問題,keil編程軟件現(xiàn)在不提供,請(qǐng)自己百度下載,抱歉
5、發(fā)貨收到的貨,我們內(nèi)置了程序,直接插上電源會(huì)有現(xiàn)象,一般燒寫的是全亮的現(xiàn)象,請(qǐng)記住線是怎么接的,以免回頭拆了忘記了
單片機(jī)源程序如下:
- /*-----------------------------------------------
- 名稱:IO口高低電平控制
- 修改:無
- 內(nèi)容:點(diǎn)亮P1口的1個(gè)LED燈閃爍
- 該程序是單片機(jī)學(xué)習(xí)中最簡單最基礎(chǔ)的,
- 通過程序了解如何控制端口的高低電平
- ------------------------------------------------*/
- #include<reg52.h> //包含頭文件,一般情況不需要改動(dòng),
- //頭文件包含特殊功能寄存器的定義
- sfr AUXR = 0x8e;
- sfr P3M1=0xB1;
- sfr P3M0=0xB2;
- sfr P1M1=0x91;
- sfr P1M0=0x92;
- sbit KEY = P3^2;
- sbit T_STR = P3^7; //鎖存引腳,一般標(biāo)識(shí)位STR
- sbit T_IO = P1^4; //數(shù)據(jù)引腳,屏上標(biāo)識(shí)R1或者G1
- sbit T_CLK = P3^6; //時(shí)鐘引腳,標(biāo)識(shí)位CLK
- sbit T_OE = P3^5;
- 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[]= //取模選擇字節(jié)倒序 ,正序得出的字是反的,可以在軟件中設(shè)置自動(dòng)倒敘
- {
- 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,
- 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,
- 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,
- 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è)是4個(gè)漢字屏
- //所以寫入4個(gè)漢字
-
- …………
- …………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
- 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,
- };
- /*-----------------------------------------------
- 向595寫入一個(gè)字節(jié)
- ------------------------------------------------*/
- void InputByte(unsigned char dat) //寫一個(gè)字節(jié)
- {
- unsigned char i;
-
- for(i=0;i<8;i++)
- {
-
- T_IO=!(dat&0x01);
- dat>>=1;
- T_CLK=0;
- T_CLK=1;
- }
- }
- /*-----------------------------------------------
- 延時(shí)程序
- ------------------------------------------------*/
- void Delay(unsigned int t)
- {
- while(--t);
- }
- /*------------------------------------------------
- 主函數(shù)
- ------------------------------------------------*/
- void main (void)
- {
- unsigned char count;//16行掃描數(shù)據(jù),范圍0-15
- unsigned int i, j;
- unsigned char temp;
- P3M0=0xff;//推挽
- P1M0=0xff;
- P3M1=0;
- P1M1=0;
- AUXR |= 0x80; //1T
- //AUXR &= 0x7f; //12T
- while (1) //主循環(huán)
- {
- i++;
- if(i==100)//更改流動(dòng)速度,1T單片機(jī)和12T單片機(jī)速度大約5-8倍,注意更改參數(shù)
- {
- i=0;
- MoveBitNum++;
- if(MoveBitNum==16)//每次移動(dòng)完一個(gè)漢字大小后循環(huán)
- {
- MoveBitNum=0;
- HzNum+=32; //調(diào)用下一個(gè)漢字
- if(HzNum>=800)//需要顯示的漢字個(gè)數(shù)乘以32,包括前面的一屏空字符的個(gè)數(shù),后面清屏的空字符不包含在內(nèi),這里是(漢字個(gè)數(shù)+4)x32
- HzNum=0; //完全顯示完后循環(huán)調(diào)用
- }
- }
- Delay(1);//控制掃描頻率
- T_OE =0;
- for(j=0;j<5;j++) //取每個(gè)漢字的前2個(gè)字節(jié),4個(gè)漢字組成一行,數(shù)據(jù)傳輸完成后鎖存輸出即可,這里需要多取出一個(gè)漢字作為緩沖
- { //原來j=4,現(xiàn)在j=5.
- buff[2*j]=hztest[HzNum+j*32+count*2]; //每次移動(dòng)完一個(gè)漢字后,選擇下一個(gè)漢字
- buff[2*j+1]=hztest[HzNum+j*32+count*2+1];
- }
- if(MoveBitNum<8) // 判讀移動(dòng)距離是大于一個(gè)字節(jié)還是小于一個(gè)字節(jié),因?yàn)橐粋(gè)字節(jié)左移右移最大只能8位
- { IncNum=0; MoveBitNumtemp=MoveBitNum; }
- else
- { IncNum=1; MoveBitNumtemp=MoveBitNum-8;}//大于8就減去8得到的數(shù)值還是小于8
- T_STR=0; //鎖存無效
- for(j=0;j<8;j++) //按bit的方式移動(dòng)緩沖區(qū)的內(nèi)容,然后輸出到595,即取出的數(shù)值每個(gè)字節(jié)左移一定的位數(shù),
- { //后面左移出的數(shù)據(jù)整合到前面的字節(jié)中,保持?jǐn)?shù)據(jù)的連續(xù)性
- temp=(buff[j+IncNum]>>MoveBitNumtemp)|(buff[j+1+IncNum]<<(8-MoveBitNumtemp));//這句比較重要,需要自行拿出2個(gè)字節(jié)的數(shù)據(jù)模擬分析
- InputByte(temp);//輸出到595
- }//8個(gè)字節(jié)傳輸完鎖存輸出
- P1=count;//用P1口的前4位控制16行,屏內(nèi)部通過4-16譯碼器工作,循環(huán)掃描16行
- T_STR=1; //鎖存有效,此時(shí)一行的數(shù)據(jù)顯示到屏上
- T_OE =1;
- count++;
- if(count==16)
- count=0;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
16x64-M2點(diǎn)陣屏資料.rar
(1.02 MB, 下載次數(shù): 94)
2018-4-27 01:29 上傳
點(diǎn)擊文件名下載附件
|