《单片机原理与应用项目二让单片机动起来.ppt》由会员分享,可在线阅读,更多相关《单片机原理与应用项目二让单片机动起来.ppt(138页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目二项目二 让单片机动起来让单片机动起来 单片机原理与应用项目二让单片机动起来 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望项目二项目二 让单片机动起来让单片机动起来 任务任务1 点亮一个发光二极管点亮一个发光二极管 1任务要求任务要求单片机点亮一个发光二极管。2硬件电路设计硬件电路设计1)电路图电路图如图2-1所示。2.1 项目基本技能项目基本技能项目二项目二 让单片机动起来让单片机动起来 图2-1 点亮一个发光二极管电路图项目二项目二 让单片机动起来让单片
2、机动起来 2)电路图说明发光二极管简称LED,图2-2所示是发光二极管实物图,其图形符号如图2-3所示。项目二项目二 让单片机动起来让单片机动起来 图2-2 发光二极管实物图 图2-3 发光二极管图形符号项目二项目二 让单片机动起来让单片机动起来 发光二极管与普通二极管一样,有两只引脚,“+”端为正极,也称阳极,“-”端为负极,也称阴极;从外观上看,发光二极管的正极引脚比较长。发光二极管内部由一个PN结组成,具有单向导电性,正向导通,反向截止,其导通开启电压值比普通二极管高,一般为1.2 V2.5 V。在发光二极管的PN结上加正向电压时,空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的
3、形式出现,因而发光;当发光二极管反向截止时,二极管灭。制作发光二极管时,使用不同材料,可以发出不同颜色的光。发光二极管的发光颜色有红、黄、绿、蓝等。项目二项目二 让单片机动起来让单片机动起来 二极管的点亮电流为5 mA10 mA,因此二极管和单片机连接时,需要串接一个限流电阻。项目二项目二 让单片机动起来让单片机动起来 3软件设计软件设计1)编写汇编语言代码用汇编语言编写的指令代码如下:;程序名:A2_1.ASM;功能:P1.0控制LED灯ORG 0000HMAIN:CLR P1.0 ;P1.0置低电平,点亮D1SJMP$END项目二项目二 让单片机动起来让单片机动起来 指令“ORG”、“EN
4、D”表示程序的开始与结束,不是可执行的指令,故称为伪指令。汇编语言源程序名的格式*.ASM,其中扩展名为ASM。2)编写C语言代码用C语言编写的指令代码如下:项目二项目二 让单片机动起来让单片机动起来/程序名:C2_1.C/功能:P1.0控制LED灯#include /包含reg51.h头文件sbit led=P10;void main()/主函数 led=0;/点亮D while(1);/无限循环项目二项目二 让单片机动起来让单片机动起来 C语言源程序名为*.C,扩展名必须为.C。4.电路板制作电路板制作1)准备器件按表2-1所列清单准备元器件。项目二项目二 让单片机动起来让单片机动起来 表
5、表2-1 点亮一个发光二极管控制电路的元器件清单点亮一个发光二极管控制电路的元器件清单项目二项目二 让单片机动起来让单片机动起来 2)用面包板连接电路按图2-1所示连接电路,面包板连接的实物如图2-4所示。项目二项目二 让单片机动起来让单片机动起来 图2-4 点亮一个发光二极管电路板项目二项目二 让单片机动起来让单片机动起来 微动开关电路如图2-5所示。图2-5 微动开关电路图项目二项目二 让单片机动起来让单片机动起来 3)编译或汇编源程序,生成目标代码文件由于单片机只能识别“0”和“1”代码,由“0”和“1”代码组成的二进制文件或十六进制文件称为目标文件。Keil环境下,可将C语言源程序编译
6、生成目标代码文件,或将汇编语言源程序编译生成目标代码文件,具体操作如下。项目二项目二 让单片机动起来让单片机动起来 步骤一:启动Keil软件。打开电脑,在桌面上双击 uVision图标,出现如图2-6所示窗口,主要由工程项目管理窗口、源程序编辑窗口和输出窗口三部分组成。项目二项目二 让单片机动起来让单片机动起来 图2-6 Keil软件工作界面项目二项目二 让单片机动起来让单片机动起来 步骤二:新建工程项目。点击Keil软件工作界面的“Project”菜单,在弹出的下拉菜单中选择“New Project”选项,新建一个工程,如图2-7所示。项目二项目二 让单片机动起来让单片机动起来 图2-7 新
7、建工程项目项目二项目二 让单片机动起来让单片机动起来 弹出如图2-8所示对话框,选择要保存的路径,并输入工程的名字(工程命名与文件命名类似,不需输入后缀,默认工程后缀为.uv2),然后单击“保存”按钮即可。项目二项目二 让单片机动起来让单片机动起来 图2-8 工程路径及文件名设置项目二项目二 让单片机动起来让单片机动起来 这时将弹出如图2-9所示对话框,选择单片机的型号。根据所使用的单片机进行选择,Keil几乎支持所有C51核的单片机,本书使用的单片机为STC89C51RC,完全兼容AT89C51单片机,因此在Keil软件里可以选择Atmel公司的AT89C51单片机。项目二项目二 让单片机动
8、起来让单片机动起来 图2-9 选择单片机器件类型项目二项目二 让单片机动起来让单片机动起来 首先选择Atmel公司,然后单击左边的“”号选择具体的单片机型号“AT89C51”,右边有对这个单片机的基本说明,如图2-10所示。然后点击“确定”,在随后弹出的对话框中点击“否(N)”即可。项目二项目二 让单片机动起来让单片机动起来 图2-10 选择单片机型号项目二项目二 让单片机动起来让单片机动起来 也可以用本书光盘里提供的UV2.CDB替换原文件,就可以在Keil中出现STC系列单片机,如图2-11所示。项目二项目二 让单片机动起来让单片机动起来 图2-11 STC单片机项目二项目二 让单片机动起
9、来让单片机动起来 步骤三:设置工程的软硬件环境。进行选项设置,将鼠标指向“Target 1”并单击鼠标右键,从弹出的右键菜单中选择“Options for Target Target 1”选项,如图2-12所示。项目二项目二 让单片机动起来让单片机动起来 图2-12 选择“Options for Target”选项项目二项目二 让单片机动起来让单片机动起来 从弹出的“Options for Target Target 1”对话框中选择“Target Output”标签栏,勾选“Create HEX File”前面的复选框,如图2-13所示。项目二项目二 让单片机动起来让单片机动起来 图2-13
10、 生成HEX文件项目二项目二 让单片机动起来让单片机动起来 步骤四:新建文件。点击Keil软件工作界面的“File”菜单,在弹出的下拉菜单中选择“New”选项,新建一个文件,如图2-14所示。然后点击“Save As”另存到工程文件目录,如图2-15所示。如果是汇编语言文件,文件扩展名用“.asm”,如图2-16所示;如果是C语言文件,扩展名需要用“.C”,如图2-17所示。项目二项目二 让单片机动起来让单片机动起来 图2-14 新建文件项目二项目二 让单片机动起来让单片机动起来 图2-15 保存文件项目二项目二 让单片机动起来让单片机动起来 图2-16 保存为汇编语言文件 项目二项目二 让单
11、片机动起来让单片机动起来 图2-17 保存为C语言文件 项目二项目二 让单片机动起来让单片机动起来 步骤五:添加文件到工程文件中。如图2-18、2-19所示,添加新建的文件到工程文件中去。这样做有个好处,就是在输入程序时,Keil C51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。项目二项目二 让单片机动起来让单片机动起来 图2-18 添加文件1项目二项目二 让单片机动起来让单片机动起来 图2-19 添加文件2项目二项目二 让单片机动起来让单片机动起来 步骤六:生成目标文件。汇编语言源程序代码举例:打开刚添加的ASM文件,输入用户程序,如图2-2
12、0所示。项目二项目二 让单片机动起来让单片机动起来 图2-20 汇编语言关键字的识别项目二项目二 让单片机动起来让单片机动起来 点击图标,将编写好的ASM语言代码自动生成机器代码,机器代码的文件名为led.hex,如图2-21所示。项目二项目二 让单片机动起来让单片机动起来 图2-21 编译生成HEX文件1项目二项目二 让单片机动起来让单片机动起来 C语言源程序代码举例:打开刚添加的C文件,输入用户程序,如图2-22所示。项目二项目二 让单片机动起来让单片机动起来 图2-22 C语言关键字的识别项目二项目二 让单片机动起来让单片机动起来 点击图标,将编写好的C语言代码自动生成机器代码,机器代码
13、的文件名为led.hex,如图2-23所示。项目二项目二 让单片机动起来让单片机动起来 图2-23 编译生成HEX文件2项目二项目二 让单片机动起来让单片机动起来 4)烧录程序(1)硬件连接。参见项目一任务3,用下载器连接。连接1:单片机RXD(P3.0)RS-232转换器PC/电脑TXD(COM Port Pin3);连接2:单片机TXD(P3.1)RS-232转换器PC/电脑RXD(COM Port Pin2);连接3:单片机GNDPC/电脑GND(COM Port Pin5)。项目二项目二 让单片机动起来让单片机动起来(2)操作步骤。使用STC-ISP下载工具(软件),点击桌面图标,运行
14、STC-ISP软件。步骤一:选择所使用的单片机型号,如STC89C51RC 等,如图2-24所示。在MCU Type栏下选单片机,如选择STC89C51RC。项目二项目二 让单片机动起来让单片机动起来 图2-24 单片机型号的选择项目二项目二 让单片机动起来让单片机动起来 步骤二:根据9针串口数据线的连接选择COM端口,选好波特率,如图2-25 所示。项目二项目二 让单片机动起来让单片机动起来 图2-25 COM端口的选择项目二项目二 让单片机动起来让单片机动起来 步骤三:确认硬件连接无误后,如图2-26 所示点击“打开文件”,并在对话框内找到要下载的LED.HEX文件。项目二项目二 让单片机
15、动起来让单片机动起来 图2-26 打开要下载的HEX文件项目二项目二 让单片机动起来让单片机动起来 步骤四:设置是否双倍速,若是双倍速选中Double speed即可。STC89C51RC/RD+系列可以反复设置双倍速/单倍速。单片机时钟振荡器增益降一半选1/2 gain;选full gain(全增益)为正常状态,如图2-27所示。项目二项目二 让单片机动起来让单片机动起来 图2-27 倍速的选择项目二项目二 让单片机动起来让单片机动起来 步骤五:完成以上步骤,就可以点击“Download/下载”,如图2-28所示。项目二项目二 让单片机动起来让单片机动起来 图2-28 点击Download
16、按钮下载程序项目二项目二 让单片机动起来让单片机动起来 步骤六:点击“Download/下载”后,单片机立即上电复位,这样LED.HEX文件就写入到单片机内。可重复执行步骤五,也可选择“Re-Download/重复下载”按钮。下载完成后的界面如图2-29所示。项目二项目二 让单片机动起来让单片机动起来 图2-29 下载完成后的界面项目二项目二 让单片机动起来让单片机动起来 接通电路板电源,让单片机工作起来,可观察到LED灯点亮。选择“Download/下载”按钮,单片机首先彻底断电,然后选择“Download/下载”按钮,单片机再上电复位。项目二项目二 让单片机动起来让单片机动起来 任务任务2
17、 在在Keil环境中仿真调试环境中仿真调试 1.任务要求模拟仿真是纯软件仿真,在Keil环境中,依靠计算机模拟单片机的实际工作环境来验证单片机程序是否正确。下面以任务1中的程序为例进行模拟仿真。项目二项目二 让单片机动起来让单片机动起来 2.操作步骤步骤一:编译工程文件,输出窗口中没有错误提示,如图2-30所示,表明该工程文件可以执行。项目二项目二 让单片机动起来让单片机动起来 图2-30 编译输出框项目二项目二 让单片机动起来让单片机动起来 步骤二:查看目标选项,在Debug调试栏中,设为Use Simulator软件仿真,如图2-31所示,系统一般默认为软件仿真。项目二项目二 让单片机动起
18、来让单片机动起来 图2-31 选择调试目标为软件仿真器Simulator项目二项目二 让单片机动起来让单片机动起来 步骤三:在Debug菜单中选择“Start/Stop Debug Session”菜单项,如图2-32所示,开始调试。黄色箭头出现在主程序的第一行,如图2-33所示。项目二项目二 让单片机动起来让单片机动起来 图2-32 选择调试运行选项项目二项目二 让单片机动起来让单片机动起来 图2-33 程序进入调试状态项目二项目二 让单片机动起来让单片机动起来 步骤四:在Peripherals菜单中选择“I/O-Ports,Port 1”菜单项,如图2-34所示。P1口默认输出为0 xFF
19、,即都为高电平,如图2-35所示。项目二项目二 让单片机动起来让单片机动起来 图2-34 设置Port 1口项目二项目二 让单片机动起来让单片机动起来 图2-35 设置Port 1状态项目二项目二 让单片机动起来让单片机动起来 步骤五:按F11单步调试,如图2-36所示。程序执行“led=0”后,对应的P1.0口变为低电平,如图2-37所示,实现点亮发光二极管的目的。项目二项目二 让单片机动起来让单片机动起来 图2-36 单步调试项目二项目二 让单片机动起来让单片机动起来 图2-37 P1.0口变为低电平项目二项目二 让单片机动起来让单片机动起来 知识点知识点1 单片机的最小系统单片机的最小系
20、统 单片机的最小系统组成结构如图2-38所示。2.2 项目基本知识项目基本知识项目二项目二 让单片机动起来让单片机动起来 图2-38 单片机的最小系统项目二项目二 让单片机动起来让单片机动起来 1.概述概述单片机的工作就是执行用户程序、指挥各部分硬件完成既定任务。如果一个单片机芯片没有烧写用户程序,显然它就不能工作。可是,一个烧写了用户程序的单片机芯片,给它上电后就能工作吗?也不能。原因是除了单片机之外,单片机能够工作的最小电路还包括时钟和复位电路,通常称为单片机的最小系统知识体系结构。项目二项目二 让单片机动起来让单片机动起来 时钟电路为单片机工作提供基本时钟,复位电路用于将单片机内部各电路
21、的状态恢复到初始值。图2-38中包含了典型的单片机的最小系统电路。项目二项目二 让单片机动起来让单片机动起来 2单片机时钟电路单片机时钟电路单片机是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。时钟电路用于产生单片机工作所需要的时钟信号。项目二项目二 让单片机动起来让单片机动起来 1)时钟信号的产生在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,输出端引脚为XTAL2。只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激振荡器,如图2-39所示。项目二项目二 让单片机动起来让单片
22、机动起来 图2-39 时钟振荡电路 项目二项目二 让单片机动起来让单片机动起来 一般地,电容C1和C2取30 pF左右,晶体振荡器(简称晶振),频率范围是1.2 MHz12 MHz。晶体振荡频率越高,系统的时钟频率也越高,单片机运行速度也就越快。通常情况下,使用振荡频率为6 MHz或12 MHz的晶振,如果系统中使用了单片机的串行口通信,则一般采用振荡频率为11.0592 MHz的晶振。项目二项目二 让单片机动起来让单片机动起来 2)时序关于MCS-51系列单片机的时序概念有四个,可用定时单位来说明,从小到大依次是:节拍、状态、机器周期和指令周期,如图2-40所示,下面分别加以说明。项目二项目
23、二 让单片机动起来让单片机动起来 图2-40 MCS-51系列单片机时序图项目二项目二 让单片机动起来让单片机动起来(1)节拍。把振荡脉冲的周期定义为节拍,用P表示,晶振的振荡频率用fosc表示。(2)状态。振荡脉冲fosc经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示。一个状态包含两个节拍,前半周期对应的节拍为P1,后半周期对应的节拍为P2。(3)机器周期。MCS-51系列单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为六个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。项目二项目二 让单片机动起来让单片机动起来 当振荡脉冲频率为12 MHz时
24、,一个机器周期为1 s;当振荡脉冲频率为6 MHz时,一个机器周期为2 s。(4)指令周期。指令周期是最大的定时单位,执行一条指令所需要的时间称为指令周期,一般由若干个机器周期组成。不同的指令,所需要的机器周期数也不相同。通常,将包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令,依此类推。项目二项目二 让单片机动起来让单片机动起来 3单片机复位电路单片机复位电路无论单片机是在刚开始接上电源时,还是断电后或者是发生故障后都要复位。单片机复位是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从程序存储器的
25、第一个单元取指令执行。项目二项目二 让单片机动起来让单片机动起来 单片机复位条件是:必须在RST(第9引脚)加上持续两个机器周期(即24个振荡周期)以上的高电平。若时钟频率为12 MHz,每个机器周期为1 s,则需要加上2 s以上时间的高电平,单片机常见的复位电路如图2-41所示。项目二项目二 让单片机动起来让单片机动起来(a)上电复位电路 (b)按键复位电路图2-41 单片机常见的复位电路项目二项目二 让单片机动起来让单片机动起来 图2-41(a)为上电复位电路。它利用电容充电来实现复位,在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。只要保证RST为高电平
26、的时间大于两个机器周期,便能正常复位。图2-41(b)为按键复位电路。该电路除具有上电复位功能外,还可以按图中的RESET键实现复位,此时电源VCC经两个电阻分压,在RST端产生一个复位高电平。复位后,单片机内部各专用寄存器状态如表2-2所示。项目二项目二 让单片机动起来让单片机动起来 表表2-2 单片机复位状态单片机复位状态其中,*表示无关位。项目二项目二 让单片机动起来让单片机动起来 知识点知识点2 计算机中数的表示计算机中数的表示 计算机只能识别和处理数字信息,数字是以二进制数来表示的,它易于物理实现。这样,资料的存储、传送和处理简单可靠;运算规则简单,使得逻辑电路的设计、分析、综合方便
27、,使计算具有逻辑性。项目二项目二 让单片机动起来让单片机动起来 1.数制数制所谓数制,就是人们利用符号计数的一种科学方法。数制有很多种,计算机常用的数制有二进制、十六进制和十进制三种。一个数值,可以用不同数制表示。在日常生活中,人们经常使用十进制数,而在计算机的应用中,主要使用二进制数,但二进制数由一长串0和1组成,位数太多,不便于书写和记忆,因此我们在编程时主要使用十六进制数。项目二项目二 让单片机动起来让单片机动起来 1)十进制(Decimal)十进制数共有10个数字符号,分别为0、1、2、3、4、5、6、7、8、9,这10个数字符号又称数码。十进制数的主要特点如下:(1)有09共10个数
28、码。(2)基数为10,逢十进一。(3)十进制数用D表示。项目二项目二 让单片机动起来让单片机动起来 任何一个十进制数都可以按权展开方式表示,表示方法如下所示。D=An-110n-1+A2102+A1101+A0100+A-110-1+A-210-2+其中An表示十进制数的第n位;10n表示十进制数的第n位的权。例如十进制数35可表示为35D=3101+5100项目二项目二 让单片机动起来让单片机动起来 2)二进制数(Binary)二进制数只有两个数码,即0和1,其特点是逢二进一。二进制数用B表示。同理,任何一个二进制数都可以按权展开方式表示,表示方法如下所示。D=An-12n-1+A222+A
29、121+A020+A-12-1+A-22-2+其中An为二进制数的第n位;2n表示十进制数的第n位的权。例如二进制数1011可表示为1011B=123+022+121+120项目二项目二 让单片机动起来让单片机动起来 3)十六进制数(Hexadecimal)十六进制数共有16个数码,即0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F,其特点是逢十六进一。十六进制数用H表示。十六进制数也可以按权展开方式表示,方法与十进制数类似,表示方法如下所示。项目二项目二 让单片机动起来让单片机动起来 D=An-116n-1+A2162+A1161+A0160+A-116-1+A-216-2+其
30、中An为十六进制数的第n位;16n表示十进制数的第n位的权。例如十六进制数17可表示为17H=1161+7160项目二项目二 让单片机动起来让单片机动起来 2数制转换1)二进制数与十进制数之间的转换(1)二进制数转换成十进制数。要将二进制数转换成十进制数,只要将二进制数按权展开相加即可。例如1011B=123+022+121+120=11D项目二项目二 让单片机动起来让单片机动起来(2)十进制转换成二进制。将十进制数转换成二进制数通常采用“除2取余倒记法”,具体方法是先用十进制数连续除以2,直到所得商小于2为止,然后再将各次所得的余数按逆序写成二进制数形式。例如,将15转换为二进制数15D=(
31、1111)B,转换过程为项目二项目二 让单片机动起来让单片机动起来“除2取余倒记法”适用于十进制数的整数形式转换成二进制的整数形式,若十进制数为小数,则采用“乘2取整顺记法”。例如,将0.75转换为二进制数,转换过程为0.752=1.5的取整部分为1;1.5去除整数部分后为0.5,而0.52=1.0,则0.75D=0.11B。项目二项目二 让单片机动起来让单片机动起来 2)十六进制与十进制之间的转换(1)十六进制数转换成十进制数。要将十六进制数转换成十进制数,只要将十六进制数按权展开后相加即可。例如15H=1161+5160=21D项目二项目二 让单片机动起来让单片机动起来(2)十进制数转换成
32、十六进制数。将十进制数转换成十六进制数通常采用“除16取余倒记法”,具体方法是先用十进制数连续除以16,直到所得商小于16为止,然后再将各次所得的余数按逆序写成十六进制。例如,将35D转换为十六进制数,35D=23H。转换过程为项目二项目二 让单片机动起来让单片机动起来“除16取余倒记法”适用于十进制的整数形式转换成十六进制数的整数形式,若十进制数为小数,则采用“乘16取整顺记法”。例如,将0.625转换成十六进制数,转换过程为0.62516=0AH,取0A的整数部分为A,则0.625D=0.AH。项目二项目二 让单片机动起来让单片机动起来 3)十六进制与二进制之间的转换(1)二进制数转换成十
33、六进制数。将二进制数转换成十六进制数通常采用“四合一法”,方法如下所示。整数部分从二进制的低位(即小数点左侧)开始,每4位作为一组划分整数部分,不足四位左补0。小数部分从二进制高位(即小数点右侧)开始,每4位作为一组划分整数部分,不足四位右补0。项目二项目二 让单片机动起来让单片机动起来 例如,将101.11B转换成十六进制数,转换过程为 0101.1100 5 C则101.11B=5.CH。项目二项目二 让单片机动起来让单片机动起来(2)十六进制数转换成二进制数。将十六进制数转换成二进制数通常采用“一分为四法”,方法如下所示。十六进制数的整数部分和小数部分的每1位均用4位二进制数表示,然后再
34、删除整数部分最左侧和小数部分最右侧的0。例如,将3A.5H转换成二进制数,转换过程为 3 A .5 0011 1010 0101项目二项目二 让单片机动起来让单片机动起来 3.有符号数表示方法有符号数表示方法1)机器数机器只认识二进制数0、1。这是因为,电路状态常有两个,如通、断;高电平、低电平;可用0、1表示。这种0、1、0、11在机器中的表现形式称为机器数,一般为8位。无符号数:00000000B 11111111B即00HFFH 有符号数:+1010110B、-1101001B 机器数机器数项目二项目二 让单片机动起来让单片机动起来 2)符号位和数值位计算机中通常都是用最高位来表示一个数
35、的符号,并且分别用“0”和“1”表示正和负。有符号数有三种表示方法:原码、反码和补码。(1)原码(Primary Code)。正数的原码与原来的数相同,负数的原码符号位“置1”,数值位不变。例:+1010110B原码为01010110B,-1101001B原码为11101001B。项目二项目二 让单片机动起来让单片机动起来(2)反码(Diminished Radix Complement)。正数的反码与原来的数相同,负数的反码符号位“置1”,数值位按位取反得到。例:+1010110B反码为01010110B,-1101001B反码为10010110B。项目二项目二 让单片机动起来让单片机动起来
36、(3)补码(Complementary Code)。正数的补码与原来的数相同,负数的补码由它的反码加1后得到,符号位“置1”。例:+1010110B补码为01010110B,-1101001B补码为10010111B。项目二项目二 让单片机动起来让单片机动起来 4.BCD码码(Binary Coded Decimal Code)人们习惯上用十进制数通过计算机输入输出数据,而计算机需要用二进制数进行分析计算,因此需要计算机将十进制数转换成二进制数。一位十进制数用四位二进制数表示的代码称为BCD码,或叫二十进制数。用标识符 BCD表示。BCD码与二进制数不能直接转换,一般先转换成十进制数,再转成二
37、进制数。0100 0011B=67D=0110 0111BCD注意:不能将BCD码看成是二进制数。项目二项目二 让单片机动起来让单片机动起来 5.位与字节的含义位与字节的含义“0”和“1”可以表示一个开关的“闭”与“合”,也可表示一根导线电位的“高”与“低”两种状态。在单片机中常用它描述数据状态的一个二进制“位”,而一个数据存储单元有8位,也称为一个“字节”,存储器是由若干个8位单元构成。在进行硬件电路设计时,人们也把单片机的一条数据线称为一“位”。项目二项目二 让单片机动起来让单片机动起来 任务任务3 点亮指定的点亮指定的LED灯灯 1.任务要求单片机的P1端口连接8个LED灯,控制D1、D
38、3、D5、D7点亮,D2、D4、D6、D8熄灭。2.3 技技 能能 拓拓 展展项目二项目二 让单片机动起来让单片机动起来 2.硬件电路设计1)电路图电路图如图2-42所示。项目二项目二 让单片机动起来让单片机动起来 图2-42 LED灯控制原理图项目二项目二 让单片机动起来让单片机动起来 3软件设计软件设计1)设计方法P1口作为输出端口,对应的状态如表2-3所示。项目二项目二 让单片机动起来让单片机动起来 表表2-3 P1口各引脚的值口各引脚的值项目二项目二 让单片机动起来让单片机动起来 2)指令代码(1)编写汇编语言代码。用汇编语言编写的指令代码如下:;程序名:A2-2.ASM:;功能:LE
39、D灯的控制ORG 0000HMAIN:MOV P1,#55H ;P1=01010101BSJMP$;原地踏步项目二项目二 让单片机动起来让单片机动起来 在任务1中仅对P1端口的P1.0 引脚进行操作,采用位操作的方式。任务3同时对8个引脚进行操作,采用按字节操作的方式。程序设计时,根据控制引脚个数的多少可灵活采用按位或按字节方式。项目二项目二 让单片机动起来让单片机动起来(2)编写C语言代码。用C语言编写的指令代码如下:/程序名为:C2_2.C/程序功能:LED灯的控制#include void main()/主函数P1=0 x55;/设置P1=01010101B while(1);/无限循环
40、 项目二项目二 让单片机动起来让单片机动起来 0 x55表示55H,在C语言中用十六进制数来表示。4.电路板制作电路板制作(1)准备器件。按表2-4清单准备元器件。项目二项目二 让单片机动起来让单片机动起来 表表2-4 LED控制电路的元器件清单控制电路的元器件清单项目二项目二 让单片机动起来让单片机动起来(2)编译或汇编源程序,生成目标代码文件,将目标代码烧录到芯片,参照图2-42,用面包板搭接电路,如图2-43所示。接通电源,可观察到LED灯的显示效果,其效果与本任务的要求吻合。项目二项目二 让单片机动起来让单片机动起来 图2-43 点亮指定的LED灯电路板项目二项目二 让单片机动起来让单
41、片机动起来 问:单片机是如何工作的?答:单片机的工作过程就是执行程序的过程,即逐条执行指令的过程。计算机每执行一条指令都可分为三个阶段进行,即取指令分析指令执行指令。取指令:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。2.4 互互 动动 环环 节节项目二项目二 让单片机动起来让单片机动起来 分析指令:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。计算机执行程序的过程就是逐条指令地重复上述操作的过程,直至结束或遇到等待指令。项目二项目二 让单片机动起来让单片机动起来 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入
42、接口电路和数据总线送入存储器,然后逐条取出执行。单片机中的程序一般事先都已固化在片内或片外程序存储器中,因而一开机即可执行指令。下面我们将举个实例来说明指令的执行过程。开机时,程序计数器PC变为0000H,然后单片机在时序电路的作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令)和执行指令(分析和执行指令)的循环过程。项目二项目二 让单片机动起来让单片机动起来 例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器。程序存储器0000H单元中已存放74H,0001H单元中已存放E0H。当单片机开始运行时,首先是
43、进入取指令阶段,简称取指阶段,其次序是:程序计数器PC的内容(这时是0000H)送到地址寄存器;程序计数器PC的内容自动加1(变为0001H);项目二项目二 让单片机动起来让单片机动起来 地址寄存器的内容(0000H)通过内部地址总线送到存储器,经地址译码电路,使程序存储器地址为0000H的单元被选中;CPU使读控制线有效;在读命令控制下选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。项目二项目二 让单片机动起来让单片机动起来 由于本次进入指令寄存器中的内容是74H(操作码),译码
44、器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数(E0H)是在程序存储器的0001H单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即需要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。项目二项目二 让单片机动起来让单片机动起来 指令译码器结合时序部件,产生74H操作码使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数据经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一个取指阶段。这个过程
45、一直重复下去,直至收到暂停指令或循环等待指令时暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。项目二项目二 让单片机动起来让单片机动起来 知识回顾与项目小结知识回顾与项目小结本项目从任务入手介绍单片机开发过程,电源、时钟电路、复位电路是单片机的最小应用系统必不可少的组成部分,建立了单片机从外部到内部、从直观到抽象的认识过程,为后面章节的学习打下硬件基础。项目二项目二 让单片机动起来让单片机动起来 1.填空题(1)单片机应用系统是由 和 组成的。(2)在进行单片机应用系统设计时,除了电源和地引脚外,、引脚信号必须连接相应电路。(3)MCS-51系列单片机的内部存储器主要有两个物理存储
46、空间,即 、。(4)MCS-51系列单片机的应用程序一般存放在 中。2.5 习习 题题项目二项目二 让单片机动起来让单片机动起来(5)89C51单片机具有 个管脚,是 位的单片机,其内部是由具有 和 功能的CPU、B的RAM、B的EEPROM、个8位的并行I/O口、一个串口、时钟电路等部分构成的。(6)单片机常用两种复位方式,即 复位和手动复位。复位后,PC=。项目二项目二 让单片机动起来让单片机动起来(7)完成不同数制间的转换:(10100101)B=()D;(11000011)B=()H;(01010111)BCD=()D;(-5)补=()B。2.设计题用单片机的P2口控制8个(D1D8)LED灯,进行软硬件设计,点亮D1、D2、D7、D8灯。