单片机学习之项目1流水.ppt

上传人:牧羊曲112 文档编号:5937899 上传时间:2023-09-06 格式:PPT 页数:38 大小:1.17MB
返回 下载 相关 举报
单片机学习之项目1流水.ppt_第1页
第1页 / 共38页
单片机学习之项目1流水.ppt_第2页
第2页 / 共38页
单片机学习之项目1流水.ppt_第3页
第3页 / 共38页
单片机学习之项目1流水.ppt_第4页
第4页 / 共38页
单片机学习之项目1流水.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《单片机学习之项目1流水.ppt》由会员分享,可在线阅读,更多相关《单片机学习之项目1流水.ppt(38页珍藏版)》请在三一办公上搜索。

1、本次课内容,任务一、明确流水灯设计要求 通电时,最左边的第1盏灯先亮,然后熄灭,第2盏灯亮,再熄灭,按此方式直到第8盏灯,一个轮回后继续重复上一轮回直到断电。,项目一 流水灯的设计与制作,任务一、明确流水灯设计要求,一、选择元器件(略)二、设计硬件电路(略),开发板硬件电路(局部),任务一、明确流水灯设计要求,三、设计程序1。编程思路 根据任务要求,通过对硬件电路的分析理解,我们可以控制P1口的8个引脚,使第1脚输出低电平(0V),延时一段时间后再恢复输出高电平,然后使第2脚输出低电平,依次到第8个引脚。然后从第1引脚循环,实现流水灯显示。,人眼的视觉暂留时间约为0.050.2S。,2。程序框

2、图和例程分析(1)程序框图,P1-0=0,延时,P1-7=0,延时,(2)程序分析#include unsigned int a;do for(a=0;a10000;a+)P1_0=0;for(a=0;a10000;a+)P1_0=1;.for(a=0;a10000;a+)P1_7=0;for(a=0;a10000;a+)P1_7=1;while(1);,#include 引用系统头文件#include“”引用自定义头文件和系统头文件,#include,reg52.h文件,#ifndef _REG52_H_#define _REG52_H_/*BYTE Registers*/sfr P0=0

3、x80;sfr P1=0 x90;sfr P2=0 xA0;sfr P3=0 xB0;sfr PSW=0 xD0;/*BIT Registers*/*PSW*/sbit CY=PSW7;sbit AC=PSW6;/*P1*/sbit T2EX=P11;/8052 onlysbit T2=P10;/8052 only#endif,项目一 流水灯的设计与制作补充知识一、单片机应用系统的开发、编程 常用开发、编程语言为C语言和汇编语言。开发工具包括两部分:软件集成开发环境;硬件仿真器和编程器、用户系统仿真器仿真:将程序在实际应用环境下进行调试、运行,利用仿真器可高效地发现程序及硬件电路中存在的问题。

4、南京伟福,南京万利,广州周立功,福建高奇、沈阳新华龙、MICETEK等都生产相关的仿真器。编程器烧写芯片:将调试好的程序以机器码的形式写入到芯片中。,二、集成开发环境MedWin介绍 1、软件启动 方法(1):开始-所有程序-Manley-MedWin;方法(2):直接点击桌面上MedWin图标。2、当出现下列弹出框时,点击“仿真器”,注意:初次启动时,会出现如右图所示窗口,若望远镜不停工作,找不到仿真器,则将仿真器断电再通电。,3、单击“仿真器”进入MedWin集成开发环境,出现下列界面,4、设置汇编(或编译)环境 第一次在MedWin中使用C51编译(汇编语言汇编)环境需进行“编译/汇编/

5、连接配置”(以后使用不需再配置了)。“设置”菜单项,如左图所示。选择“设置向导”,弹出如右图所示的“编译/汇编/连接配置”窗口。,单击“下一步”按钮,弹出如图所示的窗口,在该窗口中设置系统头文件路径和系统库文件路径。选择源程序扩展名为C(或ASM),若采用汇编语言编制源程序,应选择ASM,然后按“完成”按钮即可。,5、新建NEW(或打开Open)文件。在集成环境中单击“文件”选项,出现左图示菜单,选择“新建”(或“打开”)文件,出现右图新建文件界面,,选择文件存放路径,输入*.c文件名,单击打开。,编写程序,首先#include程序复杂时请增加注释.,6、对源程序进行汇编(或编译)。源程序编好

6、后,在集成环境中单击“项目管理”,如图所示。选择“编译/汇编”菜单项(或Ctrl+F7)对当前的源程序进行“编译/汇编”。,7、排除错误。文件经过“编译/汇编”后,在消息窗口将会出现纠错信息,该信息将提示错误出现的位置及错误的类型和数量等,使用者可根据该信息对源程序的错误进行纠正,纠正后再重新进行“编译/汇编”直至错误信息数量为“0”。,8、产生代码并装入仿真器。在前面所示“项目管理”菜单栏中选择“产生代码并装入”菜单项(或Ctrl+F8),将生成的文件代码装入(Load)单片机开发系统的仿真RAM中。,9、调试程序。产生代码并装入仿真器完成后,在集成环境中单击“调试”,如下图所示。再根据调试

7、的需要选择各种不同的调试方法对程序进行调试。,在编译/汇编源程序时,汇编(或编译)系统只能提示源程序的逻辑、符号等方面的错误信息,而对程序运行的结果是否正确、运行的过程是否符合编程者的设计要求等将无法作出正确判别。因此,设计者必须运用开发系统所提供的各种调试功能,快速有效地排查程序存在的各种问题,直至程序完全符合设计要求为止。,(10)输出代码文件。程序调试完毕,可在项目管理菜单中选择“产生代码”成相应的目标文件,以便将目标程序写入芯片。,三、分组上机编程调试 实施步骤:1.连接仿真器和开发板。接好后互相检查连接正确性,在确认连接正确无误后,先给仿真器通电,再给开发板通电。2.启动集成开发环境

8、MedWin;3.在集成开发环境中建立一个新项目,建立一个以.C后缀的文件,文件被添加到项目的source files中;注意:如果不添加到项目,则C关键词不会自动以兰色显示。4.输入程序,编译,纠正语法错误5.产生代码并装入仿真器6.调试全速运行。,#includesbit P1_0=P10;sbit P1_1=P11;sbit P1_7=P17;void main()unsigned int a;Do P1_0=0;for(a=0;a10000;a+);P1_0=1;for(a=0;a10000;a+);P1_1=0;for(a=0;a10000;a+);P1_1=1;for(a=0;a1

9、0000;a+);P1_7=0;for(a=0;a10000;a+);P1_7=1;for(a=0;a10000;a+);while(1);,0.1个LED灯从左亮到右;,位控制方法,总线控制方法,#includevoid main()unsigned int a;Do P1=254;for(a=0;a10000;a+);P1=253;for(a=0;a10000;a+);P1=251;for(a=0;a10000;a+);P1=247;for(a=0;a10000;a+);P1=191;for(a=0;a10000;a+);P1=127;for(a=0;a10000;a+);while(1)

10、;,11111110,11111101,11111011,11110111,11101111,11011111,10111111,01111111,254,253,251,247,239,223,191,127,0.1个LED灯从左亮到右;,总线控制方法,11111110,11111101,11111011,11110111,11101111,11011111,10111111,01111111,254,254-20=253,253-21=251,251-22=247,247-23=239,239-24=223,223-25=191,191-26=127,#include void main(

11、)unsigned int a,i,v8,dec;do v0=254;dec=1;for(i=0;i8;i+)P1=value;for(a=0;a10000;a+);vi=vi-dec;dec=dec*2;while(1);,#include void main()unsigned int a,i,value,dec;do value=254;dec=1;for(i=0;i8;i+)P1=value;for(a=0;a10000;a+);value=value-dec;dec=dec*2;while(1);,v0=,v1=,v2=,v3=,v4=,v5=,v6=,v7=,0.1个LED灯从左亮

12、到右;,总线控制方法,11111110,11111101,11111011,11110111,11101111,11011111,10111111,01111111,00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,取反,C语言左移左移最低位补充0,右移最高位补充0,0.1个LED灯从左亮到右;,#include void main()unsigned int a,i,value;value=0 x01;for(i=0;i8;i+)P1=value;for(a=0;a10000;a+);value=v

13、alue1;if(i=8)value=?;i=?;,总线控制方法,11111110,11111101,11111011,11110111,11101111,11011111,10111111,01111111,先取反;再左移1位;移7次后循环(回到初始状态).,x1与1x,#include void main()unsigned int i,x;x=0;while(1)P1=(1x+);for(i=0;i10000;i+);if(x=8)x=0;,if(x=8),0.1个LED灯从右亮到左;1.单独控制第学号%8个LED灯的状态,闪烁;2.LED灯隔一个亮一个,闪烁;3.1个LED灯从左亮到右

14、,到最右边后从右亮到左,到最左边后从左亮到右,;4.2个LED灯从外亮到内;5.中间2个亮灯向两边移动,再从两边向中间移动,到中间时闪烁3次后4个亮灯移动,到中间时闪烁3次后8个亮灯,闪烁3次后2个亮灯移动,。,课堂练习,#includesbit P1_0=P10;void main()P1_0=0;for(i=0;i10000;i+);,1.单独控制任意一个LED灯的状态;,位控制方法,#includevoid main()P1=0 xfe;for(i=0;i10000;i+);,总线控制方法,2.LED灯隔一个亮一个,闪烁;,#includevoid main()P1=0 x55;for(

