基于C语言的MCS-51单片机教程 课件 2项目3:LED点阵广告牌的设计与制作_第1页
基于C语言的MCS-51单片机教程 课件 2项目3:LED点阵广告牌的设计与制作_第2页
基于C语言的MCS-51单片机教程 课件 2项目3:LED点阵广告牌的设计与制作_第3页
基于C语言的MCS-51单片机教程 课件 2项目3:LED点阵广告牌的设计与制作_第4页
基于C语言的MCS-51单片机教程 课件 2项目3:LED点阵广告牌的设计与制作_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目3:

LED点阵广告牌的设计与制作项目的目标及任务1.项目目标掌握单片机的串口的原理。掌握利用74HC595和单片机的串口实现数据的串转并。掌握利用单片机控制LED点阵显示屏符号的显示。2.项目任务基于单片机的LED点阵广告牌功能要求:利用单片机的串口,实现16X16LED点阵上滚动显示汉字。任务1:8×8的LED点阵显示

一、LED点阵屏的结构和显示原理LED点阵显示器是把很多LED发光二极管按矩阵方式排列在一起,通过对每个LED进行发光控制,完成各种字符或图形的显示。最常见的LED点阵显示模块有5×7(5列7行),7×9(7列9行),8×8(8列8行)结构。LED点阵由一个一个的点(LED发光二极管)组成,总点数为行数与列数之积,引脚数为行数与列数之和。1、8*8点阵的外部结构及引脚排布2、8*8点阵的内部结构

共阴极LDM1088AX共阳极LDM1088BX3、LED点阵引脚的测试方法

①用机械式万用表测试管脚的方法。把万用表拨到电阻档×10,先用黑表笔(极性为+)随意选择一个引脚,红表笔碰余下的引脚,看点阵有没发光,没发光就用黑色探针再选择一个引脚,红色探针碰余下的引脚,当点阵发光,则这时黑色探针接触的那个引脚为正极,红色探针碰到就发光的7个引脚为负极,剩下的6个引脚为正极。②用数字万用表的测试方法:把万用表功能开关拨到发光二极管档,将红表笔插入

"HzVm

插孔,黑表笔插入

"COM"插孔,红表笔极性为"+",黑表笔极性为"-",若万用表有读数,同时发光二极管会发光,则此时红表笔所测端为二极管的正极,如果被测二极管开路或极性接反,显示屏将示

"OL"。提示:当测量在线二极管时,测量前必须断开电源,并将相关的电容放电。4、判定LED点阵模块引脚编号

先把器件的引脚正负分布情况记下来,正极(行)用数字表示,负极(列)用字母表示,先定负极引脚编号,黑色探针选定一个正极引脚,红色点负极引脚,看是第几列的二极管发光,第一列就在引脚写A,第二列就在引脚写B,第三列......以此类推。这样就点阵的一半引脚都编号了。剩下的正极引脚用同样的方法,第一行的亮就在引脚标1,第二行就在引脚标2,第三行......5、动态扫描的原理分析

LED点阵的显示过程以用动态扫描法,有逐线阴极扫描和逐线阳极扫描两种。1)行扫描:一行一行的轮流显示,具体如下:先给ROW1行的行控制线送有效电平,其他行送无效电平,控制只可能ROW1行上的发光管亮,把列控制数据送给L0~L7,控制ROW1行上的哪些发光管亮;延时1~3ms后,再给ROW2行的行控制线送有效电平,其他行送无效电平,控制只可能ROW2行上的发光管亮,把列控制数据送COL1~COL8,控制ROW2行上的哪些发光管亮;延时1~3ms后……最后给ROW8行的行控制线送有效电平,其他行送无效电平,控制只可能ROW8行上的发光管亮,把列控制数据送给COL1~COL8,控制ROW8行上的哪些发光管亮;延时1~3ms,如此反复。2)列扫描:同上原理一样,唯一不同的就是它是按列轮流显示。行与行之间的延时为行周期,所有行扫描完为场周期,行周期和场周期的时间是多少呢?场周期的时间不超过人的视觉暂留时间,取20ms为场周期,行周期为20ms/8,取1~3ms。时间短了,会重影或全亮,时间长了会闪烁。任务实施举例:心形图形1234567812345678方案一:单片机I/O直接控制参考程序:#include<reg51.h>unsignedchartable1[16][2]={0xfe,0x1c,0xfd,0x3e,0xfb,0x7e,0xf7,0xfc,0xef,0xfc,0xdf,0x7e,0xbf,0x3e,0x7f,0x1c};unsignedchartable2[8][2]={0xfe,0x00,0xfd,0x18,0xfb,0x3c,0xf7,0x78,0xef,0x78,0xdf,0x3c,0xbf,0x18,0x7f,0x00};unsignedint

