- #include<reg52.h>
- sbit T_STR = P2^6; //鎖存引腳,屏上標識位STR
- sbit R1 = P2^4; //數據引腳,屏上標識R1
- sbit G1 = P0^4; //數據引腳,屏上標識G1
- sbit T_CLK = P2^5; //時鐘引腳,屏上標識位CLK
- sbit OE = P2^1; //使能引腳,屏上標識EN/OE
- unsigned int k;
- unsigned char HzNum;
- unsigned char tab[8];
- unsigned char DIS[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//行數據
- /*-----------------------------------------------
- 16x16漢字取模數據
- ------------------------------------------------*/
- unsigned char code hztest1[][32]= //二維數組,目的是減少運算,可以用最基本的一維數組,每個漢字有32個字節數據
- {
- /*hong ren*/
- 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
- 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*10*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x1F,0x98,0x10,0x90,0x10,0x90,0x10,0x90,0x10,
- 0x90,0x10,0x90,0x10,0x90,0x10,0x90,0x10,0xB8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- hongren2 寬度x高度=16x16 --*/
- 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
- 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*9*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,
- 0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*hong ren*/
- 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
- 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*8*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
- 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- hongren2 寬度x高度=16x16 --*/
- 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
- 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*7*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- /*hong ren*/
- 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
- 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*6*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
- 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- hongren2 寬度x高度=16x16 --*/
- 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
- 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*5*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*hong ren*/
- 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
- 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*4*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- hongren2 寬度x高度=16x16 --*/
- 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
- 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*3*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*hong ren*/
- 0x00,0x00,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xF0,0x03,0xF8,0x07,0xD8,0x07,0xD0,0x05,
- 0xE0,0x05,0xC0,0x05,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*2*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
- 0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- hongren2 寬度x高度=16x16 --*/
- 0x00,0x00,0xC0,0x01,0x80,0x01,0xC0,0x01,0xF0,0x07,0xF8,0x0F,0xD8,0x0D,0xD8,0x0D,
- 0xF0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x40,0x01,0x40,0x01,0x60,0x03,
- /*1*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
- 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- unsigned char code hztest2[][32]= //二維數組,目的是減少運算,可以用最基本的一維數組,每個漢字有32個字節數據
- {
- /*10*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x1F,0x98,0x10,0x90,0x10,0x90,0x10,0x90,0x10,
- 0x90,0x10,0x90,0x10,0x90,0x10,0x90,0x10,0xB8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren 寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
- 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
- /*9*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,
- 0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren2寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
- 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
- /*8*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
- 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren 寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
- 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
- /*7*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren2寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
- 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
- /*6*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
- 0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren 寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
- 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
- /*5*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren2寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
- 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
- /*4*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren 寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
- 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
- /*3*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
- 0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren2寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
- 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
- /*2*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xE0,0x07,
- 0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren 寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x01,0xF0,0x01,0xF0,0x03,0xF0,0x03,
- 0xE0,0x07,0xC0,0x0D,0xE0,0x01,0xF0,0x01,0x98,0x01,0x88,0x01,0x80,0x03,0x00,0x00,
- /*1*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x01,
- 0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- /*-- lvren2寬度x高度=16x16 --*/
- 0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x09,0xF0,0x0F,0xF8,0x07,0xC8,0x01,
- 0xC8,0x01,0xC0,0x03,0xE0,0x07,0x70,0x16,0x38,0x1C,0x18,0x18,0x08,0x00,0x00,0x00,
- };
- /*-----------------------------------------------
- /*-----------------------------------------------
- 初始化定時器,做為動態掃描
- ------------------------------------------------*/
- void Init_Timer1(void)
- {
- TMOD |= 0x10;
- EA=1; //總中斷使能
- ET1=1; //定時中斷使能
- TR1=1; //打開定時器開關
- }
- /*-----------------------------------------------
- 主程序
- ------------------------------------------------*/
- main()
- { unsigned int i;
- unsigned char a=0;
- Init_Timer1(); //初始化定時器
- while(1)
- {
- k=0;//可以加入其它的控制程序
- HzNum = a;
- for(i=0;i<200;i++);//循環延時時間,可以自行調節參數
- a++;
- k++;
- if(a == 20)
- a = 0;
- if(k == 20)
- k = 0;
- }
- }
- /*-----------------------------------------------
- 定時器執行動態掃描
- ------------------------------------------------*/
- void Timer1_isr(void) interrupt 3
- {
- static unsigned char count,j;
- unsigned char i;
- TH1=0xff; //重裝初值
- TL1=0;
- T_STR=0; //鎖存釋放
- if(k<=9)
- {for(j=0;j<2;j++) //取每個漢字的前2個字節,數據傳輸完成后鎖存輸出即可 j表示漢字個數,如果是3個漢字屏就可以修改成3
- {
- {InputByteR(hztest1[j+2*HzNum][i]);
- InputByteR(hztest1[j+2*HzNum][i+1]);}
- }}
- if(k>9)
- {for(j=0;j<2;j++) //取每個漢字的前2個字節,數據傳輸完成后鎖存輸出即可 j表示漢字個數,如果是3個漢字屏就可以修改成3
- {
- {InputByteG(hztest2[j+2*HzNum][i]);
- InputByteG(hztest2[j+2*HzNum][i+1]);}
- }}
- OE=1; //暫時關閉屏幕,防止出現鬼影,如果沒有使用該引腳控制則會出現拖影現象。
- T_STR=1; //鎖存有效,此時一行的數據顯示到屏上
- P0=DIS[count]|0xf0;//用P0口的前4位控制16行,屏內部通過4-16譯碼器工作,循環掃描其他15行
- OE=0;//使能
- count++;
- i+=2; //累加調用下一行數據
- if(count==16)
- count=0;
- if(i==32)
- i=0;
- }
復制代碼 |