一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2410|回复: 3

学写LED点阵程序,遇到一个小问题,发帖求解

[复制链接]
发表于 2012-6-13 23:28 | 显示全部楼层 |阅读模式
本帖最后由 356053261 于 2012-6-13 23:31 编辑

学写LED点阵程序,遇到一个小问题,特来发帖求解:

如下代码,一个code表格中含有多个子code表格,如果我需要随意调出子表格来用,写出一个“向点阵写入一个任意字符“的子函数,该怎么写呢?


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define hang P1   //定义行数据为P0
#define lie P0   //定义列数据为P1

uchar code dis0[]={0x3C,0x42,0x42,0x20,0x10,0x08,0x46,0x7E};/*"0",9*/
uchar code dis8[][8]={
{0x3C,0x24,0x42,0x42,0x42,0x42,0x24,0x3C},/*"0",9*/
{0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E},/*"1",0*/
{0x3C,0x42,0x42,0x20,0x10,0x08,0x46,0x7E},/*"2",1*/
{0x3C,0x42,0x40,0x38,0x40,0x40,0x42,0x3C},/*"3",2*/
{0x30,0x28,0x24,0x22,0x22,0x3C,0x20,0x30},/*"4",3*/
{0x7E,0x02,0x02,0x3E,0x40,0x40,0x42,0x3C},/*"5",4*/
{0x38,0x24,0x02,0x3A,0x46,0x42,0x46,0x3C},/*"6",5*/
{0x7E,0x22,0x10,0x10,0x08,0x08,0x08,0x08},/*"7",6*/
{0x3C,0x42,0x42,0x2C,0x34,0x42,0x42,0x3C},/*"8",7*/
{0x18,0x26,0x42,0x62,0x5C,0x40,0x24,0x3C},/*"9",8*/
};
uchar code dis_x[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};/*"2",0*/
//延时子函数---------------------------------------------------
void delay(uint z)
{
uint y;
for(;z>0;z--)
for(y=114;y>0;y--);
}
/*向点阵写入一个数字-------------------------------------------
void write_dat(uchar dat)
{
uchar i;
if(dat=0)
{
for(i=0;i<8;i++)
  {
   hang=dis0;
   lie=dis_x;
  }
}
}
*/

void main(void)
{
uchar i;
while(1)
{
  for(i=0;i<8;i++)
  {
   lie=dis0;
   hang=dis_x;
   delay(2);
   hang=0xff;
  }
}
}
未命名.jpg

未命名.jpg
发表于 2012-6-13 23:58 | 显示全部楼层
void  disp(uchar a)
{uchar i;  
for(i=0;i<8;i++)
  lie=dis8[a][i];
   hang=dis_x[i];
   delay(2);
   hang=0xff;
}

void main(void)
{
uchar i;
while(1)
{
  for(i=0;i<10;i++)
  disp(i);
}}

当然也可以用指针。
回复

使用道具 举报

 楼主| 发表于 2012-6-14 08:17 | 显示全部楼层
谢楼上指点,按楼上思路,已经修改完成,再请教下,如果用指针该怎么写呢?对指针的用法还不太懂


//向点阵写入一个数字-------------------------------------------
void write_dat(uchar dat)
{
        uchar i;
        {
        for(i=0;i<8;i++)
                {
                        lie=dis8[dat][i];
                        hang=dis_x[i];
                        delay(1);
                        hang=0xff;
                }
        }
}


void main()
{
        uint i,a;
        while(1)
        {
                for(i=0;i<10;i++)
                {
                        for(a=50;a>0;a--)
                                write_dat(i);
                }
        }
}
回复

使用道具 举报

发表于 2012-6-14 10:45 | 显示全部楼层
去学习一下数组。指针你可以理解为存放数据的地址
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2026-3-13 22:40 , Processed in 0.034080 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表