LED点阵程序

怎样用16*16的LED点阵显示屏动态显示文字(显示什么都行),(C程序编写).... 怎样用16*16的LED点阵显示屏动态显示文字(显示什么都行),(C程序编写). 展开
 我来答
linimbus
2009-04-19 · TA获得超过311个赞
知道答主
回答量:74
采纳率:0%
帮助的人:71.9万
展开全部

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

#define outdat P2

sbit ld=P3^0;

sbit lw=P3^1;

//数码管显示代码

unsigned char code tab[]={

0x01,0x02,0x03,0x04,0xFF,0xFF,0xFF,0xFF}; 

void delay1ms(unsigned int count)  //延时1ms

{

 unsigned char j;

 for(;count>0;count--)

 for(j=0;j<120;j++);

}

void display(unsigned char num)

{

 outdat=tab[num];

 ld=0;ld=1;ld=0;

 outdat=0x01<<num;

 lw=0;lw=1;lw=0;

 delay1ms(2); 

}

void main()

{

    unsigned char i;  

 while(1)

 {

     for(i=0;i<8;i++)

  {

      display(i);

  }

 }

}

奥蕾达
2024-11-14 广告
透明LED显示屏顾名思义就是LED屏像玻璃一样具有透过光线的性质。具有50%到90%的通透率,面板厚度仅为10m左右,其高通透性与其特殊的材质、结构及安装方式紧密相关。 透明LED显示屏与LED玻璃屏都LED显示屏具透明特点透明LED显示屏... 点击进入详情页
本回答由奥蕾达提供
weihegeng
2009-04-24 · 超过10用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:31.7万
展开全部
#include <at89x52.h>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 1 //定义亮度
uchar col,disrow; //col为位移变量,disrow为行变量
uint word;
uchar code tab[]=
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
uchar code HZ[];
uchar BUFF[10];
void loadoneline(void);
void sendoneline(void);
void delay(uchar);
/*******根据列指针,由双字节合并为单字节的子程序模块12MHZ************/
uchar two_onebyte(uchar h1,uchar h2)
{
uchar temp,tempcol;
if(col<8) tempcol=col;
else tempcol=col-8;
temp=(h1<<tempcol)|(h2>>(8-tempcol));
temp=255-temp;
return temp;
}
/****************************主函数***************************/
void main(void)
{
uchar i;
col=0;word=0;
while(1)
{
while(col<16)// 循环16次,点亮并移动一个汉字
{
for(i=0;i<SPEED;i++)//汉字在屏幕上的停留时间(即移动速度快慢)
{
for(disrow=0;disrow<16;disrow++)//扫描16行
{
P2_5= 0;
P2_7=1;//消影。 E接在P2_4 ,=1;
loadoneline();//装载一线点阵数据
sendoneline();//发送一线点阵数据

P1=tab[disrow];
P2_7=0;//开显示
P2_5= 1; // 点亮屏幕
delay(50);

//P3_1=1; //(CLK=P3_1)上升沿595输出
}
}

col++; //列指针递增
}
col=0;word=word+32;// 一个汉字移动后,指向下一个汉字
if(word>=4480)word=0;// 移动154个汉字后,重新开始
}
}
/**************装载一线点阵数据****************/
void loadoneline(void)
{
uchar s;
for(s=0;s<3;s++) //s为要显示的数字+1
{
BUFF[2*s]=HZ[word+32*s+2*disrow];
BUFF[2*s+1]=HZ[word+1+32*s+2*disrow];
}
}
/***************发送一线点阵数据*******************/
void sendoneline(void)
{
char s;uchar inc;
if(col<8)inc=0;else inc=1;
for(s=0+inc;s<=3+inc;s++) // s=2*要显示的数字-1//<15
{
SBUF=two_onebyte(BUFF[s],BUFF[s+1]);
while(!TI);TI=0;
}
}

/******************延时程序******************************/
void delay(uchar k)
{
uchar i;
for(i=0;i<k;i++);
}

/***********************汉字点阵码*************************/
uchar code HZ[]=
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式