显示驱动实验报告

合集下载

LCD1602液晶显示实验实验报告及程序.doc

LCD1602液晶显示实验实验报告及程序.doc

实验三 LCD1602 液晶显示实验姓名专业学号成绩一、实验目的1.掌握 Keil C51 软件与 proteus 软件联合仿真调试的方法;2.掌握 LCD1602液晶模块显示西文的原理及使用方法;3.掌握用 8 位数据模式驱动 LCM1602液晶的 C 语言编程方法;4.掌握用 LCM1602液晶模块显示数字的 C 语言编程方法。

二、实验仪器与设备1.微机一台 C51 集成开发环境仿真软件三、实验内容1.用 Proteus 设计一 LCD1602液晶显示接口电路。

要求利用 P0口接 LCD1602液晶的数据端, ~做 LCD1602液晶的控制信号输入端。

~口扩展 3 个功能键 K1~K3。

参考电路见后面。

2.编写程序,实现字符的静态和动态显示。

显示字符为第一行:“ 1. 姓名全拼”,第二行:“ 2. 专业全拼 +学号”。

3.编写程序,利用功能键实现字符的垂直滚动和水平滚动等效果显示。

显示字符为:“1. 姓名全拼 2.专业全拼+学号EXP8DISPLAY ”主程序静态显示“ My information!”四、实验原理液晶显示的原理:采用的 LCD显示屏都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背光层,背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。

当 LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。

1.LCD1602采用标准的 14 引脚(无背光)或 16 引脚(带背光)接口,各引脚接口说明如表:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极2. 1602 液晶模块内部的控制器共有11 条控制指令,如表所示:3.芯片时序表:4. 1602LCD的一般初始化 ( 复位 ) 过程(1)延时 15ms。

液晶显示器实训实验报告

液晶显示器实训实验报告

一、实验目的1. 理解液晶显示器(LCD)的基本工作原理和组成结构。

2. 掌握液晶显示器驱动电路的设计与调试方法。

3. 熟悉液晶显示器的接口技术及其与单片机的连接方式。

4. 通过实验验证液晶显示器的显示功能,并实现简单图形和文字的显示。

二、实验原理液晶显示器(LCD)是一种利用液晶材料的光学各向异性来实现图像显示的设备。

它主要由液晶层、偏光片、电极阵列、驱动电路等部分组成。

液晶分子在电场作用下会改变其排列方向,从而改变通过液晶层的光的偏振状态,实现图像的显示。

三、实验器材1. 液晶显示器模块(如12864 LCD模块)2. 单片机开发板(如STC89C52单片机)3. 电源模块4. 连接线5. 实验平台(如面包板)四、实验内容1. 液晶显示器模块的识别与检测首先,对所购买的液晶显示器模块进行外观检查,确保无损坏。

然后,根据模块说明书,连接电源和单片机开发板,进行初步的检测。

2. 液晶显示器驱动电路的设计与调试根据液晶显示器模块的技术参数,设计驱动电路。

主要包括以下部分:- 电源电路:将单片机提供的电压转换为液晶显示器所需的电压。

- 驱动电路:负责控制液晶显示器模块的行、列电极,实现图像的显示。

- 接口电路:将单片机的信号与液晶显示器的控制信号进行连接。

在设计电路时,需要注意以下几点:- 电源电压要稳定,避免对液晶显示器模块造成损害。

- 驱动电路的驱动能力要足够,确保液晶显示器模块能够正常显示。

- 接口电路的信号传输要可靠,避免信号干扰。

设计完成后,进行电路调试,确保电路正常工作。

3. 液晶显示器的控制程序编写根据液晶显示器模块的控制指令,编写控制程序。

主要包括以下部分:- 初始化程序:设置液晶显示器的显示模式、对比度等参数。

- 显示程序:实现文字、图形的显示。

- 清屏程序:清除液晶显示器上的显示内容。

在编写程序时,需要注意以下几点:- 控制指令要正确,避免对液晶显示器模块造成损害。

- 程序要简洁,易于调试和维护。

数码管的显示的实验报告

数码管的显示的实验报告

