项目4 LED广告灯设计

更新时间:2023-07-22 20:41:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

非常好的单片机学习课件,可以免费下载!

项目4

LED广告灯设计

★ 知识目标: 1. 单片机I/O端口及端口的基本应用;

2. 单片机C语言的基本结构及设计方法;3. 程序对单片机端口的控制方法。 ★ 能力目标:

1. 能根据设计任务要求编制程序流程图,理解程序对发光二极管的控制 原理;2. 会利用绘制流水广告灯电路原理图;

3. 会用keil C51软件对源程序进行编译调试及与protues软件联调,实 现电路仿真。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务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,重复循环。《单片机C语言应用技术与实践》张永格 何乃味主编 北京交通大学出版社 2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

1.2 分析任务 1.硬件电路设计 电路组成。这里选择具有内部程序存储 器的AT89S51单片机作为控制电路,其P1 口接8个发光二极管(LED)和8个限流电 阻,硬件电路原理图如图4.1所示。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务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不亮(熄灭)。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

2.软件设计思路 P1口输出电平分析。在图3.1中,P1口的每一位 都接有一个LED,要实现流水灯功能,就是要 让各个LED依次点亮一段时间,再熄灭一段时 间,然后再点亮下一个LED一段时间,然后再 熄灭一段时间,如此循环。换句话来说,就是 让P1口周而复始地输出高电平和低电平,要实 现这一功能,最简单和最直接的方法是依次将 数据送往P1

口,每送一个数据延时一段时间。 根据上述分析,我们列出一个功能表,如表4-1 所示。《单片机C语言应用技术与实践》张永格 何乃味主编 北京交通大学出版社 2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

从表4-1可以看出,要实现设计任务功能,P1 口输出的8个数据分别是11111110B、 11111101B、11111011B、11110111B、 11101111B、11011111B、10111111B、 011111111B,转化成十六进制分别是0xfe、 0xfd、0xfb、0xf7、0xef、0xdf、0xbf和0x7f。 送完这8个数据后再反过来送011111111B 、 10111111B、11011111B、11101111B、 11110111B、11111011B、11111101B、 11111110B,转化成十六进制分别是0x7f 、 0xbf 、0xdf、0xef、0xf7、0xfb、0xfd和0xfe。 送完后从头开始循环。《单片机C语言应用技术与实践》张永格 何乃味主编 北京交通大学出版社 2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

如何采用单片机C语言编程实现数据从输出P1 口呢?从这些数据来看,有这么一个规律,D1 至D8依次点亮时,就是数据中的二进制0的位 置依次往左移动了1位,D8至D1依次点亮时, 就是往右依次移动1位。在单片机C51中,要直 接实现数据的这种计算是不容易的,如果将数 据的所有二进制取反后,D1至D8依次点亮时 的数据就变成了:0x01、0x01、0x04、0x08、 0x10、0x20、0x40、0x80,也就是后一个数是 在前一个数的基础上乘以2(或者直接左移1 位)。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

根据前面分析,实现任务的思路是:程 序开始时,给某一个变量赋初始值0x01, 并从端口输出反码,延时一段时间后, 让显示变量左移1位,再次输出反码并延 时,直到输出所有左移数据为止,接下 来就实现右移数据输出完毕,再次重复 整个过程。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

延时程序编写。单片机程序的延时有两种,一 种是软件延时,一种是硬件延时,在这里我们 重点讨论软件延时。当系统加电后,单片机就 开始工作,按照设计的程序开始运行(也称执 行指令)。单片机执行一条指令要花一定的时 间,那么单片机执行一条指令的执行时间成为 指令周期。指令周期是以机器周期为单位的。 MCS-51单片机规定,一个机器周期为单片机 振荡器的12个振荡周期。如果单片机时钟电路 中的晶振频率为12MHz,则一个机器周期为 1us。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通

大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

单片机的指令运行速度是很快的,要想在端口 获得一定的延时时间,就要编写程序,使单片 机运行设计程序产生时间延迟。 任务中要求获得0.2s的时间长度,当单片机的 指令周期是1us时,0.2s就是1us的200 000倍。 在程序编写中常用循环语句来完成计数和时间 延迟,从而获得需要的延时时间。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计 采用单片机C语言编写的一个0.2s延时程序如下: void delay02s(void) // 定义延时0.2s函数 { unsigned char i,j,k; // 声明3个无符号字符型变量i、j、k for(i=2;i>0;i--) // 外循环2次,每次约0.1s,延时0.2s {for(j=200;j>0;j--)

// 外循环200次,每次约0.5ms,延时0.1s

{ for(k=250;k>0;k--) // 内循环250次,每次约2us,延时05ms {;} // 里面的循环的循环体什么也不做,但每次循环延时2us } } }

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计 上述程序可以简化为: void delay02s(void) { unsigned char i,j,k; for(i=2;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--); } 整个子程序延时为:2us×250×200×2=200 000us=0.5s

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

◇ 思考: 如将延时改为1s,该怎样修改 程序呢?

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计 1.3 源程序编写 根据程序流程图编写的源程序如下: // lsd4-1.c # include "reg51.h" // 包含头文件 #define uchar unsigned char // 定义uchar为无符号数据类型 void delay02s(void) // 延时0.2s函数 { unsigned char i,j,k; for ( i=2;i>0;i-- ) for (j=200;j>0;j-- ) for (k=250;k>0;k-- ); } void main (void) // 主函数

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计 { uchar i,j; while (1) { j=0x01; for(i=0;i<8;i++) { P1= ~ j; delay02s( ); j= j<<1; } j=0x80; for (i=0;i<8;i++) // 定义变量 // 死循环 // j初始化为0x01,左移初始值 // for循环语句,完成8个循环 // 对变量j 中的值按位取反后,从P1口输出 // 延时0.2s // 左移1位 // 设置右移初始值j为0x80

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广

告灯的设计

{ P1= ~ j; delay02s( ); j= j>>1; } } }

// 右移1位

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

1.4 程序调试与电路仿真 运行C语言编辑软件,在编辑区中输入上 面的源程序,并以“lsd4-1.c”为文件名存 盘。 运 行 Keil C51 , 然 后 建 立 一 个 “ lsd41.uv2”的工程项目。把源程序文件“lsd41.c”添加到工程项目中,进行编译,得到 目标代码文件“lsd4-1.hex”。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

运行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、D2、D1,重复循环。

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

非常好的单片机学习课件,可以免费下载!

任务1 流水广告灯的设计

图4.2 加载hex文件对话框

《单片机C语言应用技术与实践》张永格 何乃味主编

北京交通大学出版社

2009年6月

本文来源:https://www.bwwdw.com/article/32zm.html

Top