单片机实例之跑马灯.ppt

上传人:p** 文档编号:175909 上传时间:2023-03-22 格式:PPT 页数:61 大小:1.21MB
下载 相关 举报
单片机实例之跑马灯.ppt_第1页
第1页 / 共61页
单片机实例之跑马灯.ppt_第2页
第2页 / 共61页
单片机实例之跑马灯.ppt_第3页
第3页 / 共61页
单片机实例之跑马灯.ppt_第4页
第4页 / 共61页
单片机实例之跑马灯.ppt_第5页
第5页 / 共61页
单片机实例之跑马灯.ppt_第6页
第6页 / 共61页
单片机实例之跑马灯.ppt_第7页
第7页 / 共61页
单片机实例之跑马灯.ppt_第8页
第8页 / 共61页
单片机实例之跑马灯.ppt_第9页
第9页 / 共61页
单片机实例之跑马灯.ppt_第10页
第10页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机实例之跑马灯.ppt》由会员分享,可在线阅读,更多相关《单片机实例之跑马灯.ppt(61页珍藏版)》请在第壹文秘上搜索。

1、课题三(实例)课题三(实例) 之跑马灯之跑马灯n任务一 一只LED的闪烁n任务二 跑马灯n任务三 任意变化的彩灯控制学习目标学习目标 知识目标知识目标:nKeil uVision2 软件的使用和调试方法。n掌握汇编语言与C语言的编写方法和技巧。n 技能目标技能目标:n能根据实际电路要求编写闪烁LED程序。任务一 一只LED的闪烁n一、课题目标一、课题目标 本课题就是以发光二极管为例,用单片机控制8只发光二极管,实现逐个点亮、全亮、闪烁等花样显示。 为了便于理解,采用从简单的单只发光二极管的点亮和熄灭控制开始,到实现八只发光二极管组成的各种样式闪亮彩灯控制。图3-1 LED显示电路原理图二、电路

2、原理二、电路原理图3-2 八路发光二极管控制电路演示图AT89S51 P1.0+Vcc单 片 机 的I/O端口 图3-3 单片机驱动一只发光二极管的原理电路P1.0端口的LED闪亮三、程序设计0.5秒延时的汇编程序:MOV R6,#5SS:MOV R7, #200LOOP:MOV R5, #249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SS整个子程序延时为:2s249+1+2200+25=501010s汇编语言程序:org 0000hLS:setb p1.0Lcall delayclr P1.0Lcall delaysjmp $delay:mov R6,#5SS:MOV R

3、7, #200loop:mov R1,#245SD:DJNZ R1, SDDJNZ R7,loopDJNZ R6,SSretendn1、端口的定义 C51使用sfr命令来对单片机这些端口进行定义,如: sfr P1 = 0 x90; 这条命令的作用就是定义了P1这个名称(也可叫变量)代表了地址为90H的特殊功能寄存器。 汇编程序直接使用P1就可以,并且不分大小写。例:MOV P1,#0FFH;MOV P1,#00H。 在程序命令中使用命令“sfr P1 = 0 x90;”这样定义后,P1就代表了P1口,程序中就可以对单片机的P1口进行读写操作了,如使用“Y=P1;”的命令将单片机P1口的状态读

4、入并存入变量Y中,而“P1=0 x02”则是P1口的P1.1置1。 同样的方式,也可以定义其他端口。为了方便,C51将各个厂商生产的单片机的各个特殊功能寄存器的定义放在一个特殊的文件中,如AT89S51、AT89C51对应的文件是AT89X51.H。作为通用的MCS-51系列单片机,在编写C程序,首先调用这些通用的REG51.H头文件。n2、位定义 针对特殊功能寄存器的某一位进行操作,则需要使用sbit命令定义特殊功能寄存器中的可寻址位。如要对AT89S51端口P1的P1.0进行操作,则可以使用下面的命令进行定义: sbit P10=P10; 然后就能使用“P10=1;”控制P1.0输出高电平

