📄 ppm-rcpro.c
字号:
}
}
/*{uchar bl,lb; //仿真
if(zy==1)
{cs1_0();cs2_1();}
else if(zy==0)
{cs1_1();cs2_0();}
else if(zy==2)
{cs1_0();cs2_0();}
for(lb=0;lb<yq;lb++)
{
xzl(0xb8+yw);
xzl(0x40+xw);
for(bl=0;bl<qx;bl++)
{if(fb==1)xsj(0x00);else xsj(0xff);}
yw=yw+1;
}
}*/
//向LCD写一位数据
void xsj(uchar dxsj) //待写数据
{rw_0();
di_1();
dat=dxsj;
e_0();
delay_us(5);
e_1();
}
//向LCD写一条指令
void xzl(uchar zlz) //待写指令
{rw_0();
di_0();
dat=zlz;
e_0();
delay_us(5);
e_1();
}
//系统初始化
void xt_csh(void)
{
SREG=0x80;
xtjm();
while(1)
{aj=0;
aj=smaj();
if(aj==0); //aj为键值,1为设置键,2为下移键,3为确定键,0为无键
else if(aj==1){if(xz<3)xz=xz+1;else xz=1;xxm(xz);} //选择项目
else if(aj==2){if(xz==1){if(mod<3)mod=mod+1;else mod=1;xmod(mod);} //模式选择
if(xz==2){if(ch<8)ch=ch+1;else ch=1;xch(ch);} //通道选择
if(xz==3){if(fs<5)fs=fs+1;else fs=1;xfs(fs);}} //输入选择
else if(aj==3)break;
}
clear(0,0,64,8,2,1);
gzjm();
if(mod==1)
MCUCR=MCUCR|0x0e;//INT1上升触发,INT0下降触发
else if(mod==2)
MCUCR=MCUCR|0x0b;
else if(mod==3)
{}
GICR=GICR|0xC0;//INT1中断使能
}
//写项目(菜单标题)
void xxm(uchar hz) //菜单标题
{xhz(11,0,0,0,1);xhz(12,16,0,0,1);
switch(hz)
{case 1:xhz(9,32,0,1,1);xhz(10,48,0,1,1);break; //类型
case 2:xhz(13,32,0,1,1);xhz(14,48,0,1,1);break; //通道
case 3:xhz(15,32,0,1,1);xhz(16,48,0,1,1);break; //输入
//选择
}
}
//写类型
void xmod(uchar mz) //类型 3选1
{switch(mz)
{case 1:{xzm(1,0,2,1,0);xzm(1,8,2,1,0);xzm(2,16,2,1,0);
//xzm(1,32,2,1,1);xzm(4,40,2,1,1);xzm(2,48,2,1,1);
xzm(1,0,2,0,1);xzm(3,8,2,0,1);xzm(2,16,2,0,1);}break;
case 2:{xzm(1,0,2,1,1);xzm(1,8,2,1,1);xzm(2,16,2,1,1);
xzm(1,32,2,1,0);xzm(4,40,2,1,0);xzm(2,48,2,1,0);
//xzm(1,0,2,0,1);xzm(3,8,2,0,1);xzm(2,16,2,0,1);
}break;
case 3:{//xzm(1,0,2,1,1);xzm(1,8,2,1,1);xzm(2,16,2,1,1);
xzm(1,32,2,1,1);xzm(4,40,2,1,1);xzm(2,48,2,1,1);
xzm(1,0,2,0,0);xzm(3,8,2,0,0);xzm(2,16,2,0,0);}break;
}
}
//写通道
void xch(uchar cz) //通道值 8选1
{switch(cz)
{case 1:xs(8,48,4,0,1);xs(1,0,4,1,0);break;
case 2:xs(1,0,4,1,1);xs(2,16,4,1,0);break;
case 3:xs(2,16,4,1,1);xs(3,32,4,1,0);break;
case 4:xs(3,32,4,1,1);xs(4,48,4,1,0);break;
case 5:xs(4,48,4,1,1);xs(5,0,4,0,0);break;
case 6:xs(5,0,4,0,1);xs(6,16,4,0,0);break;
case 7:xs(6,16,4,0,1);xs(7,32,4,0,0);break;
case 8:xs(7,32,4,0,1);xs(8,48,4,0,0);break;
}
}
//写输入方式
void xfs(uchar fz) //直接 反向 接收 反接 输出 5选1
{switch(fz)
{case 1: //输出 直接 反向
{xhz(15,0,6,1,1);xhz(17,16,6,1,1);xhz(18,48,6,1,0);
xhz(19,0,6,0,0);xhz(20,32,6,0,1);xhz(21,48,6,0,1);}break;
case 2: //直接 反向 接收
{xhz(18,0,6,1,1);xhz(19,16,6,1,1);xhz(20,48,6,1,0);
xhz(21,0,6,0,0);xhz(19,32,6,0,1);xhz(22,48,6,0,1);}break;
case 3: //反向 接收 反接
{xhz(20,0,6,1,1);xhz(21,16,6,1,1);xhz(19,48,6,1,0);
xhz(22,0,6,0,0);xhz(20,32,6,0,1);xhz(19,48,6,0,1);}break;
case 4: //接收 反接 输出
{xhz(19,0,6,1,1);xhz(22,16,6,1,1);xhz(20,48,6,1,0);
xhz(19,0,6,0,0);xhz(15,32,6,0,1);xhz(17,48,6,0,1);}break;
case 5: //反接 输出 直接
{xhz(20,0,6,1,1);xhz(19,16,6,1,1);xhz(15,48,6,1,0);
xhz(17,0,6,0,0);xhz(18,32,6,0,1);xhz(19,48,6,0,1);}break;
}
}
//系统界面
void xtjm(void)
{uchar chbl;
clear(0,0,64,8,2,1);
xhz(5,32,0,1,1); //系
xhz(6,48,0,1,1); //统
xhz(7,0,0,0,1); //设
xhz(8,16,0,0,1); //置
{xmod(1);xmod(2);xmod(3);xzm(1,0,2,0,1);xzm(3,8,2,0,1);xzm(2,16,2,0,1);
for(chbl=1;chbl<9;chbl++)
xch(chbl);
xs(8,48,4,0,1);
xhz(15,0,6,1,1);xhz(17,16,6,1,1);xhz(18,48,6,1,1);
xhz(19,0,6,0,1);xhz(20,32,6,0,1);xhz(21,48,6,0,1);
}
}
//欢迎界面
void hyjm(void)
{uchar yd;
for(yd=0;yd<9;yd++)
{clear(0,2,64,2,2,1);
xhz(1,yd*4,2,1,1);
xhz(2,yd*4+16,2,1,1);
xhz(3,32-yd*4,2,0,1);
xhz(4,48-yd*4,2,0,1);
delay_ms(240);
}
delay_ms(35000);
}
//工作界面
void gzjm(void)
{switch(ch)
{case 1:gzdy1();break;
case 2:gzdy1();gzdy2();break;
case 3:gzdy1();gzdy2();gzdy3();break;
case 4:gzdy1();gzdy2();gzdy3();gzdy4();break;
case 5:gzdy1();gzdy2();gzdy3();gzdy4();gzdy5();break;
case 6:gzdy1();gzdy2();gzdy3();gzdy4();gzdy5();gzdy6();break;
case 7:gzdy1();gzdy2();gzdy3();gzdy4();gzdy5();gzdy6();gzdy7();break;
case 8:gzdy1();gzdy2();gzdy3();gzdy4();gzdy5();gzdy6();gzdy7();gzdy8();break;
}
}
void gzdy1(void)
{xs(1,0,0,1,1);xs(11,8,0,1,1);xs(11,16,0,1,1);}
void gzdy2(void)
{xs(2,0,0,0,1);xs(11,8,0,0,1);xs(11,16,0,0,1);}
void gzdy3(void)
{xs(3,0,2,1,1);xs(11,8,2,1,1);xs(11,16,2,1,1);}
void gzdy4(void)
{xs(4,0,2,0,1);xs(11,8,2,0,1);xs(11,16,2,0,1);}
void gzdy5(void)
{xs(5,0,4,1,1);xs(11,8,4,1,1);xs(11,16,4,1,1);}
void gzdy6(void)
{xs(6,0,4,0,1);xs(11,8,4,0,1);xs(11,16,4,0,1);}
void gzdy7(void)
{xs(7,0,6,1,1);xs(11,8,6,1,1);xs(11,16,6,1,1);}
void gzdy8(void)
{xs(8,0,6,0,1);xs(11,8,6,0,1);xs(11,16,6,0,1);}
//写一个数字
void xs(uchar sz,uchar xs,uchar ys,uchar zs,uchar sf) //待写数字,首行,首列,左右屏,0==反白
{uchar is;
pzy(zs);
sz=(sz+1)*16;
xzl(0xb8+ys);
xzl(0x40+xs);
for(is=sz-16;is<sz-8;is++)
{if(sf==1)
xsj(xssz[is]);
else
xsj(~xssz[is]);
}
xzl(0xb9+ys);
xzl(0x40+xs);
for(is=sz-8;is<sz;is++)
{if(sf==1)
xsj(xssz[is]);
else
xsj(~xssz[is]);
}
}
//写一个字母
void xzm(uchar zm,uchar x,uchar y,uchar z,uchar f) //待写字母,X位置,Y位置,左右屏,反白
{uchar is;
pzy(z);
zm=zm*16;
xzl(0xb8+y);
xzl(0x40+x);
for(is=zm-16;is<zm-8;is++)
{if(f==1)xsj(zmsz[is]);
else xsj(~zmsz[is]);
}
xzl(0xb9+y);
xzl(0x40+x);
for(is=zm-8;is<zm;is++)
{if(f==1)xsj(zmsz[is]);
else xsj(~zmsz[is]);
}
}
//左右屏判别
void pzy(uchar pz) //1=左边,0=右边
{if(pz==0)
{cs1_1();cs2_0();}
else
{cs1_0();cs2_1();}
}
//扫描按键
uchar smaj(void) //返回按键号
{uchar ls,jianzhi;
DDRC=DDRC&0xf8;
PORTC=PORTC|0x07;
jianzhi=PINC&0x07;
if(jianzhi!=0x07)
{switch(jianzhi)
{case 0x06:jianzhi=1;break;
case 0x05:jianzhi=2;break;
case 0x03:jianzhi=3;break;
}
while(0x07!=PINC&0x07);
}
else jianzhi=0;
return(jianzhi);
}
//主函数
void main(void)
{uchar xzz=35;
DDRD=0xf3;
DDRB=0xff; //配置端口为输出
PORTD=255;
dj=0;
lcd_csh(); //LCD初始化
hyjm(); //欢迎界面
xt_csh(); //系统初始化
// SREG=0X80;
// MCUCR=MCUCR|0x0e;//INT1上升触发,INT0下降触发
while(1)
{delay_ms(1500);
if(cc1!=0){ccc=(cc1+xzz)*8;xs(ccc/1000,24,0,1,1);xs(10,32,0,1,1);xs(ccc/100%10,40,0,1,1);xs(ccc/10%10,48,0,1,1);
if(cc2!=0){ccc=(cc2+xzz)*8;xs(ccc/1000,24,0,0,1);xs(10,32,0,0,1);xs(ccc/100%10,40,0,0,1);xs(ccc/10%10,48,0,0,1);
if(cc3!=0){ccc=(cc3+xzz)*8;xs(ccc/1000,24,2,1,1);xs(10,32,2,1,1);xs(ccc/100%10,40,2,1,1);xs(ccc/10%10,48,2,1,1);
if(cc4!=0){ccc=(cc4+xzz)*8;xs(ccc/1000,24,2,0,1);xs(10,32,2,0,1);xs(ccc/100%10,40,2,0,1);xs(ccc/10%10,48,2,0,1);
if(cc5!=0){ccc=(cc5+xzz)*8;xs(ccc/1000,24,4,1,1);xs(10,32,4,1,1);xs(ccc/100%10,40,4,1,1);xs(ccc/10%10,48,4,1,1);
if(cc6!=0){ccc=(cc6+xzz)*8;xs(ccc/1000,24,4,0,1);xs(10,32,4,0,1);xs(ccc/100%10,40,4,0,1);xs(ccc/10%10,48,4,0,1);
if(cc7!=0){ccc=(cc7+xzz)*8;xs(ccc/1000,24,6,1,1);xs(10,32,6,1,1);xs(ccc/100%10,40,6,1,1);xs(ccc/10%10,48,6,1,1);
if(cc8!=0){ccc=(cc8+xzz)*8;xs(ccc/1000,24,6,0,1);xs(10,32,6,0,1);xs(ccc/100%10,40,6,0,1);xs(ccc/10%10,48,6,0,1);}}}}}}}}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -