项目4-LED广告灯设计课件.ppt

上传人(卖家):三亚风情 文档编号:2228150 上传时间:2022-03-23 格式:PPT 页数:40 大小:1.21MB
下载 相关 举报
项目4-LED广告灯设计课件.ppt_第1页
第1页 / 共40页
项目4-LED广告灯设计课件.ppt_第2页
第2页 / 共40页
项目4-LED广告灯设计课件.ppt_第3页
第3页 / 共40页
项目4-LED广告灯设计课件.ppt_第4页
第4页 / 共40页
项目4-LED广告灯设计课件.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 任务任务1 流水广告灯的设计流水广告灯的设计 广告灯是一种常见的装饰,常用于街上的广告及舞台装饰等场合。最简单的流水广告灯就是各个灯依次发光。本任务利用AT89S51单片机来实现这一功能。 1.1 提出任务 用AT89S51的P1口做输出口,接八只发光二极管D1、D2、D3、D4、D5、D6、D7、D8,编写程序,使发光二级管循环点亮,时间间隔为0.2s。即刚开始时D1点亮,延时0.2s后,接着是D2点亮,接着依次点亮D3、D4、D5、D6、D7、D8,然后再点亮D7、D6、D5、D4、D3、D2、D1

2、,重复循环。 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 1.2 分析任务 1.硬件电路设计 电路组成。这里选择具有内部程序存储器的AT89S51单片机作为控制电路,其P1口接8个发光二极管(LED)和8个限流电阻,硬件电路原理图如图4.1所示。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 电路分析。要使LED点亮,则P1口的对应端子输出低电平,即P1.00时,D1亮。一般情况下,驱动LED的电流约10mA左右,而LED本身的压降为2V。当P1.0输出为低电

3、平时,输出为0V,则流经D1的电流为,为了在仿真实验中让LED更亮一些,在这里取限流电阻为100。相反,当P1.0输出为高电平时,输出电压为5V,则流经D1的电流为0mA,D1不亮(熄灭),即P1.01时,D1不亮(熄灭)。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 2.软件设计思路 P1口输出电平分析。在图3.1中,P1口的每一位都接有一个LED,要实现流水灯功能,

4、就是要让各个LED依次点亮一段时间,再熄灭一段时间,然后再点亮下一个LED一段时间,然后再熄灭一段时间,如此循环。换句话来说,就是让P1口周而复始地输出高电平和低电平,要实现这一功能,最简单和最直接的方法是依次将数据送往P1口,每送一个数据延时一段时间。根据上述分析,我们列出一个功能表,如表4-1所示。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 从表4-1可以看出,要

5、实现设计任务功能,P1口输出的8个数据分别是11111110B、11111101B、11111011B、11110111B、11101111B、11011111B、10111111B、011111111B,转化成十六进制分别是0 xfe、0 xfd、0 xfb、0 xf7、0 xef、0 xdf、0 xbf和0 x7f。送完这8个数据后再反过来送011111111B 、10111111B、11011111B、11101111B、11110111B、11111011B、11111101B、11111110B,转化成十六进制分别是0 x7f 、0 xbf 、0 xdf、0 xef、0 xf7、0

6、xfb、0 xfd和0 xfe。送完后从头开始循环。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 如何采用单片机C语言编程实现数据从输出P1口呢?从这些数据来看,有这么一个规律,D1至D8依次点亮时,就是数据中的二进制0的位置依次往左移动了1位,D8至D1依次点亮时,就是往右依次移动1位。在单片机C51中,要直接实现数据的这种计算是不容易的,如果将数据的所有二进制取反后,D1至D8依次点亮时的数据就变成了:0 x01、0 x01、0 x04、0 x08、0 x10、0 x20、0 x40、0 x80,也

7、就是后一个数是在前一个数的基础上乘以2(或者直接左移1位)。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 根据前面分析,实现任务的思路是:程序开始时,给某一个变量赋初始值0 x01,并从端口输出反码,延时一段时间后,让显示变量左移1位,再次输出反码并延时,直到输出所有左移数据为止,接下来就实现右移数据输出完毕,再次重复整个过程。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 延时程序编写。单片机程序的延时有两种,一

8、种是软件延时,一种是硬件延时,在这里我们重点讨论软件延时。当系统加电后,单片机就开始工作,按照设计的程序开始运行(也称执行指令)。单片机执行一条指令要花一定的时间,那么单片机执行一条指令的执行时间成为指令周期。指令周期是以机器周期为单位的。MCS-51单片机规定,一个机器周期为单片机振荡器的12个振荡周期。如果单片机时钟电路中的晶振频率为12MHz,则一个机器周期为1us。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 单片机的指令运行速度是很快的,要想在端口获得一定的延时时间,就要编写程序,使单片机运行

