灯彩色旋转LED文字显示程序

合集下载

旋转LED显示屏(精)

旋转LED显示屏(精)

旋转 LED 显示屏研究目的:目前主流的显示器件如电视机,显示器,电影屏幕等都是采用平面显示方式。

然而立体的显示方式与平面显示方式相比信息总量更大,互动性更强,也更逼真。

旋转 LED 显示屏可同步控制发光二极管,实现图文显示以及音频同步,另外大大降低了成本,并且能够 360度全方位观赏屏幕显示的内容,给人以立体的观赏效果,给观众带来美的享受。

非常适合大厅或候车室之类的场合, 也可应用与室外广告或室内装饰。

内容:一.主体构想本图文同步旋转 LED通信模块、字库模块、电机驱动模块等及外壳、电源构成。

通信电路用于通过计算机向显示屏下载显示内容, 由于显示屏在高速旋转的情况下不便于接线进行显示内容的更改。

所以选用红外传输数据。

总体构成如图 1所示:系统采用高速发光的 LED 作为像素元,在扇叶上排列。

旋转的扇叶设计为圆形,在扇叶上设有一圈 LED,LED 的发光颜色为单色或多色,当扇叶围绕着中心轴旋转时,会产生一个球面,而且在球面上全部都是 LED, 配合字模软件,当扇叶走到相应的位置时,点亮相应的点,根据人眼的视觉暂留原理,观察者可以看到 led 矩阵旋转扫描得到的真实三维图像,由单片机控制 led 像素的亮暗,或者控制发光时间这样就可以控制一个球面的显示内容。

二. 硬件设计1. 核心控制模块核心控制模块采 89C51单片机, 由于 89c51芯片的片内存储器容量有限, 需要扩展一片存储器作为字库存储器和显示缓冲区, 并作为下载内容的存储。

这里选用的是华邦的 29C040。

控制模块主要是对接收过来的数据进行判断, 从而执行不同的动作。

是整个屏幕的控制核心处理各种数据, 控制外部期间执行各种动作。

此外还选用了霍尔元件 TL0038J 进行相位检查并完成校正功能使 LED 的亮灭与旋转保持同步。

结构如图 1所示::图 2:硬件构成2. 旋转显示模块旋转显示模块采用阵列的方式排列 LED, 布线非常方便,而且对单个点或多个点控制方便,控制显示简单易行,而且显示效果很好。

POV旋转LED显示器的设计

POV旋转LED显示器的设计

POV旋转LED显示器的设计POV(视角旋转)LED显示器是一种独特的显示设备,它通过快速旋转LED灯来创造出动态的图像和文字。

这种显示器可以用于广告牌、装饰、文化展示等多种场合,给人们带来全新的视觉体验。

**设计理念**POVLED显示器的设计理念是通过旋转LED灯来创建持续的动画效果,从而吸引人们的注意力。

设计师需要考虑到显示器的结构、控制系统、动画效果等多个方面,确保整个系统的稳定性和实用性。

**结构设计**POVLED显示器的结构设计包括LED灯的安装位置、旋转机构、显示屏的形状和尺寸等。

LED灯通常安装在一个旋转的杆上,通过电机驱动旋转,形成视觉效果。

显示屏可以采用圆形、球形、长条形等不同形状,视具体需求而定。

**控制系统**POVLED显示器的控制系统是整个设备的灵魂,通过控制系统可以实现LED灯的旋转速度、显示内容的更新等功能。

控制系统通常由微控制器、传感器、电机驱动器等组成,确保设备的稳定性和灵活性。

**动画效果设计**POVLED显示器的动画效果设计是整个设备最重要的部分,通过不同的线条、色彩、速度等参数,可以创造出精彩的动态效果。

设计师需要考虑到显示内容的清晰度、流畅度和吸引力,确保观众能够完全沉浸在视觉盛宴中。

**技术挑战**POVLED显示器的设计面临着许多技术挑战,包括LED灯的高速控制、旋转机构的稳定性、控制系统的精准度等。

设计师需要不断地进行技术测试和改进,确保整个系统的可靠性和性能。

**应用领域**POVLED显示器的应用领域非常广泛,可以用于室内外广告牌、文化展示、装饰艺术等多种场合。

其独特的视觉效果吸引了许多人的关注,成为现代展示技术中的一种重要形式。

**总结**通过对POVLED显示器的设计理念、结构设计、控制系统、动画效果设计、技术挑战和应用领域的探讨,我们可以看到这种设备在展示技术领域的潜力和广度。

设计师需要不断地进行创新和突破,以满足不断变化的市场需求,为人们带来更加丰富和多样的视觉体验。

LED点阵显示程序(带汉字移动)

