19011098qj1pa7zpt9pqjm.jpg.thumb.jpg (62.96 KB, 下載次數: 114)
下載附件
2016-10-18 16:13 上傳
下載:
代碼.rar
(1.84 KB, 下載次數: 229)
2016-10-18 16:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
源程序:
- /*****************************************************
- 文件名稱:點陣測試.C
- 功能描述:實現點陣漢字上下翻頁顯示
- 編譯環境:Keil4
- 硬件設施:STC12C5A60S2+12M晶振,32*64雙色點陣
- 時間說明: 2012-08-17
- 作者: 王言鑫
- ****************************************************/
- //#include<reg52.h>
- //#include<ziku.h>
- #include<STC12C5A60S2.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit R1=P2^0;
- sbit R2=P2^1;
- sbit G1=P2^2;
- sbit G2=P2^3;
- sbit LCK=P2^4;
- sbit SCK=P2^5;
- sbit OE=P2^6;
- sbit H138_A=P1^0;
- sbit H138_B=P1^1;
- sbit H138_C=P1^2;
- sbit H138_D=P1^3;
- uchar code table[][48]=
- {
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x1F,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xFC,0x3B,0xFF,0xB3,0xFF,0xA7,0xFF,0xAF,0xFF,0x8F},
- {0xF8,0x9F,0xE0,0x8F,0xE4,0x87,0xFD,0xA7,0xF9,0xB3,0xFB,0xB9,0xF3,0xB8,0xE7,0xBC,0xC7,0xBC,0xFD,0xBF,0xFE,0x3F,0xFE,0x3F,0xFF,0xBF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"永",0*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFE,0x00,0xF0,0x00,0xF0,0x87,0xF7,0x8F,0xFF,0x9F,0xFF,0x1F,0xFF,0x1F,0xFE,0x1F,0xFE,0x1F},
- {0xFC,0x8F,0xF9,0x91,0xF9,0x98,0xF3,0x9C,0xF7,0x9C,0xE7,0x9E,0xEF,0x9F,0xFF,0x9F,0xFF,0x9F,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"不",1*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xF8,0x00,0xE1,0xFE,0xEF,0xFF,0xFF,0x8F,0xFC,0x0F},
- {0xFE,0x0F,0xFC,0x0F,0xFE,0x7F,0xFF,0xFF,0xFF,0x0F,0xFC,0x07,0xFC,0xE7,0xFC,0xE7,0xFC,0xC7,0xFC,0x0F,0xFE,0x0F,0xFF,0x3F,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"言",2*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0xBF,0xFF,0xC7,0xFF,0x07,0xFC,0x1F,0xFD,0x3F,0xFF,0x6F,0xFE,0x17,0xFC,0x17,0xFC,0x37,0xFD,0xFF,0xFF,0xCF},
- {0xFE,0x00,0xFC,0x00,0xE0,0x6E,0xC6,0x6F,0xDE,0xEF,0xFE,0xEF,0xFE,0xEF,0xFC,0xEF,0xFC,0xEF,0xF8,0xEF,0xF9,0xEF,0xFF,0xEF,0xFF,0xEF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"棄",3*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFC,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFC,0x61,0xF8,0x89,0xE0,0x99,0xE1,0x89,0xEC,0x89},
- {0xF8,0x89,0xF8,0x99,0xF1,0x89,0xF5,0x89,0xE5,0x99,0xED,0x99,0xCD,0x89,0xDD,0x89,0xFD,0x91,0xFD,0xF9,0xFD,0xFD,0xFD,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"相",4*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0x8F,0xFF,0x3F,0xFE,0x7F,0xFC,0xF7,0xFB,0xA7,0xFD,0xEF,0xFD,0xDF,0xFD,0xC3,0xFF,0x1D,0xFC,0x3D,0xF9,0x2C,0xF7,0x00},
- {0xE6,0x1F,0xE4,0x7F,0xFC,0x8F,0xFE,0xCF,0xFE,0x4F,0xFC,0x1F,0xF9,0x1F,0xFB,0x8F,0xF3,0x2F,0xC4,0x73,0xFC,0xF1,0xFF,0xF0,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"愛",5*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFC,0x01},
- {0xC0,0x00,0xC0,0x7C,0xDF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF},/*"一",6*/
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0x9F,0xFC,0x97,0xFC,0x83,0xF8,0x03,0xFA,0x0F,0xF3,0x1F},
- {0xF7,0x97,0xF7,0x87,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFF,0x9F,0xFF,0x9F,0xFF,0x80,0xFC,0x00,0xF0,0x7E,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF}/*"生",7*/
- };
- uchar num,sum,move,flag,temp,number;
- char num0,m;
- int tim;
- /*****************************************************
- 函數名稱:void write_595()
- 功能說明:給595寫數據
- 參數: DR1、DG1-上半屏 DR2、DG2-下半屏
- 返回值: 無
- ****************************************************/
- void write_595(uchar DR1,uchar DG1,uchar DR2,uchar DG2)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- LCK=0;
- R1=DR1&0X80;
- R2=DR2&0X80;
- G1=DG1&0X80;
- G2=DG2&0X80;
- LCK=1;
- DR1<<=1;
- DR2<<=1;
- DG1<<=1;
- DG2<<=1;
- }
- }
- /*****************************************************
- 函數名稱:void delay()
- 功能說明:延時函數
- 參數: z
- 返回值: 無
- ****************************************************/
- void delay(uchar z)
- {
- uchar x,y;
- for(x=0;x<z;x++)
- for(y=0;y<110;y++);
- }
- void main()
- {
- R1=0;
- R2=0;
- G1=0;
- G2=0;
- OE=1;
- tim=50; //控制延時時間
- sum=0;
- num0=0; //列掃描偏置
- number=2; //漢字寬度/8
- temp=0; //數據在字庫中的位置
- TMOD=0X01;
- TL0=(65536-50000)%256;
- TH0=(65536-50000)/256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- for(num=0;num<16;num++)
- {
- sum=num+num0;
- if(sum<16)
- {
- temp=0;
- write_595(0xff,table[0+temp][num*number+0],0xff,table[1+temp][num*number+0]);
- write_595(0xff,table[0+temp][num*number+1],0xff,table[1+temp][num*number+1]);
- write_595(0xff,table[2+temp][num*number+0],0xff,table[3+temp][num*number+0]);
- write_595(0xff,table[2+temp][num*number+1],0xff,table[3+temp][num*number+1]);
- write_595(0xff,table[4+temp][num*number+0],0xff,table[5+temp][num*number+0]);
- write_595(0xff,table[4+temp][num*number+1],0xff,table[5+temp][num*number+1]);
- write_595(0xff,table[6+temp][num*number+0],0xff,table[7+temp][num*number+0]);
- write_595(0xff,table[6+temp][num*number+1],0xff,table[7+temp][num*number+1]);
-
- SCK=0;
- SCK=1;
- P1=sum;
- }
- else
- {
- temp=8;
- write_595(0xff,table[0+temp][num*number+0],0xff,table[1+temp][num*number+0]);
- write_595(0xff,table[0+temp][num*number+1],0xff,table[1+temp][num*number+1]);
- write_595(0xff,table[2+temp][num*number+0],0xff,table[3+temp][num*number+0]);
- write_595(0xff,table[2+temp][num*number+1],0xff,table[3+temp][num*number+1]);
- write_595(0xff,table[4+temp][num*number+0],0xff,table[5+temp][num*number+0]);
- write_595(0xff,table[4+temp][num*number+1],0xff,table[5+temp][num*number+1]);
- write_595(0xff,table[6+temp][num*number+0],0xff,table[7+temp][num*number+0]);
- write_595(0xff,table[6+temp][num*number+1],0xff,table[7+temp][num*number+1]);
- SCK=0;
- SCK=1;
- P1=sum-16;
- temp=0;
- }
-
- }
- }
- }
- void timer() interrupt 1
- {
-
- TL0=(65536-50000)%256;
- TH0=(65536-50000)/256;
- flag++;
- if(flag>tim)
- {
- tim=2;
- flag=0;
- if(m==0)
- {
- if(num0<16)
- {
- num0++;
- }
- else
- {
- m=1;
- }
- }
- if(m==1)
- {
- if(num0>0)
- {
- num0--;
- }
- else
- {
- m=0;
- }
- }
-
- }
- if((num0==0)||(num0==16))
- tim=50;
- else tim=2;
- }
- /*****************************************************
- 函數名稱:void intensity_control(uchar time)
- 功能說明:調整屏幕亮度
- 參數: time
- 返回值: 無
- ***************************************************
- void intensity_control(uchar time)
- {
- OE=1;
- delay(time);
- OE=0;
- delay(10-time);
- } */
復制代碼
|