5、,“P10=0;”控制P1.0输出低电平。 图3-4 1Hz的闪烁程序设计框图输出低电平输出高电平程序开始延时0.5秒延时0.5秒n3、程序设计分析 在本任务的程序设计框图就是图3-4。从框图中可看出两点,一是程序是一个循环结构,即程序开始后就反复地循环执行,二是程序包含了端口输出控制和0.5秒的延时程序。 在本任务中的引脚定义使用如下命令: sbit light=P10; 命令定义了light表示P1口的P1.0端。 让LED点亮,需要在引脚上输出低电平,就是在P1.0引脚上输出0,应使用的命令是: light=0;(汇编:CLR P1.0) 同理,让LED熄灭,应使用的命令是: light

6、=1; (汇编:SETB P1.0) n4、延时程序的编写 单片机执行一条指令的执行时间,称为指令周期。指令周期是以机器周期为单位的,为14个机器周期,多数指令都是单周期指令,也就是执行一条指令的时间为一个机器周期。在MCS-51单片机规定一个机器周期为单片机振荡器的12个振荡周期。如果晶振频率为12MHz,则一个机器周期为1s。 单片机的指令运行是很快的,要在端口获得一定时间长度的脉冲信号,就要通过编写程序,使单片运行设计程序产生时间延迟,实现从单片机输出端口上获得需要频率的电脉冲信号。 任务中要求获得0.5s的时间长度,当单片机的指令周期是1s时,可计算出0.5s是1s的5000000倍,

7、在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。 为了便于计算和控制,常采用无符号变量的循环来实现。因为程序执行时,对应的每次循环所需要的时间是两个机器周期,当单片机所使用的晶振为12MHz,每次循环就延时2s。 无符号数最大值为255,也就是说,使用无符号类型的变量的单个的循环最多为255次,即用一个循环不能完成所需要的0.5s延时。为了达到0.5s延时,可采用多重循环的方式完成。为了方便,将其中的每重循环的循环次数取为0.5s/2s=25000的因数200、250和5。下面就是一个完成0.5秒延时的程序。void delay05s(void) unsigned cha

8、r i,j,k; for(i=5;i0;i-) for(j=200;j0;j-) for(k=250;k0;k-) ; 整个子程序延时为:2s2502005=500000s=0.5s。近似值,不准确按图3-5所对应的主程序:sbit light=P10;void main(void) while(1) light=0; delay05s(); light=1; delay05s(); 图3-5 1Hz的闪烁程序设计框图输出低电平输出高电平程序开始延时0.5秒延时0.5秒C语言程序:语言程序:#include sbit light=P10;void delay05s(void) unsigned

9、 char i,j,k; for(i=5;i0;i-) for(j=200;j0;j-)for(k=250;k0;k-) ; void main(void) while(1) light=0; delay05s(); light=1; delay05s(); (一)(一)keil C51 windowskeil C51 windows集成开发平台的使用集成开发平台的使用 1keil C51 windows集成开发平台介绍集成开发平台介绍工具栏工具栏菜单栏菜单栏源文件编辑窗口源文件编辑窗口工程窗口工程窗口输出窗口输出窗口图3-6 软件窗口介绍2 2导入需要仿真的程序导入需要仿真的程序 建立一个工

10、程项目芯片选择 属性设置 建立源程序文件 添加文件到当前项目组中 编译文件 KEIL 软件开发平台软件开发平台KEIL 软件开发平台软件开发平台图3-7 新建工程窗口KEIL 软件开发平台软件开发平台图3-8 新建工程窗口KEIL 软件开发平台软件开发平台图3-9 单片机选择窗口KEIL 软件开发平台软件开发平台图3-10 目标1属性设置窗口KEIL 软件开发平台软件开发平台图3-11 目标1输出窗口设置KEIL 软件开发平台软件开发平台图3-12 调试窗口设置KEIL 软件开发平台软件开发平台图3-13 软件输入窗口KEIL 软件开发平台软件开发平台图3-14 目标1添加窗口KEIL 软件开

11、发平台软件开发平台图3-15 目标1添加文件窗口(二)(二) Keil Keil 程序调试程序调试 1 1程序调试时的常用窗口程序调试时的常用窗口 u 编译文件界面 KEIL 软件开发平台软件开发平台图3-16 编辑文件界面调试程序窗口 字母字母C C:代码存储空间:代码存储空间D D:直接寻址的片内存储空间:直接寻址的片内存储空间I I:间接寻址的片内存储空间:间接寻址的片内存储空间X X:扩展的外部:扩展的外部RAMRAM空间空间“数字数字”:想要查看的地址。:想要查看的地址。KEIL 软件开发平台软件开发平台图3-17 代码查询窗口工程窗口寄存器页工程窗口寄存器页 KEIL 软件开发平台

