汉子满的8 8点阵c语言编程,基于C语言在8×8点阵上实现 I LOVE U 的动态显示

#includesbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

code unsigned char image[] = {

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3,0xFF,

0x99,0x00,0x00,0x00,0x81,0xC3,0xE7,0xFF,

0x99,0x99,0x99,0x99,0x99,0x81,0xC3,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

}; //图片字模表

void main()

{

ENLED = 0;

ADDR3 = 0;//使能U4(74HC138),选择点阵

TMOD = 0x01; //设置T0为模式1

TH0 = 0xfc;

TL0 = 0x67; //设置定时初值为0xFC67,定时为1ms

TR0 = 1; //打开定时器T0

EA = 1; //打开总中断

ET0 = 1; //打开T0中断

while(1);

}

//定时器T0中断,发生中断时更新图片

void InterruptTimer0() interrupt 1

{

static unsigned char i = 0; //点阵行号

static unsigned char index = 0; //动态图片编号

static unsigned char tmr = 0; //用于200ms定时(每200ms更新一张图片)

TH0 = 0xFC;

TL0 = 0x67; //定时溢出时,重新赋值,保证每次定时为1ms

P0 = 0xFF; //点阵消隐

switch(i)

{

case 0 : ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;i++;P0 = image[0+index];break; //使第0行点阵数码管正极为高电平,通过P0点亮需要点亮的部分

case 1 : ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;i++;P0 = image[1+index];break;

case 2 : ADDR2 = 0;ADDR1 = 1;ADDR0 = 0;i++;P0 = image[2+index];break;

case 3 : ADDR2 = 0;ADDR1 = 1;ADDR0 = 1;i++;P0 = image[3+index];break;

case 4 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;i++;P0 = image[4+index];break;

case 5 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i++;P0 = image[5+index];break;

case 6 : ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;i++;P0 = image[6+index];break;

case 7 : ADDR2 = 1;ADDR1 = 1;ADDR0 = 1;i=0;P0 = image[7+index];break;

default : break;

}

tmr++;

if(tmr>=250)

{

tmr = 0;

index++;

if(index==33)

{

index = 0;

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值