标题:
LED点阵问题求教
[打印本页]
作者:
www123
时间:
2014-9-7 01:32
标题:
LED点阵问题求教
取字模时是8*40的点阵,为什么我将index改成40运行到最后会出现一行乱码
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code image[] = { //图片的字模表
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x99,0x99,0x99,0x99,0x99,0x81,0xC3,0xFF,
0x99,0x00,0x00,0x00,0x81,0xC3,0xE7,0xFF,
0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
void main()
{
EA = 1; //使能总中断
ENLED = 0; //使能U4,选择LED点阵
ADDR3 = 0;
TMOD = 0x01; //设置T0为模式1
TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms
TL0 = 0x67;
ET0 = 1; //使能T0中断
TR0 = 1; //启动T0
while (1);
}
/* 定时器0中断服务函数 */
void InterruptTimer0() interrupt 1
{
static unsigned char i = 0; //动态扫描的索引
static unsigned char tmr = 0; //250ms软件定时器
static unsigned char index = 39;
TH0 = 0xFC; //重新加载初值
TL0 = 0x67;
//以下代码完成LED点阵动态扫描刷新
P0 = 0xFF; //显示消隐
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index-7]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index-6]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index-5]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index-4]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index-3]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index-2]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index-1]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index-0]; break;
default: break;
}
//以下代码完成每250ms改变一帧图像
tmr++;
if (tmr >= 250) //达到250ms时改变一次图片索引
{
tmr = 0;
if (index <= 8)
index = 39;
else
index--;
}
}
作者:
admin
时间:
2014-9-7 20:45
电路图呢
作者:
liaolinhui
时间:
2014-9-8 00:51
index取值范围是0-39,刚好哦40个对应点阵的40行。如果改为40,就有41行了,所以出错。如果你硬要用40的话就需要将图片的字模表改一下
作者:
老菜鸟
时间:
2014-9-9 09:48
8*40,只有39,如果你喜欢40,就取1~40好了
作者:
Elect_DIYer
时间:
2014-12-22 14:45
楼主是用的宋雪松老师的单片机吧,错误挺明显的,字模数组一共40个元素,编号从0~39。当你取40时image[index-0]找不到你赋的值,可能就去找内存其他地址的数据读出来了。我试过了,取40的时候读出的数据是0x4B。之后就正常了,因为你在中断末尾加了一句让它回归39这个初值的语句。如果楼主把这里的39也改成40,之后的每次循环开始处都会出现0x4B对应的LED灯亮的情况了。
作者:
毛毛4412
时间:
2014-12-27 22:17
你好 我也在研究这个 交流交流经验
作者:
yuguoyu123456
时间:
2017-12-3 11:39
admin 发表于 2014-9-7 20:45
电路图呢
我自己用了p1 p2脚。没有驱动芯片,只有单片机和最小系统,大神救救我,给我程序。可以显示4个汉字的那种
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1