15、i=0;i20000;i+);,#includevoid main()while(1)P1=0 x55;for(i=0;i20000;i+);P1=?;for(i=0;i20000;i+);,总线控制方法,3.LED灯从左亮到右,到最左边后从右亮到左;,#includevoid main()unsigned int i;P1=0 x01;for(i=0;i1;for(i=0;i20000;i+);,总线控制方法,#includevoid main()unsigned int a,i,value;value=0 x01;for(i=0;i1;if(?)value=0 x01;i=0;,4.2个L

16、ED灯从外亮到内;,#include#define uchar unsigned charvoid main()uchar i;while(1)P1=0 x7e;for(i=0;i20000;i+);P1=?;for(i=0;i20000;i+);P1=?;for(i=0;i20000;i+);P1=?;for(i=0;i20000;i+);,#include#define uchar unsigned charvoid main()uchar i,k,a4=0 x7e,0 xbd,0 xdb,0 xe7;while(1)for(k=0;k4;k+)P1=ak;for(i=0;i20000;i

17、+);,4.2个LED灯从外亮到内,然后从内到外;,#include#define uchar unsigned charvoid main()uchar i,k,a4=0 x7e,0 xbd,0 xdb,0 xe7;while(1)for(k=0;k4;k+)P1=ak;for(i=0;i20000;i+);,#include#define uchar unsigned charvoid main()uchar i,k,a4=0 x7e,0 xbd,0 xdb,0 xe7;while(1)for(k=0;k=0;k+)P1=ak;for(i=0;i20000;i+);,P1=0 xff;,5

18、.中间2个亮灯向两边移动,再从两边向中间移动,到中间时闪烁3次后4个亮灯移动,到中间时闪烁3次后8个亮灯,闪烁3次后2个亮灯移动,。,#include#define uchar unsigned charvoid main()uchar i,k,a?=0 x7e,0 xbd,0 xdb,0 xe7,?;while(1)for(k=0;k?;k+)P1=ak;for(i=0;i20000;i+);,三、常用调试方法 熟练掌握开发系统提供的各种调试功能,合理选择调试方法可提高调试程序的效率。(1)单步运行调试(F8)每按一次F8键,系统就按照下图中程序计数器PC所指示的地址(黄色箭头处)执行该条指

19、令,且PC的内容将自动指向下一条将要执行指令的地址,黄色光标也向下移动一次。,(2)跟踪运行调试(F7)与单步运行调试相似,每按一次F7键,系统就执行一条指令。但当执行调用指令(LCALL XX、ACALL XX)时,跟踪运行可以跟踪到子程序内部。所以跟踪运行调试可观察程序从主程序转入子程序、子程序内部各条指令的运行及子程序返回的运行过程。,(3)全速运行至光标处调试(F4)先将光标调到某条需要观察执行结果的指令处,如图所示。再按F4键,程序将从当前PC所指示的位置全速运行到光标处。此方法可根据操作者的实际需要快速观察程序运行至某处的执行结果。,(4)全速连续运行调试(F9)当按F9键时,程序

20、将从当前的PC处开始全速连续运行程序,如图所示。可通过停止按钮终止程序的运行,全速连续运行调试便于观察程序连续运行状态下相关显示及控制过程的动态过程。,(5)设置断点调试(F2)用鼠标单击某条指令前的园标点,或将光标设置在某条指令处,再按F2键,在该指令前将出现一个黄色标记符!(或红色标记线),表示此处已被设置为断点。若从起始地址开始全速运行程序,程序运行至断点处就停止,如下图所示。此方法可快速观察程序运行到断点处的运行结果。与全速运行至光标处(F4)调试相比,后者对断点有记忆功能,当重复调试程序时,每当程序运行到此处时都会停在该断点处,该方法特别适合于调试循环程序。可根据需要在程序的不同位置设置多个断点,用鼠标单击断点标记或在断点处再按F2键可取消断点。,(6)自动单步运行调试 该方法可自动地单步运行逐条程序,且两条指令间的间隔时间可调,如图所示。,(7)设置程序计数器PC的内容(Ctrl+N)单片机在复位时自动将PC的内容设定为0000H,若要修改当前PC的内容,可将光标移到指定位置,再按Ctrl+N键,当前程序计数器PC的内容便被设置在此处。在调试程序时,有时需从某一地址处开始执行程序,可运用此方法修改程序起始地址PC的内容。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号