tceic.com
学霸学习网 这下你爽了
相关文章
当前位置:首页 >> 电子/电路 >>

实验六 点阵LED的图形显示

实验六点阵 LED 的图形显示 一、 1. 2. 实验目的 了解点阵的显示原理,掌握数模软件的使用方法。 进一步巩固单片机定时和中断原理在 C51 程序设计中的运用。

二、 实验内容 通过对单片机编程来实现 LED 点阵的图形显示。 三、 实验参考原理 3.1 点阵 LED 的初步认识 点阵 LED 显示屏作为一种现代电子媒体,具有灵活的显示面积(可分割、任意拼装)、 高亮度、长寿命、数字化、实时性等特点,应用非常广泛。 一个数码管是 8 个 LED 组成,同理,一个 8*8 的点阵是由 64 个 LED 小灯组成。图 3-1 就是一个点阵 LED 最小单元,一个 8*8 的点阵 LED,图 3-2 是它的内部结构图。

图 3-1 8*8 点阵 LED

3-2 8*8 点阵 LED 结构原理图 点阵 LED 内部原理图如图 3-2 所示,图上蓝色方框外侧的就是点阵 LED 的引脚号,左侧 的 8 个引脚是接的内部 LED 的阳极,上侧的 8 个引脚接的是内部 LED 的阴极。如果 9 脚是 高电平,13 脚是低电平的话,最左上角的那个 LED 小灯就会亮,用程序来实现一下,特别 注意,我们现在用的 74HC138 是原理图上的 U4。 #include <reg52.h> //包含寄存器的库文件 sbit LED = P0^0; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR0 = 0; ADDR1 = 0; ADDR2 = 0; ADDR3 = 0; //74HC138 开启三极管 LED = 0; //点亮点阵的一个点 while(1); //程序停止在这里

} 同样的方法,可以点亮点阵的任意一行,74HC 138 的导通点阵所用的三极管的方法和数 码管很类似,那我们现在来点亮第二行整行的 LED。 #include <reg52.h> //包含寄存器的库文件 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR0 = 1; ADDR1 = 0; ADDR2 = 0; ADDR3 = 0; //74HC138 开启三极管 P0 = 0x00; //向 P0 写入 0 来点亮一行 while(1); //程序停止在这里 } 从这里可以发现,讲一个数码管就是 8 个 LED 小灯,一个点阵是 64 个 LED 小灯。同样 的道理,还可以把一个点阵理解成 8 个数码管。上节课掌握了 6 个数码管的同时显示方法, 那 8 个数码管,也就是点阵的 8 行也应该轻轻松松了,先把这个点阵全部点亮。 #include <reg52.h> //包含寄存器的库文件 sbit LED = P0^0; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 0; TMOD = 0x01; //设置定时器 0 为模式 1 TH0 = 0xFC; TL0 = 0x67; //定时值初值,定时 1ms TR0 = 1; //打开定时器 0 EA = 1; //打开中中断 ET0 = 1; //打开定时器 0 中断 while(1); //程序停止在这里,定时器运行,等待定时器中断 } void InterruptTimer0() interrupt 1 //中断函数 { static unsigned char j = 0;

TH0 = 0xFC; //溢出后进入中断重新赋值 TL0 = 0x67; P0 = 0xFF; //消隐 switch(j) { case 0: ADDR0=0; ADDR1=0; ADDR2=0; j++; P0=0x00;break; case 1: ADDR0=1; ADDR1=0; ADDR2=0; j++; P0=0x00;break; case 2: ADDR0=0; ADDR1=1; ADDR2=0; j++; P0=0x00; break; case 3: ADDR0=1; ADDR1=1; ADDR2=0; j++; P0=0x00;break; case 4: ADDR0=0; ADDR1=0; ADDR2=1; j++; P0=0x00;break; case 5: ADDR0=1; ADDR1=0; ADDR2=1; j++; P0=0x00;break; case 6: ADDR0=0; ADDR1=1; ADDR2=1; j++; P0=0x00;break; case 7: ADDR0=1; ADDR1=1; ADDR2=1; j=0; P0=0x00;break; default: break; } //动态刷新 } 3.2 点阵 LED 图形显示 LED 小灯可以实现流水灯,数码管可以显示数字,那点阵 LED 就得来显示点花样了。 要显示花样的时候, 往往要做出来一些小图形, 这些小图形的数据要转换到我们的程序 当中去,这个时候就需要取模软件。来给大家介绍一款简单的取模软件,这种取模软件在网 上都可以下载到,大家来了解一下如何用,先看一下操作界面,如图 3-3 所示。

图 3-3 字模提取软件界面 鼠标点一下“新建图形”,根据我们板子上的点阵,把宽度和高度分别改成 8,然后点确 定,如图 3-4 所示。

