• 大小: 91KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: LED  点阵  C51  

资源简介

基于C51 的16*64LED点阵基于C51 的16*64LED点阵基于C51 的16*64LED点阵

资源截图

代码片段和文件信息

/*******************************************************
程序实现功能:
输入任意英文字母、标点符号和已取模的任意汉字,在LED显示
屏上左移循环显示。
*******************************************************/

#include
#include
//#include
#include
#define uchar unsigned char 
#define uint unsigned int 

#define RAM 0x0000
sbit STB = P1^0;
sbit DATA = P1^1;
sbit CLK = P1^2;
sbit G1G2 = P1^3;
sbit INH  = P1^4;


void init();
void delay_ms(uint m);
uchar WriteToRam(uchar *ptr);
void SendOneLineData(uchar xdata *ptruchar line);

uchar xdata *addr;
void main()
{
uchar inlen;
init();
addr = RAM + 16*8; //从第9个字符位置开始写显示数据
len = WriteToRam(“LED公交广告系统潘忠伟制作.联系方式:QQ276779211;邮箱:pzw923@163.com“);
//将要显示的内容写入到显存中并返回写入显存内容长度
addr = RAM; //将显存首地址附给片外数据指针
while(1)
{
n++;
if(n==3)
{
n = 0;
addr += 2; //指针指向显存中下一列数据产生左移效果
if(addr==(len+8)*16)
addr = 0; //显示完一轮指针清0
}
for(i=0;i<16;i++)
{
SendOneLineData(addri); //送第i行数据到屏幕显示
P3 &= 0xf0;
P3 |= i; //扫描第i行
G1G2 = 1;
G1G2 = 0;
delay_ms(2);
}
}

}
void init() //初始化
{
STB = 1;
INH = 0;
}



/************************************************
送一行要数据到LED屏幕上显示
 ptr:指向片外数据存储器的指针
 line:在LED上显示的行参数line=1时为第一行数据

************************************************/
void SendOneLineData(uchar xdata *ptruchar line)   
{
uchar itemp;
if(line<8)
{
for(i=0;i<128;i+=2)
{
temp = ptr[i];
DATA = (temp>>line)&0x01;
CLK = 1;
CLK = 0;
}
}
else
{
for(i=1;i<128;i+=2)
{
temp = ptr[i];
DATA = (temp>>line-8)&0x01;
CLK = 1;
CLK = 0;
}
}
}



/************************************************
将欲显示的内容送入片包数据存储器RAM当中并返回送

入显存中内容的长度.

************************************************/
uchar WriteToRam(uchar *ptr) //将要显示的内容写入显存中(RAM)
{
uchar lenc1c2ijk;
for(len=0; ptr[len]!=0; len++);    //计算出要写入显存的内容长度

for(i=0;i {
c1 = ptr[i];
c2 = ptr[i+1];
if(c1 <= 128) //英文字母或标点符号
{
for(j=0;j<16;j++)
{
*addr = nAsciiDot[(c1 - 0x20)*16 + j];
addr++;
}
}
else
{
for(j=0;j {
if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1])
break;
}
if(j {
for(k=0;k<32;k++)
{
*addr = GB_16[j].Msk[k];
addr++;
}
i++; //汉字点阵所占存储空间是字符的两倍
}
else //字库中没有对方应汉字字模数据则全亮
{
for(k=0;k<32;k++)
{
*addr = 0xff;
addr++;
}
i++; //汉字点阵所占存储空间是字符的两倍
}
}
}
return len;
}


void delay_ms(uint m)
{
uint ij;
for(i=m;i>0;i--)
for(j=120;j>0;j--);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     129980  2008-07-23 10:43  led4816纵向取模\Backup Of led.DBK

     文件       3773  2008-08-13 11:00  led4816纵向取模\keil\cncode.h

     文件       9564  2008-08-12 09:20  led4816纵向取模\keil\encode.h

     文件       7957  2008-09-14 23:15  led4816纵向取模\keil\led

     文件       3093  2008-08-13 09:10  led4816纵向取模\keil\led.c

     文件       7853  2008-09-14 23:15  led4816纵向取模\keil\led.hex

     文件       8253  2008-09-14 23:15  led4816纵向取模\keil\led.LST

     文件       8810  2008-09-14 23:15  led4816纵向取模\keil\led.M51

     文件       9250  2008-09-14 23:15  led4816纵向取模\keil\led.OBJ

     文件       1092  2009-03-23 22:23  led4816纵向取模\keil\led.Opt

     文件        224  2009-03-23 22:23  led4816纵向取模\keil\led.plg

     文件       1980  2008-07-22 14:03  led4816纵向取模\keil\led.Uv2

     文件       2203  2008-09-14 23:16  led4816纵向取模\keil\led_Opt.Bak

     文件       1617  2008-08-12 13:02  led4816纵向取模\keil\ppp.h

     文件     165560  2008-08-12 13:42  led4816纵向取模\Last Loaded led.DBK

     文件     165557  2008-08-12 14:45  led4816纵向取模\led.DSN

     文件       1364  2009-05-09 12:49  led4816纵向取模\led.PWI

     目录          0  2009-03-23 22:31  led4816纵向取模\keil

     目录          0  2009-05-09 12:49  led4816纵向取模

----------- ---------  ---------- -----  ----

               528130                    19


评论

共有 条评论