LED点阵显示程序(带汉字移动)
P1=0;
}
}
yid++; //移动一步
}
yid=0;zimo=zimo+32; //后移一个字,
TI=0;
}
/*******左移显示读取数据 并调整**************/
void in_data(void)
{ char s,w; unsigned int qqq;
for(s=8;s>=0;s--)
{ w=s+s;
qqq=zimo+h+h+s*32;
P2=sw[h]; //输出行信号
h++; //行加一
if(h==8)h=0;
}
}
}
/***************左移显示************/
out_rxd(&hanzi[aa+15]); //从串口输出第1个字的第18字节
}
P2=0x0ff;
P1=0xff; P1=0; //锁存为高,74HC595锁存信号
while(!TI);TI=0; //等待发送中断
}
for(s=0+inc;s<16+inc;s++) //发送8字节数据
{ if(yid<8) tempyid=yid;
else tempyid=yid-8;
{ aa=(xx*8+jj)*32+ii;
out_rxd(&hanzi[aa]); //从串口输出第1个字的第1字节。
out_rxd(&hanzi[aa-1]); //从串口输出第1个字的第1字节。

16灯彩色旋转LED文字显示程序

16灯彩色旋转LED文字显示程序

16灯彩色旋转LED文字显示程序背景介绍随着科技的发展,LED(Light Emitting Diode)已经成为了现代照明领域中的主流技术之一。

LED显示屏的出现更是推动了LED应用的发展。

而LED旋转屏则是LED显示屏中的一种,其特点是能够旋转,从而实现更加生动、多彩的展示效果。

本文将介绍使用C语言编写的16灯彩色旋转LED文字显示程序。

技术实现硬件设备•环型LED灯带•单片机开发板•驱动模块•电源软件实现1. 环形缓存数组旋转屏最重要的组成部分就是屏幕显示区域,这是由16个灯组成的环形区域。

在编写程序之前,我们需要创建一个用于缓存屏幕数据的数组。

在本程序中,我们创建了一个包含16个元素的环形缓存数组。

#define LED_NUM 16uint8_t led_buf[LED_NUM] = {0}; // 环形缓存数组2. 输入字符串解析用户需要输入要显示的字符串,这个字符串可能是为了展示效果而包含彩色字体和特殊字符。

在编写程序前,需要对用户输入的字符串进行解析。

在本程序中,我们创建了一个函数parse_string()来完成字符串解析的任务。

void parse_string(char* str, uint8_t* buf, uint8_t* len){// 解析字符串并将解析后的结果存储到缓存数组中}3. 显示效果实现我们实现了两种显示效果:左向推入效果和旋转效果。

左向推入效果的实现代码如下:// 左向推入void push_in(uint8_t* buf, uint8_t len){for(int i=0;i<LED_NUM;i++){for(int j=0;j<len;j++){led_buf[i] = buf[j];delay_ms(50);}}}旋转效果的实现代码如下:// 环形旋转void led_rotate(void){uint8_t tmp_buf[LED_NUM] = {0};for(int i=0; i<LED_NUM; i++){delay_ms(20);for(int j=0; j<LED_NUM; j++){tmp_buf[(j+1)%LED_NUM] = led_buf[j];}for(int j=0; j<LED_NUM; j++){led_buf[j] = tmp_buf[j];}}}4. 常用函数在本程序中,我们还实现了一些常用的函数,用于辅助实现程序功能。

LED软件使用操作说明

LED软件使用操作说明

LED软件使用操作说明一、安装2.运行安装程序,根据提示进行安装3.安装完成后,桌面将会出现LED软件的图标二、启动双击桌面上的LED软件图标,软件即可启动三、界面功能1.主界面:包括菜单栏、工具栏、显示区域等3.工具栏:包括快速访问常用功能按钮四、操作流程1.打开LED显示屏2.连接显示屏到计算机,确保显示屏正确连接3.在LED软件中选择“连接显示屏”选项4.选择显示屏的型号和参数,设置相关参数5.创建一个新的显示屏工程或打开已有工程文件6.在工程文件中添加要显示的内容,如文字、图片、动画等7.设置内容的属性,如位置、大小、颜色、播放方式等8.在显示区域中预览显示效果9.将内容发送到显示屏中,开始播放五、常用功能说明4.显示设置:设置LED显示屏的型号、参数、亮度等属性6.属性设置:对内容的属性进行设置,包括位置、大小、颜色、播放方式等7.预览显示:在显示区域中预览内容的显示效果8.发送到屏幕:将内容发送到LED显示屏中,开始播放9.屏幕管理:对已连接的显示屏进行管理,包括添加、删除、重命名等操作六、注意事项1.在使用LED软件前,确保已正确安装和连接显示屏2.根据实际需求,选择合适的显示屏型号和参数4.在显示内容时,可以使用多种效果和特效来吸引观众注意力,但不要过度使用,避免影响观看体验5.在发送内容到显示屏时,确保计算机和显示屏的连接稳定,以免数据传输中断导致内容无法正确显示6.定期对LED软件进行更新和维护,以确保软件的稳定性和功能的完善以上是LED软件的基本使用操作说明,希望能够帮助您更好地了解和使用此软件。

对于初次使用的用户,建议先阅读相关帮助文档或进行培训,以便更快地掌握软件的使用技巧。

LED软件使用操作说明

LED软件使用操作说明

LED软件使用操作说明一、LED软件简介二、LED软件的安装和打开2.按照安装向导提示,选择安装路径和相关设置,点击“下一步”直至安装完成。

3.双击桌面上的LED软件图标,打开软件。

三、LED软件的主界面2.工具栏:包括常用的图标按钮,如打开文件、保存文件、预览等,提供快捷操作功能。

4.设置区:提供对已添加的内容进行样式、效果、动画等设置。

四、添加文本1.点击工具栏中的“添加文本”按钮,或选择菜单栏中的“文件”->“添加文本”选项。

3.在设置区设置文本的字体、颜色、大小等样式属性。

五、添加图片1.点击工具栏中的“添加图片”按钮,或选择菜单栏中的“文件”->“添加图片”选项。

2.在弹出的对话框中选择需要添加的图片文件,点击“确定”。

4.在设置区设置图片的大小、位置等属性。

六、添加视频1.点击工具栏中的“添加视频”按钮,或选择菜单栏中的“文件”->“添加视频”选项。

2.在弹出的对话框中选择需要添加的视频文件,点击“确定”。

4.在设置区设置视频的播放方式、速度等属性。

七、设置显示效果2.在设置区选择相应的效果选项,如滚动、闪烁、渐变等。

3.根据实际需要,设置效果的速度、方向、颜色等属性。

八、预览和保存显示内容1.点击工具栏中的“预览”按钮,或选择菜单栏中的“文件”->“预览”选项,可以在预览窗口中查看显示效果。

3.点击工具栏中的“保存”按钮,或选择菜单栏中的“文件”->“保存”选项,保存显示内容。

九、发送显示内容十、其他操作注意事项1.软件支持的文件格式有限,如需添加的文件不支持,需先进行格式转换。

3.软件的具体操作流程和功能可能因版本不同而有差异,根据实际情况进行操作。

综上所述,LED软件使用操作说明包括了安装和打开软件、添加文本、图片、视频等内容,设置显示效果,预览和保存显示内容,以及发送显示内容等步骤。

希望这份操作说明能够帮助您顺利使用LED软件。

旋转led显示屏原理

旋转led显示屏原理

旋转led显示屏原理LED显示屏是一种广泛应用于室内外广告、商业展示、舞台演出等场合的显示设备,其高亮度、低功耗、长寿命等特点使其备受青睐。

而旋转LED显示屏作为LED显示屏的一种特殊形式,具有独特的视觉效果和广泛的应用前景。

本文将对旋转LED显示屏的原理进行详细介绍,希望能够帮助大家更好地理解和应用这一技术。

首先,我们来了解一下旋转LED显示屏的基本结构。

旋转LED显示屏由LED模块、控制系统、机械结构等部分组成。

LED模块是显示屏的核心部件,它由许多个LED灯珠组成,可以发光并显示图像或文字。

控制系统负责控制LED模块的工作,实现图像或文字的显示和变换。

机械结构则是支撑整个显示屏并实现旋转功能的部分,通过它可以使显示屏在空间中旋转,从而呈现出特殊的视觉效果。

接下来,我们来详细了解旋转LED显示屏的工作原理。

旋转LED显示屏的工作原理主要包括两个方面,LED显示技术和旋转机械原理。

在LED显示技术方面,显示屏通过控制LED模块的亮灭和颜色变化来显示图像或文字,这涉及到LED的驱动电路、控制协议、图像处理等技术。

在旋转机械原理方面,显示屏通过机械结构实现旋转功能,这涉及到电机驱动、传动装置、控制算法等技术。

在实际应用中,旋转LED显示屏通常需要与外部环境进行交互,比如根据外部环境的变化调整显示内容或旋转角度。

这就需要显示屏具备一定的感知和控制能力。

因此,旋转LED显示屏的工作原理还涉及到传感技术、通信技术、控制算法等方面的知识。

除了工作原理,我们还需要了解旋转LED显示屏的特点和应用。

旋转LED显示屏以其独特的旋转效果,广泛应用于商业广告、舞台演出、展览展示等场合。

它可以吸引人们的注意,增强视觉冲击力,提升宣传效果。

同时,由于旋转LED显示屏具备LED显示屏的一切优点,比如高亮度、低功耗、长寿命等,因此在室内外广告、商业展示等领域有着广阔的应用前景。

总的来说,旋转LED显示屏是一种集LED显示技术和旋转机械原理于一体的特殊显示设备,其工作原理涉及到LED显示技术、旋转机械原理、传感技术、通信技术、控制算法等多个方面的知识。

led旋转显示屏原理

led旋转显示屏原理

led旋转显示屏原理
LED旋转显示屏是一种能够在不同角度旋转显示图像和文字
的设备。

它的原理基于以下几个关键技术。

1. LED技术:LED(Light Emitting Diode)是一种发光二极管,具有高亮度、低能耗、长寿命等优点。

LED旋转显示屏通过
大量的LED灯珠组成显示矩阵,利用像素点不同亮度和颜色
的变化实现图像和文字的显示。

2. 转轮技术:LED旋转显示屏通常由一个带有多个LED灯珠
的转轮组成。

转轮通过电机驱动,以高速旋转。

每个转轮上的LED灯珠在旋转过程中会经过固定的位置,通过这些位置的
组合和变化,实现图像和文字的显示。

3. 控制系统:LED旋转显示屏的控制系统负责控制LED灯珠
的亮度、颜色和位置变化,从而实现图像和文字的显示。

控制系统通常由微控制器和相关电路组成,可以根据输入信号实现旋转显示屏的控制。

4. 图像和文字处理:LED旋转显示屏需要对图像和文字进行
处理,以适应旋转显示的特点。

通常会对输入的图像和文字进行分割、编码和压缩处理,然后通过控制系统将处理后的数据发送给LED灯珠,实现旋转显示。

总的来说,LED旋转显示屏通过转轮和LED技术实现图像和
文字的旋转显示,控制系统负责控制LED灯珠的亮度、颜色
和位置变化。

这种显示屏广泛应用于室内和室外的广告牌、展览、演出等场所,具有吸引眼球、高清晰度和多功能等特点。

实训项目四-LED旋转灯电路

实训项目四-LED旋转灯电路

项目四旋转LED显示屏的制作旋转LED显示是利用机械转动动态扫描代替传统逐行扫描方式,是一种近期出现的电子产品,成本低,商业化应用LED显示屏是一个新的发展方向,适应性广泛,实用性强,它具有耗能小,寿命长,色彩好、色彩稳定、易操作,可视范围大灯优点。

学习目标知识目标:1、了解旋转LED的整机结构2、能够熟练使用protel2004绘制旋转LED电路图3、了解EDA布线和制版的工艺流程4、了解单片机基本的原理1、按照工艺标准安装旋转LED2、按照工艺文件调试旋转LED3、掌握单片机读写相关软件的使用职业素养目标:1.保持操作工位清洁卫生;2. 在操作前检查安全措施检查;3.能够安全使用焊接及安装工具进行产品的装配;4.正确使用仪器仪表,注意探头或表笔的摆放,防止短路。

任务1 认识电路一、产品简介旋转LED显示屏是通过一个旋转的电路板,电路板上排列的16个LED灯受单片机控制在特定的位置亮或灭,从而显示出特定的字符或图形。

本作品主要是根据人的视觉暂留原理设计的。

采用高速旋转的电机带动电路板高速旋转,从视觉效果上就会产生一种圆盘状的LED显示屏的状态。

旋转LED显示屏功能介绍:1、可以静止显示多个英文或者汉字,可以滚动显示100个汉字〔200个英文〕的广告内容。

2、显示内容在一个平面以圆形悬空展示,四周围观的识字的人员都能读懂显示内容。

3、适合商场柜台、店铺、地摊、夜市等广告展示用,也适合业余爱好者制作。

二、产品原理人眼在观察景物时,光信号传入大脑神经,即使光线突然消失,视觉形象并不会立即消失,这种残留的视觉称“视觉暂留”。

由于人的视神经反应速度为1/ 24秒,所以在我们眼前每秒钟以24格画面的速度转动的图片,所以能给我们以运动的视觉。

led显示屏的显示器件只有一列,并且这一列LED显示屏由转速恒定的LED 显示屏带动进行旋转,同时由控制电路对LED显示屏的点亮状态进行同步控制,使电机每转过一定角度,这一列LED显示屏的显示内容就改变一次,在旋转到任何一个位置都有唯一确定的显示内容,也就是说led显示屏是采用逐列显示的,并且采用了机械转动来替代扫描显示。

单片机代码例子

单片机代码例子

单片机代码例子1. LED闪烁程序在单片机中,我们可以通过编写简单的代码来实现LED灯的闪烁。

以下是一个简单的LED闪烁程序的例子:```#include <reg51.h>void main(){while(1){P1 = 0xFF; // 将P1口的所有引脚设置为高电平delay(1000); // 延时1秒P1 = 0x00; // 将P1口的所有引脚设置为低电平delay(1000); // 延时1秒}}void delay(int time){int i, j;for(i=0; i<time; i++){for(j=0; j<1275; j++);}}```2. 数码管显示程序单片机中的数码管可以通过编写代码来显示数字和字符。

以下是一个简单的数码管显示程序的例子:```#include <reg51.h>unsigned char code digit[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};void main(){unsigned int i;while(1){for(i=0; i<10; i++){P1 = digit[i]; // 将对应的数码管段码输出到P1口delay(1000); // 延时1秒}}}void delay(int time){int i, j;for(i=0; i<time; i++){for(j=0; j<1275; j++);}}```3. 温度检测程序通过连接温度传感器到单片机的引脚,我们可以编写代码来读取温度数据。

以下是一个简单的温度检测程序的例子:```#include <reg51.h>sbit DQ = P3^2; // 温度传感器引脚void delay(int time){int i, j;for(i=0; i<time; i++){for(j=0; j<1275; j++); }}unsigned char readTemperature() {unsigned char temperature; unsigned char i;DQ = 1; // 发送起始信号DQ = 0;delay(500); // 延时500us DQ = 1; // 接收温度数据delay(50); // 延时50usfor (i=0; i<8; i++){DQ = 0;temperature = temperature >> 1; DQ = 1;if (DQ){temperature |= 0x80;}delay(50); // 延时50us}return temperature;}void main(){unsigned char temperature;while(1){temperature = readTemperature(); // 在LCD上显示温度数据delay(1000); // 延时1秒}}```4. 蜂鸣器控制程序通过编写代码,我们可以控制单片机的引脚来控制蜂鸣器的发声。

C语言3色LED实现循环彩虹色

C语言3色LED实现循环彩虹色

C语言3色LED实现循环彩虹色1、D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;2、按规定顺序依次熄灭(间隔1秒),最后全灭;3、八个灯同时点亮,保持1秒;4、八个灯同时熄灭,保持0.5秒;再将第3、4步重复4遍,最后整个程序再重复N遍。

5、让八个灯依次显示为0100 1001实现循环彩虹色。

问题补充:“规定顺序”就是D1,D2,D3,D4...D8悬赏分:105 - 解决时间:2010-7-3 13:44最佳答案:;假设1:D1~D8八个彩灯接在P1口,输出低电平发光;假设2:系统晶振为12MHz;假设3:N = 5;程序如下:ORG 0000HMOV R3, #5;N=5LOOP0:MOV A,#0FFHMOV P1, #0FFH;开始时全灭;----------------------逐个点亮MOV R2, #8LOOP1: CLR CRLC AMOV P1, ACALL DL500MSDJNZ R2, LOOP1;-------------------------------逐个熄灭MOV R2, #8LOOP2: SETB CRLC AMOV P1, ACALL DL500MSDJNZ R2, LOOP2;-------------------------------全亮、全灭交替MOV R2, #4LOOP3: MOV P1, #0;全亮CALL DL500MSCALL DL500MS;共1sMOV P1, #255;全灭CALL DL500MS;0.5sDJNZ R2, LOOP3;DJNZ R3, LOOP0MOV P1, #01001001B ;5、显示为0100 1001CALL DL500MSCALL DL500MS;共1sSJMP 0000H;重新开始N遍;---------------------延时子程序DL500MS:MOV R5, #9;1TDL1: MOV R6, #128;1TDL2: MOV R7, #215;1TNOP;1TDL3: DJNZ R7, DL3;2T 2 * 215 = 430 TDJNZ R6, DL2;2T [1+1+430+2] * 128 = 55552 T DJNZ R5, DL1;2T [1+55552+2] * 9 = 499995 T RET;2T 1 + 499995 + 2 = 499998 ;------------END。

基于单片机的旋转LED显示屏设计

基于单片机的旋转LED显示屏设计

基于单片机的旋转LED显示屏设计本设计使用简单的单片机STC89C51作为主控制模块,利用简单的外围电路来驱动16个LED组成的旋转广告牌。

随着科技的飞速发展,LED广泛应用于广告,机场,车站,酒吧,银行,商场等娱乐场所和公共场所。

它具有功耗小,寿命长,占空间小,色彩艳丽等优点。

目前的LED显示屏主要采用LED平板模块,这种类型的显示屏还有几个需要改进的地方。

首先这种类型的显示屏都是由一个个的LED组成,成本比较高;其次显示屏是一个平面,所以必然有一定的可视角度区域,产生了固定范围的视觉局限性。

本设计针对平板LED显示屏的缺点做出了改进的方案,克服了平板LED显示屏的不足之处。

所以LED旋转屏的构想恰好能弥补这个空缺。

LED旋转屏利用人的视觉暂留效应,通过高速旋转的LED灯阵列,形成一个360度环形画面,创造立体效果,不管人站在那个角度都能看到显示的内容。

该应用实用性好,制作相对简单,而且能节省LED灯的使用。

但因该制作要使用无线供电,因此造价相对较高,推广有一定的难度。

但随着无线供电的效率提高,相信在不久的将来它一定能够得到推广。

本设计以单片机控制LED灯为基础,以无线供电为目的,充分利用新型能量传输方式。

打破了传统的平板LED显示方式和无线供电的方式为该制作的亮点所在。

目录前言 (1)第一章 LED概述 (2)1.1 LED的发展史 (2)1.2 LED的原理特点 (2)1.3 LED的分类 (2)第二章显示原理和控制方式的分析 (2)2.1 16×1 LED旋转陈列原理及应用 (2)2.2 LED旋转陈列显示文字原理 (3)第三章芯片资料 (4)3.1 89C51引脚图 (4)3.2 I/O引脚说明 (4)3.3 信号引脚介绍 (5)第四章硬件设计 (6)4.1系统原理图 (6)4.2 供电方案选择 (6)4.2无线供电原理 (7)4.3无线供电模块 (8)4.4元器件清单 (9)第五章软件设计 (10)5.1汇编语言 (10)5.2程序流程图 (11)5.3程序的定时中断和延时 (11)第六章系统调试 (12)6.1元器件的焊接 (12)6.2通电后各功能测试 (12)6.3通电后软件测试 (12)6.4效果展示 (13)第七章结论 (15)附录附录一系统原理图附录二系统实物图附录三程序代码前言LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。

旋转LED灯程序(51单片机)

旋转LED灯程序(51单片机)

飘飞在空中的文字(详情咨询QQ:278540660)一、实物图(夜晚可以观测到飘在空中的文字,美!!!)二、部分代码/***************************************************************main. c***************************************************/#include<display.h>void main(){EX0init();TIM0init();Init_DS1302();while(1){time_set(IRcord[2]);IRcord[2]=0;if(time_love==0){if(time_onoff==0){ds1302_read_time();Dig_time();}else{Dig_time();}}else{Display_love();}while(!flag);flag=0;}}/***************************************************************redco n.h**************************************************/#define uchar unsigned char#define uint unsigned intsbit IR=P3^2;uchar irtime; //中断次数uchar IRcord[4]; //记录接收到的四个字节数据uchar irdata[33]; //接收到的32个二进制bituint flag=0;uchar nums=0;uint timelate=0;void TIM0init(void) //定时器0初始化{TMOD=0x02; //定时器0工作方式2,TH0是重装值,TL0是初值TH0=0x00; //重载值TL0=0x00; //初始化值(0.255ms一次中断)--晶振频率的十二分之一ET0=1; //开中断TR0=1;}void EX0init(void){IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)EX0 = 1; //使能外部中断0IT1=1; //指定外部中断1下降沿触发,INT0 (P3.3)EX1=1; //使能外部中断1EA = 1; //开总中断}void Ircordpro(void) //红外码值处理函数{uchar i, j, k;uchar cord,value;k=1;for(i=0;i<4;i++) //处理4个字节{for(j=1;j<=8;j++) //处理1个字节8位{cord=irdata[k];if(cord>7) //1.125ms为0 2.25ms为1 0.255*7作为稳定判断值value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}}void EX1_ISR (void) interrupt 2 //外部中断0服务函数{static uchar i; //接收红外信号处理static bit startflag; //是否开始处理标志位if(startflag){if(irtime<60&&irtime>=35) //连续发送两个32位数据间隔不可预知性) 尤为重要{i=0;}irdata[i]=irtime; //存储每个电平的持续时间irtime=0;i++;if(i==33){i=0;startflag=0;Ircordpro();}}else{startflag=1;irtime=0;}}void tim0_isr (void) interrupt 1 using 1{irtime++;}void EX0_ISR (void) interrupt 0{flag=1;nums++;if(nums>=20){nums=0;timelate++;if(timelate>=4){timelate=0;}}}/***************************************************************DS130 2.h**************************************************/#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar time_buf[7]={0x13,0x01,0x01,0x00,0x00,0x00,0x02};sbit SCLK=P0^0;sbit SDA=P0^1;sbit RST=P0^4;void delayus(uint t){uint i;for(i=0;i<t;i++)_nop_();}void delayms(uint t){uint x,y;for(x=t;x>0;x--)for(y=95;y>0;y--);}void change_dats(){uchar i;uchar temp;for(i=0;i<6;i++){temp=time_buf[i]/16;time_buf[i]=time_buf[i]%16+temp*10;}}void DS1302WriteByte(uchar dat){uchar i;SCLK=0; //初始时钟线置为0delayus(2);for(i=0;i<8;i++)//传输的8个字节的数据{SDA=dat&0x01; //取最低位delayus(2);SCLK=1; //上升沿,SDA的数据被传输delayus(2);SCLK=0; //时钟线拉低,为下一个上升沿做准备dat>>=1; //数据右移一位,准备传输下一位数据}}uchar DS1302ReadByte(){uchar i,dat;delayus(2);for(i=0;i<8;i++){dat>>=1; //要返回的数据左移一位if(SDA==1) //当数据线为高时,证明该位数据为 1 dat|=0x80;SCLK=1; //拉高时钟线delayus(2);SCLK=0; //制造下降沿delayus(2);}return dat; //返回读取出的数据}void DS1302Write(uchar cmd, uchar dat){RST=0; //初始 CE线置为 0SCLK=0; //初始时钟线置为0RST=1; //初始 CE置为 1,传输开始DS1302WriteByte(cmd); //传输命令字,要写入的时间/日历地址DS1302WriteByte(dat); //写入要修改的时间/日期SCLK=1; //时钟线拉高RST=0; //读取结束,CE置为0,结束数据的传输}uchar DS1302Read(uchar cmd){uchar dat;RST=0; //初始 CE线置为0SCLK=0; //初始时钟线置为0RST=1; //初始 CE置为 1,传输开始DS1302WriteByte(cmd); //传输命令字,要读取的时间/日历地址dat=DS1302ReadByte(); //读取要得到的时间/日期SCLK=1; //时钟线拉高RST=0; //读取结束,CE置为 0,结束数据的传输return dat; //返回得到的时间/日期}void Init_DS1302(void){DS1302Write(0x8e,0x00); //写保护关DS1302Write(0x80,time_buf[5]); //初始秒值为0DS1302Write(0x82,time_buf[4]); //初始分钟值为 0DS1302Write(0x84,time_buf[3]); //初始为 24小时模式初始时间为0点DS1302Write(0x86,time_buf[2]); //设置日DS1302Write(0x88,time_buf[1]); //设置月DS1302Write(0x8c,time_buf[0]); //设置年DS1302Write(0x8a,time_buf[6]); //设置星期数DS1302Write(0x8e,0x80); //禁止写入change_dats();}void ds1302_read_time(){uchar i,temp;time_buf[0]=DS1302Read(0x8D); //年time_buf[1]=DS1302Read(0X89); //月time_buf[2]=DS1302Read(0X87); //日time_buf[3]=DS1302Read(0X85); //时time_buf[4]=DS1302Read(0X83); //分time_buf[5]=(DS1302Read(0X81))&0x7F;//秒time_buf[6]=DS1302Read(0X8B); //星期for(i=0;i<7;i++) //BCD 处理{temp=time_buf[i]/16;time_buf[i]=time_buf[i]%16;time_buf[i]+=temp*10;}}/***************************************************************DISPL AY.h**************************************************/#include<ds1302.h>#include<redcon.H>#define uint unsigned int#define uchar unsigned charuchar code W[]={0x81,0xfb,0xf7,0xfb,0x81};uchar code N[]={0xe1,0xdf,0xdf,0xe1};uchar code R[]={0x81,0xa7,0xab,0xdd};uchar code I[]={0xbd,0x81,0xbd};uchar code L[]={0x81,0xfd,0xfd};uchar code o[]={0xe3,0xdd,0xe3};uchar code v[]={0xc7,0xfb,0xfd,0xfb,0xc7};uchar code E[]={0xe3,0xd5,0xd5,0xe5};uchar code Y[]={0x9f,0xef,0xf1,0xef,0x9f};uchar code U[]={0xc3,0xfd,0xfd,0xc3};uchar code num[10][5]={{0x83,0x75,0x6d,0x5d,0x83},{0xff,0xbd,0x01,0xfd,0xff},{0xbd,0x79,0x75,0x6d,0x9d},{0x7b,0x7d,0x5d,0x2d,0x73},{0xe7,0xd7,0xb7,0x01,0xf7},{0x1b,0x5d,0x5d,0x5d,0x63},{0x83,0x6d,0x6d,0x6d,0x73},{0xbf,0x7f,0x7d,0x41,0x3d},{0x93,0x6d,0x6d,0x6d,0x93},{0x9b,0x6d,0x6d,0x6d,0x83}};uchar code wen[]={0xdf,0xcd,0xd5,0x9b,0xd5,0xcd,0xdf};uchar code er[]={0xfd,0x83,0xff,0x83,0xfb,0xfd,0xfd};uchar code xin[]={0xcf,0xb7,0xdb,0xb7,0xcf};uchar set_num=0;uchar time_onoff=0;uchar time_love=0;void change_dath(){uchar i;uchar temp;for(i=0;i<6;i++){temp=time_buf[i]/10;time_buf[i]=time_buf[i]%10+temp*16; }}void time_set(uchar dat){switch(dat){case 0x46:{if(set_num==0) //按下设置键第一次{set_num=1;time_onoff=1;DS1302Write(0x8e,0x00); //写保护关DS1302Write(0x80,0X80); //时钟停止}else if(set_num==1){set_num=2;}else if(set_num==2){P2=0XFB;set_num=3;}else if(set_num==3){set_num=4;P2=0Xf7;}else if( set_num==4){set_num=5;}else if(set_num==5){set_num=6;}else if(set_num==6){set_num=0;time_onoff=0;change_dath();Init_DS1302();DS1302Write(0x80,0X00); //时钟运行}break;}case 0x47:{if(set_num!=0){if(set_num==1){time_buf[0]++;}else if(set_num==2){time_buf[1]++;if(time_buf[1]>12)time_buf[1]=1;}else if(set_num==3){time_buf[2]++;if(time_buf[2]>=32)time_buf[2]=1;}else if(set_num==4){time_buf[3]++;if(time_buf[3]>=24)time_buf[3]=0;}else if(set_num==5){time_buf[4]++;if(time_buf[4]>=60)time_buf[4]=0;}else if(set_num==6){time_buf[5]++;if(time_buf[5]>=60)time_buf[5]=0;}}break;}case 0x45:{if(set_num!=0){if(set_num==1){if(time_buf[0]<=0)time_buf[0]=20;else{time_buf[0]=time_buf[0]-1; }}else if(set_num==2){time_buf[1]=time_buf[1]-1; if(time_buf[1]<=0)time_buf[1]=12;}else if(set_num==3){if(time_buf[2]<=1)time_buf[2]=31;elsetime_buf[2]=time_buf[2]-1; }else if(set_num==4){if(time_buf[3]<=0)time_buf[3]=23;elsetime_buf[3]=time_buf[3]-1; }else if(set_num==5){if(time_buf[4]<=0)time_buf[4]=59;elsetime_buf[4]=time_buf[4]-1;}else if(set_num==6){if(time_buf[5]<=0)time_buf[5]=59;elsetime_buf[5]=time_buf[5]-1;}}break;}case 0x07:{time_love=1;break;}case 0x15:{time_love=0;break;}}}/******************时钟显示***************/ void Dig_time(){char m;for(m=0;m<=4;m++) //显示时十位{P2=num[time_buf[3]/10][m];delayms(1);}P2=0xff;delayms(1);for(m=0;m<=4;m++) //显示时个位{P2=num[time_buf[3]%10][m];delayms(1);}P2=0xff;delayms(1);P2=0xd7;delayms(1);P2=0xff;delayms(1);for(m=0;m<=4;m++) //显示分十位{P2=num[time_buf[4]/10][m];delayms(1);}P2=0xff;delayms(1);for(m=0;m<=4;m++) //显示分个位{P2=num[time_buf[4]%10][m];delayms(1);}P2=0xff;delayms(1);P2=0xd7;delayms(1);P2=0xff;delayms(1);for(m=0;m<=4;m++) //显示秒十位{P2=num[time_buf[5]/10][m];delayms(1);}P2=0xff;delayms(1);for(m=0;m<=4;m++) //显示秒个位{P2=num[time_buf[5]%10][m];delayms(1);}P2=0xff;}/***************i love you*****************/ void Display_love(){char i,j;if(timelate==0){for(i=0;i<=6;i++) //显示W{P2=wen[i];delayms(1);}P2=0xff;delayms(1);for(i=0;i<=6;i++) //显示r {P2=er[i];delayms(1);}P2=0xff;delayms(2);}if(timelate<=1){for(i=2;i>=0;i--) //显示I {P2=I[i];delayms(1);}P2=0xff;delayms(2);}if(timelate<=2){for(i=0;i<3;i++) //显示L {P2=L[i];delayms(1);}P2=0xff;delayms(1);for(i=2;i>=0;i--) //显示o {P2=o[i];delayms(1);}P2=0xff;delayms(1);for(i=4;i>=0;i--) //显示v {P2=v[i];delayms(1);}P2=0xff;delayms(1);for(i=0;i<=3;i++) //显示e {P2=E[i];delayms(1);}P2=0xff;delayms(2);}if(timelate<=3){for(i=4;i>=0;i--) //显示Y {P2=Y[i];delayms(1);}P2=0xff;delayms(1);for(i=2;i>=0;i--) //显示o {P2=o[i];delayms(1);}P2=0xff;delayms(1);for(i=3;i>=0;i--) //显示u {P2=U[i];delayms(1);}P2=0xff;delayms(2);}if(timelate>0){for(j=0;j<timelate;j++) {for(i=0;i<=4;i++){P2=xin[i];delayms(1);}P2=0xff; delayms(2); }}}。

旋转LED立体显示系统设计

旋转LED立体显示系统设计

0 引言随着信息时代的科学技术发展,信息显示技术百花齐放,并各有所长。

LED显示具有亮度高、清晰度高、色彩鲜艳、视角宽等优点。

其独特的优越性,促使其从广播、电力等高端专业领域扩展到能源、工业、民生、公共管理等领域。

在此之前,LED全彩显示主要用于广告媒体、运动场地、舞台背景和市政工程。

现国内市场已经有了面向电子创意作品的小型单色旋转LED显示屏,但尚不具备广泛的应用条件。

颜色显示单一,显示面积过小,无法实时更新数据,性价比低等缺点,使之无法广泛应用。

[1]结合现有条件,本设计旨在于设计一款更大显示面积,更丰富色彩显示,提高旋转显示系统的性价比的旋转LED显示系统。

1 设计原理旋转LED显示系统由三个部分构成:机械结构、STM32主控板和MBI5024LED驱动板。

显示板在主控板程序的控制下,进行LED灯的控制显示,并在机械结构电机的带动下,线动成面,成为一个曲面的显示屏。

电路结构如图1所示。

本设计以STM32单片机为核心控制芯片。

由电机带动主板旋转达到一定速度稳定旋转,使单排LED旋转起来,给人的视觉效果将是一个圆柱或一个球形,并通过红外模块来感知旋转速度及起始位置。

本显示屏拟选用具有超高处理速度,超低功耗,稳定性能STM32RCT6 单片机为主要控制元件,采用16位MBI5024LED驱动芯片,行扫描、列驱动进行动态扫描。

彩屏通过选用了三基色[2-3]混色的原理,通过时间混色法,LED 点亮不同颜色,然后在同一空间位置重合实现。

2 整体设计机械结构:机械结构可以称作为本设计的骨架,后续的硬件电路和其搭载的软件系统都需要一个牢固稳定的机械结构方能稳定高效的工作,尤其对于本设计来说,高速旋转的叶片更是高度需求一个设计精良的骨架。

主控板电路:主控电路板电路原理图如图2所示,主控电路板以贴片式封装的STM32F103RCT6单片机为主控芯片,从嵌入式最小硬件系统组成上来说,主控芯片STM32采用ARM Cortex内核,48KRAM,256KROM单片机上I/O口均被引出,为后续开发留下空间。

完整版旋转LED显示器说明

完整版旋转LED显示器说明

旋转LED显示器的说明石家庄市第二外国语学校九年级9班王子璇一、功能说明:嵌在粉盒子上的东西叫做旋转LED显示器。

当接通电源,它便开始自动旋转,顶面会动态显示时钟或数字时间,侧面可滚动显示汉字古诗或图案。

红外遥控,可实现画面转换和调时功能。

二、制作原理:物体在快速运动时,当人看到的影像消失后,人眼仍能保留其影像,约0。

1s,这种现象称为视觉暂留。

旋转LED就是利用这种原理,现以旋转时钟画面为例进行说明:假设12点的刻度为0°,则每个时针之间的角度为30°,于是当一整列发光二级管每旋转30°,就点亮一瞬间,以呈现出时间刻度。

如果在小于0.1s内,这列LED能转完一圈,人眼就会误认为先后产生的12个刻度是同一时间显示出来的。

电机带动板子高速旋转,控制器(单片机)控制相应的LED点亮或者熄灭,并在0。

1s内对LED扫描完一圈,重复执行这样的扫描,人的眼睛看上去就形成了一副完整的时钟画面。

供电模块选用无线供电,因为电路板要转动动起来,采用有线供电会导致缠绕和磨损问题,所以利用电磁感应原理,电场变化可以产生磁场,磁场变化也可以产生电场用转轴外围的两个线圈感应产生电压。

三、制作过程:1。

从玩具四驱车或者旧软驱中拆下得到一个直流电机,供电路板转动;2。

设计硬件电路和软件方案;3.制作PCB电路板,特别注意:板子长度、配重(旋转平衡)、供电接口(无线供电与旋转板子的衔接)、LED间距(显示画面的质量);4。

将设计好的电路板打印出来,再转印到覆铜板上,经过腐蚀等一系列工艺得到电路板,打孔之后焊接元件。

5.将写好的程序写进控制器芯片。

6.安装,测试。

四、故障调试:1.无线供电不能正常给单片机供电,检查电路板后,调整整流二极管, 问题解决。

2.起初红外遥控接收不能工作,检查发现,红外接收二极管为光敏二极管,工作时应加反向电压. 3。

板子旋转后不能带动所有LED亮灭,经过对板子反复测量调试,确定为限流电阻太小,导致功率过大,更换电阻后,可显示画面。

七彩LED渐变程序源码51单片机

七彩LED渐变程序源码51单片机

七彩LED渐变程序源码-51单片机/*******************************程序名称:七彩LED渐变程序编写者:ZH YUMCU:51/2051晶振:12MHz/*********************************/#include ;sbit g1=P1^6; //绿色sbit r1=P1^7; //红sbit b1=P1^5; //兰sbit key1=P3^3;/*********************************/unsigned char i;unsigned char mode;/*********************************/void delay(unsigned int k){unsigned int i,j;for(i=0;i<k;i++){for(j=0;j<121;j++){;}}}/*********************************/ void interint1() interrupt 2 //using ** //外部中断1处理{EA=0;if(key1==0){delay(20);key1=1;if(key1==0){mode++;if(mode==4)mode=0;}while(key1==0);}key1=1;EA=1;}/*********************************/ timer(unsigned char t){unsigned char b;for(b=0;b<t;b++){; }}/*********************************/ ledout(unsigned char g,r,b) {unsigned char a;for(a=0;a<10;a++){if(g!=0){g1=1;timer(g);g1=0;}if(r!=0){r1=1;timer(r);r1=0;}if(b!=0){b1=1;timer(b);b1=0;}}}/*********************************//*********************************/ main(){unsigned char g,r,b;r1=0;g1=0;b1=0;EA=1;EX1=1;delay(1);while(1){if(mode==0){{if(g!=0&&b==0){g--;r++;}if(r!=0&&g==0){r--;b++;}if(b!=0&&r==0){b--;g++;}if(g+r+b!=100){g=100;r=0;b=0;}ledout(g,r,b);}}if(mode==1){i++;if(i==7)i=0;switch(i){case 0 : r1=1;g1=0;b1=0;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 1 : r1=0;g1=1;b1=0;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 2 : r1=0;g1=0;b1=1;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 3 : r1=1;g1=1;b1=0;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 4 : r1=1;g1=0;b1=1;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 5 : r1=0;g1=1;b1=1;delay(100);r1=0;g1=0;b1=0; delay(100); break;case 6 : r1=1;g1=1;b1=1;delay(100);r1=0;g1=0;b1=0;delay(100); break;default : break;}}if(mode==2){i++;if(i==7)i=0;switch(i){case 0 : r1=1;g1=0;b1=0;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 1 : r1=0;g1=1;b1=0;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 2 : r1=0;g1=0;b1=1;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 3 : r1=1;g1=1;b1=0;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 4 : r1=1;g1=0;b1=1;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 5 : r1=0;g1=1;b1=1;delay(300);r1=0;g1=0;b1=0; delay(300); break;case 6 : r1=1;g1=1;b1=1;delay(300);r1=0;g1=0;b1=0; delay(300); break;default : break;}}if(mode==3){i++;if(i==7)i=0;switch(i){case 0 : r1=1;g1=0;b1=0;delay(300); break;case 1 : r1=0;g1=1;b1=0;delay(300); break;case 2 : r1=0;g1=0;b1=1;delay(300); break;case 3 : r1=1;g1=1;b1=0;delay(300); break;case 4 : r1=1;g1=0;b1=1;delay(300); break;case 5 : r1=0;g1=1;b1=1;delay(300); break;case 6 : r1=1;g1=1;b1=1;delay(300); break;default : break;}}}}。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Show_B(r1,r2);
break;
case5://青色
Show_G(r1,r2);
Show_B(r1,r2);
break;
case6://白色
Show_R(r1,r2);
Show_G(r1,r2);
Show_B(r1,r2);
break;
default:
P0=0XFF;
P1=0XFF;
P2=0XFF;
0x7F,0xFF,0x7D,0x7F,0x7D,0xBF,0x7D,0xCF,0x01,0xF0,0x7D,0xFF,0x7D,0xFF,0x7D,0xFF,
0x7D,0xFF,0x7D,0xFF,0x01,0x00,0x7D,0xFF,0x7D,0xFF,0x7D,0xFF,0x7F,0xFF,0xFF,0xFF,/*"开",10*/
sbitG16=P2^2;
sbitB1=P4^3;//定义B每个IO控制的LED
sbitB2=P2^0;
sbitB3=P2^5;sbitB4=P7源自5;sbitB5=P5^5;
sbitB6=P0^4;
sbitB7=P5^3;
sbitB8=P6^3;
sbitB9=P1^3;
sbitB10=P1^0;
sbitB11=P6^2;
sbitB12=P0^3;
sbitB13=P5^4;
sbitB14=P2^4;
sbitB15=P7^4;
sbitB16=P5^0;
ucharcodezimo[];
bitScan_bit=0;
bitBIT_timeout=0;
uinti=0,j=0;
#defineucNumRows100//定义一周显示列数
/*********中断子程序**********/
voidint0()interrupt0//使用外部中断0
{
BIT_timeout=1;//起点标志位
}
/*****主函数*****/
voidmain(void)
{
P1M0=0X00;
P1M1=0X00;
P0M0=0X00;//IO口初始化准双向IO
#defineucharunsignedchar
#defineuintunsignedint//宏定义
sbitR1=P6^6;//定义R每个IO控制的LED
sbitR2=P2^7;
sbitR3=P4^0;
sbitR4=P1^7;
sbitR5=P0^0;
sbitR6=P0^6;
sbitR7=P1^2;
P3=0XFF;
P4=0XFF;
P5=0XFF;
P6=0XFF;
P7=0XFF;
break;
}
}
/*****n(us)延时子程序*****/
voidDelay15us()//@18.432MHz
{
unsignedchara,b;
for(b=140;b>0;b--)
for(a=5;a>0;a--);
}
sbitG3=P6^4;
sbitG4=P7^7;
sbitG5=P4^6;
sbitG6=P0^2;
sbitG7=P6^1;
sbitG8=P1^4;
sbitG9=P1^6;
sbitG10=P4^7;
sbitG11=P6^0;
sbitG12=P5^2;
sbitG13=P4^5;
sbitG14=P2^6;
sbitG15=P6^7;
P0M1=0X00;
P2M0=0X00;
P2M1=0X00;
P3M0=0X00;
P3M1=0X00;
P4M0=0X00;
P4M1=0X00;
P5M0=0X00;
P5M1=0X00;
P6M0=0X00;
P6M1=0X00;
P7M0=0X00;
P7M1=0X00;
P0=0XFF;
P1=0XFF;
P2=0XFF;
/***************************************/
voidShow_R(ucharr1,ucharr2)//数据输出IO口R是红色16灯
{
R1=(bit)(r1&0x01);
R2=(bit)(r1&0x02);
R3=(bit)(r1&0x04);
R4=(bit)(r1&0x08);
G4=(bit)(r1&0x08);
G5=(bit)(r1&0x10);
G6=(bit)(r1&0x20);
G7=(bit)(r1&0x40);
G8=(bit)(r1&0x80);
G9=(bit)(r2&0x01);
G10=(bit)(r2&0x02);
G11=(bit)(r2&0x04);
G12=(bit)(r2&0x08);
sbitR8=P1^5;
sbitR9=P1^1;
sbitR10=P0^7;
sbitR11=P0^5;
sbitR12=P0^1;
sbitR13=P7^6;
sbitR14=P6^5;
sbitR15=P3^4;
sbitR16=P4^4;
sbitG1=P2^1;//定义G每个IO控制的LE
sbitG2=P2^3;
Delay15us();//延时一段时间
if(BIT_timeout==1)//这里如果没有显示完一圈的数据回到起点了
//直接跳出就不会出现头吃尾的现象而且盲点很小
{
return;
}
}
Show_Color(0xFF,0XFF,7);
}
}
}
//PC2002字幕软件配置(逐列阳码逆向)字大小16X16
ucharcodezimo[]={
0xFF,0x7F,0xFF,0x9F,0x01,0xE0,0xFD,0xFF,0xED,0xDF,0xDD,0xEF,0x3D,0xF3,0xFD,0xFC,
0x3D,0xF3,0xCD,0xCF,0xFD,0xFF,0x01,0xF0,0xFF,0xCF,0xFF,0xBF,0xFF,0x07,0xFF,0xFF,/*"风",2*/
0xFF,0xEF,0xFF,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,
0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF,/*"二",4*/
0xFF,0x7F,0x01,0x80,0xDD,0xFD,0xDD,0x7D,0x01,0x00,0xD7,0xFE,0x56,0xDF,0x91,0xD2,
0xD7,0xD6,0xC0,0xD6,0xD7,0xD6,0x93,0xB0,0x54,0x77,0xD7,0x86,0xDF,0xFE,0xFF,0xFF,/*"腾",7*/
R5=(bit)(r1&0x10);
R6=(bit)(r1&0x20);
R7=(bit)(r1&0x40);
R8=(bit)(r1&0x80);
R9=(bit)(r2&0x01);
R10=(bit)(r2&0x02);
R11=(bit)(r2&0x04);
R12=(bit)(r2&0x08);
R13=(bit)(r2&0x10);
j++;
if(j>688)//显示完文字后循环;j=16*需要显示的字数768/16=48宽24X32高大字j=24*显示的字数768/24=32
{
j=0;
}
for(i=j;i<ucNumRows+j;i++)//显示190列数据
{
Show_Color(zimo[i*2],zimo[i*2+1],(i/16)%7);//送16X16字显示
0xFF,0xBF,0x01,0xC0,0xFF,0xFF,0x03,0xC0,0xFF,0xFF,0x00,0x00,0xFF,0x7F,0x0D,0xB0,
0xED,0xDF,0xE5,0xE7,0x29,0xF8,0xED,0xEF,0xED,0xDF,0x0D,0xB0,0xFD,0x7F,0xFF,0xFF,/*"顺",3*/
P3=0XFF;
P4=0XFF;
P5=0XFF;
P6=0XFF;
P7=0XFF;
IT0=1;//初始化外部中断起点检测
EX0=1;
EA=1;//开中断
//主程序中
while(1)
{
if(BIT_timeout==1)//起点判断
{
BIT_timeout=0;//清零
//Scan_bit=1;//起点检测到后LED不再流水测试
0xFF,0xDF,0xFB,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,
0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0x7B,0xDF,0xFB,0xDF,0xFF,0xDF,0xFF,0xFF,/*"三",8*/
0xFF,0xFF,0x07,0xF0,0xF7,0xFF,0x00,0x00,0xF7,0xF7,0x07,0x70,0xFF,0x9F,0x01,0xE0,
相关文档
最新文档