图 3-4 新建图像 我们点左侧的“模拟动画”菜单,点击“放大格点”选项,一直放大到最大,就可以在 8*8 的 点阵图形中用鼠标填充黑点,就可以来画图形,如图 3-5 所示。

图 3-5 字模提取软件画图

经过我们一番设计,画出来一个心形图形,并且填充满,最终出现我们想要的效果图, 如图 3-6 所示。

图 3-6 字模软件心形显示 由于取模软件是把黑色取为 1,白色取为 0,但我们点阵是 1 对应 LED 熄灭,0 对应 LED 点亮,而我们需要的是一颗点亮的“心”,所以我们要选“修改图像”菜单里的“黑白反显图像” 这个选项,并且点击“基本操作”菜单里边的“保存图像”可以把我们设计好的图片进行保存, 如图 3-7 所示。

图 3-7 保存图像 保存图像只是为了你下次使用打开方便,你也可以不保存。操作完了这一步后,点一下 “参数设置”菜单里的“其他选项”,如图 3-8 所示。

图 3-8 选项设置

这个选项设置,要根据我们的图 3-2 对照来看,大家可以看到单片机的 P0 总线,控制 的是一行,所以我们用的是“横向取模”,如果控制的是一列,就要选“纵向取模”。“字节倒 序”这个选项,我们选上是因为图 3-2 中,我们左边是低位 DB0,右边是高位 DB7,所以必 须选上字节倒序,其他两个选项大家自己了解,点确定后,选择“取模方式”这个菜单,点一 下“C51 格式”后,在“点阵生成区”自动产生了 8 个字节的数据,这 8 个字节的数据就是对应 取出来的“模”。

图 3-9 取模结果 用软件取模,在这个图片里,黑色的一个格子表示一个二进制的 1,白色的一个格子表 示一个二进制的 0。 第一个字节是 0xFF, 其实就是这个 8*8 图形的第一行, 全黑就是 0xFF; 第二个字节是 0x99, 低位在左边, 高位在右边, 大家注意看, 黑色的表示 1, 白色的表示 0, 就组成了 0x99 这个数字。同理其他的数据大家也就知道怎么来的了。 我们把这个数据送到我们的点阵上去,大家看看什么效果。 对于 8*8 的点阵来说,我们可以显示一些简单的图形,字符等。一个汉字正常占的点数 是 16*16 的,8*8 的点阵只能显示一些简单笔画的汉字,大家可以自己取模做出来试试。 四、 实验参考源程序 #include <reg52.h> //包含寄存器的库文件 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code image[] = { 0xFF,0x99,0x00,0x00,0x00,0x81,0xc3,0xE7 }; //心形图案的取模数据

void main() //主函数 { ENLED = 0; ADDR3 = 0; TMOD = 0x01; //设置定时器 0 为模式 1 TH0 = 0xFC; TL0 = 0x67; //定时值初值,定时 1ms TR0 = 1; //打开定时器 0 EA = 1; //打开总中断 ET0 = 1; //打开定时器 0 中断 while(1); //程序停止在这里,定时器运行,等待定时器中断 } void InterruptTimer0() interrupt 1 //中断函数,T0 一旦定时溢出,自动进入中断函数内执行 { static unsigned char i = 0; TH0 = 0xFC; //溢出后进入中断重新赋值 TL0 = 0x67; P0 = 0xFF; //消隐 switch(i) { case 0: ADDR0=0; ADDR1=0; ADDR2=0;i++; P0=image[0];break; case 1: ADDR0=1; ADDR1=0; ADDR2=0; i++; P0=image[1];break; case 2: ADDR0=0; ADDR1=1; ADDR2=0;i++;P0=image[2];break; case 3: ADDR0=1; ADDR1=1; ADDR2=0;i++; P0=image[3];break; //动态刷新 case 4: ADDR0=0; ADDR1=0; ADDR2=1;i++; P0=image[4];break; case 5: ADDR0=1; ADDR1=0; ADDR2=1;i++;P0=image[5];break; case 6: ADDR0=0; ADDR1=1; ADDR2=1;i++; P0=image[6];break; case 7: ADDR0=1; ADDR1=1; ADDR2=1;i=0;P0=image[7];break; default: break; }

}


推荐相关:

实验六 点阵LED的图形显示.doc

实验六 点阵LED的图形显示_电子/电路_工程科技_专业资料。实验六点阵 LED 的图形显示 一、 1. 2. 实验目的 了解点阵的显示原理,掌握数模软件的使用方法。 ...

实验六1 LED点阵显示.doc

