项目2LED广告灯设计学科介绍课程讲述.pptVIP

  • 5
  • 0
  • 约4.2千字
  • 约 37页
  • 2019-04-14 发布于天津
  • 举报

项目2LED广告灯设计学科介绍课程讲述.ppt

项目2LED广告灯设计学科介绍课程讲述.ppt

项目2 LED广告灯设计 ★ 知识目标: 1. 单片机I/O端口及端口的基本应用; 2. 单片机C语言的基本结构及设计方法; 3. 程序对单片机端口的控制方法。 ★ 能力目标: 1. 能根据设计任务要求编制程序流程图,理解程序对发光二极管的控制 原理; 2. 会利用绘制流水广告灯电路原理图; 3. 会用keil C51软件对源程序进行编译调试及与protues软件联调,实 现电路仿真。 任务1 流水广告灯的设计 图2.1 流水广告灯电路图 电路分析。要使LED点亮,则P1口的对应端子输出低电平,即P1.0=0时,D1亮。一般情况下,驱动LED的电流约10mA左右,而LED本身的压降为2V。当P1.0输出为低电平时,输出为0V,则流经D1的电流为,为了在仿真实验中让LED更亮一些,在这里取限流电阻为100Ω。相反,当P1.0输出为高电平时,输出电压为5V,则流经D1的电流为0mA,D1不亮(熄灭),即P1.0=1时,D1不亮(熄灭)。 任务1 流水广告灯的设计 2.软件设计思路 P1口输出电平分析。在图2.1中,P1口的每一位都接有一个LED,要实现流水灯功能,就是要让各个LED依次点亮一段时间,再熄灭一段时间,然后再点亮下一个LED一段时间,然后再熄灭一段时间,如此循环。换句话来说,就是让P1口周而复始地输出高电平和低电平,要实现这一功能,最简单和最直接的方法是依次将数据送往P1口,每送一个数据延时一段时间。根据上述分析,我们列出一个功能表,如表2-1所示。 任务1 流水广告灯的设计 任务1 流水广告灯的设计 表2-1 流水灯任务分析表 如何采用单片机C语言编程实现数据从输出P1口呢?从这些数据来看,有这么一个规律,D1至D8依次点亮时,就是数据中的二进制0的位置依次往左移动了1位,D8至D1依次点亮时,就是往右依次移动1位。在单片机C51中,要直接实现数据的这种计算是不容易的,如果将数据的所有二进制取反后,D1至D8依次点亮时的数据就变成了:0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80,也就是后一个数是在前一个数的基础上乘以2(或者直接左移1位)。 任务1 流水广告灯的设计 根据前面分析,实现任务的思路是:程序开始时,给某一个变量赋初始值0x01,并从端口输出反码,延时一段时间后,让显示变量左移1位,再次输出反码并延时,直到输出所有左移数据为止,接下来就实现右移数据输出完毕,再次重复整个过程。 任务1 流水广告灯的设计 延时程序编写。单片机程序的延时有两种,一种是软件延时,一种是硬件延时,在这里我们重点讨论软件延时。当系统加电后,单片机就开始工作,按照设计的程序开始运行(也称执行指令)。单片机执行一条指令要花一定的时间,那么单片机执行一条指令的执行时间成为指令周期。指令周期是以机器周期为单位的。MCS-51单片机规定,一个机器周期为单片机振荡器的12个振荡周期。如果单片机时钟电路中的晶振频率为12MHz,则一个机器周期为1us。 任务1 流水广告灯的设计 单片机的指令运行速度是很快的,要想在端口获得一定的延时时间,就要编写程序,使单片机运行设计程序产生时间延迟。 任务中要求获得0.2s的时间长度,当单片机的机器周期是1us时,0.2s就是1us的200 000倍。在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。 任务1 流水广告灯的设计 采用单片机C语言编写的一个0.2s延时程序如下: void delay02s(void) // 定义延时0.2s函数 { unsigned char i,j,k; // 声明3个无符号字符型变量i、j、k for(i=2;i0;i--) // 外循环2次,每次约0.1s,延时0.2s {for(j=200;j0;j--) // 外循环200次,每次约0.5ms,延时0.1s { for(k=250;k0;k--) // 内循环250次,每次约2us,延时0.5ms {;} // 里面的循环的循环体什么也不做,但每次循环延时2us } } } 任务1 流水广告灯的设计 上述程序可以简化为: void delay02s(void) { unsigned char i,j,k; for(i=2;i0;i--) for(j=200;j0;j--) for(k=250;k0;k--); } 整个子程序延时为:2us×250

文档评论(0)

1亿VIP精品文档

相关文档