找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4438|回复: 9
收起左侧

led点阵动态显示字数的问题 求助 内有程序

[复制链接]
ID:126648 发表于 2016-6-16 17:52 | 显示全部楼层 |阅读模式
怎么修改能显示更多的字 ?



#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RCK_Pin = P3^2;//
sbit k1 = P1^0;
sbit k2 = P1^1;
uchar flag=0;
uchar code DSY_CONTENT_8x8_0[]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
  0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,
  0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,
  0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar code DSY_CONTENT_8x8_1[]=
{  
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,
  0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,
  0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,
  0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,
  0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar Scan_BIT = 0x01, Scan_BIT1 = 0x80;
uchar Offset,Data_Index = 0, Offset1,Data_Index1 = 0;
void Delay(uint t)  
{
uchar i;
while(t--)
for(i=0;i<120;i++);
}
void T0_Led_Display_Control() interrupt 1
{
TH0 = (65536-1000)/256;
TL0 = (65536-1000)%256;
if(flag==0)
{
Scan_BIT1=0x80;
Data_Index1 = 0;
Scan_BIT = _cror_(Scan_BIT,1);
putchar(Scan_BIT);
while(TI == 0);
putchar( DSY_CONTENT_8x8_0[Offset + Data_Index + 8]);
while (TI==0);
putchar( DSY_CONTENT_8x8_0[Offset + Data_Index ]);
while(TI == 0);
Data_Index = (Data_Index + 1) % 8;
RCK_Pin = 1;
RCK_Pin = 0;
}
if(flag==1)
{
Scan_BIT=0x01;
        Data_Index = 0;
        Scan_BIT1 = _crol_(Scan_BIT1,1);
        putchar(Scan_BIT1);
while(TI == 0);
        putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1]);
while (TI==0);
        putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1 + 8 ]);
        while(TI == 0);
Data_Index1 = (Data_Index1 + 1) % 8;
        RCK_Pin = 1;
RCK_Pin = 0;
}
}
void main(){
uchar i;
TMOD = 0x01;
TH0 = (65536-1000) / 256;
TL0 = (65536-1000) % 256;
        IE = 0x82;
TCON =0x00; TI = 1;
while(1)
{   
for(i=0;i<64;i++)
{
     if(k1==0)
{
        flag=1;
}

if(k2==0)
{
flag=0;
}
    Offset = i;
Offset1 = i;
   TR0 = 1;
  Delay(50);
   TR0 = 0;
}
}
}

回复

使用道具 举报

ID:123289 发表于 2016-6-16 21:16 | 显示全部楼层
理论上:7段LED,可以有128个显示样式。
回复

使用道具 举报

ID:111634 发表于 2016-6-17 08:50 | 显示全部楼层
本帖最后由 zl2168 于 2016-6-17 08:51 编辑

LED编码表
表8-1.jpg












摘自张志良编著
《单片机原理与控制技术——双解汇编和C51》第3ISBN 978-7-111-42393-5机械工业出版社





书中电路和程序设计有详细说明,程序语句条条有注解。



回复

使用道具 举报

ID:7485 发表于 2016-6-17 09:38 | 显示全部楼层
楼主:这个是LED吗??

你也说说用的是什么硬件。

回复

使用道具 举报

ID:124936 发表于 2016-6-17 14:59 | 显示全部楼层
在此一起受教
回复

使用道具 举报

ID:111634 发表于 2016-6-17 15:58 | 显示全部楼层
嗷!是LED点阵,不是LED数码管,搞错了。
回复

使用道具 举报

ID:111634 发表于 2016-6-17 15:59 | 显示全部楼层
本帖最后由 zl2168 于 2016-6-17 16:09 编辑

实例65  LED5×7点阵显示字符
Proteus仿真一下,确认有效。

实例65 LED 5×7点阵字符显示.rar (38.61 KB, 下载次数: 5)

LED5×7点阵显示字符.jpg








以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解

回复

使用道具 举报

ID:111634 发表于 2016-6-17 17:40 | 显示全部楼层
本帖最后由 zl2168 于 2016-6-17 17:46 编辑

实例66  LED 16×16点阵显示汉字


Proteus仿真一下,确认有效。

实例66a LED 16×16点阵汉字显示.rar (48.21 KB, 下载次数: 4)

LED 16×16点阵显示汉字.jpg


以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版

书中电路和程序设计有详细说明,程序语句条条有注解。






回复

使用道具 举报

ID:111634 发表于 2016-6-17 17:48 | 显示全部楼层
本帖最后由 zl2168 于 2016-6-17 17:53 编辑

其实,8*8显示数字,没有5*7、8*16来得美观

字模点阵数组6.jpg
回复

使用道具 举报

ID:111634 发表于 2016-6-17 20:44 | 显示全部楼层
显示字模点阵二维数组
显示字模点阵二维数组.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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