收藏 分享(赏)

《新编单片机技术应用项目教程》电子教案 上册.ppt

上传人:tkhy51908 文档编号:7941279 上传时间:2019-05-30 格式:PPT 页数:149 大小:19.58MB
下载 相关 举报
《新编单片机技术应用项目教程》电子教案 上册.ppt_第1页
第1页 / 共149页
《新编单片机技术应用项目教程》电子教案 上册.ppt_第2页
第2页 / 共149页
《新编单片机技术应用项目教程》电子教案 上册.ppt_第3页
第3页 / 共149页
《新编单片机技术应用项目教程》电子教案 上册.ppt_第4页
第4页 / 共149页
《新编单片机技术应用项目教程》电子教案 上册.ppt_第5页
第5页 / 共149页
点击查看更多>>
资源描述

1、新编单片机技术应用项目教程 电子教案,主 编 金杰,中等职业学校教学用书(电子技术专业),新编单片机技术应用项目教程,项目一 认识单片机及其开发工具,项目二 制作单片机输出控制电路,项目四 制作LED数码计数牌,项目三 制作点阵显示电路,项目五 制作地震报警器,项目六 制作数字时钟,项目七 制作数字电压表,项目八 制作单片机与PC机串行收发电路,项目一 认识单片机及其开发工具,基本知识 一、生活中的单片机,任务一 认识单片机,所谓单片机,就是把中央处理器CPU、存储器(Memory)、定时器、I/0(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算

2、机。,单片机可以广泛应用在我们日常生活的各个领域,家用电器是单片机应用最多的领域之一。由于家用电器体积小、品种多、功能差异也大,因而要求其控制器不仅体积小,以便能够嵌入家用电器中,同时要求控制器有灵活的控制功能。单片机以微小的体积和编程的灵活性成为家用电器实现智能化的心脏和大脑。,一、生活中的单片机,生活中的单片机实例,生活中单片机无处不在: 手机中有既有32位的单片机,也有16位、8位的单片机。电话中常见8位单片机。电视遥控器中有4位或者8位的单片机。DVD中多数是32位单片机。MP3中多数是8-16位单片机。其他诸如空调、洗衣机、微波炉、冰箱、热水器、电子称、电子表、计算器、收音机、鼠标、

3、键盘、电动自行车、汽车钥匙、可视门禁、公交车报站器、公交车刷卡器、红绿灯控制器、等等等等 欧美日等国家,一个家庭中所拥有的单片机数量平均到100-120颗。,二、单片机中的数制,1. 数制 所谓数制,就是人们利用符号计数的一种科学方法。 在日常生活中,采用的计数方法是十进制数,而计算机内部是通过电位的高低来表示数码0和1,所以计算机只能使用二进制计数方法,而在编写程序时采用十六进制数计数方法。 (1). 十进制(Decimal Number) 十进制数是采用0、1、2、3、4、5、6、7、8、9十个不同的数码来表示任何一位数,遵循“逢十进一”的进位规律。 例:(851. 92)10=8102+

4、5101+1100+910-1+210-2 (2). 二进制(Binary Number) 二进制数用两个数码0和1表示,遵循“逢二进一”的进位规律。 例:(101.01)2=122+021+120+02-1+12-2 (3). 十六进制(Hexadecimal Number) 十六进制数有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共十六个数码,基数为16,遵循“逢十六进一”的进位规律。 例:(4FA)16=4162+F161+A160=4162+15161+10160,二、单片机中的数制,2. 数制之间的相互转换 由于二进制数码冗长,且书写和阅读都不方便,因而在编写程序,

5、以及向计算机输入数据时,仍然采用十进制或十六进制数,由计算机将其转换为二进制数后进行处理,处理结果再转换成十进制数输出。因此在学习计算机时,需要熟练掌握各种数制之间的转换。 (1)二进制数、十六进制数转换为十进制数 转换方法是将二进制数、十六进制数按权展开,写成多项式的形式,再把每一项的值相加。 (2)十进制数转换为二进制数 转换方法是把十进制数分为小数部分和整数部分,整数部分采用“除2取余”的方法,然后将所有余数按照从后到前的顺序排列;小数部分采用“乘2取整”的方法,将所有取出的整数按照顺序排列。 (3)二进制数与十六进制数之间的相互转换。 十六进制数转换为二进制数时,将二进制数的整数部分自

6、右向左每4位一组,不足4位的在左面用零补足;小数部分自左向右每4位一组,不足4位在右面补零。反之,将十六进制数转换为二进制数时,只需把每一位十六进制数写成对应的4位二进制数即可。,三、MCS-51单片机简介,1. MCS-51单片机的基本结构,MCS-51单片机结构框图,三、MCS-51单片机简介,2. MCS-51单片机的引脚及功能,MCS-51引脚及实物图,三、MCS-51单片机简介,三、MCS-51单片机简介,三、MCS-51单片机简介,基本技能,技能实训一 搭接单片机最小系统,复位电路,晶振电路,单片机最小系统,任务二 认识单片机开发常用工具,单片机开发系统组成框图,基本知识,一、仿真

7、器,常见的仿真器,二、编程器,常见的编程器,三、下载线,并行口下载线,USB口下载线,四、Keil C开发软件简介,单片机开发中除必要的硬件外,同样离不开软件,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统, Keil C51 软件是目前众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用 。,基本技能,一、Keil C开发软件的使用,技能实训二 Keil C开发软件的安装和使

8、用,1. 建立新工程。单击Project菜单,在弹出的下拉菜单中选中New Project选项。然后选择需要保存的路径,输入工程文件名,点击保存。,2. 单片机选型。keil c51几乎支持所有51核的单片机,用户可以根据使用的不同单片机来选择,如选择Atmel 的AT89C52之后,点击确定。右边栏是对此单片机的基本的说明。,3. 编写源程序。单击File菜单,在下拉菜单中单击New选项,此时,光标在编辑窗口里闪烁。在输入源程序之前,建议首先保存该空白的文件。单击File菜单,在下拉菜单中选中Save As选项,在“文件名”栏右侧的编辑框中键入文件名,同时必须键入正确的扩展名(如果用语言编写

9、程序,则扩展名为.c;如果用汇编语言编写程序,则扩展名必须为.asm。最后,单击保存按钮。,4. 将程序添加到工程中。回到编辑界面,单击Target 1前的“”号,然后在Source Group 1上单击右键,接着单击Add Files to Group Source Group 1,选中Test1.c,单击Add 。,一、Keil C开发软件的使用,5. 程序编译。单击Project菜单,在下拉菜单中单击Build Target选项,在Output窗口可以查看编译结果。若提示“0个错误、0个报警”,则说明编译正确。如果在编译、连接中出现错误,则可按照提示进行检查。,程序编译前应在选项设置中勾

10、选“Create HEX File”,项目二 制作单片机输出控制电路,单片机输出控制电路是单片机应用系统中最基本、最简单的应用,在几乎所有的单片机系统中都要用到。制作单片机输出控制电路是学习单片机的重要一步,掌握其制作将对今后学习单片具有重要意义。,任务一 点亮LED发光二极管,单片机的I/O口作输出口,接八个LED发光二极管,通过编程实现发光二极管的点亮、闪烁和流水灯效果,并进一步制作交通灯控制电路。,基本知识,一、MCS-51单片机I/O口简介 各I/O口结构功能见表2-1所示。 MCS-51系列单片机有4个8位并行输入/输出接口:P0口、P1口、P2口和P3口,共计32根输入/输出线,作

11、为与外部电路联络的脚。这4个接口可以并行输入或输出8位数据,也可以按位使用,即每1位均能独立作为输入或输出用。每个口都可作为通用I/O接口,但其功能又有所不同。,表2-1 各I/O口结构功能表(一),表2-1 各I/O口结构功能表(二),单片机中有多种开关信号输入方式,其中,通过I/O引脚输入开关信号是常用的一种方式。当作为输入口时,必须先把端口置“1”,此时锁存器的为“0”,使输出级的场效应管V2处于截止状态,引脚处于悬浮状态,可以作高阻输入。否则,如果此前曾经输出锁存过数据“0”,输出级的场效应管V2则处于导通状态,引脚相当于接地,引脚上的电位就被钳位在低电平上,使输入高电平时而得不到高电

12、平,读入的数据是错误的,还有可能烧坏端口。 如要把端口置“1”,可执行如下指令: SETB P1.X ;置位P1.X(X代07) MOV P1,#0FFH ;将P1口全部置位,一、MCS-51单片机I/O口简介,二、LED接口电路,LED发光二极管是几乎所有的单片机系统都要用到的,最常见的LED发光二极管主要有红色、绿色、蓝色等单色发光二极管,另外还有一种能发红色和绿色光的双色二极管,如图2-1所示。,图2-1 单色和双色LED发光二极管,LED驱动电路,驱动LED,可分为低电平点亮和高电平点亮两种。由于P1P3口内部上拉电阻较大,约为2040k,属于“弱上拉”,因此P1P3口引脚输出高电平电

13、流IO H很小(约为3060A)。而输出低电平时,下拉MOS管导通,可吸收1.615mA的灌电流,负载能力较强。因此两种驱动LED的电路在结构上有较大差别。 在如图2-2(a)所示的电路中,对VD1、VD2的低电平驱动,是可以的,而对VD3、VD4的高电平驱动是错误的,因为单片机提供不了点亮LED的输出电流。正确的高电平驱动电路如图2-2(b)所示。,图2-2 LED驱动电路,(a),(b),三、汇编语言程序结构及相关指令,1. 汇编语言程序结构,(1)指令的基本格式,MCS-51单片机指令主要由标号、操作码、操作数和注释四个部分组成,其中方括号括起来的是可选部分,可有可无,视需要而定 STA

14、RT: MOV A,#7FH ;将立即数送累加器A 标号 操作数 注释 1)标号:标号是指令的符号地址,有了标号,程序中的其它语句就可以访问该语句。有关标号的规定如下: 标号是由不超过8位的英文字母和数字组成,但头一个字符必须是字母。 不能使用系统中已规定的符号,如:MOV、DPTR等。 标号后面必须有跟英文半角冒号(:)。 同一个标号在一个程序中只能定义一次,不能重复定义。 2)操作码:指明语句执行的操作内容,是以助记符表示的。 3)操作数:用于给指令的操作提供数据或地址。在一条语句中,操作数可能有0个、1个、2个或者是3个,各操作数之间用英文半角逗号(,)隔开。 4)注释:对语句的解释说明

15、,提高程序的易读性。注释前必须加英文半角分号(;)。,(2)汇编程序的基本结构,为了使程序结构清晰明了,方便修改、维护,一般可按下面结构书写程序。 ORG 0000H ;复位入口地址 LJMP START ;转移到程序初始化部分START ORG 0003H ;外部中断0入口地址 LJMP WAIBU0 ;转移到外部中断0的服务程序WAIBU0 ORG 000BH RETI START: MOV A,#7FH ;初始化程序部分 MAIN: MOV P1,A ;主程序部分 LJMP MAIN ;循环执行主程序 DELAY: MOV R0,#0FFH ;子程序 RET WAIBU0:PUSH A

16、;中断服务程序 RETI,1)复位入口地址,0000H称为复位入口地址,因为系统复位后,单片机从0000H单元开始取指令执行程序,但实际上三个单元并不能存下任何完整的程序,使用时应当在复位入口地址存放一条无条件转移指令如LJMP START,以便转移到指定的程序执行(标号为START处)。,2)中断入口地址,一般在入口地址存放一条无条件转移指令如LJMP WAIBU0,而将实际的中断服务程序存放在后面的其它空间(标号为WAIBU0处)。 对于系统没有使用的中断源,可以不做任何处理,也可以放一条RETI指令,在误中断时直接返回,以增强抗干扰能力。,3)初始化程序,初始化程序主要对一些特定的存储单