数码管的显示的实验报告数码管的显示的实验报告引言:数码管是一种常见的数字显示装置,广泛应用于各种电子设备中。

本实验旨在通过实际操作,了解数码管的原理和工作方式,并通过一系列实验验证其显示效果和功能。

实验一:数码管的基本原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或符号。

通过对不同的发光二极管进行点亮或熄灭,可以显示出不同的数字或符号。

本实验使用的是共阳数码管,即共阳极连接在一起,而阴极分别连接到控制芯片的输出引脚。

实验二:数码管的驱动电路为了控制数码管的显示,需要使用驱动电路。

常见的驱动电路有共阴极驱动和共阳极驱动两种。

本实验使用的是共阳极驱动电路。

驱动电路由控制芯片、电阻和电容组成。

控制芯片通过控制输出引脚的高低电平来控制数码管的点亮和熄灭。

实验三:数码管的显示效果通过控制芯片的输出引脚,可以实现数码管的显示效果。

本实验使用的是四位数码管,可以显示0-9的数字。

通过改变控制芯片输出引脚的电平,可以控制数码管显示不同的数字。

实验中通过编写程序,使数码管显示从0到9的数字循环显示,并通过按键控制数字的增加和减少。

实验四:数码管的多位显示除了显示单个数字外,数码管还可以实现多位显示。

通过控制不同位数的数码管,可以显示更多的数字或符号。

本实验使用的是四位数码管,可以同时显示四个数字。

通过编写程序,可以实现四位数码管的多位显示,例如显示当前时间、温度等信息。

实验五:数码管的亮度调节数码管的亮度可以通过改变驱动电路中的电阻值来实现。

本实验通过改变电阻值,调节数码管的亮度。

实验中通过编写程序,通过按键控制数码管的亮度增加和减少,从而实现亮度的调节。

结论:通过本次实验,我们深入了解了数码管的原理和工作方式。

数码管可以通过驱动电路的控制,实现数字和符号的显示。

同时,数码管还可以实现多位显示和亮度调节。

数码管作为一种常见的数字显示装置,具有广泛的应用前景,可以应用于各种电子设备中。

通过进一步的研究和实践,我们可以更好地利用数码管的功能,满足不同应用场景的需求。

静态驱动实验报告

静态驱动实验报告

一、实验目的1. 理解静态驱动的基本原理和实现方法。

2. 掌握静态驱动电路的设计和搭建。

3. 分析静态驱动电路的性能特点,并与动态驱动进行比较。

二、实验原理静态驱动是液晶显示(LCD)中常用的一种驱动方式。

它通过在液晶的每个像素上施加稳定的电压,使液晶分子保持稳定的取向,从而实现稳定的显示效果。

静态驱动具有显示质量高、响应速度快、视角宽等优点,但电路复杂、功耗大、成本高。

三、实验内容1. 静态驱动电路设计(1)电路原理:静态驱动电路由电源、驱动芯片、液晶显示屏和外围元件组成。

驱动芯片负责将数字信号转换为模拟信号,并输出到液晶显示屏。

电源为电路提供稳定的电压,外围元件如滤波电容、电阻等用于滤波和限流。

(2)电路搭建:根据设计原理,搭建静态驱动电路。

具体步骤如下:① 按照电路图连接电源、驱动芯片、液晶显示屏和外围元件;② 检查电路连接是否正确,确保无短路、断路现象;③ 通电测试电路,观察驱动芯片和液晶显示屏的工作状态。

2. 静态驱动电路性能分析(1)响应速度:静态驱动电路的响应速度较快,适用于高速显示场合。

(2)视角:静态驱动电路的视角较宽,用户可以从不同角度观看显示屏。

(3)功耗:静态驱动电路的功耗较大,主要原因是液晶显示屏需要持续施加稳定的电压。

(4)对比度:静态驱动电路的对比度较高,显示效果清晰。

3. 静态驱动与动态驱动的比较(1)静态驱动:具有显示质量高、响应速度快、视角宽等优点,但电路复杂、功耗大、成本高。

(2)动态驱动:具有电路简单、功耗低、成本较低等优点,但显示质量相对较差,响应速度较慢。

