标题:
哪位大神帮我简化一下这个单片机程序
[打印本页]
作者:
2017124
时间:
2017-12-4 17:05
标题:
哪位大神帮我简化一下这个单片机程序
单片机源程序:
#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();
}
复制代码
作者:
黎明即起
时间:
2017-12-4 17:35
刚开始学习液晶屏
作者:
changle11
时间:
2017-12-4 22:05
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();//????
作者:
changle11
时间:
2017-12-4 22:10
rs=0;
rw=0;
P0=com;
e=1;
delay(5);
e=0;
delay(5);
rs=1;//???
rw=1;//???
作者:
2017124
时间:
2017-12-5 09:16
changle11 发表于 2017-12-4 22:05
P1=0xf0;
hi=P1&0xf0;
if(P1!=0xf0)
什么意思
作者:
哈哈的爸爸
时间:
2017-12-5 10:08
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;//?????
作者:
yxlclp17
时间:
2017-12-5 10:57
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();//????
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1