i,j;voidmain(){ TMOD=0x01; TH0=0xfc; TL0=0x18; TR0=1; EA=1; ET0=1; P0=0xff; P1=0x00; while(1); }voidt0_inter()interrupt1{ TH0=0xfc; TL0=0x18; P0=table1[i][0]; P1=table1[i][1]; i=i+1;

if(i==8)i=0;

}方案二:单片机串口控制补充知识:1、串行通信的相关知识;2、51单片机的串行口;3、数据的串行并行转换;1、串行通信的相关知识计算机通信是计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。可以分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

串行通信的传输方向单工:通讯的A方只能送,而B方只能接收——广播式。例如:除了用于远程通信外,系统内部单片机以串行方式接收外围芯片(ADC)的数据;或者控制外围芯片(DAC、LCD等)工作。发送方A接收方BTXDRXD串行通信的传输方向半双工 在某一时刻A方只能发送,B方只能接收;而在另一时刻B方只能发送,A方只能接收——对讲机模式。例如:除了用于远程通信外,系统内部单片机与串行接口的RAM、E2PROM之间的数据交换。发送方A接收方BTXDRXDTXDRXD串行通信的传输方向全双工:A、B双方可以同时发送和接收数据——手机模式。例如:两台单片机系统之间的数据串行交换。发送方A接收方BTXDRXDTXDRXD2、51单片机的串行口具有一个“全双工”的通讯能力串行接口。 其中:P3.0端口作RXD——数据接收端;

P3.1端口作TXD——数据发送端。与串行口相关的SFR有:1、SBUF---数据缓冲寄存器(存放发送和接收的数据)2、

SCON---串口控制寄存器(设定串行接口工作模式、表征串口的工作状态)3.PCON---电源及波特率选择寄存器(使波特率加倍)数据缓冲寄存器SBUF在MCS-51的串行口电路中,SBUF是用来存放发送和接收数据的两个物理上独立的数据缓冲寄存器,但地址都是99H。那单片机如何知道什么时候是发送数据?什么时候是接收数据呢?---通过对SBUF的读、写语句来区分,如下:如果单片机要从串口输出数据,就向SBUF写数据,SBUF便是发送缓冲器:

SBUF=send;如果单片机要从串口输入数据,就从SBUF读数据,SBUF便是接收缓冲器:

receive=SBUF;由于发送SBUF与接收SBUF是两个独立的缓冲器,所以51串行口是一个可以同时发送与接收的“全双工”接口。接收SBUF移位寄存器发送SBUF移位寄存器内部总线CPUMCS-51RXDP3.0TXDP3.1串行口控制寄存器SCON用于设定串行接口工作模式、表征串口的工作状态的特殊功能寄存器;在SFR中的地址为98H;这是一个可以按位寻址的SFR。SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D0SCON寄存器1、SM0SM1:工作方式选择位。SM0SM1模式功能波特率000同步移位寄存器Fosc/1201110位UART可变10211位UARTFosc/64或/3211311位UART可变UART:UniversalAsynchronousReceiver/Transmitter,通用异步接收/发送器。

SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D02、SM2:

多机通信控制位。用于方式2和方式3中。3、REN:允许接收控制位。若软件置REN=1时,则启动串口接收数据;若软件置REN=0,则禁止接收。SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D05:RB8:在方式2或方式3中是接收到数据的第9位,作为奇偶校验位或地址/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。4:TB8:在方式2或方式3中是发送数据的第9位,可以用软件规定其作用。可以作为奇偶校验位或地址/数据帧的标志位。SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D06、TI、RI:发送、接收完成中断标志位TI

:发送中断标志位。发送完成由硬件使TI置1,向CPU发送中断申请,在中断服务程序中必须软件清零,取消此中断申请。RI

