?? box.c
字號:
#include<reg51.h>
#include<absacc.h>
#include<INTRINS.H>
#define uint unsigned int
#define uchar unsigned char
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P2_0=P2^3;
sbit P2_1=P2^4;
sbit P2_2=P2^5;
sbit P2_3=P2^0;
sbit P2_4=P2^1;
sbit P2_5=P2^2;
uchar (*PP)[32],*Q,rr;
uchar I,X,Y,KK=0,LL=0;
uint flag0=0,flag1=0;
uchar code hanzi[5][32]={ //漢字(16*16)
{0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,
0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00},
{0x02,0xF2,0x12,0x12,0x3E,0x00,0x04,0x84,0x44,0xB5,0x86,0x84,0xE4,0x44,0x04,0x00,
0x01,0x23,0x41,0x81,0x7F,0x00,0x21,0x71,0x29,0x25,0x22,0x21,0x28,0x70,0x20,0x00},
{0x10,0x60,0x01,0xE6,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x18,0x08,0x00,
0x04,0x04,0xFF,0x40,0x30,0x8F,0x80,0x41,0x26,0x18,0x18,0x26,0x61,0xC0,0x40,0x00},
{0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00},
{0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00}};
uchar code zheng[]={ //正弦波
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0C,0x06,0x07,0x03,0x03,
0x03,0x03,0x03,0x03,0x07,0x06,0x1C,0x38,0x70,0xE0,0xC0,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,
0xC0,0xF0,0x78,0x1C,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x1E,0x78,0xE0,0x80,
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,0x01,0x07,
0x0F,0x3C,0x70,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x38,0x1C,0x0E,0x07,
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,0x01,0x03,0x07,0x0E,0x1C,0x38,0x30,0x60,0x60,0x60,0x40,0x60,0x60,
0x60,0x60,0x30,0x30,0x18,0x1C,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00};
uchar code fang[]=
{0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,
0xFF,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,0xFF,
0xFF,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,0xFF,
0xFF,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,0xFF,
0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0};
uchar code san[]=
{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,
0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,
0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,
0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,
0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x01,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,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void delay1(void) //延時10us
{
uchar i;
for(i=5;i>0;i--);
}
void delay2(void) //延時2s
{
uchar i,j,k;
for(i=2;i>0;i--)
for(j=255;j>0;j--)
for(k=255;k>0;k--);
}
void delay3(void) //延時1s
{
uchar i,j,k;
for(i=1;i>0;i--)
for(j=175;j>0;j--)
for(k=255;k>0;k--);
}
void delay00(void)
{
int i,j;
for(i=10;i>0;i--)
for(j=255;j>0;j--);
}
void WRI(uchar r) //寫指令子程序
{
P2_2=0;
P2_1=0;
P2_0=0;
P0=r;
P2_2=1;
delay1();
P2_2=0;
}
void WRD(uchar r1) //寫數據子程序
{
P2_2=0;
P2_1=0;
P2_0=1;
P0=r1;
P2_2=1;
delay1();
P2_2=0;
}
void clear(void) //清屏子程序
{
uchar RR,RR1,RR2,page;
page=0xB8; //設置頁地址
for(RR2=8;RR2>0;RR2--) //8頁
{
RR1=page;
WRI(RR1);
RR1=0x40;
WRI(RR1);
for(RR=128;RR>0;RR--) //128列
{
RR1=0x00; //送0,清顯示
WRD(RR1);
}
page++;
}
}
void hanzi1(uchar(*p)[32],uchar x,uchar y) //取數送顯示(漢字)
{
uchar rr0,rr1,rr5;
for(rr0=2;rr0>0;rr0--)
{
rr1=y+0x40;
WRI(rr1);
rr1=x+0xB9;
WRI(rr1);
while(KK<5)
{
for(rr5=16;rr5>0;rr5--)
{
rr1=*(*(p+KK)+LL);
WRD(rr1);
delay1();
LL++;
}
break;
}
x++;
}
LL=0;KK++;
rr1=0xC0;
WRI(rr1);
rr1=0x3F;
WRI(rr1);
rr0=5;
for(rr0=5;rr0>0;rr0--)
{
delay3();
}
}
void boxing(uchar *p1,uchar x1,uchar y1) //取數送顯示(波形)
{
uchar rr10,rr11,rr15;
for(rr10=4;rr10>0;rr10--)
{
rr11=y1+0x40;
WRI(rr11);
rr11=x1+0xB9;
WRI(rr11);
for(rr15=64;rr15>0;rr15--)
{
rr11=*p1;
WRD(rr11);
delay1();
p1++;
}
x1++;
}
rr11=0xC0;
WRI(rr11);
rr11=0x3F;
WRI(rr11);
rr10=5;
for(rr10=5;rr10>0;rr10--)
{
delay3();
}
}
void LCD(uint flag) //LCD顯示子程序
{
uchar xy[7][2]={{0,4},{0,24},{0,44},{5,8},{5,30}}; //頁,列地址
_nop_();
P2_2=0;
_nop_();
P2_5=0; //復位
delay1();
P2_5=1;
clear(); //清屏
delay2();
P2_4=0; //開左屏
P2_3=1;
rr=0xC0; //設置顯示起時行
WRI(rr);
for(I=0;I<5;I++) //顯示漢字
{
X=xy[I][0];
Y=xy[I][1];
PP=hanzi;
hanzi1(PP,X,Y);
}
if(flag!=0)
{
P2_4=1; //開右屏
P2_3=0;
rr=0xC0;
WRI(rr);
switch(flag)
{
case 1: X=0; //顯示方波
Y=0;
Q=fang;
boxing(Q,X,Y);
break;
case 2: X=0; //顯示正弦波
Y=0;
Q=zheng;
boxing(Q,X,Y);
break;
case 3: X=0; //顯示三角波
Y=0;
Q=san;
boxing(Q,X,Y);
break;
}
}
}
void delay(unsigned int d_time)
{
for(;d_time>0;d_time--);
}
void main(void)
{
P1_0=0;
delay(10);
P1_0=1;
LCD(flag1);
IE=0x81;
IT0=0;
while(1);
}
void wave(void)interrupt 0
{
while(flag1==4)
flag1=0;
flag1++;
switch(flag1)
{
case 1:LCD(flag1);break;
case 2:LCD(flag1);break;
case 3:LCD(flag1);break;
}
delay00();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -