单片机源程序:
- #include <STC15F2K60S2.H>
- #include<intrins.h>
- #define uc unsigned char
- #define ui unsigned int
- sbit cs1=P2^0;
- sbit cs2=P2^1;
- sbit rs=P2^2;
- sbit rw=P2^3;
- sbit e=P2^4;
- sbit cp=P2^5;
- sbit dir=P2^6;
- sbit rl=P2^7;
- sbit wr=P5^5;
- uc code sz[][12]={
- /*-- 文字: 0 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0xF8,0x04,0x04,0x04,0xF8,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
- /*-- 文字: 1 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x00,0x00,
- /*-- 文字: 2 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x18,0x84,0x44,0x24,0x18,0x00,0x03,0x02,0x02,0x02,0x02,0x00,
- /*-- 文字: 3 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x08,0x04,0x24,0x24,0xD8,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
- /*-- 文字: 4 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x40,0xB0,0x88,0xFC,0x80,0x00,0x00,0x00,0x00,0x03,0x02,0x00,
- /*-- 文字: 5 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x3C,0x24,0x24,0x24,0xC4,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
- /*-- 文字: 6 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0xF8,0x24,0x24,0x2C,0xC0,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
- /*-- 文字: 7 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x0C,0x04,0xE4,0x1C,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- /*-- 文字: 8 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0xD8,0x24,0x24,0x24,0xD8,0x00,0x01,0x02,0x02,0x02,0x01,0x00,
- /*-- 文字: 9 --*/
- /*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*/
- /*-- 高度不是8的倍数,现调整为:宽度x高度=6x16 --*/
- 0x38,0x44,0x44,0x44,0xF8,0x00,0x00,0x03,0x02,0x02,0x01,0x00
- };
- uc Y_i;
- uc Page_i;
- uc m,d,w,y,s,k;
- void delay(uc z)
- {
- uc y,j;
- for(j=z;j>0;j--)
- for(y=110;y>0;y--);
- }
- void xzl(uc com)
- {
- rs=0;
- rw=0;
- P0=com;
- e=1;
- delay(5);
- e=0;
- delay(5);
- rs=1;
- rw=1;
- }
- void xsj(uc dat)
- {
- rs=1;
- rw=0;
- P0=dat;
- e=1;
- delay(5);
- e=0;
- delay(5);
- rs=0;
- rw=1;
- }
- void jz()
- {
- uc hi,lei,he;
- P1=0xf0;
- hi=P1&0xf0;
- if(P1!=0xf0)
- {
- P1=0xf0;
- hi=P1&0xf0;
- if(P1!=0xf0)
- {
- P1=0x0f;
- lei=P1&0x0f;
- he=hi+lei;
- while (P1!=0x0f)
- {
- P1=0x0f;
- lei=P1&0x0f;
- he=hi+lei;
- xs();
- }
- switch (he)
- {
- case 0xee:s=0;break;
- case 0xde:s=10;break;
- case 0xbe:s=20;break;
- case 0x7e:s=30;break;
- case 0xed:s=40;break;
- case 0xdd:s=50;break;
- case 0xbd:s=60;break;
- case 0x7d:s=70;break;
- case 0xeb:s=80;break;
- case 0xdb:s=90;break;
- case 0xbb:s=100;break;
- case 0x7b:s=110;break;
- case 0xe7:s=120;break;
- case 0xd7:s=130;break;
- case 0xb7:s=140;break;
- case 0x77:s=150;break;
- }
- }
- }
- }
- void qp()
- {
- uc i,j;
- xzl(0x3f);
- xzl(0xc0);
- for(i=0;i<8;i++)
- {
- xzl(0xb8+i);
- xzl(0x40);
- for(j=0;j<64;j++)
- xsj(0x00);
- }
- }
- void Draw(uc page,uc yi,uc *ps,uc n)
- {
- uc i;
- xzl(0xb8+page);
- xzl(0x40+yi);
- for(i=0;i<n;i++)
- {
- xsj(*ps);
- ps++;
- }
- }
- void xswz(uc *p,uc x)
- {
- uc c,v,b,n;
- c=x/2;
- if(Y_i<64)
- {
- cs1=1;
- cs2=0;
- Draw(Page_i,Y_i,p,c);
- Draw(Page_i,Y_i+c,p+c,c);v=c*2;
- Draw(Page_i+1,Y_i,p+v,c);b=v+c;
- Draw(Page_i+1,Y_i+c,p+b,c);
- }
- else
- {
- cs1=0;
- cs2=1;
- Draw(Page_i,Y_i-64,p,c);n=64-c;
- Draw(Page_i,Y_i-n,p+c,c);
- Draw(Page_i+1,Y_i-64,p+v,c);
- Draw(Page_i+1,Y_i-n,p+b,c);
- }
- Y_i=Y_i+x;
- }
- void xzwz(uc page_i,uc y_i)
- {
- Page_i=page_i;
- Y_i=y_i;
- }
- void dyjxs()
- {
- xzwz(4,0);
- xswz(sz[m/10],6);
- }
- void zd()
- {
- EA=1;
- ET0=1;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TR0=1;
- }
- void main()
- {
- zd();
- qp();
- while(1)
- {
- dyjxs();
- }
- }
- void Tiem() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- jz();
- }
复制代码 |