9、设计程序产生时间延迟。 任务中要求获得0.2s的时间长度,当单片机的指令周期是1us时,0.2s就是1us的200 000倍。在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 采用单片机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.

10、2s for(j=200;j0;j-) / 外循环200次,每次约0.5ms,延时0.1s for(k=250;k0;k-) / 内循环250次,每次约2us,延时05ms ; / 里面的循环的循环体什么也不做,但每次循环延时2us 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 上述程序可以简化为:void delay02s(void) unsigned char i,j,k; for(i=2;i0;i-) for(j=200;j0;j-) for(k=250;k0;k-);整个子程序延时为:2us250

11、2002=200 000us=0.5s任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 思考:思考: 如将延时改为1s,该怎样修改程序呢?任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 1.3 源程序编写根据程序流程图编写的源程序如下:/ lsd4-1.c# include reg51.h / 包含头文件#define uchar unsigned char / 定义uchar为无符号数据类型void delay02s(v

12、oid) / 延时0.2s函数 unsigned char i,j,k; for ( i=2;i0;i- )for (j=200;j0;j- ) for (k=250;k0;k- ); void main (void) / 主函数任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 uchar i,j; / 定义变量 while (1) / 死循环 j=0 x01; / j初始化为0 x01,左移初始值 for(i=0;i8;i+) / for循环语句,完成8个循环 P1= j; / 对变量j 中的值按位取反后,