17、元设置初始值或执行特定的功能,如开中断、设置计数初值等。该部分程序只在系统复位后执行一次,然后直接进入主程序。所以初始化程序必须放在主程序之前,4)主程序,主程序一般为死循环程序。CPU运行程序的过程,实际就是反复执行主程序的过程,因此实现了随时接收输入和不停的将新的结果输出的功能。,5)子程序,在主程序中,如果要反复多次执行某段完全相同的程序,为了简化程序,可以将该段重复的程序单独书写,这就是子程序。在主程序需要的时候,只要调用子程序即可。 子程序可以放在初始化和主程序构成的程序段之外的任何位置,但习惯上放在主程序之后的任何位置。子程序必须有子程序返回指令RET结束。,6)中断服务程序,中断

18、服务程序以叫中断服务子程序,是指响应“中断”后执行的相应的处理程序。 中断服务程序类似于子程序,习惯上也是放在主程序之后的任何位置。关于中断的内容将在后面相关项目中详细介绍。 注意:在汇编程序中,数值既可以使用二进制,也可以使用十进制和十六进制。后面跟“B”的表示二进制数,后面跟“D”的表示十进制数(对于十进制数“D”可以省略),后面跟“H”的表示十六进制数,在程序中一般使用十六进制数。下面三条指令的结果是完全一样的。 MOV A,#01100100B MOV A,#100 MOV A,#64H,2. 相关指令,本项目相关指令主要有:MOV、RR、RL、SETB、CLR、CPL、LJMP、DJ

19、NZ、LCALL、RET、ORG。,(1)数据传送指令:MOV,通用格式:MOV , 举例:MOV A,#30H ;将立即数30H送入累加器A MOV P1,#0FH ;将立即数0FH送到P1口,(2)移位指令:RR、RL,循环右移:RR A ;将A中的各位循环右移一位 循环左移:RL A ;将A中的各位循环左移一位 循环移位指令示意图如图2-3所示。循环移位指令的操作数只能是累加器A。,(a) 循环右移 (b) 循环左移,图2-3 循环移位指令示意图,(3)置位、清零取反指令,举例:SETB C ;将进位标志C置“1” SETB P1.0 ;将端口P1.0置“1” CLR C ;将进位标志C

20、清“0” CLR P1.0 ;将端口P1.0清“0” CPL C ;位标志C取反 CPL P1.0 ;端口P1.0取反,(4)无条件转移指令LJMP,通用格式:LJMP 举例:LJMP MAIN ;转移到标号为MAIN处执行 其它无条件转移指令请参看相关内容。,(5)减1非0条件转移指令:DJNZ,通用格式:DJNZ , 举例:DJNZ R0,LOOP ;先对R0中的数减1,若R00,转移到LOOP处执行 ;若R0=0,则顺序执行 该指令常用来编写指定次数的循环程序。虽然单片机执行一条指令的时间很短,仅为1m(具体时间和时钟与具体指令的指令周期有关)左右,但如果使单片机反复执行指令几百次、几千

21、次或几万次,所需时间就比较明显,因此我们常通过编写循环程序来达到延时的目的。,软件延时程序。,MOV R0,#0FFH ;延时程序 LOOP2: DJNZ R0,LOOP2 该程序循环次数为255次,如果延时时间不够,可以编写如下循环嵌套程序,以增加循环次数,达到更长时间的延时。 MOV R0,#0FFH ;延时程序 LOOP2: MOV R1,#0FFH LOOP1: DJNZ R1,LOOP1 DJNZ R0,LOOP2,(6)子程序调用和返回指令LCALL、RET,子程序调用:LCALL 举例:LCALL DELAY 子程序返回:RET,技能实训一 制作广告灯控制电路,一、硬件电路制作,

22、1. 电路原理图 根据任务要求,广告灯电路如图2-4所示。P1口作输出口,采用低电平驱动方式。,图2-4 广告灯电路,2. 元件清单,3. 电路制作步骤,对于简单电路,可以在万能实验板上进行电路的插装焊接。制作步骤如下: (1)按图2-4所示电路原理图在万能实验板中绘制电路元器件排列布局图; (2)按布局图依次进行元器件的排列、插装; (3)按焊接工艺要求对元器件进行焊接,背面用0.5mm1mm镀锡裸铜线链接(可以使用双铰网线),直到所有的元器件链接并焊完为止。 广告灯电路装接图如图2-5所示。 注意:单片机绝对不能直接焊接在电路板上,应先焊接一个40脚的IC插座,等将程序编写调试完成并烧写入

23、单片机中后,再插入电路板。,4. 电路的调试,通电之前先用万用表检查各种电源线与地线之间是否有短路现象。 给硬件系统加电,检查所有插座或器件的电源端是否有符合要求的电压值、接地端电压是否0V。 在不插上单片机时,模拟单片机输出低电平,检查相应的外部电路是否正常。 方法是:用一根导线将低电平(接地端)分别引到P1.0到P1.7相对应的集成电路插座的管脚上,观察相应的发光二极管是否正常发光。,二、程序编写 1. 发光二极管的点亮,欲点亮某只二极管,只需使与之相连的口线输出低电平即可。如点亮从高位到低位的第1、3、5、7只二极管,实现的方法有字节操作和位操作两种。 方法一(字节操作): ORG 00

24、00H ;复位入口地址 LJMP MAIN ;转移到主程序MAIN MAIN: MOV P1,#55H ;将立即数55H(即二进制数01010101B)送到P1口 LJMP MAIN ;循环执行主程序 方法二(位操作): ORG 0000H ;复位入口地址 LJMP MAIN ;转移到主程序MAIN MAIN: MOV P1,#0FFH ;熄灭所有的灯(该句可省略,因复位后为0FFH) CLR P1.7 ;点亮第1位 CLR P1.5 ;点亮第3位 CLR P1.3 ;点亮第5位 CLR P1.1 ;点亮第7位 LJMP MAIN ;循环执行主程序,2. 发光二极管的闪烁,欲使某位二极管闪烁,