12、软件开发平台图3-18 工程寄存器窗口2 2各种窗口在程序调试中的用途各种窗口在程序调试中的用途 程序调试界面程序调试界面 KEIL 软件开发平台软件开发平台图3-19 程序调试窗口I/O端口界面端口界面 KEIL 软件开发平台软件开发平台图3-20 硬件查询窗口I/O口全部打开界面口全部打开界面 KEIL 软件开发平台软件开发平台图3-21 硬件I/0口查询窗口打开后的打开后的InterruptInterrupt窗口窗口 KEIL 软件开发平台软件开发平台图3-22 P3口查询窗口串口设置串口设置 KEIL 软件开发平台软件开发平台图3-23 串口查询窗口打开后的串口窗口打开后的串口窗口 K

13、EIL 软件开发平台软件开发平台图3-24 串口窗口定时器设置定时器设置 KEIL 软件开发平台软件开发平台图3-25 定时器窗口打开后的定时器打开后的定时器1 1窗口窗口 KEIL 软件开发平台软件开发平台图3-26 硬件I/0口查询窗口常用的调试按钮常用的调试按钮 复位按钮,按复位按钮,按下后,所有的下后,所有的系统状态将变系统状态将变成初始状态。成初始状态。 全速运全速运行行 进入循环并进入循环并单步执行单步执行 停止全速运行停止全速运行 跳过循环并单跳过循环并单步执行步执行 跳出单步执行跳出单步执行过程过程 执行到断点处执行到断点处 KEIL 软件开发平台软件开发平台图3-27 调试按

14、钮二、ISP软件的使用 n打开下载软件,双击目录下的文件打开下载软件,双击目录下的文件ISPgm.exeISPgm.exe,打开软件进入软件使用界面打开软件进入软件使用界面n1 1芯片选择:左击界面右面芯片选择窗口的芯片选择:左击界面右面芯片选择窗口的下拉箭标,选择编程芯片的型号。下拉箭标,选择编程芯片的型号。n2 2导入导入hexhex文件到缓冲区:左击界面上的文件到缓冲区:左击界面上的“Open FileOpen File”按钮,选择本目录下的按钮,选择本目录下的hexhex文件。文件。n3 3向芯片写入文件:左击界面上的向芯片写入文件:左击界面上的“WriteWrite”按钮,开始编程向

15、芯片写入程序。按钮,开始编程向芯片写入程序。n4 4完成写入编程。完成写入编程。n5 5退出程序:左击界面右上角的退出程序:左击界面右上角的“x x”按钮,按钮,退出此程序。退出此程序。KEIL 软件开发平台软件开发平台任务二跑马灯本任务让图3-28中的LED依次点亮图3-28 LED硬件图n程序设计分析 为了让图3-28所示的LED依次点亮,就是要求从P1口从P1.0至P1.7依次输出低电平,其余引脚都输出高电平,就能让被接在端口的彩灯依次点亮。 从输出的具体的数据来看,第一个LED点亮需要的输出数据,是对应于P1.0的位为0,其余位为1,组合为一个字节时对应的二进制位从高到低为:1111

16、1110,即十六进制数0 xFE;同理,第二个LED点亮对应的数为:1111 1101,化为十六进制数为0 xFD。 依次类推,逐次点亮LED所对应的数据为: 1111 1110、1111 1101、1111 1011、1111 0111、 1110 1111、1101 1111、1011 1111、0111 1111。 从这些数据上,可以看出一个规律,就是这些数据中的二进制数0的位置依次往左移动了一位。在C51中,要直接实现数据的这种计算是不容易的。 根据前面的分析,实现任务的思路是:程序开始时,给某一变量赋初始值0 xFE,然后每次将数据左移后送入P1口直到所有循环次数输出完毕,再次重复整个过程。根据思路得出的程序框图如图3-29所示。图3-29 程序流程图#include reg51.h#include intrins.h#define uchar unsigned char#define uint unsigned intvoid mDelay(unsigned int Delay) unsigned int i;for(;Delay0;Delay-) for(i=0;i0;D

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

当前位置:首页 > 通信/电子 > 电子设计

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!