:接收中断标志位。接收完成由硬件使RI置1,向CPU发送中断申请,在中断服务程序中必须软件清零,取消此中断申请。D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI电源及波特率选择寄存器PCON

PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,字节地址为87H,不可以位寻址。在HMOS的AT89C51单片机中,PCON除了最高位以外其它位都是虚设的。PCON(87H)

与串行通信有关的只有SMOD位。SMOD为波特率选择位。在方式1、2和3时,串行通信的波特率与SMOD有关。当SMOD=1时,通信波特率乘2,当SMOD=0时,波特率不变。3、数据的串行并行转换串行口的工作方式0串行口工作方式0:同步移位寄存器模式。特点:B=fosc/12。在这种模式下数据由RXD(P3.0)引脚输入或输出;

同步移位脉冲由TXD(P3.1)引脚输出。发送和接收的数据为8位。在移位过程中,先移数据的低位D0。

MCS-51RXDTXDData外部移位寄存器cp移位脉冲串行数据并行的数据(8位)主要功能:扩展并行输入或输出口。74HC595芯片的介绍74HC595方案二的硬件仿真电路图#include<reg51.h>/******************************大心形图形的编码每行:左边元素为列,右边元素为行编码*******************************/unsignedchartable[8][2]={ 0xfe,0x1c,

0xfd,0x3e, 0xfb,0x7e, 0xf7,0xfc, 0xef,0xfc, 0xdf,0x7e, 0xbf,0x3e,

0x7f,0x1c,};sbitlatch=P3^2;unsignedchari,j;voidmain(){SCON=0x00; TMOD=0x01; TH0=0xfc; TL0=0x18; TR0=1; EA=1; ET0=1; while(1) { SBUF=table[i][1];

while(TI==0); TI=0; SBUF=table[i][0];

while(TI==0); TI=0; latch=0; latch=1; } }voidt0_inter()interrupt1{ TH0=0xfc; TL0=0x18; i++;

if(i==8)i=0;}任务2:16X16LED点阵上稳定显示汉字

最高位1234567891011121314151612345678910111213141516最低位最高位最低位同的字符编码{0x00,0x00,0xFE,0xFF,0x02,0x00,0x12,0x00,0x92,0x0F,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x0F,0x12,0x40,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00}#include<reg51.h>voidsend_data(unsignedchartimes);unsignedchartimes=0;/*unsignedcharcodelie[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff,0xff,0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,};*/unsignedcharcodelie[]={0xff,0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,0xff,};unsignedcharcodehang[]={0x00,0x00,0xFE,0xFF,0x02,0x00,0x12,0x00,0x92,0x0F,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x08,0x92,0x0F,0x12,0x40,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00};sbitlatch=P3^2;voidmain(void){ TMOD=0x01; TH0=(65536-1250)/256; //20/16ms TL0=(65536-1250)%256; TR0=1; EA=1; ET0=1; while(1);}voidT0_int(void)interrupt1{ TH0=(65536-1250)/256; //20/16ms TL0=(65536-1250)%256;

send_data(times); times++;

if(times==16)times=0; //times&=15;}voidsend_data(unsignedchartimes){ SBUF=lie[times*2];

while(TI==0); TI=0; SBUF=lie[times*2+1];

while(TI==0); TI=0; SBUF=hang[times*2];

while(TI==0); TI=0; SBUF=hang[times*2+1];

while(TI==0); TI=0;latch=0; latch=1;}任务3:16X16LED点阵上滚动显示汉字

#include<reg51.h>unsignedcharcodelie[]={0xff,0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,0x7f,0xff,0xbf,0xff,0xdf,0xff,0xef,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,0xfe,0xff};unsignedcharcodehang[]={0x00,0x00,0xFE,0xFF,0x02,0x00,0x12,0x00,//“同”的行编码0x92,0x0F,0x92,0x08,0x92,0x08,0x92,0x08,//“同”的行编码0x92,0x08,0x92,0x08,0x92,0x0F,0x12,0x40,//“同”的行编码0x02,0x80,0xFE,0x7F,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};sbitlatch=P3^2;voidmain(void){SCON=0x00;TMOD=0x0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论