25、可先点亮该位,再熄灭,然后循环。程序如下: ORG 0000H ;复位入口地址 LJMP MAIN ;转移到主程序MAIN MAIN: CLR P1.7 ;点亮第1位 SETB P1.7 ;熄灭第1位 LJMP MAIN ;循环执行主程序 但实际运行这个程序发现第1位一直在亮,原因是单片机执行一条指令速度很快,大约1m(具体时间和时钟与具体指令的指令周期有关)。也就是说二极管确实在闪烁,只不过速度太快,由于人的视觉暂留现象,主观感觉一直在亮。解决的办法是在点亮和熄灭后都要加入延时。实现的方法有字节操作和位操作两种。,发光二极管的闪烁,方法一(字节操作): ORG 0000H ;复位入口地址 L

26、JMP MAIN ;转移到主程序MAIN MAIN: MOV P1,#7FH ;点亮第1位 LCALL DELAY ;调延时子程序 MOV P1,#0FFH ;熄灭第1位 LCALL DELAY ;调延时子程序 LJMP MAIN ;循环执行主程序 DELAY: MOV R0,#0FFH ;延时子程序 LOOP2: MOV R1,#0FFH LOOP1: DJNZ R1,LOOP1 DJNZ R0,LOOP2 RET,方法二(位操作): ORG 0000H ;复位入口地址 LJMP MAIN ;转移到主程序MAIN MAIN: CPL P1.7 ; P1.7取反 LCALL DELAY ;调延

27、时子程序 LJMP MAIN ;循环执行主程序 DELAY: MOV R0,#0FFH ;延时子程序 LOOP2: MOV R1,#0FFH LOOP1: DJNZ R1,LOOP1 DJNZ R0,LOOP2 RET,3. 流水灯效果,实现该效果的方法是轮流点亮每个发光二极管,延时后熄灭。按字节操作的程序如下: ORG 0000H ;复位入口地址 LJMP MAIN ;转移到主程序MAIN MAIN: MOV P1,#7FH ;点亮第1位 LCALL DELAY ;调延时子程序 MOV P1,#0BFH ;点亮第2位 LCALL DELAY ;调延时子程序 MOV P1,#0DFH ;点亮第

28、3位 LCALL DELAY ;调延时子程序 MOV P1,#0EFH ;点亮第4位 LCALL DELAY ;调延时子程序 MOV P1,#0F7H ;点亮第5位 LCALL DELAY ;调延时子程序 MOV P1,#0FBH ;点亮第6位 LCALL DELAY ;调延时子程序 MOV P1,#0FDH ;点亮第7位 LCALL DELAY ;调延时子程序 MOV P1,#0FEH ;点亮第8位 LCALL DELAY ;调延时子程序 LJMP MAIN ;循环执行主程序 DELAY: MOV R0,#0FFH ;延时子程序 LOOP2: MOV R1,#0FFH LOOP1: DJNZ

29、 R1,LOOP1 DJNZ R0,LOOP2 RET 这个程序清晰易懂,但过于冗长。下面我们使用循环移位指令来实现同样的效果,程序长度可大缩短。,流水灯效果,ORG 0000H ;复位入口地址 LJMP START ;转移到程序初始化部分START START: MOV A,#7FH ;初始化A值,使最高位为“0” MAIN: MOV P1,A ;A值送P1口 LCALL DELAY ;调延时子程序 RR A ;循环右移 LJMP MAIN ;循环执行主程序 DELAY: MOV R0,#0FFH ;延时子程序 LOOP2: MOV R1,#0FFH LOOP1: DJNZ R1,LOOP1

30、 DJNZ R0,LOOP2 RET 读者可以将循环右移指令改为循环左移指令看其运行效果。 注意:要制作复杂的效果,可以使用查表的方法实现,关于查表指令将在后面的相关项目中介绍。,技能实训二 程序的调试与烧写,一、程序的调试,任何程序很难做到一次书写成功,一般都需要反复的调试修改才能实现相应的功能。 程序调试的实现方法有多种,比如可以使用编程器把编译后的程序烧写入单片机,然后插在目标电路板上看其能否实现应有的功能,若不能,修改后重新烧写试机,直到调试完成;对于支持ISP在线下载的单片机,可以通过下载线实现程序的烧写进行验证。在所有的方法中最为方便、直观、高效的方法是使用仿真器进行程序的调试。

31、下面一种Keil C仿真器为例介绍软件调试的具体过程,Keil C仿真器。,程序调试的基本步骤(一),程序调试的基本步骤(二),程序调试的基本步骤(三),对于本项目的程序相对简单,排查语法错误和功能错误难度不是很大,但对于有些程序,任务较多,可以采用分模块调试,如BCD码转换程序、数码管显示程序、中断程序、子程序等。 全部正常后,再一个模块一个模块的添加,最后达到所要求的功能。 另外,在调试过程中,为了实现对错误正确定位,可以采用单步与全速执行相结合的方法。全速执行配合设置断点,可以确定错误的大致范围;单步执行可以了解程序中每条指令的执行情况,对照指令运行结果可以知道该指令执行的正确性。 程序

