打印

LED 8X8的显示屏怎么产生0~9

[复制链接]
2005|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
liao_fangxing| | 2010-4-20 17:02 | 只看该作者
本帖最后由 liao_fangxing 于 2010-4-20 17:11 编辑

1、直接用I/O驱动 或 用HT1623等驱动IC
2、上网荡吧

显示屏相当于控制大量(如8*8=64个)发光管亮与不亮来组合显示一个内容 如下图

未命名.jpg (5.99 KB )

未命名.jpg

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
heilongqq + 1 谢谢
板凳
heilongqq|  楼主 | 2010-4-20 17:18 | 只看该作者
谢谢!可是我试了,显示不是稳定,不知道怎么办

使用特权

评论回复
地板
老老实实| | 2010-4-20 19:18 | 只看该作者
去看看振南的视频吧!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
heilongqq + 1 谢谢
5
znmcu| | 2010-4-20 19:50 | 只看该作者
你要的是不是这么效果呢?
http://v.youku.com/v_playlist/f4321694o1p1.html

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
heilongqq + 1 谢谢
6
heilongqq|  楼主 | 2010-4-20 20:21 | 只看该作者
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar flag,num;
uchar code dula[]={0xfd,0xfb,0xf7,0xef,0xdf};
uchar code wela[]={0x3c,0x24,0x24,0x24,0x3c,
                                   0x18,0x18,0x18,0x18,0x18,
                                   0x3c,0x20,0x3c,0x04,0x3c,
                                   0x3c,0x20,0x3c,0x20,0x3c,
                                   0x1c,0x1c,0x3c,0x18,0x18,
                               0x3c,0x04,0x3c,0x20,0x3c,
                                   0x3c,0x04,0x3c,0x24,0x3c,
                                   0x3c,0x20,0x20,0x20,0x20,
                                   0x3c,0x24,0x3c,0x24,0x3c,
                                   0x3c,0x24,0x3c,0x20,0x3c,};

void delayms(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}

void init()
{
        TMOD=0X01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        TR0=1;
        ET0=1;
}
void main()
{
        uchar i;
        init();
        while(1)
        {
                for(i=0;i<5;i++)
                {
                        P3=dula[i];
                        P1=wela[flag+i];
                        delayms(10);
                }
        }
}

void t0_time() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
        if(num==20)
        {
                num=0;
                flag=flag+5;
                if(flag>45)
                        flag=0;
        }
}

使用特权

评论回复
7
heilongqq|  楼主 | 2010-4-20 20:22 | 只看该作者
我自己写出来,谢谢大家!突然之间明白过来怎么显示!

使用特权

评论回复
8
王大全12345| | 2010-4-21 10:20 | 只看该作者
汇编源程序
TIM EQU 30H
CNTA EQU 31H
CNTB EQU 32H
ORG 00H
LJMP START
ORG 0BH
LJMP T0X
ORG 30H
START: MOV TIM,#00H
MOV CNTA,#00H
MOV CNTB,#00H
MOV TMOD,#01H



MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
SETB TR0
SETB ET0
SETB EA
SJMP $
T0X:
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256
MOV DPTR,#TAB
MOV A,CNTA
MOVC A,@A+DPTR
MOV P3,A
MOV DPTR,#DIGIT
MOV A,CNTB
MOV B,#8
MUL AB
ADD A,CNTA
MOVC A,@A+DPTR
MOV P1,A
INC CNTA
MOV A,CNTA
CJNE A,#8,NEXT
MOV CNTA,#00H
NEXT: INC TIM
MOV A,TIM
CJNE A,#250,NEX
MOV TIM,#00H
INC CNTB
MOV A,CNTB
CJNE A,#10,NEX
MOV CNTB,#00H
NEX: RETI
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H
DB 00H,00H,00H,00H,21H,7FH,01H,00H
DB 00H,00H,27H,45H,45H,45H,39H,00H
DB 00H,00H,22H,49H,49H,49H,36H,00H
DB 00H,00H,0CH,14H,24H,7FH,04H,00H
DB 00H,00H,72H,51H,51H,51H,4EH,00H
DB 00H,00H,3EH,49H,49H,49H,26H,00H
DB 00H,00H,40H,40H,40H,4FH,70H,00H

DB 00H,00H,36H,49H,49H,49H,36H,00H
DB 00H,00H,32H,49H,49H,49H,3EH,00H
END
C 语言源程序
#include <AT89X52.H>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code digittab[10][8]={
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0
{0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2
{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3
{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4
{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
};
unsigned int timecount;
unsigned char cnta;
unsigned char cntb;
void main(void)
{
TMOD=0x01;
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
P3=tab[cnta];
P1=digittab[cntb][cnta];
cnta++;

if(cnta==8)
{
cnta=0;
}
timecount++;
if(timecount==333)
{
timecount=0;
cntb++;
if(cntb==10)
{
cntb=0;
}
}
}     还有汇编的  希望
能帮助你

使用特权

评论回复
9
peigang| | 2010-4-21 16:01 | 只看该作者
自己上网下一个去字模软件
这个程序就根数码管差不多
分别扫描就行
实在不行就用锁存器

使用特权

评论回复
10
heilongqq|  楼主 | 2010-4-24 19:12 | 只看该作者
谢谢,大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:希望每天进步

25

主题

48

帖子

0

粉丝