四、实验结果与分析1. 静态驱动电路搭建成功,驱动芯片和液晶显示屏工作正常。

2. 静态驱动电路的响应速度较快,视角较宽,显示效果清晰。

3. 静态驱动电路的功耗较大,但满足实际应用需求。

4. 静态驱动与动态驱动相比,具有更高的显示质量和响应速度,但成本较高。

五、实验总结本次实验成功搭建了静态驱动电路,并对其性能进行了分析。

LCD1602液晶显示实验报告

LCD1602液晶显示实验报告

LCD1602液晶显示实验报告实验报告:LCD1602液晶显示实验实验目的:1.了解LCD1602液晶显示的工作原理和基本结构;2.掌握LCD1602液晶显示的驱动控制方法;3.能够通过Arduino控制LCD1602液晶显示。

实验材料:1.Arduino UNO开发板2.LCD1602液晶显示屏3.面包板4.杜邦线实验步骤:1.将Arduino UNO开发板与面包板连接,确保连接正确并牢固;2.将LCD1602液晶显示屏与面包板连接,连接时应注意引脚的对应关系,确保连接正确;3.将杜邦线的一端连接到Arduino UNO开发板的数字引脚上,另一端连接到对应的液晶显示屏引脚上;4.编写Arduino代码,实现液晶显示屏的控制功能;5.将编写好的代码上传到Arduino UNO开发板上,运行程序,观察LCD1602液晶显示屏上的显示结果。

实验结果:通过实验,我们成功实现了对LCD1602液晶显示屏的控制。

在液晶显示屏上可以显示出我们想要的文字、数字或符号。

通过控制液晶显示屏的引脚电平,可以控制液晶显示出不同的字符。

实验总结:通过本次实验,我们了解了LCD1602液晶显示的工作原理和基本结构。

液晶显示屏通过控制引脚电平来控制液晶分子的排列,从而实现文字、数字或符号的显示。

我们还掌握了LCD1602液晶显示的驱动控制方法,通过编写Arduino代码,我们能够实现对液晶显示屏的控制。

在实验中,我们还学习到了Arduino的使用,它是一款开放源代码的电子原型平台,由硬件和软件组成。

通过编写Arduino代码,我们可以控制与Arduino连接的各种外设,包括LCD1602液晶显示屏。

通过本次实验,我们不仅加深了对LCD1602液晶显示的理解,还学会了使用Arduino控制液晶显示屏。

这对我们的电子制作和嵌入式系统开发有重要意义。

实验四 LED数码管显示实验报告

实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。

利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。

定时采用软件查询工作方式,利用JNB TF0, HERE实现。

置P0.6和P0.7端口为0,位选信号选定末位数码管。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

为减短代码长度,利用CJNE指令实现循环结构。

当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。

2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。

三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。

led数码管显示控制实验报告

led数码管显示控制实验报告

led数码管显示控制实验报告篇一:单片机实验报告——LED数码管显示实验《微机实验》报告LED数码管显示实验指导教师:专业班级:姓名:学号:联系方式:一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-9,显示切换频率为1Hz。

提高要求:在4位数码管显示器上依次显示当天时期和时间,显示格式如下:yyyy(月份.日)(小时.分钟)思考题:数码管采用动态驱动方式时刷新频率应如何选择?为什么?二、设计思路C8051F310单片机片上晶振为,采用8分频后为,输入时钟信号采用48个机器周期。

0到9对应的断码为:FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H 基础部分:由于只需要用末位数码管显示,不需要改变位码,所以只需要采用LED的静态显示。

采用查表的方法,通过循环结构,每次循环查找数据表下一地址,循环十次后重新开始循环。

每次循环延时1s,采用定时器0定时方式1。

提高部分:四个数码管都要显示,所以采用LED的动态显示。

由于数码管的位选由、控制,P0端口的其他引脚都没用到,所以对P0端口初始化赋00H,每次循环加40H、选中下一位,四次后十六进制溢出,P0端口变又为00H回到第一个数码管。

每位数码管显示一个段码后都延时1ms(否则数码管太亮,刺眼)采用定时器0定时方式1,依然采用查表法改变段码值。