32、全部调试完成后,就可以进行程序烧写了。,二、程序烧写,程序烧写是指将编译好(一般为HEX或BIN文件)的程序写入单片机的程序存储器中。对于支持ISP在线下载的单片机既可以通过编程器完成烧写,也可以通过ISP下载线来完成。,1. 编程器烧写,下面以Easy PRO 80B型号的编程器为例介绍程序烧写的过程。其过程如表2-4所示。,表2-4程序烧写的过程(一),表2-4 程序烧写的过程(二),表2-4 程序烧写的过程(三),表2-4 程序烧写的过程(四),2. 下载线下载程序,所谓下载线下载程序,是指通过下载线将计算机中编译好的程序下载到单片机的程序存储器中。目前市场上流行的下载线有并行口下载线、

33、串行口下载线和USB口下载线。 无论采用哪种下载线,都需要下载线和单片机目标板进行连接,这时可以在目标板上焊接一个插座。ISP接口为ATMEL标准10针,其引线配置图如图2-7所示。 注意:有些下载线的接线并非采用标准接线,这时需要调整引线。,图2-7 标准ISP口引线配置图,注: SCK接P1.7,MISO接P1.6 MOSI接P1.5,RST接第9脚,(1)并口ISP下载线下载程序,下面以下载软件ISPlay以例说明并口下载线下载程序的方法。 连接好下载线和单片机目标板,目标板加上+5V电源。启动ISPlay软件,如图2-8 所示。 首先选择单片机型号或让软件自动检测单片机型号。 点击“文

34、件”按钮,打开待下载的HEX文件或BIN文件; 点击“擦除”按钮,将单片机程序存储器中原有内容擦除; 点击“写”按钮,将打开的文件下载到单片机程序存储器中。,图2-8 ISP界面,(2)串口ISP下载线下载程序,下面以下载软件电子在线ISP编程器2.0为例说明串口下载线下载程序的方法。 连接好下载线和单片机目标板,目标板加上+5V电源。启动电子在线ISP编程器v2.0软件,如图2-9 所示。 首先选择端口,根据下载线实际连接的端口进行设置。 点击“打开”按钮,打开待下载的HEX文件; 点击“鉴别”按钮,检查单片机型号; 点击“擦除”按钮,将单片机程序存储器中原有内容擦除; 点击“写入”按钮,将

35、打开的文件下载到单片机程序存储器中。 也可以设置好自动选项后,点击“自动”按钮完成程序的擦除和写入。,图2-9 电子在线ISP编程器v2.0界面,(3)USB口ISP下载线下载程序,下面以下载软件Progisp软件为例说明USB口下载线下载程序的方法。 连接好下载线和单片机目标板,对于USB下载线,由于USB传输线同时带有+5V电源,所以目标板不需要外加电源。启动Progisp软件,如图2-10 所示。 首先选择编程器及接口,并选择芯片。 点击“调入Flash”按钮,打开待下载的HEX文件或BIN文件; 在“编程”选项下选择所进行的操作; 点击“自动”按钮,便可以完成芯片擦除和编程等操作。 程

36、序烧写完成后,观察电路运行情况。,图2-10 Progisp界面,技能实训三 制作交通灯控制电路,实训内容,交通灯控制电路的要求:假定A、B两个交通干道交于一个十字路口,A为主干道,B为支干道,A、B干道各有一组红、黄、绿三色指示灯,指挥行人和车辆的通行。 系统要求,能够上电复位和手动复位,初始状态4个路口都亮红灯,2s后正常工作。 白天工作期间:东西方向为主干道,南北方向为支干道,共有四种状态,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车。延时5s后东西路口的绿灯熄灭,黄灯闪烁,闪烁若干次后,东西路口的红灯亮,同时南北路口的绿灯亮,南北方向通车,延时4s后南北路口的绿灯熄灭,黄灯闪烁,闪

37、烁若干次后,再切换到东西路口方向。循环重复上述过程,其状态如表2-5所示。,表2-5 红绿灯工作状态及功能,一、硬件电路制作,1. 电路原理图 交通灯控制电路的硬件电路如图2-11所示。由于每个干道相对的两组灯的亮灭关系完全一样,属于并联关系,所以图中只用两组灯来表示每个干道的三只红、黄、绿灯。,图2-11 交通灯控制电路,2. 元件清单,交通灯控制电路元件清单如表2-6所示。,3电路制作,交通灯控制电路装接图如图2-12所示,图2-12 交通灯控制电路装接图,4电路的调试,通电之前先用万用表检查各种电源线与地线之间是否有短路现象。 给硬件系统加电,不插入单片机,用一根导线,一端接地,另一端分

