本帖最后由 dfyy8888 于 2015-1-18 17:35 編輯
- <p>//matrix.h(字模數(shù)組文件)</p><p>//使用zimoV2.2.exe取模,因?yàn)槭菣M向移動(dòng)字幕,所以要縱向取模。</p><p>//在zimoV2.2.exe里面可以一次性取出所有字符的字模數(shù)據(jù),不用做任何修改,粘貼到數(shù)組即可使用</p><p>//可以單獨(dú)做一個(gè)頭文件,字符數(shù)不限,只要你單片機(jī)rom夠大^_^</p><p>
- unsigned char code matrix[]={
- /*-- 文字: [空字符] --*/
- 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,
- ////////////////////////////////////////////////////////////////////////////////
- /*-- 文字: 《 --*/
- /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
- 0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x09,0x12,0x24,0x48,0x90,0x20,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x90,0x48,0x24,0x12,0x08,0x04,0x00,0x00,
- /*-- 文字: 三 --*/
- /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
- 0x00,0x20,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x00,0x00,
- 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
- /*-- 文字: 字 --*/
- /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
- 0x08,0x30,0x20,0x24,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x20,0x20,0x28,0x30,0x00,
- 0x40,0x40,0x40,0x40,0x40,0x42,0x41,0xFE,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
- /*-- 文字: 經(jīng) --*/
- /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
- 0x04,0x0C,0x35,0xC6,0x04,0x18,0x01,0x41,0x42,0x44,0x48,0x58,0x64,0x42,0x01,0x00,
- 0x44,0xE6,0x44,0x48,0x48,0x48,0x02,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x02,0x00,
- /*-- 文字: 》 --*/
- /*-- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 --*/
- 0x00,0x00,0x40,0x20,0x90,0x48,0x24,0x12,0x09,0x04,0x02,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x08,0x12,0x24,0x48,0x90,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,</p><p>
- ////////////////////////////////////////////////////////////////////////////////
- /*-- 文字: [空字符] --*/
- 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
- };
- /********************************************************************/
- //字幕橫向移動(dòng)程序,需要改內(nèi)容時(shí)請(qǐng)修改matrix.h文件的字模數(shù)據(jù)即可。
- #include<reg51.h>
- #include<intrins.h>
- #include"matrix.h" //字模存放頭文件
- sbit SDI = P3^4;
- sbit SCK = P3^6;
- sbit LCK = P3^5;
- void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3);
- main()
- {
- unsigned char dat0, dat1, dat2, dat3, j, k, n=0;
- unsigned int neg, tmp, i;
- neg = 0x7FFF;
- while(1)
- {
- for(i=0; i<(sizeof(matrix)-31);i++)
- {
- for(k=4; k>0; k--)
- {
- for(j=0; j<16; j++)
- {
- tmp = _iror_(neg,j);
- dat0 = (unsigned char)(tmp);
- dat1 = (unsigned char)(tmp>>8);
- if((i+n)/16%2!=0) n+=16;
- dat3 = (unsigned char)(*(matrix+i+n));
- dat2 = (unsigned char)(*(matrix+i+n+16));
- HC595_Send(dat0,dat1,dat2,dat3);
- n++;
- }
- n=0;
- }
- if(i/16%2!=0) i+=16;
- }
- }
- }
- //下面這個(gè)子函數(shù)如果把形參改成指針(即數(shù)組),速度會(huì)很慢,所以把四個(gè)for循環(huán)都寫出來(lái)了
- void HC595_Send(unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3)
- {
- unsigned char i;
- SCK = 1;
- LCK = 1;
- for(i=0;i<8;i++)
- {
- SDI = dat0&0x01;
- dat0 >>= 1;
- SCK = 0;
- SCK = 1;
- }
- for(i=0;i<8;i++)
- {
- SDI = dat1&0x01;
- dat1 >>= 1;
- SCK = 0;
- SCK = 1;
- }
- for(i=0;i<8;i++)
- {
- SDI = dat2&0x01;
- dat2 >>= 1;
- SCK = 0;
- SCK = 1;
- }
- for(i=0;i<8;i++)
- {
- SDI = dat3&0x01;
- dat3 >>= 1;
- SCK = 0;
- SCK = 1;
- }
- LCK = 0;
- LCK = 1;
- }</p>
復(fù)制代碼 附:電路圖(采用4片74HC595,橫列各兩片,JP595短路帽短接)
|