为了减少LED3216对单片机I/O口的占用,使LED3216点阵屏有更大的升级空间,方便日后扩展按键、DS1302、DS18B20等芯片,决定将LED3216点阵屏的接线作以下更改:
变动在译码器电路部分。因为左右译码器(左右屏)是交替工作的,分别由CS1、CS2使能,所以可以将左右译码器的输入端连在一起(如图),能节约4个I/O口。
争对已经发布的例程,软件部分更改方法(仅供参考):
争对已经发布的例程,找到各例程中的显示子程序void display(),修改后重新编译生成新的hex文件即可。
第一种情况:使能端子CS1、CS2接线不变
/*****显示子程序*****/
void display()
{
int i,j;
CS2=1; //关右屏
CS1=0; //开左屏
for(i=0;i<16;i++)
{
lie=i; //左屏列扫描信号输出
hang1=pic[i]; //上半屏行信号输出
hang2=pic[i+32]; //下半屏行信号输出
delay(); //扫描延时
hang1=0;
hang2=0;
}
CS1=1; //关左屏
CS2=0; //开右屏
for(j=0;j<16;j++)
{
lie=j << 4; //右屏列扫描信号输出(黄色更改为lie=j;)
hang1=pic[j+16]; //上半屏行信号输出
hang2=pic[j+48]; //下半屏行信号输出
delay(); //扫描延时
hang1=0;
hang2=0;
}
}
第二种情况:使能端子CS1、CS2接线改变:CS1接P1.6、CS2接P1.7
/*****显示子程序*****/
void display()
{
int i,j; CS2=1; //关右屏(删除) CS1=0; //开左屏(删除)
for(i=0;i<16;i++)
{
lie=i; //左屏列扫描信号输出(黄色更改为lie=i|0xB0;)
hang1=pic[i]; //上半屏行信号输出
hang2=pic[i+32]; //下半屏行信号输出
delay(); //扫描延时
hang1=0;
hang2=0;
} CS1=1; //关左屏(删除) CS2=0; //开右屏(删除)
for(j=0;j<16;j++)
{
lie=j << 4; //右屏列扫描信号输出(黄色更改为lie=j|0x70;)
hang1=pic[j+16]; //上半屏行信号输出
hang2=pic[j+48]; //下半屏行信号输出
delay(); //扫描延时
hang1=0;
hang2=0;
}
}
在以后作品升级的过程中以上两种情况都有可能会用到,特此说明。
原创作品如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]