38、别接触IC插座的5、6、7、8脚,观察四个二极管是否正常发光。,1. 程序流程图,白天工作模式:主要是按照系统要求完成白天工作期间的交通灯执行功能。流程图如图2-13所示。 夜间工作模式:以P1.7口输入的开关状态判断是白天还是夜间,P1.7为高电平,系统工作在白天模式;P1.7为低电平,系统工作在夜间模式。流程图如图2-14所示。,二、程序编写,2. 参考程序,ORG 0000H MOV P2,#7EH ;四个路口红灯亮 MOV R5,#100 LCALL DELAY ;延时2s DAY: MOV P1,#0FFH ;P1口作为输入口 LOOP1: JNB P1.7,NIGHT MOV P2

39、,#7BH ;东西绿灯亮,南北红灯亮 MOV R5,#250 ;延时5s LCALL DELAY MOV R7,#05H ;置黄灯闪烁次数05H H1: MOV P2,#7DH ;东西黄灯闪,南北红灯亮 MOV R5,#10 ;延时 LCALL DELAY MOV P2, #7FH ;南北红灯亮 MOV R5, #10 ;延时 LCALL DELAY DJNZ R7,H1 ;闪烁次数未到继续 H2: MOV P2,#0DEH ;东西红灯亮,南北绿灯亮 MOV R5, #200 ;延时4s LCALL DELAY MOV R7,#05H ;置黄灯闪烁次数05H H3: MOV P2,#0BEH

40、;东西红灯亮,南北黄灯闪 MOV R5,#10 ;延时 LCALL DELAY MOV P2,#0FEH ;东西红灯亮 MOV R5, #10 ;延时 LCALL DELAY DJNZ R7,H3 ;闪烁次数未到继续 LJMP LOOP1 ;循环 NIGHT: LOOP2: JB P1.7,DAY MOV P2, #0BDH ;东西黄灯亮,南北黄灯亮 MOV R5, #10 ;延时 LCALL DELAY MOV P2,#0FFH ;东西黄灯灭,南北黄灯灭 MOV R5,#10 LCALL DELAY LJMP LOOP2 ;延迟时间R520ms DELAY: MOV R4, #38H ;延时

41、子程序 D1: MOV R3, #0F9H DJNZ R3,$ DJNZ R4,D1 DJNZ R5,DELAY RET END,参考程序(续),任务二 制作音频控制电路和继电器控制电路,单片机的I/O口作输出口,驱动扬声器发出不同频率、不同长短的音频;单片机I/O口作输出口,驱动继电器吸合和释放。,基本知识,一、片内数据存储器和片内程序存储器,片内数据存储器(内部RAM)和片内程序存储器(内部ROM)是供用户使用的重要单片机硬件资源。,一、片内数据存储器,什么是存储器呢?打个比方来说:存储器就象一栋楼,假如这栋楼共有128层,每层有8个房间,每个房间可以存放1位二进制数。我们可以给每个楼层编

42、号,0层、1层、127层,每层楼就相当于一个存储单元,楼层号就相当于单元地址,用十六进制表示就是00H、01H、7FH。每层楼的每个房间就相当于一位。 在片内数据存储器中,有的单元只能8位同时存入或者8位同时取出,这种操作叫字节操作;有的单元既能字节操作,又能对该单元的每1位单独操作,这种操作叫位操作。要想进行位操作,通常要给位分配一个地址,这个地址叫做位地址,就好象再给每层楼的每个房间再编个号,如0号、1号、7号,用十六进制表示也是00H、01H、07H。虽然位地址和字节地址的表示方法相同,但由于对位操作的指令和对字节操作的指令不同,所以在程序中并不会造成混淆。 片内数据存储器即所谓的内部R

43、AM,主要用于数据缓冲和中间结果的暂存。其特点是掉电后数据即丢失。 MCS-51单片机内部有256个数据存储器单元,通常把这256个单元按其功能分为两部分:低128单元(单元地址00H7FH)和高128单元(单元地址80HFFH)。其中低128单元是供用户使用的数据存储器单元,按用途可把低128单元分为三个区域,如图2-15所示,图2-15 内部RAM低128单元结构图,1. 寄存器区,地址为00H1FH的空间为寄存器区,共32个单元,分成4个组,每个组8个单元,符号为R0R7,通过RS1和RS0的状态选定当前寄存器组,如图2-14中表格所示。任一时刻,CPU只能使用其中的一组寄存器。,2.