通过循环:DJNZ R5,BACKMOVR5,#250 DJNZ R4,BACK MOVR4,#8来控制每种模式的切换时间,我采用2s切换一次(8*250*1ms=2s)。

切换模式,可以采用改变查表法的偏移量来实现,没切换一次模式,偏移量加04H,三次后回到初始偏移量,来实现三种模式的循环显示。

三、资源分配基础部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制段选提高部分:、:控制数码管的位选P1:控制数码管段码的显示R0:控制位选R1:控制段选R3:用于改变偏移量来切换模式R4、R5:控制循环次数,控制模式切换时间四、流程图基础部分:提高部分篇二:实验八数码管LED实验报告苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管LED实验一.实验目的理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管LG5641AH与MCU 的接线图。

数字显示器实验报告

数字显示器实验报告

一、实验目的1. 了解数字显示器的基本原理和分类。

2. 掌握数字显示器的设计方法和应用。

3. 学会使用数码管和LCD显示器进行数字显示。

4. 提高动手实践能力和问题解决能力。

二、实验内容1. 数码管显示实验2. LCD显示器显示实验三、实验原理1. 数码管显示原理:数码管是一种半导体发光器件,由若干个发光二极管(LED)组成,每个LED代表一个数码管的笔画。

通过控制LED的亮灭,可以显示不同的数字和字符。

2. LCD显示器显示原理:LCD显示器是一种液晶显示器,通过液晶分子的旋转控制光的透过与阻挡,实现图像的显示。

LCD显示器主要由液晶面板、背光源、偏振片、驱动电路等组成。

四、实验步骤1. 数码管显示实验(1)搭建电路:将数码管与AT89C51单片机连接,连接方式包括共阴极和共阳极两种。

(2)编写程序:使用C语言编写程序,实现数码管显示数字和字符。

(3)调试程序:使用Keil软件对程序进行编译和调试,观察数码管显示效果。

2. LCD显示器显示实验(1)搭建电路:将LCD显示器与AT89C51单片机连接,连接方式包括并行和串行两种。

(2)编写程序:使用C语言编写程序,实现LCD显示器显示数字和字符。

(3)调试程序:使用Keil软件对程序进行编译和调试,观察LCD显示器显示效果。

五、实验结果与分析1. 数码管显示实验结果:通过编写程序,数码管能够显示数字和字符,实现了实验目的。

2. LCD显示器显示实验结果:通过编写程序,LCD显示器能够显示数字和字符,实现了实验目的。

3. 分析:(1)数码管显示实验:在实验过程中,发现数码管的共阴极和共阳极连接方式不同,需要根据实际连接方式编写程序。

此外,为了提高显示效果,需要对数码管进行动态扫描显示。

(2)LCD显示器显示实验:在实验过程中,发现LCD显示器的并行和串行连接方式不同,需要根据实际连接方式编写程序。

此外,为了提高显示效果,需要对LCD显示器进行初始化和设置显示模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

