




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,课题三(实例)之跑马灯,任务一一只LED的闪烁任务二跑马灯任务三任意变化的彩灯控制,.,学习目标,知识目标:KeiluVision2软件的使用和调试方法。掌握汇编语言与C语言的编写方法和技巧。技能目标:能根据实际电路要求编写闪烁LED程序。,.,任务一一只LED的闪烁,一、课题目标本课题就是以发光二极管为例,用单片机控制8只发光二极管,实现逐个点亮、全亮、闪烁等花样显示。为了便于理解,采用从简单的单只发光二极管的点亮和熄灭控制开始,到实现八只发光二极管组成的各种样式闪亮彩灯控制。,.,图3-1LED显示电路原理图,二、电路原理,.,图3-2八路发光二极管控制电路演示图,.,P1.0端口的LED闪亮,三、程序设计,.,0.5秒延时的汇编程序:MOVR6,#5SS:MOVR7,#200LOOP:MOVR5,#249DJNZR5,$DJNZR7,LOOPDJNZR6,SS整个子程序延时为:2s249+1+2200+25=501010s,.,汇编语言程序:,org0000hLS:setbp1.0LcalldelayclrP1.0Lcalldelaysjmp$,delay:movR6,#5SS:MOVR7,#200loop:movR1,#245SD:DJNZR1,SDDJNZR7,loopDJNZR6,SSretend,.,1、端口的定义C51使用sfr命令来对单片机这些端口进行定义,如:sfrP1=0 x90;这条命令的作用就是定义了P1这个名称(也可叫变量)代表了地址为90H的特殊功能寄存器。汇编程序直接使用P1就可以,并且不分大小写。例:MOVP1,#0FFH;MOVP1,#00H。,.,在程序命令中使用命令“sfrP1=0 x90;”这样定义后,P1就代表了P1口,程序中就可以对单片机的P1口进行读写操作了,如使用“Y=P1;”的命令将单片机P1口的状态读入并存入变量Y中,而“P1=0 x02”则是P1口的P1.1置1。同样的方式,也可以定义其他端口。为了方便,C51将各个厂商生产的单片机的各个特殊功能寄存器的定义放在一个特殊的文件中,如AT89S51、AT89C51对应的文件是AT89X51.H。作为通用的MCS-51系列单片机,在编写C程序,首先调用这些通用的REG51.H头文件。,.,2、位定义针对特殊功能寄存器的某一位进行操作,则需要使用sbit命令定义特殊功能寄存器中的可寻址位。如要对AT89S51端口P1的P1.0进行操作,则可以使用下面的命令进行定义:sbitP10=P10;然后就能使用“P10=1;”控制P1.0输出高电平,“P10=0;”控制P1.0输出低电平。,.,3、程序设计分析在本任务的程序设计框图就是图3-4。从框图中可看出两点,一是程序是一个循环结构,即程序开始后就反复地循环执行,二是程序包含了端口输出控制和0.5秒的延时程序。,.,在本任务中的引脚定义使用如下命令:sbitlight=P10;命令定义了light表示P1口的P1.0端。让LED点亮,需要在引脚上输出低电平,就是在P1.0引脚上输出0,应使用的命令是:light=0;(汇编:CLRP1.0)同理,让LED熄灭,应使用的命令是:light=1;(汇编:SETBP1.0),.,4、延时程序的编写单片机执行一条指令的执行时间,称为指令周期。指令周期是以机器周期为单位的,为14个机器周期,多数指令都是单周期指令,也就是执行一条指令的时间为一个机器周期。在MCS-51单片机规定一个机器周期为单片机振荡器的12个振荡周期。如果晶振频率为12MHz,则一个机器周期为1s。单片机的指令运行是很快的,要在端口获得一定时间长度的脉冲信号,就要通过编写程序,使单片运行设计程序产生时间延迟,实现从单片机输出端口上获得需要频率的电脉冲信号。,.,任务中要求获得0.5s的时间长度,当单片机的指令周期是1s时,可计算出0.5s是1s的5000000倍,在程序编写中常用循环语句来完成计数和时间延迟,从而获得需要的延时时间。为了便于计算和控制,常采用无符号变量的循环来实现。因为程序执行时,对应的每次循环所需要的时间是两个机器周期,当单片机所使用的晶振为12MHz,每次循环就延时2s。无符号数最大值为255,也就是说,使用无符号类型的变量的单个的循环最多为255次,即用一个循环不能完成所需要的0.5s延时。为了达到0.5s延时,可采用多重循环的方式完成。为了方便,将其中的每重循环的循环次数取为0.5s/2s=25000的因数200、250和5。,.,下面就是一个完成0.5秒延时的程序。voiddelay05s(void)unsignedchari,j,k;for(i=5;i0;i-)for(j=200;j0;j-)for(k=250;k0;k-);整个子程序延时为:2s2502005=500000s=0.5s。,近似值,不准确,.,按图3-5所对应的主程序:sbitlight=P10;voidmain(void)while(1)light=0;delay05s();light=1;delay05s();,.,C语言程序:,#includesbitlight=P10;voiddelay05s(void)unsignedchari,j,k;for(i=5;i0;i-)for(j=200;j0;j-)for(k=250;k0;k-);,voidmain(void)while(1)light=0;delay05s();light=1;delay05s();,.,(一)keilC51windows集成开发平台的使用1keilC51windows集成开发平台介绍,图3-6软件窗口介绍,.,2导入需要仿真的程序,建立一个工程项目芯片选择属性设置建立源程序文件添加文件到当前项目组中编译文件,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软件开发平台,图3-15目标1添加文件窗口,.,(二)Keil程序调试,1程序调试时的常用窗口,编译文件界面,KEIL软件开发平台,图3-16编辑文件界面,.,调试程序窗口,字母C:代码存储空间D:直接寻址的片内存储空间I:间接寻址的片内存储空间X:扩展的外部RAM空间“数字”:想要查看的地址。,KEIL软件开发平台,图3-17代码查询窗口,.,工程窗口寄存器页,KEIL软件开发平台,图3-18工程寄存器窗口,.,2各种窗口在程序调试中的用途,程序调试界面,KEIL软件开发平台,图3-19程序调试窗口,.,I/O端口界面,KEIL软件开发平台,图3-20硬件查询窗口,.,I/O口全部打开界面,KEIL软件开发平台,图3-21硬件I/0口查询窗口,.,打开后的Interrupt窗口,KEIL软件开发平台,图3-22P3口查询窗口,.,串口设置,KEIL软件开发平台,图3-23串口查询窗口,.,打开后的串口窗口,KEIL软件开发平台,图3-24串口窗口,.,定时器设置,KEIL软件开发平台,图3-25定时器窗口,.,打开后的定时器1窗口,KEIL软件开发平台,图3-26硬件I/0口查询窗口,.,常用的调试按钮,复位按钮,按下后,所有的系统状态将变成初始状态。,全速运行,进入循环并单步执行,停止全速运行,跳过循环并单步执行,跳出单步执行过程,执行到断点处,KEIL软件开发平台,图3-27调试按钮,.,二、ISP软件的使用,打开下载软件,双击目录下的文件ISPgm.exe,打开软件进入软件使用界面1芯片选择:左击界面右面芯片选择窗口的下拉箭标,选择编程芯片的型号。2导入hex文件到缓冲区:左击界面上的“OpenFile”按钮,选择本目录下的hex文件。3向芯片写入文件:左击界面上的“Write”按钮,开始编程向芯片写入程序。4完成写入编程。5退出程序:左击界面右上角的“x”按钮,退出此程序。,KEIL软件开发平台,.,.,任务二跑马灯,本任务让图3-28中的LED依次点亮,图3-28LED硬件图,.,程序设计分析为了让图3-28所示的LED依次点亮,就是要求从P1口从P1.0至P1.7依次输出低电平,其余引脚都输出高电平,就能让被接在端口的彩灯依次点亮。从输出的具体的数据来看,第一个LED点亮需要的输出数据,是对应于P1.0的位为0,其余位为1,组合为一个字节时对应的二进制位从高到低为:11111110,即十六进制数0 xFE;同理,第二个LED点亮对应的数为:11111101,化为十六进制数为0 xFD。依次类推,逐次点亮LED所对应的数据为:11111110、11111101、11111011、11110111、11101111、11011111、10111111、01111111。,.,从这些数据上,可以看出一个规律,就是这些数据中的二进制数0的位置依次往左移动了一位。在C51中,要直接实现数据的这种计算是不容易的。根据前面的分析,实现任务的思路是:程序开始时,给某一变量赋初始值0 xFE,然后每次将数据左移后送入P1口直到所有循环次数输出完毕,再次重复整个过程。根据思路得出的程序框图如图3-29所示。,.,图3-29程序流程图,.,#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintvoidmDelay(unsignedintDelay)unsignedinti;for(;Delay0;Delay-)for(i=0;i0;Delay-)for(i=0;i124;i+);,.,voidmain()unsignedcharOutData=0 xfe;while(1)for(j=0;j0;n-)for(s=248;s0;s-);voidmain(void)while(1)if(tablei!=0 x01)P1=tablei;i+;delay();elsei=0;,.,ORG0000hSTART:MOVDPTR,#TABLELOOP:CLRAMOVCA,A+DPTRCJNEA,#01H,LOOP1LJMPSTARTLOOP1:MOVP1,AMOVR3,#20LCALLDELAYINCDPTRLJMPLOOPDELAY:MOVR4,#20D1:MOVR5,#248DJNZR5,$DJNZR4,D1DJNZR3,DELAYRETEND,.,TABLE:DB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FHDB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江大庆市社会保险事业中心招聘笔试历年参考题库附带答案详解
- 安徽2025年安徽望江县融媒体中心招聘急需紧缺专业技术人员笔试历年参考题库附带答案详解
- 上海建桥学院《新能源材料科学基础》2023-2024学年第二学期期末试卷
- 罗定职业技术学院《需求分析与系统设计》2023-2024学年第二学期期末试卷
- 辽宁农业职业技术学院《工程统计》2023-2024学年第二学期期末试卷
- 辽宁师范高等专科学校《大数据基础实践》2023-2024学年第二学期期末试卷
- 衡阳科技职业学院《电视制片人管理》2023-2024学年第二学期期末试卷
- 黑河学院《建筑热工与节能》2023-2024学年第二学期期末试卷
- 山西科技学院《社会体育导论》2023-2024学年第二学期期末试卷
- 长沙南方职业学院《自贸区与国际商务专题》2023-2024学年第二学期期末试卷
- 山东省临沂市2025年普通高等学校招生全国统一考试(模拟)语文及答案(临沂二模)
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 宫颈癌护理查房-4
- 上海建设工程通用硅酸盐水泥质量检验报告 - 上海水泥行业协会
- NY T 1145-2006 温室地基基础设计丶施工与验收技术规范
- 餐饮服务六大技能培训.ppt
- 基于单片机的电话拨号系统的设计毕业论文
- 叉车产品数据表
- 高填方、深挖路堑边坡和软基监测方案
- 机器人学导论(课堂PPT)
- 机电设备维修与管理专业毕业论文30442
评论
0/150
提交评论