44、位寻址区,地址为20H2FH的16个单元空间称为位寻址区,这个区的单元既可以字节操作,也可以对每1位单独操作(置“1”或清“0”),所以每一位都有自己的位地址。 通常在使用中,“位”有两种表示方式。一种是以位地址的形式,如图2-14中表格所示,例如25H单元的第0位的位地址是28H;另一种是以单元地址加位的形式表示,例如同样的25H单元的第0位表示为25H.0。,3. 用户RAM区,地址为30H7FH的80个单元空间是供用户使用的一般RAM区,对于该区,只能以单元的形式来使用(即字节操作),4. 特殊功能寄存器区,内部数据存储器的高128单元的地址为80HFFH,在这128个单元中离散的分布着

45、若干个特殊功能寄存器(简称SFR),也就是说其中有很多地址是无效地址,空间是无效空间。这些特殊功能寄存器在单片机中起到非常重要的作用。 下面对一些常见的特殊功能寄存器做一简单介绍。其余的在相关项目应用时介绍,(1)累加器Acc,累加器Acc简称A,是所有特殊功能寄存器中最重要、使用频率最高、最繁忙的寄存器,常用于存放参加算术或逻辑运算的两个操作数中的一个,运算结果最终都存在A中,许多功能也只有通过A才能实现。,(2)B寄存器,B寄存器也是CPU内特有的一个寄存器,主要用于乘法和除法运算。也可以作为一般寄存器使用。,(3)程序状态字寄存器PSW,程序状态字寄存器有时也称为“标志寄存器”,由一些标

46、志位组成,用于存放指令运行的状态。内部8位的具体定义如表2-7所示,表2-7 MCS-51中PSW寄存器各位功能,(3)程序状态字寄存器PSW,Cy:进位标志。在进行加法运算且当最高位(B7位)有进位时,或执行减法运算且最高位有借位时,Cy为1;反之为0。 AC:辅助进位标志。在进行加法运算且当B3位有进位,或执行减法运算且B3位有借位时,AC为1;反之为0。 RS1、RS0:工作寄存器组选择位,前面已介绍过。 F0:用户标志位,可通过位操作指令将该位置1或清0。 PSW.1:保留位。 OV:溢出标志。在计算机内,带符号数一律用补码表示。在8位二进制中,补码所能表示的范围是-128+127,而

47、当运算结果超出这一范围时,OV 标志为1,即溢出;反之,为0。 P:奇偶标志。该标志位始终体现累加器Acc中“1”的个数的奇偶性。如果累加器Acc中“1”的个数为奇数,则P位置1;当累加器A中“1”的个数为偶数(包括0个)时,P位为“0”。,(4)数据指针DPTR,数据指针DPTR是单片机中唯一一个用户可操作的16位寄存器,由DPH(数据指针高8位)和DPL(数据指针低8位)组成,既可以按16位寄存器使用,也可以将两个8位寄存器分开使用。,(5)I/O端口寄存器,P0、P1、P2、P3口寄存器实际上就是P0口P3口对应的I/O端口锁存器, 用于锁存通过端口输出的数据。,二、片内程序存储器,程序

48、存储器主要用来存放程序,但有时也会在其中存放数据表(如数码管段码表等)。 89C51芯片内有4K的程序存储器单元,其地址为0000H0FFFH。在程序存储器中地址为0000H002AH的43个单元在使用时是有特殊规定的。 其中0000H0002H三个单元是系统的启动单元,0000H称为复位入口地址,因为系统复位后,单片机从0000H单元开始取指令执行程序。但实际上三个单元并不能存下任何完整的程序,使用时应当在复位入口地址存放一条无条件转移指令,以便转移到指定的程序执行。 地址为0003H002AH的40个单元被均匀地分为五段,每段8个单元,分别作为五个中断源的中断地址区。具体划分如下: 000

49、3H000AH 外部中断0中断地址区,0003H为其入口地址 000BH0012H 定时器/计数器0中断地址区,000BH为其入口地址 0013H001AH 外部中断1中断地址区,0013H为其入口地址 001BH0022H 定时器/计数器1中断地址区,001BH为其入口地址 0023H000AH 串行中断地址区,0023H为其入口地址 中断响应后,CPU能按中断种类,自动转到各中断区的入口地址去执行程序。但实际上8个单元难以存下一个完整的中断服务程序,我们可以在中断区的入口地址存放一条无条件转移指令,而将实际的中断服务程序存放在后面的其它空间。在中断响应后,通过入口地址的这条无条件转移指令再转到实际的中断服务程序执行。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报