显示驱动实验报告1 引言随着显示技术的蓬勃发展,各种显示产品不断被开发出来.它们随处可见,创造了巨大的价值,也同时丰富了我们的日常生活.显示驱动技术是指利用电路驱动显示器件显示的技术,LED点阵显示屏是显示技术的一种,因LED的高亮度特点,主要用于户外显示.LED 显示屏的驱动,一般可以采用单片机或FPGA/CPLD作为控制芯片.我们实验是采用单片机,通过C程序控制LED显示屏,显示汉字或简单的动画.2 实验方案设计利用字模软件将汉字或者图形取模成二进制数据,然后用单片机编程控制硬件显示出图形.硬件电路连接如图一:图一,LED显示驱动电路框图3 实验结果及讨论通过不断地调试与修改,我们得到了不错的显示效果.讨论一:采用单片机控制LED显示屏的优缺点?讨论二:我们的LED驱动实验能否作成视频显示.4 结论结论一:单片机通过C程序控制,输出正确的时序及显示数据,从而使LED显示屏能够稳定的工作.因C语言的简洁高效与可移植的特点,使我们的实验顺利完成.然而,也因为C语言的效率不如汇编,使其在速度方面不如汇编.另外,单片机是通过执行指令输出时序,也使其不如CPLD/FPGA高效.如果单片机的频率不够高或者LED显示屏较大,则单片机就很难控制LED显示.结论二:由于我们的实验采用单片机驱动显示屏.单片机的晶振频率一般只有几十兆赫兹.其指令周期则更长.使其佷难作成视频显示.但简单的动态显示是可以的5 参考文献(1)STC89C51RC-RD _GUIDE-CHINESE.pdf(2)CD401__2422678.pdf(3)74LS244_.pdf(4)6B595_.pdf(5)APM4953_DataSheet.pdf(6)新概念51单片机C语言教程:入门、提高、开发、拓展全攻略郭天祥电子工业出版社(7)C程序设计(第四版)谭浩强著/2010年06月/清华大学出版社6 附录:原程序(包含详尽注释)#include"reg52.h"sbit MCSDI = P1^1 ; // 显示数据(每列的选通信号,数据为高时,对应的象素点亮)sbit MCCLK = P1^2 ; // 列移位时钟即点时钟(上升沿触发)sbit MCOE = P1^3 ; // 亮度控制(即列信号的输出使能控制,低电平有效)sbit MCST = P1^4 ; // 数据锁存(即列信号的数据锁存控制,上升沿锁存)sbit MRRST = P1^5 ; // 行清零(清屏)(高电平有效,清零后所有行信号为低电平,全亮)sbit MRSDI = P1^6 ; // 帧信号(每行的选通信号,数据为低时,对应的行点亮)sbit MRCLK = P1^7 ; // 行扫描时钟// 常数定义#define LED_HANG 48 // 定义LED显示屏的高度,即行数#define LED_LIE 64 // 定义LED显示屏的宽度,即列数#define LED_HANG_DATA_NUM (LED_LIE/8)// 定义LED显示屏每一行的显示数据个数,以字节为单位,以本显示屏为例,每行的数据为8字节#define LED_DATA_NUM ((LED_HANG*LED_LIE)/8)// 定义LED显示屏的显示数据个数,以字节为单位,以本显示屏为例,全屏显示数据为384字节// 主模块内部函数的定义void LARGE_LED_Init(void); // LED显示屏的初始化程序void LED_DISP_Picture( unsigned char *ptr); // 显示64*48的图片的程序void LED_Send_Lie(unsigned char send_buf); // 送出一字节列信号的程序//主模块内部全局变量的定义// 图片数据的每行起始地址,本显示屏的大小为64(列)*48(行),每行的数据为8字节// 在切换到下一行显示时,起始地址加8即可,加到384(64/8*48)后显示完一屏的数据unsigned int LEDHangNum;// 显示数据的场计数单元,本显示屏的大小为64(列)*48(行),每48行后送出一个场信号// 实际上作为了行移位寄存器的数据输入unsigned int LEDChangNum;//显示图片数据// 关键字Code 表示是存放在ROM区域// 显示动画的6个图片,横向取模,字节倒序unsigned char code Bmp1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0x37,0x00,0x00,0x00,0x00,0x00,0x80,0xF3,0xF3,0x01,0x00,0x00,0x00,0x00,0xE0,0x03,0xC0,0x03,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0xC0,0x30,0x00,0x00,0x00,0x80,0x01,0xC0,0xFF,0x38,0x00,0x00,0x00,0x80,0x01,0xC3,0x0F,0x18,0x00,0x00,0x00,0x00,0xFB,0x03,0x00,0x1C,0x00,0x00,0x00,0x00,0x7B,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x0E,0x00,0x80,0x07,0x00,0x00,0x00,0x80,0x1D,0x00,0xC0,0x07,0x00,0x00,0x00,0xC0,0xFF,0x00,0xF8,0x06,0x00,0x00,0x00,0x40,0xEE,0xFF,0x3F,0x0C,0x00,0x00,0x00,0xC0,0x9B,0xFF,0x27,0x0C,0x00,0x00,0x00,0xC0,0xFF,0xFD,0x31,0x0D,0x00,0x00,0x00,0x00,0xEE,0xFE,0x37,0x0D,0x00,0x00,0x00,0x00,0x0C,0x06,0x3F,0x09,0x00,0x00,0x00,0x00,0x18,0xFE,0x99,0x19,0x00,0x00,0x00,0x00,0xF0,0xDF,0x83,0x19,0x00,0x00,0x00,0x00,0xE0,0x1B,0xFF,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x7C,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,} ;// 系统主函数int main(void){unsigned char *BmpPtr; // 设置一个指向图片显示数据的指针unsigned char i;LARGE_LED_Init(); // 引脚初始化BmpPtr = Bmp1; // 初始化显示图片指针while(1){// 显示图片BmpPtr = Bmp1;i=10;while(i--){LED_DISP_Picture(BmpPtr);}}}/ *LED点阵显示相关模块相关程序函数名:LARGE_LED_Init()功能:初始化大屏幕LED屏说明:模块的外部函数,提供给主程序调用*/void LARGE_LED_Init(void){MCSDI = 0 ; // 显示数据(每列的选通信号,数据为高时,对应的象素点亮)MCCLK = 0 ; // 移位时钟(上升沿触发)MCOE = 1 ; // 亮度控制(即列信号的输出使能控制,低电平有效)MCST = 0 ; // 数据锁存(即列信号的数据锁存控制,上升沿锁存)MRRST = 0 ; // 行清零(清屏)(高电平有效,清零后所有行信号为低电平,全亮)MRSDI = 1 ; // 帧信号(每行的选通信号,数据为低时,对应的行点亮)MRCLK = 0; // 行扫描时钟}/*函数名:LED_DISP_Picture( unsigned char *ptr)功能:显示一幅64*48的图片说明:模块的内部函数,提供给本模块其他程序调用入口参数:*ptr:指向显示图片数据的指针*/void LED_DISP_Picture( unsigned char *ptr){unsigned char i;LEDHangNum = 0; // LED显示屏每行起始地址初始化,实质为点计数LEDChangNum = 0; // LED显示屏场信号计数单元初始化,实质为行计数do{// 每行显示数据倒序送出,每个字节内部是高位先送// 对应的取模方式:从左到右,字节倒序for(i=7;i!=0xFF;i--) // 循环8次,送完一行的数据{LED_Send_Lie( ptr[ LEDHangNum + i ] ); // 字节倒序,则每个字节内部是高位先送MCOE =1; // MCOE =1;关闭显示(只在显示送完一行的8个数据就灭显示,亮度最弱)}// MCOE =1; // MCOE =1;关闭显示(在显示送完一行的64个数据就灭显示,亮度最强)// 先送场移位信号和时钟,再锁存数据,这样可以避免下一行的数据在上一行形成显示的余晖if (LEDChangNum ==0 ) // 场信号,只有一个低电平信号,其余为高电平,形成移位的效果{// 只需第一次送出一个低电平,其余保持高电平即可MRSDI = 0; // MRSDI = 0;}else{MRSDI = 1; ; // MRSDI = 1;}// 送场移位时钟MRCLK = 0; // MRCLK=0; 行时钟MRCLK = 1; // MRCLK=1;MRCLK = 0; // MRCLK=0;// 锁存,将本行的信号锁存,这样在下一行数据送入5B595的过程中,上一行数据可以保存继续显示(即上一行// 数据的显示)时间是下一行数据的移位时间,显示和移位可以同时进行,节约时间;MCST = 0; // MCST = 0,列信号锁存MCST = 1; // MCST = 1MCST = 0; // MCST = 0MCOE =0; // MCOE =0; 使能显示LEDChangNum++ ; // 场序号加1LEDHangNum = LEDHangNum + LED_HANG_DATA_NUM;// 显示数据切换到下一行}while( LEDHangNum < (LED_DATA_NUM -1) ); // 一屏数据显示完重新开始}/* 函数名:LED_Send_Lie(unsigned char send_buf)功能:送出列信号说明:模块的内部函数,提供给本模块其他程序调用入口参数:send_buf:向LED写入的字符返回值:无其他: 1.采用上升沿写入数的SPI时序,先在数据线上放入要发送的数据,再在时钟线上形成上升沿来锁存数据到595的移位接收寄存器。

相关文档
最新文档