13、从P1口输出 delay02s( ); / 延时0.2s j= j1; / 左移1位 j=0 x80; / 设置右移初始值j为0 x80 for (i=0;i1; / 右移1位 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 1.4 程序调试与电路仿真 运行C语言编辑软件,在编辑区中输入上面的源程序,并以“lsd4-1.c”为文件名存盘。 运行Keil C51,然后建立一个“lsd4-1.uv2”的工程项目。把源程序文件“lsd4-1.c”添加到工程项目中,进行编译,得到目标代码文件“lsd4-1.hex”

14、。任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 运行Proteus,在编辑窗口中绘制如图4.1所示的电路图并存盘。然后选中单片机AT89s51,左键点击AT89s51,出现如图4.2所示的对话框,在Program File后面的 “ ”按钮,找到刚才编译好的“lsd4-1.hex”文件,然后点击“OK”就可以进行仿真了。点击模拟调试按钮的运行按钮“”,进入调试状态。此时可看到D1点亮,延时0.2s后,接着是D2点亮,接着依次点亮D3、D4、D5、D6、D7、D8,然后再点亮D7、D6、D5、D4、D3、D

15、2、D1,重复循环。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 图4.2 加载hex文件对话框 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 知识链接知识链接 1.文件包含处理 程序“lsd3-1.c”中的第一行# include reg51.h是一个文件包含处理。所谓文件包含是指一个文件将另外一个文件的内容全部包含进来。这里程序中包含reg51.h文件的目的是为了要使用P1这个符号,即通知C编译器,程序中所写的

16、P1是指AT89S51单片机的P1端口而不是其它变量。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 2. 单片机某个引脚的符号表示 以P1.0引脚为例。在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P1_0,可是P1_0是不是就是P1.0呢?你这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了C51的关键字sbit来定义,如: sbit P1_0=P10; / 定义用符号P1_0来表示P1.0引脚,也可以

17、用其他的符号来表示。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 3C51程序的结构特点 (1)C51程序是由函数构成的。函数是C51程序的基本单位。 (2)一个函数由两部分组成: 函数说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。一个函数名后面必须跟一个圆括号,函数参数可以没有,如main( )。 函数体。即函数说明下面的大括号之内的部分。 (3)一个C51程序总是从main函数开始执行,而不论main函数在整个程序中所处的位置如何。 任务任务1 流水广告灯的设计流水广告

18、灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 (4)C51程序书写格式自由,一行内可以写几个语句,一个语句可以分写在几行上。 (5)每个语句和数据定义的最后必须有一个分号“;”。分号是C51语句的必要组成部分。分号不可少,即使是程序中的最后一个语句也应包含分号。 (6)C51本身没有输入输出语句。标准的输入和输出(通过串行口)是由scanf和printf等库函数来完成的。对于用户定义的输出,比如直接以输出端口读取键盘输入和驱动LED,则需要自行编制输出函数。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践

19、语言应用技术与实践张永格张永格 何乃味何乃味主编主编 (7)可以用/*/对C51程序中的任何部分作注释。在Keil uVision 2中,还可以使用/进行单行注释。 4. 位运算符 程序中“j= j1;”语句中的表示左移、右移运算符。表明将j中的值左移、右移1位,得到新的数值后,再将该值赋给j。 任务任务1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 思考与练习 1.修改程序lsd3-1.c,使8只发光二极管按2Hz的频率闪烁。 修改程序lsd3-1.c,使D1、D3、D5、D7按10Hz的频率依次点亮。 任务任务

20、1 流水广告灯的设计流水广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 1.任务要求 如图4-1所示,编写程序使发光二极管按时间依次显示出规定的花样,但其对于控制的显示数据之间没有规律,不能通过计算的方式得到。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 2.分析任务 由于本任务中是按时间变化依次控制LED亮、灭,可以采用与流水广告灯的思路来完成程序的编写,但显示花样所对应的数据的变化不一定有规律,不能采用变量直接计算的方式实现前后数据的变

21、化。因此,在这里采用查表法来实现。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 将广告灯显示的图案所对应的端口输出数据依次编写为一张数据表,表中每个数值中为的位表示对应的广告灯亮,数据为的位表示为应的广告灯灭。将这张数据表放在程序中,以数组的形式存储,在使用时依次读出组中的元素就得到需要的数据,实现了数据的无规律变化,并且数组存储的数据可以较多,能实现的花样变化也可以复杂。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格

22、何乃味何乃味主编主编 在C51中要进行复杂计算,也可以采用数组的方式来实现,比如:一个周期正弦值的计算,可以先将这些列在表中,需要时查表读出,这就是查表法。 将用于点亮广告灯的数据入在数组中,让程序依次读这数组中的数据,并将数据送到端口,控制广告灯的点亮就实现了任意规律变化广告的控制。假设有个数据,当程序读完个数据后,又从头开始读数,具体的程序流程图如图4.3所示。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与

23、实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 3. 源程序编写/* 文件名 lsd4-2.c*/#include reg51.h /包含头文件#define uchar unsigned char / 设置变量类型uchar discode8=0 x7e,0 xbd,0 xdb,0 xe7,0 xdb,0 xbd,0 x7e,0 xff; / 定义显示花样数据的数组 void delay02s(void) / 延时时间unsigned char i,j,k;for(i=2;i0;i-)任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用

24、技术与实践张永格张永格 何乃味何乃味主编主编 for(j=200;j0;j-)for(k=250;k0;k-); void main(void) / 主函数uchar i; / 定义变量while(1)for(i=0;i8;i+) / 循环8次P1=discodei; /将数组discode中的第i个数据取出来,赋给P1口输出delay05s(); 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 4.程序调试与电路仿真 同任务1,在此不再重复。仿真效果如图4.4所示。 任务任务2 任意变化广告灯的设

25、计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 知识链接 1. C51数据类型char char 类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字符类型 unsigned char 和有符号字符类型signed char,默认值为signed char 类型。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实

26、践张永格张永格 何乃味何乃味主编主编 unsigned char 类型用字节中所有的位来表示数值,所可以表达的数值范围是 0255。signed char 类型用字节中最高位字节表示数据的符号,0表示正数,1表示负数,负数用补码表示。所能表示的数值范围是-128+127。unsigned char 常用于处理ASCII 字符或用于处理小于或等于255 的整型数。 注意:正数的补码与原码相同,负二进制数的补码等于它的绝对值按位取反后加1。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 2.2. 一维

27、数组 所谓数组就是指具有相同数据类型的变量集,并拥有共同的名字。数组中的每个特定元素都使用下标来访问。数组由一段连续的存贮地址构成,最低的地址对应于第一个数组元素, 最高的地址对应最后一个数组元素。 一维数组的说明格式是: 类型 变量名长度; 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 类型是指数据类型, 即每一个数组元素的数据类型, 包括整数型、浮点型、字符型、指针型以及结构和联合。例如: 程序中的uchar discode8。 说明:数组都是以0 作为第一个元素的下标, 因此, 当说明一个uchar discode8 (uchar即unsigned char)的无符号字符数组时,表明该数组有 8 个元素,discode 0 discode 7 , 一个元素为一个无符号字符变量。 任务任务2 任意变化广告灯的设计任意变化广告灯的设计 单片机单片机C C语言应用技术与实践语言应用技术与实践张永格张永格 何乃味何乃味主编主编 思考与练习 1自己设定一个显示花样,修改程序lsd4-2.c,实现所设定花样的显示。 2将任务1和任务2的程序结合起来,使之实现两个任务的显示功能。任务任务2 任意变化广告灯的设计任意变化广告灯的设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(项目4-LED广告灯设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|