1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单片机应用技术学学习任务,学习任务1 单片机应用步骤解析,学习任务2 单片机应用仿真工具软件的使用,学习任务3 内部RAM模拟仿真操作,学习任务4 循环流水灯设计制作,学习任务5 显示电路设计制作,学习任务1 单片机应用步骤解析,学习任务描述,教学导航,1.1 学习准
2、备,1.2 计划实施,1.3 评价反馈,1.4 知识拓展 单片机产品开发工具仿真器及其应用,学习任务描述,01D05_Embed_1.jpg,教学导航,01D05_Embed_2.jpg,教学导航,表格,1.1 学习准备,单片机早期定义是:将计算机的主要部件(CPU、RAM、ROM、定时器/计数器、输入/输出接口电路等)集成在一块大规模集成电路中,形成芯片级的微型计算机称为单片微型计算机(Single Chip Microcomputer),简称单片机。但单片机中这些功能模块与计算机又有所不同,表1-1所示为单片机与计算机相应功能模块作用对照表。,1.1 学习准备,表1-1 单片机与计算机功能
3、模块作用对照表,表1-1 单片机与计算机功能模块作用对照表,1.1 学习准备,(小提示:,1)单片机概念的理解。,2)在8位、16位单片机中“位”的含义。,3)单片机内部还有时钟、中断系统、看门狗、编程接口等模块。,单片机之所以应用广泛,是因为与其特点密不可分。单片机主要有以下几个显著特点:,1)小巧灵活,成本低,易于产品化,有优异的性能价格比。,2)集成度高,有很高的可靠性,能在恶劣的环境下工作。,1.1 学习准备,3)控制功能强,特别是集成了A/D转换、D/A转换等功能接口电路,使用更方便有效,指令面向控制对象,可以直接对功能部件操作,易于实现从简单到复杂的各类控制任务。,4)低功耗、低电
4、压,便于生产便携式产品。,单片机品种繁多,有50多个系列,300多个型号。在用途上分为通用型和专用型两大类,通常所说的单片机即指通用型单片机,是把可开发的资源全部提供给使用者的微控制器。专用单片机是为过程控制等特殊需要而设计的单片机,用于大批量成型的电子产品,并只能用于该产品,不能用来开发设计其他产品。,1)51系列单片机。,1.1 学习准备,2)AVR单片机。,3)PIC单片机。,4)Philips 80C51系列单片机。,5)EM78系列OTP单片机。,6)其他与MCS-51兼容的单片机。,单片机作为一个集成电路芯片,其常用的封装形式有以下几种,如图1-1所示。,(1)DIP(Dual I
5、n-line Package)封装。,1.1 学习准备,图1-1 单片机芯片封装形式,2)PLCC(Plastic Leaded Chip Carrier)封装。,3)SOP(Small Outline)封装。,1.1 学习准备,4)QFP(Quad Flat Package)封装与PFP(Plastic Flat Package)封装。,(小提示:,1)目前应用最多的是MCS-51系列单片机(含兼容),PIC系列单片机发展势头很旺,另外AVR单片机和美国Microchip公司的MSP430系列单片机应用也比较广泛。,2)不同系列的单片机应用的步骤过程是相同的,学会了一种类型单片机,再学习其他
6、类型将很容易。,3)开始学习单片机时多用DIP封装,便于拔插。,1.1 学习准备,单片机主要用于智能化的电子产品设计,或自动化的控制装置设计。用单片机设计电子产品与以往电子产品设计不同,除了设计硬件电路外,还需要设计软件,需要专用设备,如开发系统、计算机、编程器、仿真器等。,1.1 学习准备,图1-2 单片机开发产品过程示意图,1)设计硬件电路。,2)设计程序并编译产生目标文件。,3)编程(程序下载)。,4)通电运行和检查。,(小提示:,1)程序设计扩展是初学单片机的重点。,1.1 学习准备,2)图1-2所示是单片机应用产品的开发过程,对初学者的重点则是电路设计、程序设计和系统功能联调这3部分
7、1.2 计划实施,图1-3所示是AT89S51单片机引脚排列图,它的DIP封装图如图1-1a所示。它有P0、P1、P2、P3共4个8位输入/输出口,可以通过它们进行8位一起输入/输出,也可以通过口位编号进行1位的输入/输出。位编号如下。,1.2 计划实施,01D05_Embed_5.jpg,(小提示:,1.2 计划实施,1)单片机就是通过输入/输出口对外部电路进行检测与控制,分为输入和输出,都是把信息转换为对应的电平信号:0低电平,1高电平。,2)输入/输出可以通过P0P3进行8位的操作,也可以通过引脚编号进行1位操作。,1.2 计划实施,01D05_Embed_6.jpg,1.2 计划实
8、施,图1-5 P1口控制的8个小灯示意图,在51系列单片机内部,数据都是以8位二进制形式存在的。,1.2 计划实施,表1-2 十进制数、十六进制数、二进制数对应关系表,(小提示:,1)在汇编语言程序设计中,所有数据不能超出8位二进制数(字节)的范围,如从P1口输出300,300超过范围,失去意义。,1.2 计划实施,2)在C语言程序设计中,数据不能超过变量定义类型规定的范围,否则也达不到设想的功能要求。,3)对上述两种情况,编译系统不会指出程序错误,但运行达不到设想效果。,小练习,1.2 计划实施,01D05_Embed_8.jpg,1)将下列十进制数转换为二进制和十六进制(汇编语言):,10
9、0=。64=。,1.2 计划实施,256=。16=。,2)将下列十进制数转换为十六进制(C语言):,100=。64=。,256=。16=。,3)将下列二进制数和十六进制数相互转换:,(小提示:,4)在图1-7所示中,假定口输出“1”使小灯亮,输出“0”使灯熄灭。,P1口输出10011100B,指出哪几个小灯亮?,P1口输出32H,指出哪几个小灯亮?,P1口输出100,指出哪几个小灯亮?,比较上面3种输出控制,谈谈自己的思考。,1.2 计划实施,小练习,1.2 计划实施,01D05_Embed_9.jpg,1.2 计划实施,“编程”就是将单片机能够执行的目标文件(机器语言)下载到芯片内部。早期编
10、程都是通过专用设备编程器来进行的,目前的单片机应用系统一般在系统上预留ISP(在系统编程)或IAP(在应用编程)接口,直接进行程序下载。,跟我做1用编程器下载程序,1.2 计划实施,01D05_Embed_10.jpg,1.2 计划实施,01D05_Embed_11.jpg,1)选择器件。,2)装载目标文件。,1.2 计划实施,3)单击“写入”图标,将缓冲区中的机器码下载到芯片中(如芯片内部有程序时,应先擦除,再写入。,4)将芯片从编程器中取下,插到实验板上,通电观察运行情况。,5)在编程器上将芯片内容擦除,不写入,插到实验板上,描述小灯运行情况。,跟我做2用ISP接口下载程序,1.2 计划实
11、施,01D05_Embed_12.jpg,1.2 计划实施,01D05_Embed_13.jpg,1)用USB连接线将实验板与计算机连接起来。,1.2 计划实施,2)双击计算机桌面上图1-9所示的图标,弹出如图1-10所示的ISP编程软件操作窗口。,1.2 计划实施,图1-10 ISP编程软件操作窗口,1)单击“选择芯片”选择框,选中“AT89S51”。,1.2 计划实施,2)单击“调入Flash”按钮,弹出如图1-11所示的“打开”文件对话框,选中sy1.hex文件,单击“打开”按钮,将文件装入缓冲区。,1.2 计划实施,图1-11“打开文件”对话框,3)单击如图1-10所示的“自动”按钮,
12、将缓冲区程序下载到芯片中。,1.2 计划实施,4)程序下载结束后自动进入运行。,小思考,1.2 计划实施,01D05_Embed_16.jpg,跟我分析电子产品功能分析与制作步骤分解,1.2 计划实施,1)单片机系统。,2)温度测量。,3)数据显示。,4)声光报警。,5)温度范围设定修改。,6)温度参数保存。,7)数据传送。,1.2 计划实施,01D05_Embed_17.jpg,1)LED小灯显示控制。,2)显示电路设计。,1.2 计划实施,3)键盘电路设计。,4)存储器接口设计。,5)A/D转换接口设计。,6)串行通信接口设计。,7)系统综合调试。,(小提示:,1.3 评价反馈,1)试简单
13、说明单片机应用过程中有哪些环节。,2)对于图1-7所示的控制电路,设“1”亮、“0”灭。,3)如何理解单片机概念的?,4)单片机内部的存储器有ROM、RAM,它们的含义是什么?它们的用途分别是什么?,5)AT89S51单片机中的数都是以字节为单位的,它们以什么形式存在呢?,6)简述二进制数与十六进制数的关系,有什么启发?先写出几个单字节的十六进制数,再写出它们的二进制数。,7)C51语言中数据常用十进制和十六进制数表示,C语言中十六进制数如何表示?将上例中的数,写出其C语言十六进制的表示形式。,8)举几个日常生活中遇到的单片机产品的例子。,1.4 知识拓展 单片机产品开发工具仿真器及其应用,0
14、1D05_Embed_18.jpg,学习任务2 单片机应用仿真工具软件的使用,学习任务描述,教学导航,2.1 学习准备,2.2 计划实施,2.3 评价反馈,2.4 知识拓展 WAVE开发环境简介,学习任务描述,01D05_Embed_19.jpg,教学导航,01D05_Embed_20.jpg,教学导航,表格,2.1 学习准备,1.Keil C51软件仿真集成开发环境,2.1 学习准备,图2-1 Keil C51集成开发窗口,2.Keil Vision2开发环境中单片机应用系统软件开发步骤,2.1 学习准备,1)新建一个项目文件,从设备库中选择目标设备(CPU芯片),设置项目选项。,2)新建源
15、程序文件。,3)将源程序添加到项目中。,4)设置编译环境,编译检查语法错误,直至产生目标文件。,5)目标文件模拟仿真,检查程序功能。,3.Keil Vision2软件常用菜单,2.1 学习准备,表2-1 Keil C51集成环境的文件菜单,2.1 学习准备,表2-2 Keil C51集成环境的编辑菜单,2.1 学习准备,表2-3 Keil C51集成环境的项目菜单,2.1 学习准备,1.Proteus ISIS硬件仿真集成开发环境,2.1 学习准备,01D05_Embed_44.jpg,2.Proteus ISIS主菜单与主工具栏,2.1 学习准备,01D05_Embed_45.jpg,表2-
16、4 Proteus ISIS常用菜单命令、工具按钮、快捷键及功能说明表,2.1 学习准备,表2-4 Proteus ISIS常用菜单命令、工具按钮、快捷键及功能说明表,2.1 学习准备,3.Proteus ISIS Mode工具箱、方向工具栏、仿真运行工具栏,2.1 学习准备,图2-4 Mode工具箱与方向工具栏,图2-5 仿真运行工具栏,4.Proteus ISIS 集成环境中单片机应用系统硬件开发步骤,1)设置Proteus ISIS工作环境。,2)新建设计文件。,3)选择与放置电子器件,并进行编辑。,4)按照电路原理进行布线。,5)电气规则检查,排除电路设计中的错误,生成BOM文件。,2
17、1 学习准备,6)装入单片机可执行的HEX文件,进行软件、硬件的联合仿真调试。,2.2 计划实施,跟我做1创建项目文件及源程序文件,1)新建一个工作文件夹,在下面的操作中将所有有关文件都保存在该文件夹中。,2)执行菜单命令ProjectNew,系统将打开一个建立新项目的对话框,选择存放文件的目录(D:WORK),为项目起一个名称,如:EXAMPLE,单击“保存”按钮,保存工程文件后返回。,3)项目建立后,会弹出一个如图2-6所示的器件选择对话框,列出了许多公司的各种芯片信号,如ATMEL公司的AT89S51。,2.2 计划实施,图2-6 器件选择对放框,4)执行菜单命令FileNew,系统将
18、打开一个名为Text1的新文件窗口,执行命令FileSave As 将出现如图2-7所示的对话框,,2.2 计划实施,在“文件名”文本框中输入文件的名称,如LED.C。,2.2 计划实施,图2-7 命名并保存新建文件对话框,5)在LED.C中输入下列程序语句:,6)添加文件到项目文件中。,2.2 计划实施,01D05_Embed_88.jpg,2.2 计划实施,01D05_Embed_89.jpg,2.2 计划实施,图2-10“添加源程序工程项目”窗口,(小提示:,1)向项目中添加源程序文件,也可在图2-9中双击要添加的文件。,2.2 计划实施,2)向项目中添加汇编语言文件,需要单击图2-9中
19、文件类型”对话框的下拉菜单箭头,选择文件类型为“*.A*”,窗口将显示出汇编语言文件,添加方法与C语言相同。,3)从项目中移去源文件方法。,跟我做2源程序的编译、连接与调试,1)先设置编译环境。,2.2 计划实施,图2-11 Project下拉菜单,2.2 计划实施,01D05_Embed_92.jpg,2)对项目进行编译、链接。,2.2 计划实施,01D05_Embed_93.jpg,(小提示:,1)项目文件的扩展名为uv2,汇编语言源程序扩展名ASM,C语言源程序扩展名必须是C,目标文件的扩展名为hex。,2)目标文件名与项目文件同名,而与源程序的文件名无关,编译过程是对项目中的源程序进
20、行编译,通过项目文件对有关文件进行管理。,2.2 计划实施,3)项目文件一般建立一次即可,可以通过添加、移除源程序对不同程序进行编译,编译环境设置一般在项目建立时设置,不修改将保持不变。,自我练习1新建一个项目文件和源程序文件,编译生成目标文件。,跟我做3在Proteus ISIS中绘制电原理图,2.2 计划实施,图2-14 电原理图,(1)新建设计文件,(2)器件选择与放置,2.2 计划实施,表2-5 常用元器件所属类名称表,2.2 计划实施,表2-5 常用元器件所属类名称表,2.2 计划实施,01D05_Embed_95.jpg,2.2 计划实施,01D05_Embed_96.jpg,1)
21、Keywords文本输入框。,2)Category窗口。,2.2 计划实施,3)Sub-category窗口。,4)Manufacturer窗口。,5)Results(591)窗口。,6)PCB Preview窗口。,2.2 计划实施,01D05_Embed_97.jpg,(3)元器件对象的编辑,(4)布线,2.2 计划实施,图2-17 布线的3种连接方式,1)普通连接。,2)无线连接。,2.2 计划实施,3)总线连接。,2.2 计划实施,01D05_Embed_99.jpg,2.2 计划实施,01D05_Embed_100.jpg,(5)电气规则检查,(小提示:,2.2 计划实施,1)放置的
22、元器件方向是固定的,放置后要进行编辑调整,使位置适中,然后布线,布线后移动元器件连线也会移动,增加调整工作量。,2)布线要灵活,一般尽量少采用普通连接,普通连接一般只在功能模块内部,模块之间一般采用无线连接和总线连接方式。,自我练习2在Proteus ISIS中绘制电原理图,跟我做4软件、硬件联合仿真,1)将编译产生的HEX文件装载到单片机中。,2.2 计划实施,01D05_Embed_101.jpg,2)仿真调试。,2.2 计划实施,01D05_Embed_102.jpg,2.2 计划实施,01D05_Embed_103.jpg,自我练习3软件硬件联合仿真,2.3 评价反馈,1)在Keil,
23、2)对在应用程序设计过程中涉及的相关文件的命名有什么要求?,3)对编译和链接程序时没有产生目标文件(HEX)的的情况,应怎样处理?,4)在Proteus,5)在Proteus,6)在Keil,7)其他软件编译系统设计的软件程序能否在Proteus,8)使用Keil,9)以本章自我练习1中的程序2-1为原程序,以图2-18为应用电路,在Keil C环境中设计软件产生目标文件,在Proteus ISIS环境绘制电原理图,然后进行软件、硬件的联合仿真,写出完整操作过程。,2.4 知识拓展 WAVE开发环境简介,图2-20 WAVE开发操作界面,(1)建立新程序,(2)保存程序,2.4 知识拓展 WA
24、VE开发环境简介,(3)建立新的项目并加入模块文件,2.4 知识拓展 WAVE开发环境简介,图2-22“加入模块文件”对话框,2.4 知识拓展 WAVE开发环境简介,图2-23 打开的项目窗口,(4)设置项目,(5)编译程序,2.4 知识拓展 WAVE开发环境简介,图2-24“仿真器设置”对话框,2.4 知识拓展 WAVE开发环境简介,图2-25 项目编译窗口,学习任务3 内部RAM模拟仿真操作,学习任务描述,教学导航,3.1 学习准备,3.2 计划实施,3.3 评价反馈,3.4 知识拓展 AT89S52单片机的内部RAM空间及操作,学习任务描述,01D05_Embed_109.jpg,教学导
25、航,01D05_Embed_110.jpg,教学导航,表格,3.1 学习准备,编译产生目标文件后,可以通过调式命令在Keil C环境中模拟仿真运行,调试菜单如表3-1所示。执行“DebugStartStop Debug Session”命令,或单击工具按钮 进入Keil C软件仿真调试运行模式,再次操作将关闭。,3.1 学习准备,01D05_Embed_111.jpg,3.1 学习准备,表3-1 Keil C51集成环境调试菜单,3.1 学习准备,表3-1 Keil C51集成环境调试菜单,3.1 学习准备,图3-1 常用调试命令工具条,3.1 学习准备,01D05_Embed_127.jpg
26、3.1 学习准备,01D05_Embed_128.jpg,3.1 学习准备,01D05_Embed_129.jpg,3.1 学习准备,01D05_Embed_130.jpg,3.1 学习准备,01D05_Embed_131.jpg,3.1 学习准备,AT89S51单片机程序存储器(ROM)和数据存储器(RAM)是分开的,有各自的寻址系统和控制信号,分别用不同的指令操作。ROM用来存放编写的程序和常数表格。RAM用来存放程序运行的数据和结果。ROM和RAM都分为内部和外部,如图3-2所示。,3.1 学习准备,01D05_Embed_132.jpg,1.程序存储器(ROM),3.1 学习准备,0
27、1D05_Embed_133.jpg,(小提示:,1)ROM空间开头的0003H002AH空间地址是中断源的入口地址区间,是专用单元,一般情况下用户不能用来存放其他程序,在设计程序时要采取相关措施。,3.1 学习准备,2)=1时,PC从单片机内部ROM空间取指令运行,超过4KB范围程序指令自动从外边扩展的空间读取。,3.1 学习准备,01D05_Embed_134.jpg,3)51系列单片机ROM空间最大可扩展到64KB。,4)64KB中的K表示1024,B表示字节(Byte)。,3.1 学习准备,2.内部数据存储器(内RAM),3.1 学习准备,01D05_Embed_135.jpg,(小提
28、示:,3.1 学习准备,1)对RAM空间的操作,可以通过对空间地址(称为直接地址)进行操作,即00H7Fh。,2)4个工作寄存器区,每次只要一个处于工作状态,称为当前工作寄存器区,用专用的符号R表示,每个区8个单元依次用R0R7表示。,3)通过直接地址和工作寄存器操作是8位二进制数的整体操作。,小练习,3.1 学习准备,01D05_Embed_136.jpg,(小提示:,3.1 学习准备,1)通过间接地址可以访问RAM空间的任意单元,这种操作也是8位的整体操作。,2)R2R7没有此功能。,小练习,3.1 学习准备,01D05_Embed_137.jpg,3.1 学习准备,表3-2 位寻址区的位
29、地址映象表,3.1 学习准备,(小提示:,1)通过位地址可用位寻址区单元中的某一位进行单独操作,这是51系列单片机特有的功能。,2)在表3-2中位地址还有另一种表示形式,即位编号。,3)位地址只能存放1位二进制数。,3.特殊功能寄存器(SFR),3.1 学习准备,表3-3 特殊功能寄存器地址映象表,3.1 学习准备,表3-3 特殊功能寄存器地址映象表,(小提示:,1)特殊功能寄存器的字节地址能被8整除,它的每一位有自己的位地址,也可以进行位操作。,2)特殊功能寄存器位地址编号以它的字节地址为最低位的位地址,其余依次类推。,3.1 学习准备,3)特殊功能寄存器的位地址有3种表示形式,即位地址、位
30、编号、位定义。,1)累加器ACC。,2)寄存器B。,3)程序状态字寄存器PSW。,3.1 学习准备,表3-4 PSW结构及含义表,Cy进位标志。累加器A在执行加/减法运算中,如果最高位有进位或借位,Cy就置1,否则清0,用于无符号数运算。另外,Cy还是位操作累加器,在指令中简写为C。,OV溢出标志。累加器A在执行加/减法运算中,如果最高位和次高位只有一个进位或借位,OV就置1,否则清0,用于有符号数的运算。当OV=1时,表示有符号数的加/减运算已超出+127128的范围。OV可用下式求得:,3.1 学习准备,AC进位标志辅助。当累加器执行加法运算时,低4位向高4位进位时置1,否则清0。AC为B
31、CD码加法运算的调整标志。,P奇偶标志。表示累加器A中“1”的个数的奇偶性。若A中“1”的个数为奇数,则P置1,否则清0。,F0、F1用户标志。与位寻址区的位地址功能相同。,RS1、RS0工作寄存器区选择位。工作寄存器区有4个,每次只有一个区当做工作寄存器用,通过RS1、RS0可以选择它们中的一个。,4)数据指针DPTR0、DPTR1。,小练习,3.1 学习准备,01D05_Embed_138.jpg,0 1 1 0 0 1 1 1,1 0 0 1 0 0 0 0,3.1 学习准备,1.51系列单片机汇编语言指令基本格式,1)标号。,标号以字母开头,由字母、数字和下画线组成字符串。,字符串的最
32、后必须有“:”。,系统的保留字不能作为标号,如程序状态字PSW等是不能作为标号使用的。,同一个程序中标号不可重复。,2)操作码。,3)操作数。,对不同功能的指令,操作数的个数是不同的,在03个之间。,书写时,操作码和操作数之间要留有空格。,3.1 学习准备,当有多个操作数时,操作数之间要用“,”隔开,前面的操作数称为目的操作数,后面的操作数称为源操作数。,(4)注释。,(小提示:,1)标号的本质是该指令在ROM空间存放的起始地址。,2)数据作为操作数时需在前面加“#”,以此将表示直接地址或位地址的数据区别开。,3)有时可以在某一条指令前添加“;”,系统编译时将不编译该指令,使其功能失效。,2.
33、内部RAM操作指令,1)内部RAM 8位操作指令。,跟我做1创建项目文件及源程序文件1)新建一个工作文件夹,在下面的操作中将所有有关文件都保存在该文件夹中。,01D05_Embed_88.,与位寻址区的位地址功能相同。,9)讲述Proteus,图2-7 命名并保存新建文件对话框,01D05_Embed_132.,2)单击图标,进入调试仿真界面。,01D05_Embed_204.,3)特殊功能寄存器的位地址有3种表示形式,即位地址、位编号、位定义。,图2-11 Project下拉菜单,图1-3所示是AT89S51单片机引脚排列图,它的DIP封装图如图1-1a所示。,1)将下列十进制数转换为二进制
34、和十六进制(汇编语言):100=。,01D05_Embed_161.,4)执行菜单命令FileNew,系统将打开一个名为Text1的新文件窗口,执行命令FileSave As 将出现如图2-7所示的对话框,,2)集成度高,有很高的可靠性,能在恶劣的环境下工作。,3.1 学习准备,01D05_Embed_139.jpg,(小提示:,1)工作寄存器相互间、Rn与Ri之间、R0与R1之间没有传送指令。,3.1 学习准备,2)#data(立即数)只能作为源操作数。,小练习,3.1 学习准备,01D05_Embed_140.jpg,2)内RAM位操作指令。,位置1指令,3.1 学习准备,位清0指令,位取
35、反指令,位传送指令,小练习,3.1 学习准备,01D05_Embed_141.jpg,(小提示:如何区分指令中的数据是direct还是bit?,3.1 学习准备,1)在MOV后面一般是direct,只有当指令中有操作数“C”时,才是bit。,2)在CLR、SETB、CPL操作码后面是bit。,小练习,3.1 学习准备,01D05_Embed_142.jpg,3)对特殊功能寄存器:累加器A和数据指针DPTR。,(小提示:,3.1 学习准备,1)8位清零和取反指令,只有对A操作的指令,没有对其他8位的操作数。,2)有1位的清零和取反指令。,小练习,3.1 学习准备,01D05_Embed_143.
36、jpg,小练习,3.1 学习准备,01D05_Embed_144.jpg,(小提示:,小练习,3.1 学习准备,01D05_Embed_145.jpg,1)将工作寄存器区设置为2区(要求两种方法)。,2)将累加器A中的数据传送到30H单元中(要求两种方法)。,3.1 学习准备,3)将内RAM 40H单元中内容传送到50H单元(要求两种方法)。,4)已知20H单元中内容是00FH,使其内容变化为07H(要求两种方法)。,当C51中的变量、常量等编译系统进行编译时,在单片机内部RAM中为其分配存储空间。,1.C51语言中的基本数据类型,3.1 学习准备,表3-5 C51语言的基本数据类型表,(小提
37、示:,1)变量定义的格式如下:,3.1 学习准备,2)数据类型转换。,自动类型转换规则:,强制类型转换格式如下:,2.C51新增的数据类型介绍,(1)bit,(小提示:,1)不能定义位指针。,2)不能定义位数组。,3)用“#pragram disable”说明的函数和用“using n”明确指定工作寄存器组的函数,不能返回bit类型的值。,(2)sbit,1)使用SFR的位地址:,3.1 学习准备,2)使用SFR的单元名称:,3)使用SFR的单元地址:,小练习,3.1 学习准备,01D05_Embed_146.jpg,(3)sfr,(4)sfr16,3.2 计划实施,跟我做1内部RAM模拟仿真
38、1)打开SAMPLE项目,新建汇编语言源程序名称为EX3_1,并保存,把上述内容作为源程序输入源程序窗口,如图3-6所示。,3.2 计划实施,图3-6 源程序窗口,2)执行“StartStop Debug Session”命令或单击图标,进入调试仿真界面(再次操作,将关闭调试窗口)。,3.2 计划实施,01D05_Embed_148.jpg,3.2 计划实施,01D05_Embed_149.jpg,3.2 计划实施,01D05_Embed_150.jpg,3.2 计划实施,01D05_Embed_151.jpg,3.2 计划实施,01D05_Embed_152.jpg,3.2 计划实施,图3
39、7 Keil C仿真界面,3.2 计划实施,01D05_Embed_154.jpg,(小提示:,3.2 计划实施,1)处于全速运行期间,不允许查看任何资源,也不接受其他命令,如果用户想终止程序的运行,就可以单击图标。,3.2 计划实施,01D05_Embed_155.jpg,2)对大多数指令来讲,“单步跟踪”与“单步运行”功能是相同的(只有子程序调用指令除外)。,3.2 计划实施,3)想从某句指令开始仿真,“运行到光标处”可以提高仿真速度,跳过不需要看的程序段。,3.2 计划实施,图3-8 程序模拟仿真结果,3.2 计划实施,图3-9 RAM数据编辑快捷菜单,(小提示:,3.2 计划实施,自
40、我练习1内部RAM模拟仿真,自我练习2内部RAM模拟仿真,跟我做2C51变量的模拟仿真观察,1)打开SAMPLE项目,新建汇编语言源程序名称为EX3_4,并保存,把上述内容作为源程序输入源程序窗口,如图3-10所示。,2)单击图标,进入调试仿真界面。,3.2 计划实施,01D05_Embed_158.jpg,3.2 计划实施,01D05_Embed_159.jpg,3.2 计划实施,01D05_Embed_160.jpg,3.2 计划实施,01D05_Embed_161.jpg,3)仿真运行。,3.2 计划实施,01D05_Embed_162.jpg,3.2 计划实施,图3-12 观察窗口的运
41、行结果,3.2 计划实施,01D05_Embed_164.jpg,(小提示:,3.2 计划实施,自我练习3C语言程序的模拟仿真,自我练习4自编汇编语言程序或C语言程序,并进行模拟仿真。,3.3 评价反馈,1)Keil,2)通过哪几种操作可以实现打开数据窗口?,3)如何选择观察程序存储器空间或内RAM空间?,4)常用模拟仿真调试的操作方式有哪几种?,5)单步运行与单步跟踪操作有何异同?,6)在调试过程中如何改写RAM空间的数据内容?,7)打开观察窗口的方法有哪几种?,8)在观察窗口中添加观察变量、修改变量值的方法是什么?,9)当在仿真过程中全速运行时,如何使之停止?在调试过程中,若想再从头开始,
42、则如何操作?,3.3 评价反馈,10)设初始时内部RAM中各单元的内容均为00H,特殊功能寄存器为复位后的值,在执行下列程序后,试写出单元内容发生变化的单元,并写出具体内容。,3.4 知识拓展 AT89S52单片机的内部RAM空间及操作,01D05_Embed_165.jpg,学习任务4 循环流水灯设计制作,学习任务描述,教学导航,4.1 学习准备,4.2 计划实施,4.3 评价反馈,4.4 知识拓展 AT89C2051单片机,学习任务描述,01D05_Embed_166.jpg,教学导航,01D05_Embed_167.jpg,教学导航,表格,4.1 学习准备,AT89S51单片机有4个8位
43、的并行I/O端口,即P0、P1、P2、P3。4个端口在其内部结构和性能上存在一些差异。,1.P0口,4.1 学习准备,图4-1 P0口一位逻辑结构图,1)作为输出口。,2)作为输入口。,4.1 学习准备,3)读修改写。,4.1 学习准备,图4-2 P0.0口加开关信号,(小提示:,1)读修改写操作本质上是一种输出操作。,4.1 学习准备,2)P0口的输入/输出操作,既可以进行8位整体操作,又可以通过位编号进行1位操作。,3)口的8位可以分开使用,分别用于输入和输出。,4)P1、P2、P3口具有上述一样的特性。,2.P1口,4.1 学习准备,图4-3 P1口1位逻辑结构图,小练习,4.1 学习准
44、备,01D05_Embed_171.jpg,(小提示:,3.P2口,4.1 学习准备,图4-4 P2口一位逻辑结构图,4.P3口,4.1 学习准备,01D05_Embed_173.jpg,4.1 学习准备,01D05_Embed_174.jpg,4.1 学习准备,01D05_Embed_175.jpg,4.1 学习准备,01D05_Embed_176.jpg,(小提示:,4.1 学习准备,1)P3口的每一位不同时具备“第二功能输出”和“第二功能输入”,只具备其中之一。,2)由于P3口第二功能的特殊性,所以应优先使用其他端口。,1.51系列单片机I/O口汇编语言操作,1)输出操作。,2)输入操作
45、3)读修改写操作。,小练习,4.1 学习准备,01D05_Embed_177.jpg,2.51系列单片机I/O口C语言操作,4.1 学习准备,最小硬件系统是指单片机正常工作所必须具备的硬件条件,包括电源电路、时钟电路、复位电路、程序存储器选择电路4部分。图4-6所示为AT89S51单片机的最小硬件系统。为了简化电路,在以后的电路中用右边的图形代替。,1)电源。,2)时钟电路。,4.1 学习准备,01D05_Embed_178.jpg,(小提示:,1)51系列单片机所有指令执行时间都是机器周期的整数倍,称为指令周期,分为1、2、4三种指令周期。,2)单片机的定时、延时时间也是以机器周期为基本
46、单位的。,4.1 学习准备,小练习,4.1 学习准备,01D05_Embed_179.jpg,3)复位电路。,4)程序存储器选择。,4.1 学习准备,01D05_Embed_180.jpg,(小提示:,4.1 学习准备,1)单片机应用系统不能正常工作(工作不正确除外),应首先检查最小硬件系统是否正确。,2)第一步检查电源和;第二步检查RST引脚,引脚电压应为0;第三步检查时钟引脚,当其正常工作时,可用示波器观察到波形,否则不正常。,4.1 学习准备,01D05_Embed_181.jpg,1.汇编语言程序的一般结构,4.1 学习准备,1)ORG 0000H ;汇编程序开头,2);中断入口地址区
47、3)SETUP:,4)MAIN:,5);子程序和中断服务程序区,6)END ;汇编程序结束,4.1 学习准备,图4-7 子程序调用过程示意图,2.C51程序的一般结构,(小提示:,4.1 学习准备,1)使用汇编语言或C语言编写程序都应满足程序结构的要求,应根据程序的功能特点分别嵌入到一般结构中,便于阅读分析,便于内容扩展。,2)汇编语言的主程序和C语言的主函数中的内容应简洁,主要是一些功能性的子程序或子函数调用,一般不放具体的功能处理程序。,3)子程序和子函数嵌套的层数与堆栈设置的深度有关,需要设置堆栈,避免堆栈溢出破坏其他数据。,(小提示:,1)由于C51变量是区分大小写的,所以在使用时应
48、与文件定义的相一致。,2)文件对P0P3口的位没有进行定义,需要在程序中自己定义。,4.1 学习准备,3)头文件引用有如下两种方式。,4.2 计划实施,跟我做1单个LED灯的闪烁控制,1)LED驱动电路设计。,4.2 计划实施,图4-8 LED驱动电路图,2)LED闪烁驱动程序设计。,用汇编语言编写程序如下:,用C语言编写程序如下:,3)在Keil C环境中,将程序4-1作为源程序文件,建立项目文件,编写程序文件,并编译输出目标文件(其具体步骤和方法见学习任务2跟我做1、2)。,4.2 计划实施,4)在Proteus ISIS中设计电原理图(其具体步骤和方法见学习任务2跟我做3),绘制的电原理
49、图如图4-9所示。,4.2 计划实施,图4-9 绘制单个LED原理图,5)在Proteus ISIS双机图4-9中的单片机,将目标文件下载到单片机内部,在Proteus的仿真运行工具栏中,按运行按钮,启动程序运行;,4.2 计划实施,按停止按钮,停止程序运行。,(小提示:,1)可以修改延时程序的参数,观察运行效果。,2)运行时,P1.0引脚红、蓝交替变化,红表示高电平,蓝表示低电平。,3)对程序进行任何改动后,都必须重新编译,Proteus会自动跟踪,不必再次下载。,自我练习1LED循环流水灯的设计制作,1)在Proteus ISIS中,设计一个如图4-10所示的流水灯电路,要求LED驱动电路
50、采用总线连接方式布线。,4.2 计划实施,图4-10 P0口控制的8个LED灯,2)要求8个LED小灯的工作方式为依次亮、灭,反复循环。,3)在Keil C环境中编写、编译上述程序,并产生目标程序。,4.2 计划实施,4)软件、硬件联合调试。,5)按照图4-10所示的电路原理,将器件焊接装配在训练板上,检查焊接装配的质量。,6)自己设计8个小灯工作方式,并设计相应的控制程序,在KeiL C环境中编译通过后,模拟仿真或下载到实验板上,观察运行效果。,4.3 评价反馈,1)无条件转移指令“LJMP,2)当对P0P3口作为输入/输出口使用时有什么要求?,3)在图4-10所示电路中,去掉P0口的上拉电






