本帖最后由 heicad 于 2014-6-17 16:11 编辑
口/管脚 | | | | | | | | | 7/A | | | | | | | | | 6/B | | | | | | | | | 5/C | | | | | | | | | 4/D | | | | | | | | | 3/E | | | | | | | | | 2/F | | | | | | | | | 1/G | | | | | | | | | 0/DP | | | | | | | | |
| | | | | | | | |
注意:高7位→低0位,1→1H
l P0口、P3口是字符码、P2口是显示位控制码。
l 同是共阴极或共阳极用同样的字符代码,若一阴一阳则需要代码反转—用CPL指令。
l 显示位控制码用MOV P2,88H显示最右侧(个位)位,用MOV P2,11H显示最左侧(千位)位。由此可见其它显示代码的表达。CA—Yang,CC—Yin
l 综合显示可以匹配12H或21H等交叉进行。
点阵显示技术与程序特点,点阵的显示测试(各口控制电位)、编码技术(4-1对位)、显示技术(延时)、各口8位扫描字形的2进制与16进制转换与表征,使用数组描述,扫描,数组中的16进制
//点阵扫描数字0移动
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar code SaoMiaoG[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar code SaoMiaoD[]={0xFF,0xC3,0xBD,0xBD,0xC3,0xFF,0xFF,0xFF,
0xC3,0xBD,0xBD,0xC3,0xFF,0xFF,0xFF,0xFF,
0xBD,0xBD,0xC3,0xFF,0xFF,0xFF,0xFF,0xC3,
0xBD,0xC3,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,
0xC3,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,
0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xC3,
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xC3,0xFF,
0xFF,0xC3,0xBD,0xBD,0xC3,0xFF,0xFF,0xFF};
void DelayMS(uint x); //声明后可使得函数在任意之处,否则函数需要在调用之前
uint i,j;
void main()//显示数字0主程序
proteus{
loop:
i=0,j=0;//
loop1:
P2=~SaoMiaoG[i ];
i++;
P1=~SaoMiaoD[j];
j++;
DelayMS(10);
if(i<64)
goto loop1 ;
else
goto loop ;
}
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for (t=0;t<120;t++);
}
}
|