资源简介
基于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
相关资源
- 基于C51单片机音乐盒设计[1]
- 89C51单片机控制HT1621B驱动LCD(C程序)
- 基于fpga的led大屏幕的控制系统设计
- 基于LCD1602与LED同时的proteus仿真温度测
- 基于51单片机LCDLM041L显示贪吃蛇小游戏
- 色品坐标图显示软件
- GPIO口扫描LED屏源码
- 16x16点阵汉字字模提取软件
- 三种方法将51单片机设置为115200波特率
- 中景园电子0.96OLED显示屏_C51系列_SPI
- 通过485Modbus读取DS18B20温度和控制LED(
-
Unti
tled.zip - HUB75点阵屏驱动
- GPIO输出控制实验-控制Led亮灭
- STM32_OLED_三级菜单框架.rar
- 基于stm32、0.96寸OLED实现的贪吃蛇小游
- cdr自动排孔软件Led3_22424
- SSD1306 oled 驱动代码
- 基于单片机的LED彩灯控制器
- 基于DS1302+AT89C2051制作的红外遥控LED电
- 人体红外感应LED小灯很实用的哦~
- 嵌入式系统/ARM技术中的基于嵌入式
- DS3231+12864 0.96oled 51单片机程序
- 霹雳游侠扫描灯20模式带拖尾C程序
- proteus仿真--播放音乐
- msp430单片机点亮LED灯代码
- Proteus中单片机89C51在LCD12864显示
- LED显示屏通用开发包
- ASCII码点阵字库
- 8*16点阵字库ASC16
评论
共有 条评论