实验六1 LED点阵显示 - 实验六 一、实验目的 LED16×16 汉字图形点阵显示电路 1、掌握计数器设计。 2、掌握点阵 LED 显示模块的工作原理。 3、掌握 VHDL 基本...

实验六 LED点阵显示驱动电路设计.doc

实验六 LED点阵显示驱动电路设计 - 实验六 一、实验目的 LED16×16 汉字图形点阵显示电路 1、掌握计数器设计。 2、掌握点阵 LED 显示模块的工作原理。 3、掌握...

实验六 图形点阵显示实验.doc

实验六 实验六 图形点阵显示实验(12864J) 图形点阵显示实验(12864J) 一、实验...DB6 DB7 CS1 CS2 RST VOUT LED+ LED12864J 五、实验步骤 1、主机连线说明...

实验六 LED点阵实验_图文.doc

实验六 LED点阵实验 - 通信与电子系统实验 实验 六: LED 点阵实验 系

实验七 点阵LED屏汉字显示实验.doc

实验点阵LED屏汉字显示实验 - 教周次 15 案(首页) 授课班级 日期及

026、点阵式LED简单图形显示技术.doc

026、点阵LED简单图形显示技术 - 26. 点阵LED 简单图形显示技术 1. 实验任务 在 8X8 点阵LED 显示“★”、“●”和心形图,通过按键来选择要显示的 ...

实验02--点阵图形显示设计.doc

LED 点阵设计各种变换的图形、字符、数字等(如显示旋转的十字 叉、显示旋转的...六、 实验步骤 1) 熟悉 quartusII 的使用 1.打开开发环境,如图表 3。 图表...

点阵LED显示设计实验报告.doc

3:掌握用 CPU 控制扫描的方式实现点阵 LED 显示器的字符, 图形的显示。 4:...《嵌入式接口技术》实验... 暂无评价 6页 5下载券 基于单片机的LED点阵显示...

实验六 16乘16点阵LED控制.doc

实验六 16乘16点阵LED控制_电子/电路_工程科技_专业资料。实验六 16*

5实验五:点阵LED显示.doc

5实验五:点阵LED显示 - 单片机与接口技术实验报告 专业:电子信息工程 班级: 姓名: 学号: 成绩: 实验点阵LED显示 1、实验目的: (1)了解点阵 LED 显示器的...

控制与应用实验(实验四 LED点阵显示屏)_图文.ppt

实验设备 三、实验内容 四、实验步骤 五、实验原理 六、思考题 一、实验目的...本实验示意电路原理图 五、实验原理 ? ? ? ? ? ? 实验用的LED点阵显示屏...

实验六_LED点阵实验.doc

班 实验类型: □ 验证 □ 综合 ■ 设计 □ 创新 实验日期:2012 实验六 LED 点阵实验一、实验目的 利用 EDA 技术实现 16×16 LED 点阵屏的的扫描和动态显示...

实验六 16×16LED点阵.doc

实验六 16×16LED点阵_生活休闲。可编程逻辑器件实验 实验六 利用可编程逻辑器件进行一个 16×16LED 点阵控制接口的设计 ×一、实验目的 点阵显示的原理及接口...

8 8LED点阵显示实验.doc

8 8LED点阵显示实验 - 8 8LED 点阵显示实验 一.实验要求 利用实验系统提供的实验模块点阵显示,编程实现中英文字符的显示。 二.实验目的 1.了解 LED 点阵显示的...

FEQ1002T06.HDL实验-PERI1-8KD篇-实验六、12864点阵液....pdf

实验原理: (1) 12864点阵液晶简介我们常用的人机交互显示界面中,除了数码管,LED...下面并行连接方式下 YB12864-ZB 电路连接图: 2 FPGA/CPLD 开发套件实验教程...

8X8LED点阵屏显示图形.doc

8X8LED点阵显示图形 - 8X8LED 点阵显示图形 实验目的: 实验目的: 1.通过单片机学习,掌握解决问题的能力。 2.学习 8X8LED 点阵显示的原理。 3.掌握单片机...

实验三.LED点阵显示实验.doc

下文代码为在点阵显示一个静态图形。 module led(clk,h,l,en); input ...endcase end endmodule 六、实验总结 该实验的基础部分比较简单,扩展部分比较难...

实验六 液晶显示.doc

(五)点阵 LCD 液晶显示的原理 点阵 LCD 液晶显示模块电路:如下所示,在该...显示对比度;该液晶背光为 LED 背光,通过在 LCD_BL_EN(P7.6)上输出 PWM ...

LED点阵显示屏实验报告...doc

LED点阵显示实验报告.. - 16 ? 16 点阵 LED 电子显示屏的设计 摘要: 文章介绍了基于单片机 AT89C51 的 16 ? 16 点阵 LED 电子显示屏的设计。 分别阐述...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com