16x16 LED点矩阵实验
/*16x16 LED点矩阵实验(ch12-5-7.c)*/
#include
#define ROWP P2 // 输出列接至P2
#define COLP P1 // 扫瞄行接至P1
#define repeat 30 // 扫瞄30周,约1m*16*30 =0.48秒
sbit Hi = P3^1; // 声明Hi栓锁信号位置
sbit Lo = P3^0; // 声明Lo栓锁信号位置
//============== 字 型 ==================
unsigned char code d[3][2][16]={
{ { 0x00, 0x00, 0x40, 0x60, 0x60, 0x62, 0xee, 0xfc, // 大
0x30, 0x30, 0x30, 0x30, 0x10, 0x00, 0x00, 0x00},
{ 0x00, 0x20, 0x10, 0x18, 0x0c, 0x07, 0x03, 0x01,
0x03, 0x06, 0x0c, 0x18, 0x30, 0x30, 0x20, 0x20} },
{ { 0x00, 0x00, 0x48, 0x30, 0x10, 0x10, 0x3a, 0xaf, // 家
0xee, 0x28, 0x28, 0x48, 0x2c, 0x18, 0x00, 0x00},
{ 0x00, 0x00, 0x40, 0x2a, 0x2a, 0x35, 0x4a, 0x7f,
0x3f, 0x04, 0x0a, 0x11, 0x20, 0x60, 0x20, 0x00} },
{ { 0x00, 0x40, 0x40, 0xf8, 0x20, 0xe0, 0x10, 0x00, // 好
0x08, 0x08, 0x0c, 0xe4, 0x14, 0x08, 0x00, 0x00},
{ 0x00, 0x20, 0x12, 0x0b, 0x04, 0x0b, 0x10, 0x00,
0x02, 0x22, 0x63, 0x31, 0x0f, 0x01, 0x01, 0x00}}};
void delay1ms(int); // 声明延迟函数
//============== 主 程 式 ==================
main() // 主程序开始
{ int i,j,scan; // 声明变量
while (1) // 无穷尽循环
{ for (i=0;i<3;i++) // 三个字
for (j=0;j
{ for (scan=0;scan<16;scan++) // 扫瞄循环
{ ROWP =0xFF; // 关闭LED(防残影)
Hi=1;Hi=0; // 栓锁Hi信号
Lo=1;Lo=0; // 栓锁Lo信号
COLP = scan; // 输出扫瞄信号
ROWP = ~d[i][0][scan];// 输出Hi部分
Hi=1; Hi=0; // 栓锁Hi信号
ROWP = ~d[i][1][scan];// 输出Lo部分
Lo=1; Lo=0; // 栓锁Lo信号
COLP = scan; // 输出扫瞄信号
delay1ms(1); // 延迟1ms
} // 完成扫瞄一个字型
} // 完成重复repeat次(j循环)
} // while结束
} // 主程序结束
//============== 延迟函数 ==================
void delay1ms(int x)
{ int i,j; // 声明变量
for (i=0;i
for (j=0;j<120;j++);// 内循环
} // 延迟函数结束
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