![单片机应用与接口技术课件_第1页](http://file4.renrendoc.com/view/b243e5ef26c9dc57390600a8d857c0f0/b243e5ef26c9dc57390600a8d857c0f01.gif)
![单片机应用与接口技术课件_第2页](http://file4.renrendoc.com/view/b243e5ef26c9dc57390600a8d857c0f0/b243e5ef26c9dc57390600a8d857c0f02.gif)
![单片机应用与接口技术课件_第3页](http://file4.renrendoc.com/view/b243e5ef26c9dc57390600a8d857c0f0/b243e5ef26c9dc57390600a8d857c0f03.gif)
![单片机应用与接口技术课件_第4页](http://file4.renrendoc.com/view/b243e5ef26c9dc57390600a8d857c0f0/b243e5ef26c9dc57390600a8d857c0f04.gif)
![单片机应用与接口技术课件_第5页](http://file4.renrendoc.com/view/b243e5ef26c9dc57390600a8d857c0f0/b243e5ef26c9dc57390600a8d857c0f05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机应用与接口技术周坚 等编著目录绪 论0180C51单片机软件实验环境的建立02认识80C51单片机的I/O口0480C51单片机的中断系统0580C51单片机硬件实验环境的建立03目录80C51单片机的指令系统0780C51程序设计初步08模 拟 量 转 换 接 口10显 示 接 口0980C51单片机的定时器/计数器06目录实时钟芯片及其应用13LED点阵屏及其应用141112液晶显示屏及其应用15键 盘 接 口11I2C串行接口总线12单片机应用与接口技术绪 论绪 论单片机简介“单片机”名称的由来从计算机主板看起运算器控制器存储器输入/输出接口总线单片机将这些部分集中到一块芯片中绪
2、论单片机简介不论计算机复杂程度如何,它总是由运算器,控制器,存储器,输入/输出接口,总线这五个部分组成通常运算器和控制器被做成一块芯片,也就是CPU(中央处理器)在计算机主板上,内存条和BIOS芯片是存储器,键盘、鼠标接口和25针打印机接口就是输入/输出设备,而总线则被设计在主板上,用于主板上各个部件之间的电气连接在一些应用场合,人们不需要计算机完成十分复杂的运算,但却希望计算机小巧,可靠,价格低。人们就把组成计算机的这5个部分全部集成到一块芯片上,也说是一块芯片就能构成一个独立的计算机,在当时的技术条件下,这是一件了不起的事情,于是人们就用这个特征来为之命名,称为“单片机”,这就是“单片机”
3、名称的由来绪 论常见的单片机品种180C51及其兼容系列(1)80C51基本系列(2)80C51兼容系列89S52、STC89系列(3)80C51扩展系列STC12系列、菲利普LPC系列、C8051F系列绪 论计算机中数据的表示按进位的原则进行计数,称为进位计数制,简称“数制”。数制有多种,在计算机中常使用的有十进制、二进制和十六进制1十进制数按“逢十进一”的原则进行计数,称为十进制数。D3D2D1D0=D3103+D2102+D1101 +D01002二进制数按“逢二进一”的原则进行计数,称为二进制数。B3B2B1B0=B323+B222+B121 +B020十六进制数按“逢十六进一”的原则
4、进行计数,称为十六进制数。H3H2H1H0=H3163+H2162+H1161 +H0160绪 论二进制的算术运算加法规则0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 10乘法规则0 0 = 00 1 = 01 0 = 01 1 = 1求11011+1101的值1 1 0 1 1 + 1 1 0 1 1 0 1 0 0 0求11011101的值 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1绪 论数制间的转换1十进制数转换为二进制数除二取余法:即把待转换的十进制不断地用2除,一直到商是0为止,然
5、后将所得的余数由下而上排列即可。2二进制数转换为十进制数位权法:即把各非十进制数按权展开,然后求和。3二进制转换为十六进制从右向左,每四位二进制化为一位十六进制,不足部分用零补齐。4十六进制转换为二进制一位十六进制数化为四位二进制数。绪 论逻辑数据的表示每个逻辑变量或逻辑运算的结果,产生逻辑值该逻辑值仅取“真”或“假”两个值。判断成立为“真”,判断不成立为“假”。在计算机内常用0和1表示这两个逻辑值,一般用0表示假,1表示真。绪 论计算机中常用的基本术语两盏灯一共能够呈现四种状态,即“00”、“01”、“10”和“11”,而二进制数00、01、10、11相当于十进制数的0、1、2、3,因此,灯
6、的状态可以用数学方法来描述,反之,数值也可以用电子元件的不同状态的组合来表示。位(bit)的定义是:位是计算机中所能表示的最小数据单位。相邻8位二进制码称之为一个字节(byte),用B表示。字是计算机内部进行数据处理的基本单位。它由若干位二进制码组成,通常与计算机内部的寄存器、运算器、数据总线的宽度一致,每个字所包含的位数称为字长。绪 论存储器在计算机中存储器用来存放数据存储器中有大量的存储单元每个存储单元都可以有“0”和“1”两种状态存储器是以“0”和“1”的组合来表示数据,而不是放入的如同十进制1、2、3、4这种形式的数据。绪 论半导体存储器的分类1只读存储器只读存储器又称为ROM,其中的
7、内容在操作运行过程中只能被CPU读出,而不能写入或更新类似于印好的书,只能读书里面的内容,不可以随意更改书里面的内容。2随机存取存储器随机存取存储器又称为RAM,其中的内容可以在工作时随机读出和存入随机存储器的内容可以随时改写,所以它适用于存放一些变量,运算的中间结果,现场采集的数据等等。3可现场改写的非易失存储器快擦写FLASH存储器、新型非易失静态存储器NVSRAM和铁电存储器FRAM等。这些存储器的共同特点是:从原理上看,它们属于ROM型存储器,但是从功能上看,它们又可以随时改写信息,因而作用又接近于RAM。返回目录单片机应用与接口技术80C51单片机软件实验环境的建立80C51单片机软
8、件实验环境的建立Keil软件简介、安装与使用 Keil软件简介Keil软件提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境VisionIDE,将这些部分组合在一起。Vision IDEC51编译器A51汇编器安装Keil软件可以从Keil公司及其中国代理处购得Keil软件。如果想试用,可以到Keil公司的网站()下载Eval版本。下载得到的Keil软件是一个压缩包,解压后双击其中的Setup.exe即可安装。如果不是购买的商品软件,请选择Eval Version安装。80C51单片机软件实验环境的建立使用Keil软件Keil软件界面
9、80C51单片机软件实验环境的建立使用Keil软件1源文件的建立Vision内集成有一个文本编缉器,可以在Vision集成环境中直接进行源程序的输入,该文本编缉器支持对汇编或C语言中关键字变色显示。2工程的建立在项目开发中,并不是仅有一个源程序就行了,还要选择CPU,确定编译/汇编、链接的参数,指定调试的方式等。为管理和使用方便,Keil使用工程(Project)将所需设置的参数和所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译(汇编)和链接等操作3工程的设置工程建立好以后,还要对工程进行进一步的设置,以满足每个工程的个性化要求4编译、链接在设置好工程后,即可进行编译、链接,以
10、获得可以执行的代码。80C51单片机软件实验环境的建立PROTEUS软件简介、安装与使用Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它的Logo界面如图1-13所示。它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路。Proteus软件简介具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真功能;有各种虚拟仪器;支持主流单片机系统的仿真。提供软件调试功能。具有强大的原理图绘制功能;具有印刷线路板绘制功能。80C51单片机软件实验环境的建立使用Proteus软件安装好Proteus软件后,单击桌面“开始所有程序Proteus
11、 7 Professional”打开Proteus软件。单击器件选择按钮(如右图),选择所需用的器件(如下图)80C51单片机软件实验环境的建立使用Proteus软件选好所需元件在图纸上放好元件并用导线连接画出如下所示电路图80C51单片机软件实验环境的建立使用Proteus软件双击单片机芯片U1,打开如右图所示对话框单击Program File,打开如下所示对话框,找到目标文件80C51单片机软件实验环境的建立使用Proteus软件单击 运行可以观察到运行的效果返回目录单片机应用与接口技术80C51单片机硬件实验环境的建立80C51单片机硬件实验环境的建立学习单片机离不开实践操作,因此准备一
12、套硬件实验器材很有必要。作为一本教材而言,如果使用某一种特定的实验器材难以兼顾一般性。为此,本书作了多种安排。使用万能板自行制作作者提供PCB文件,读者自行制作印刷线路板使用作者提供的成品实验电路板方案一、使用万能板自行制作使用主芯片为STC89C52来自制一块简单的实验板该芯片与80C51兼容,并具有能使串行口直接下载代码的特点,因而不需要专门的编程器,这使得使本实验板来做实验的成本很低80C51单片机硬件实验环境的建立方案一、使用万能板自行制作电路原理图80C51单片机硬件实验环境的建立方案一、使用万能板自行制作电路板的制作先安排一下板上各元件的位置,然后根据元件的高度由低到高分别安装,集
13、成电路的位置安装集成电路插座。需要特别说明的是,D1D8不要安装成一列,而是安装成一圈,如下图所示,这是为以后的课题做好准备代码的写入将代码写入单片机芯片,也称为芯片烧写、芯片编程、下载程序等芯片烧写需要用到一个专用软件,该软件可以免费下载。下载的地址为:,80C51单片机硬件实验环境的建立方案一、使用万能板自行制作代码的写入单击“OpenFile/打开文件”按钮,开启“打开文件”对话框打开文件后,还可以进行一些设置,如下时所用波特率、是否倍速工作、振荡电路中的放大器是否半功率增益工作等,这些设置暂时都可取默认值。确认此时电路板尚未通电,然后单击“Download/下载”按钮,下载软件开始准备
14、与单片机通信给电路板通电,即将代码写入芯片中80C51单片机硬件实验环境的建立让实验电路板具有仿真功能仿真的概念仿真是一种调试方案,它让单片机以单步或者过程单步的方式来执行程序每执行一行程序,观察该程序执行完毕后产生的效果,并与写该行指令时的预期效果比较,如果一致,说明程序正确,如果不同,说明程序出现问题。仿真芯片制作制作仿真芯片需要用到一块特定的芯片,即SST公司的SST89E554RC芯片硬件制作:取下任务1中所制作实验板中的STC89C52芯片,插入SST89E554RC芯片,即完成了硬件制作工作。软件操作:需要使用软件将一些代码写入该芯片,这里所使用的软件是SST EASYISP,这个
15、软件可以在/Download.html下载80C51单片机硬件实验环境的建立仿真芯片的制作运行SST EasyIsp软件,如右图所示单击DetectChip/RS232菜单项,选择第一项Dectect Target MCU for firmware1.1 F and RS232 config,出现如下图所示对话框80C51单片机硬件实验环境的建立仿真芯片的制作按提示一步一步执行,如果一切顺利,可见下图所示界面。单击菜单“SoftICE”,即可生成仿真芯片80C51单片机硬件实验环境的建立方案二、认识和使用成品实验板当需要扩展数码管、液晶显示屏等连线较多的部分时,飞线很多,制作不易。为此,作者设
16、计与制作了一块实验板,该板使用了双面线路板使用这块实验板可以进行流水灯、人机界面程序设计、音响、中断、计数器等基本编程练习,还可以学习I2C接口芯片使用、SPI接口芯片使用、字符型液晶接口技术、与PC机进行串行通讯等目前较为流行的技术80C51单片机硬件实验环境的建立方案二、认识和使用成品实验板硬件结构8个发光二极管 6位数码管RS232串行接口4个按键开关2种计数信号源音响接口AT24C芯片插座实时钟PCF8563芯片多功能芯片X5045字符型液晶接口80C51单片机硬件实验环境的建立方案二、认识和使用成品实验板实验电路板的基本使用方法电源提供:本板需外接电源,可以通过插座J5向实验板供电,
17、供电电压在712V之间,电流不小于300mA;复位选择:本板提供了2种复位电路:RC复位与X5045复位,通过JP1选择;计数源选择:第一个计数源由555电路提供,第二个由PCF8563提供,通过JP2选择;音响电路工作选择:JP5用于选择P3.2工作于输出方式还是输入方式,当需要将P3.2作为驱动音响电路工作的输出端时,应该短路子插于JP5的下方;字符型LCD实验:做LCD实验时,需断开数码管的供电电路。JP4用于选择显示器;ISP功能的使用:拨去JP1插座上的短路子,使复位端悬空。标号为J2的插座为ISP下载插座,将下载电缆与实验板正确连接,本插座采用ATMEL公司提供标准接头返回目录单片
18、机应用与接口技术认识80C51单片机I/O口认识80C51单片机I/O口用单片机控制LED如右图所示是用单片机控制LED的基本连线图;单片机工作时至少需要用到Vcc、GND、Rst、Xtal2、Xtal1和EA等6个脚;要用80C51单片机来控制LED,这个LED必须要和80C51单片机的某个引脚相连,80C51单片机上除了基本连线必须用到的6个引脚外,还有34个引脚,这里把LED的阴极和80C51单片机的第1脚相连按照右图的接法,当80C51单片机的第1脚是高电平时,LED1不亮,第1脚是低电平时,LED1亮。为此80C51的1脚要能够控制认识80C51单片机I/O口用单片机控制LED要能够
19、让P10引脚按要求输出 “高”或“低”电平,要用80C51单片机能够“懂”的方式向80C51单片机发布命令,这些80C51单片机能“懂”的命令称之为该单片机的指令。要让单片机听我们(单片机程序编写者)的指挥,我们(单片机程序编写者)自己必须要先学习单片机的指令。让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是CLR。要P10引脚输出高电平,可以用这样的指令:SETB P10要让P10引脚输出低电平,可以用这样的指令:CLR P10认识80C51单片机I/O口用单片机控制LED用Proteus仿真来实现CPU选用AT89C51图中CPU的复位电路、电源电路、晶振电路等均不需要画
20、。双击U1,选择ProgrammerFile为led.hex。单击“”运行,可以观察到发光管D1被点亮。认识80C51单片机I/O口用单片机发出声音当所需发出的声音不太复杂时,使用单片机自身的内部资源加上简单的硬件即可实现。单片机控制扬声器发声的方法让P1.0引脚送出一个1000HZ的交变信号,就是要求P1.0引脚不断变为高电平和低电平,高低电平的时间可各保持500us。如果第一条指令是让P1.0引脚变为高电平,第二条指令是让P1.0引脚变为低电平那么要达到送出交变信号的目的,需要在执行完第2条指令以后再回去执行第1条指令。此外,还要考虑时间的因素认识80C51单片机I/O口用单片机发出声音用
21、Proteus仿真来实现AT89C51为主芯片LS1是扬声器数字示器用来观察波形认识80C51单片机I/O口用单片机发出声音延时工作过程的分析单片机的片内RAM与工作寄存器为了理解延时程序的工作原理,首先要了解延时程序中出现的一些符号。80C51单片机内部一共有128个数据存储器,可作为数据缓冲、堆栈、工作寄存器等用途。这部分数据存储器具有十分重要的作用,几乎任何一个实用的程序都必须要用到这一部分资源来编程延时程序分析MOV指令的意思是传递数据。指令MOV R7,#2中,R7是接受者,2是被传递的数,这一行指令的意义是:将数据2送到R7中去DJNZ指令后面跟着的两个符号,一个是R6,一个是D2
22、,R6是寄存器, D2是标号,DJNZ指令的执行过程是:将其后面的第一个参数中的值减1,然后看这个值是否等于0,如果等于0,往下执行,如果不等于0,则转移到第二个参数所指定的位置去执行最终的结果是“DJNZ R6,D2”这条指令将被执行2502=500次,从而实现延时认识80C51单片机I/O口用单片机发出声音延时时间的计算机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作为一个基本操作。完成一个基本操作所需的时间称之为一个机器周期。振荡周期:80C51单片机的晶体振荡器的周期,它等于振荡器频率的倒
23、数。指令周期:执行一条指令的时间,用机器周期数来表示。每一条指令需用的机器周期数永远是固定的,而且每一条指令所需的机器周期数可以通过表格查到假设所用晶振为12M,一个机器周期是1微秒。而DJNZ指令是双周期指令,所以执行一次需要2微秒。一共执行500次,即1000微秒,也就是1毫秒。认识80C51单片机I/O口用指拔开关设置音调音名与频率的关系要求根据指拔开关的设置来发出不同音名的声音,表3-4所示是音名、频率、延时时间及延时常数的对应关系。表3-5所示是系统晶振为12M,采用例3-2可的延时程序时,延时时间与延时常数的对应关系。认识80C51单片机I/O口用指拔开关设置音调用Proteus仿
24、真来实现AT89C51为CPU8位拔动开关与P2端口相连P1.0作为输出端认识80C51单片机I/O口单片机内部的并行I/O口并行I/O口80C51单片机共有4个8位的并行双向I/O口,共32个引脚。这4个并行I/O口分别被记作P0、P1、P2和P3,每个并行I/O口的结构和功能并不全相同P0口:P0口是一个多功能口,除了作为通用I/O口外,还可以作为地址/数据总线,在单片机进行系统时用作系统总线。P1口:P1口作为通用I/O口使用。P2口:P2口是一个多功能口,除了作为通用I/O口外,还可以作为高8位的地址线,用于系统的扩展。P3口:P3口是一个多功能口,除了作为通用I/O口外,每一根引脚还
25、有第二种功能认识80C51单片机I/O口单片机内部的并行I/O口 (a) P1口中一位的结构 (b) P0口中一位的结构图3-1051单片机I/O口的两种结构认识80C51单片机I/O口用单片机制作风火轮玩具风火轮是一个小玩具,简单地说就是让若干个灯围成圆形,当灯以不同的速度、方式点亮时,可以变化出各种花样。用Proteus仿真来实现AT89C51为CPUP1口接8个LED,环状排列认识80C51单片机I/O口用单片机制作风火轮玩具用硬件仿真来实现选择Keil Monitor-51 Driver为仿真模式,如右图所示单击Setting打开设置对话框,选择端口与波持率,如下图所示设置完成后退出按
26、CTRL+F5进入调试认识80C51单片机I/O口单片机的内部结构一个80C51单片机内部有以下一些功能部件:一个8位CPU用来运算、控制。片内数据存储器RAM,对于51型单片机而言,容量是128字节。片内程序存储器ROM,对于89S51单片机而言,容量是4K(4096个单元)。四个8位的并行I/O口,分别是P0、P1、P2、P3。2个16位的定时/计数器。中断结构。一个可编程全双工通用异步接收发送器UART。一个片内振荡器用于时钟的产生。可以寻址64KB外部程序存储器和外部数据存储器的总结扩展结构认识80C51单片机I/O口认识80C51单片机I/O口80C51 CPU的内部结构与功能运算器
27、用以进行算术和逻辑运算B8位寄存器可作为通用寄存器用,但在乘法或除法指令中必须用到该寄存器PSW程序状态字用来存放当前有关指令执行结果的状态标志由此可以了解CPU的当前状态,并作出相应的处理。数据指针DPTR由两个8位的寄存器DPH和DPL组成的16位的寄存器SP堆栈指针在单片机中,也可以在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是“先进后出,后进先出”,称之为“堆栈”。80C51中堆栈的位置并不固定,可以由用户来指定用户通过设置SP来设定堆栈位置返回目录单片机应用与接口技术80C51单片机的中断系统80C51单片机的中断系统紧急停车控制器在使用单片机控制的机器设备中,
28、经常会有这样的要求,即一旦有紧急事故发生,立即停止机器的运行,中断的概念所谓中断,是指正常的工作过程被其它事件打断,使得这一事件可以得到及时的处理,处理完后可以继续做原来的工作。引起中断的事件可以引起中断的事件称之为中断源80C51单片机中一共有5个可以引起中断的事件:两个外部中断,两个定时/计数器中断,一个串行口中断中断的嵌套与优先级处理单片机工作中有优先级的问题。两个中断同时发生发何响应?一个中断发生时另一个中断又产生又如何响应?中断的响应过程中断产生后必须按一定顺序依次处理80C51单片机的中断系统紧急停车控制器题目:由P1.0引脚驱动的电机旋转,当 P3.2引脚上出现故障信号时,立即停
29、止电机的旋转。故障信号使用按键来模拟,无故障时,P3.2引脚为高电平,当按下按键后,P3.2引脚为低电平,模拟有故障信号输入。80C51单片机的中断系统80C51的中断结构5个中断源总中断允许EA每个中断各自允许位中断优先级分为高、低优选级内部自然优先级中断入口地址0003 外中断0000B 定时器T00013 外中断1001B 定时器T10023 串行口80C51单片机的中断系统通过外部信号来改变风火轮的转速通过一个外部信号来控制风火轮的转速,只要改变外部信号的频率,即可直观地观察风火轮在各种转速下的运行效果,从而为完善和改进这一玩具提供参考任务分析要使用外部信号来改变风火轮的转速,就要提供
30、一个适当的外部信号,这种信号应该是一个频率可变的矩形波。找一个机械鼠标,拆开后可见有内置的光栅,将其置于红外发射和接收管之间,旋转光栅,能产生一系列脉冲信号。80C51单片机的中断系统通过外部信号来改变风火轮的转速用Proteus仿真来实现89C51为CPU加入信号发生器产生方波8个发光二极管环状排列80C51单片机的中断系统中断响应分析中断响应的条件单片机“感知”中断的方法是不断地检测引脚或标志位,当这些引脚或标志位变为高电平或低电平(不同的中断源有不同的要求)时,就认为是有中断产生。80C51单片机的CPU在每个机器周期采样各个中断源的中断请求信号,并将它们锁存到寄存器TCON或SCON中
31、的相应位。在出现以下三种情况之一时,CPU将封锁对中断的响应:CPU正在处理同一级或高一级的中断。现行的机器周期不是当前正在执行指令的最后一个机器周期当前正在执行的指令是返回(RETI)或访问IE、IP寄存器的指令(在此情况下,CPU至少再执行完一条指令后才响应中断)。80C51单片机的中断系统中断响应分析中断响应过程80C51一旦响应中断,首先置位相应的优先级中断触发器,再由硬件执行一条调用指令,将当前PC值送入堆栈,保护断点,然后将对应中断的入口地址装入PC,使程序转向该中断的服务程序入口地址单元,执行相应的中断服务程序在执行到中断服务程序最后一条返回指令(RETI)时,清除在中断响应时置
32、位的优先有效触发器,然后将保存在堆栈中的断点地址返回给PC,从而返回主程序中断的响应时间在系统中只有1个中断源申请中断时,中断响应的时间为38个周期如果有其它的中断存在,响应的时间就不能确定了中断控制通过对IE、IP寄存器的数据来控制中断允许、优选级等返回目录单片机应用与接口技术80C51单片机的定时器/计数器80C51单片机的定时器/计数器包装流水线中的计数器定时/计数的基本知识计数一般是指对事件的统计,通常以“1”为单位进行累加。计数器的容量计数用的容器(计数器)总有一定的容量,如车辆的里程表其位数是有限的计数器的溢出当计数量超过计数器的容量以后,就会产生溢出任意设定计数个数的方法预置计数
33、常数定时当计数脉冲的时间间隔一定时,脉冲的个数就代表了流逝的时间任意设定定时间的方法预置定时常数80C51单片机的定时器/计数器包装流水线中的计数器用Proteus仿真来实现89C51为CPU加入TimerCounter部件单击K2以清除COUNT元件中的计数值,使其显示为0。单击K1按键以产生计数脉冲每单击12次按键后,LED元件将很快地闪烁一次,即输出一个低电平80C51单片机的定时器/计数器单片机中的定时器/计数器80C51定时器/计数器的结构定时器T0和T1分别由TH0、TL0和TH1、TL1各两个8位计数器构成的16位计数器,这两个16位计数器都是16位的加1计数器T0和T1定时器/
34、计数器都可由软件设置为定时或计数工作方式,其中T1还可作为串行口的波特率发生器定时器/计数器的控制字T0和T1有两个8位控制寄存器TMOD和TCON,它们分别被用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行以及作为运行状态的标志等80C51单片机的定时器/计数器单片机中的定时器/计数器定时器/计数器的四种工作方式定时器/计数器工作方式0为13位计数器工作方式定时器/计数器工作方式1是16位计数器方式,分别由TH0TL0、TH1/TL1共同构成16位计数器定时/计数器的工作方式2是自动再装入时间常数的8位计数器方式。定时器/计数器工作方式3是两个独立的8位计数器且仅对T0
35、起作用,如果把T1置为工作方式3,T1将处于关闭状态计数器的计数初值计算工作方式0装入的初值是:8192-待计数的值工作方式1装入的初值是:65536-待计数的值工作方式2装入的初值是:256-待计数的值工作方式3装入的初值是:256-待计数的值80C51单片机的定时器/计数器用单片机来唱歌如果在程序中预置好各种不同音调的声音,那么就能按一定的曲调唱出歌来歌谱与歌曲的基本知识一首歌的歌谱记录了音符,还记录了该音符持续的时间。音符持续的时间在歌谱中以“节拍”为单位来设定,乐谱中每个音符持续的时间可以是1/4节拍、2/4节拍、3/4节拍、1拍等多种节拍。要唱出一首歌来,首先要根据歌谱的音符标记确定
36、送出的信号的频率值,然后根据节拍标记确定该频率的信号持续的时间。从上面的描述可以看到,要唱出一首完整的歌曲出来,需要用到两个时间关系,其中一个用于确定发声频率,另一个用以确定延迟时间。80C51单片机的定时器/计数器用单片机来唱歌用定时中断来产生不同频率的信号如果在定时中断程序中对Sound引脚取反,那么,当定时中断不断发生时,Sound引脚不断取反,即实现一定频率的方波输出,其频率取决于定时中断的时间如果所用晶振为12M,选用定时器0,工作于方式1,则计数初值就应当是:65536-5000=60536。将60536转换为十六进制即EC78H,把ECH送入TH0,78H送入TL0,即可完成5m
37、s的定时。80C51单片机的定时器/计数器用单片机来唱歌单片机唱歌的实现程序使用了定时器T0和T1,其中T0用于产生音调。定时器T1中断服务程序中用到了两个表,第一个是音符表MUSIC1,即根据歌谱按顺序写出的音符列表;第二个是时长表MUSIC2,即每个音符持续的时间。定时器T1每10ms中断一次,时长表中的数值是软件计数器值。取出音符表中的下一个音符,并将其送入寄存器R0中暂存,以便定时器T0根据这个音符来产生定时中断,发出该音符所表示的频率的声音返回目录单片机应用与接口技术80C51的串行接口与串行通信80C51的串行接口与串行通信80C51单片机的串行接口80C51单片机内部集成有全双工
38、串行通信口2个相互独立的接收、发送缓冲器可以同时接收和发送数据。串行口控制器串行控制寄存器SCON波特率选择特殊功能寄存器PCON80C51串行口可以有4种工作方式。方式0方式3方式0:用作输出时,向发送缓冲器SBUF写入一个字节的数据,串行口将此8位数据以时钟频率的1/12速度从RXD依次送入外部芯片,同时由TXD引脚提供移位脉冲信号。用作输入时,TXD引脚提供移位脉冲,同时RXD接收数据送入接收SBUF80C51的串行接口与串行通信80C51内部具有一个全双工的串行接口,这一接口可以被用于扩展输入/输出,也可以用于串行通信。使用串行口扩展并行接口80C51单片机共有4个8位的并行接口,在某
39、些应用场合需要应用更多的并行接口,这可以使用串行接口加上一些接口芯片来进行扩展。使用串行口扩展并行输出接口CD4094:串入并出芯片用PROTEUS来仿真AT89C51为CPUCD4094扩展80C51的串行接口与串行通信使用串行口扩展并行接口用串行口扩展并行输入要实现串行口扩展并行输入,需要用到并行输入串行输出功能芯片。这一类芯片也有多种,如常用的74HC165芯片74HC165的工作过程可以分为2个过程,即从D0D7读取并行输入状态过程和将读取到的数据从串行输出端送出的过程。用Proteus来仿真89C51为CPU74HC165为输入LED为输出80C51的串行接口与串行通信单片机与PC机
40、通信串行通信的基本知识同步通信的基本特征是发送与接收保持严格的同步。异步通信方式规定了传输格式,每个数据均以相同的帧格式传送。在异步通信中,接收与发送之间必须有两项规定:帧格式的设定波特率的设定串行通信中数据的传输方向单工方式:数据只允许按照一个固定的方向传送半双工方式:数据可以从A发送到B,也可以由B发给A,但是不能同时在这两个方向中进行传送全双工方式:两台设备之间的接收与发送可以同时进行,互不相关80C51的串行接口与串行通信单片机与PC机通信串行通信中的奇偶校验串行通信的关键不仅是能够传输数据,更重要的是要能正确地传输如果可以在接收端发现接收到的数据是错误的,那么,就可以让接收端发送一个
41、信息到发送端,要求将刚才发送过来的数据重新发送一遍在传送数据的同时再传送一些其它内容,或者对数据进行一些变换,使一批数据具有一定的规律,这样才有可能发现数据传输中出现的差错。串行通信中的电平接口TTL接口RS232接口80C51的串行接口与串行通信单片机与PC机通信使用Proteus的虚拟串口实现AT89C51为CPU加入虚拟端口80C51的串行接口与串行通信单片机与PC机通信串行口工作方式与波特率设置串行通信口的工作方式1用于串行数据的发送和接收,为10位通用异步方式。串行口的工作方式2是9位异步通信方式,每帧信息为11位:1位起始位,8位数据位(低位在前,高位在后),1位可编程的第9位和1
42、位停止位。串行口被定义成方式3时,为波特率可变的9位异步通迅方式。在方式3中,除波特率外,均与方式2相同。波特率的设计:在串行通信中,收、发双方对接收和发送数据都有一定的约定,其中重要的一点就是波特率必须相同。工作方式2:波特率=2SMOD/64工作方式1和3:波特率=2SMOD/32fosc/12/(28-x)其中x是定时器的计数初值返回目录单片机应用与接口技术80C51单片机的指令系统80C51单片机的指令系统指令的概念有关指令与程序的基本概念指令是规定计算机进行某种操作的命令。程序是指人们按照自己的思维逻辑,使计算机按照一定的规律进行各种操作,以实现某种特定的控制功能而编制的有关指令的集
43、合。程序设计语言是实现人机相互交换信息(对话)的基本工具机器语言汇编语言高级语言汇编语言格式标号:操作码助记符 操作数1 ,操作数2 ,操作数3 ;注释80C51单片机的指令系统指令的寻址方式寻址的概念寻址方式立即寻址(立即数寻址)直接寻址寄存器寻址寄存器间接寻址变址寻址(基址寄存器变址寄存器间接寻址)相对寻址位寻址指令中的操作数标记Rn 、Ri、#data、#data16、direct、bit、/、80C51单片机的指令系统数据传送类指令数据传送类指令以A为目的地址的指令MOVA,Rn;(A)(Rn)MOVA,direct;(A)(direct)MOVA,Ri;(A)(Ri)MOVA,#da
44、ta;(A)data以直接地址为目的地址的指令MOVdirect,A;(direct)(A)MOVdirect,Rn;(direct)(Rn)MOVdirect,Ri;(direct)((Ri))MOVdirect,#data;(direct)dataMOVdirect1,direct2;(direct1)(direct2)80C51单片机的指令系统数据传送类指令数据传送类指令以Rn为目的地址的指令MOVRn,A;RnAMOVRn,#data;RndataMOVRn,direct;Rn(direct)以间接地址为目的地址的指令MOVRi,A;(Ri)AMOVRi,#data;(Ri)AMOVR
45、i,direct;(Ri)A十六位数传送(以DPTR为目的地址)指令。MOVDPTR,#data16;(DPTR)data1680C51单片机的指令系统数据传送类指令用仿真软件进行指令练习掌握指令的最好的办法是多做编程练习,而练习是要有反馈的,可以通过模拟仿真的方法来了解学习的效果。可以使用Keil软件作为指令练习的工具。80C51单片机的指令系统数据传送类指令数据传送类指令累加器A与片外RAM之间传递数据指令MOVX(4条)MOVXA,Ri;A(Ri)(片外RAM)MOVXA,DPTR;A(DPTR)(片外RAM)MOVXRi,A;(片外RAM)(Ri)AMOVXDPTR,A;(片外RAM)
46、(DPTR)A程序存储器向累加器A传送指令MOVC(2条)MOVCA,A+PCMOVCA,A+DPTR堆栈操作数据交换指令(4条)用仿真软件进行指令练习掌握指令的最好的办法是多做编程练习,而练习是要有反馈的,可以通过模拟仿真的方法来了解学习的效果。可以使用Keil软件作为指令练习的工具。80C51单片机的指令系统数据传送类指令数据传送类指令累加器A与片外RAM之间传递数据指令MOVX(4条)MOVXA,Ri;A(Ri)(片外RAM)MOVXA,DPTR;A(DPTR)(片外RAM)MOVXRi,A;(片外RAM)(Ri)AMOVXDPTR,A;(片外RAM)(DPTR)A程序存储器向累加器A传
47、送指令MOVC(2条)MOVCA,A+PCMOVCA,A+DPTR堆栈操作进栈指令:PUSHdirect;(SP)(direct)出栈指令:POPdirect;(direct)(SP)数据交换指令(4条)80C51单片机的指令系统数据传送类指令数据传送类指令字节交换XCHA,Rn;(A)(Rn) (Rn)(A)XCHA,direct;(A)(direct) (direct)(A)XCHA,Ri;(A)(Ri) (Ri) (A半字节交换XCHDA,Ri;(A3A0)(Ri3Ri0)80C51单片机的指令系统算术运算指令1加法指令(8条)不带进位位的加法指令ADDA,Rn;(A)(A)+(Rn)A
48、DDA,direct;(A)(A)+(direct)ADDA,Ri;(A)(A)+(Ri)ADDA,#data;(A)(A)+ data不带进位位的加法指令ADDCA,Rn;(A)(A)+(Rn)+(CY)ADDCA,direct;(A)(A)+(direct)+(CY)ADDCA,Ri;(A)(A)+(Ri)+(CY)ADDCA,#data;(A)(A)+ data +(CY)2带借位的减法指令(4条)SUBBA,Rn;(A)(A)-(Rn)-(CY)SUBBA,direct;(A)(A)-(direct)-(CY)SUBBA,Ri;(A)(A)-(Ri)-(CY)SUBBA,#data;(
49、A)(A)- data -(CY)80C51单片机的指令系统算术运算指令3乘法运算指令(1条)MULAB4除法运算指令(1条)DIVAB5加1指令(5条)INCA;(A)(A)+1INCRn;(Rn)(Rn)+1INCdirect;(direct)(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;(DPTR)(DPTR)+16减1指令DECA;(A)(A)-1DECRn;(Rn)(Rn)-1DECdirect;(direct)(direct)-1DECRi;(Ri)(Ri)-17二十进制调整指令DAA;二十进制调整80C51单片机的指令系统逻辑运算类指令1累加器A的逻辑操作C
50、LRA;A0CPLA;AARLA;循环左移RLCA;带进位位的循环左移RRA;循环右移RRCA;带进位位的循环右移SWAPA;A高、低4位交换2逻辑“与”指令ANLA,Rn;A与Rn中的值按位“与”ANLA,direct;A和直接地址中的数据按位“与”ANLA,Ri;A和间接寻址得到的数据按位“与”ANLA,#data;A和立即数按位“与”ANLdirect,A;直接地址中的数据与A中的值相“与”,并送到该地址单元中ANLdirect,#data;直接地址中的数据与立即数相“与”,并送到该地址单元中80C51单片机的指令系统逻辑运算类指令3逻辑“或”指令ORLA,Rn;A与Rn中的值按位“或”
51、ORLA,direct;A和直接地址中的数据按位“或”ORLA,Ri;A和间接寻址得到的数据按位“或”ORLA,#data;A和立即数按位“或”ORLdirect,A;直接地址中的数据与A中的值相“或”,并送到该地址单元中ORLdirect,#data;直接地址中的数据与立即数相“或”,并送到该地址单元中4逻辑“异或”指令XRLA,Rn;A与Rn中的值按位“异或”XRLA,direct;A和直接地址中的数据按位“异或”XRLA,Ri;A和间接寻址得到的数据按位“异或”XRLA,#data;A和立即数按位“异或”XRLdirect,A;直接地址中的数据与A中的值“异或”,并送到该地址单元中XRL
52、direct,#data;直接地址中的数据与立即数“异或”,并送到该地址单元中80C51单片机的指令系统控制转移类指令无条件转移指令短转移指令:AJMPaddr11长转移指令:LJMPaddr16相对转移指令:SJMPrel间接转移指令:JMPA+DPTR条件转移指令判A内容是否为0转移指令JZ rel;如果A中的值是0则转移,否则顺序执行JNZ rel;如果A中的值不是0则转移,否则顺序执行比较转移指令CJNE A,#data,rel;(A)和data比较,如果A=data,顺序执行,否则转移CJNE A,direct,rel;(A)和(direct)比较,如果(A)=(direct),顺序
53、执行,否则转移CJNE Rn,#data,rel;(Rn)与data比较,如果(Rn)=data,顺序执行否则转移CJNE Ri,#data,rel;(Ri)与data比较,如果(Ri)=data,顺序执行否则转移循环转移指令DJNZ Rn,relDJNZ direct,rel80C51单片机的指令系统控制转移类指令调用与返回指令短调用指令:ACALLaddr11长调用指令:LCALLaddr16返回指令:RET中断返回指令:RETI空操作指令NOP位操作类指令位传送指令位传送指令MOVC,bit;(C)(bit)MOVbit,C;(bit)(C)80C51单片机的指令系统位操作类指令位修正指
54、令位清0指令CLRC;(C)(0)CLRbit;(bit)(0)位置1指令SETBC;(C)(1)SETBbit;(bit)(1)位取反指令CPLC;(C)()CPLbit;(bit)()80C51单片机的指令系统位操作类指令位逻辑运算指令位与指令ANLC,bit;(C)(C&bit)ANLC,/bit;(C)(C&)位或指令ORLC,bit;(C)(CVbit)ORLC,/bit;(C)(CV)位条件转移指令判CY转移指令JCrel;如果C=1,则转移,否则顺序执行JNCrel;如果C=0,则转移,否则顺序执行判位变量转移指令JBbit,rel;如果bit=1,则转移,否则顺序执行JNBbi
55、t,rel;如果bit=0,则转移,否则顺序执行判位变量且清0转移指令JBCbit,rel;如果bit=1,则转移,同时将bit清0,否则顺序执行返回目录单片机应用与接口技术程序设计初步程序设计初步数制转换程序在单片机的内部进行数据处理时,一般用二进制,但是在进行数据的输入或数据的输出时,要转换成十进制,这样才符合人们的习惯。把十进制数据转化为二进制假设我们用FIFO0和FIFO1代表键盘的缓冲区,程序设计为每按下一次数字键,先把FIFO1单元中的数据送到FIFO0中去,然后把这个数字送到FIFO1,这样,就用了两个字节的键盘缓冲区。现假设按下了“3”,然后再按下“5”,那么FIFO0中的值是
56、3,FIFO1中的值就是5,即十进制的35,调用下面的这段程序,可以把放在两个字节中的数字合并成一个二进制数,这样才能进行计算和进一步的处理,否则3和5放在两个单元中又怎么能代表35并参加运算呢?这里所要做的工作是把放在两个RAM单元中的数据合成到一个RAM单元中去,这个单元最终的结果应当是35(23H)。程序设计初步数制转换程序【例8-1】双字节十进制转化为单字节二进制。如果用于存储十进制的字节数只有2个,那么它们能够表达的数据最大就是99,所以只要用一个字节就可以存放了。;双字节十进制转化为单字节二进制(以子程序的形式出现);程序入口:BCD码的低位在BCD1单元中,高位在BCD0单元中;
57、程序出口:二进制数在BIN0单元中;资源占用:A,B BCD0EQU40HBCD1EQU41HBIN0EQU50HBCD2BIN:MOVA,BCD0;将十位数送到A中MOVB,#10;乘以10MULABADDA,BCD1;加上个位数,由于最大为99,所以不会有溢出MOVBIN0,A;送入输出单元(BIN0)中RET;返回程序设计初步二进制码向BCD码转化将运算的结果显示之前,需要先把结果由二进制转化为BCD码,然后再显示,这样才符合人们的阅读习惯。设计一台仪器,用于显示测量所得的温度,其范围是099;进行硬件设计时,可以用2位显示器来显示这个温度;软件设计时,要在内部RAM中开辟2个字节的显示
58、缓冲区,分别用来存放待显示的2位数字。设某次测得的温度为45,这是以二进制形式保存在计算机内部的某个RAM单元中的,比如存于TMP单元中,该单元中的值是2DH,在显示之前,必须先把2DH变成4和5,并将4和5分别存入显示缓冲区(设为DISP0,DISP1)中。调用以下程序可以实现二进制向十进制的转换。程序设计初步二进制码向BCD码转化;单字节转化为双字节十进制;程序入口:二进制数码存放于TMP单元中;程序出口:十进制数分别放于DISP0和DISP1单元中;资源占用:A、BTMPEQU20HDISP0EQU30HDISP1EQU31HBIN2BCD:MOVA,TMPMOVB,#10DIVABMO
59、VDISP0,AMOVDISP1,BRET程序设计初步双字节数运算1双字节加法将(R2R3)和(R6R7)两个双字节无符号数相加,结果送(R4R5)。NADD:MOVA,R3ADDA,R7MOVR5,AMOVA,R2ADDCA,R6MOVR4,ARET2双字节数的减法将(R2R3)和(R6R7)两个双字节数相减,结果送R4R5NSUB:MOVA,R3CLRCSUBBA,R7MOVR5,AMOVA,R2SUBBA,R6MOVR4,ARET程序设计初步多字节移位程序1多字节左移LEFT:CLRCCONL:MOVA,R1RLCAMOVR1,AINCR1DJNZR2,CONL2多字节右移RIGHT:C
60、LRCCONR:MOVA,R1RRCAMOVR1,ADECR1DJNZR2,CONR程序设计初步子程序设计子程序结构一个主程序可以多次调用同一个子程序,也可以调用多个子程序,子程序也可能调用其他子程序。为了做到软件资源共享,子程序应具有通用性。主程序在调子程序前,应将子程序所需要的参数放至某约定的位置,供子程序在运行时从这个约定的位置取用。子程序在返回主程序前也应将结果送到约定的位置,以便返回主程序后,主程序能从这些约定的位置取得所需的结果。程序设计初步子程序设计子程序在设计时应注意以下基本事项:每个子程序都应该有一个唯一的入口,并以标号作为标识,以便主程序调用。子程序通常以RET指令作为结束
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人二手商铺买卖合同协议书
- 个人间借款合同样本:版
- 个人股权抵押合同范例
- 三方合同:学生就业定向合作
- 专属应届毕业生:个人租赁合同范本
- 中学教务主任聘任合同样本
- 单项木工承包合同
- 中外采购与供应合同范本
- 专业水处理设备维护合同细则
- 三人合伙经营合同范本
- 农产品贮运与加工考试题(附答案)
- 学校财务年终工作总结4
- 2025年人民教育出版社有限公司招聘笔试参考题库含答案解析
- 康复医学治疗技术(士)复习题及答案
- 《血管性血友病》课件
- 2025年汽车加气站作业人员安全全国考试题库(含答案)
- 2024年司法考试完整真题及答案
- 高三日语一轮复习日语助词「に」和「を」的全部用法课件
- 2024年山东省高考政治试卷真题(含答案逐题解析)
- 2024年执业药师继续教育专业答案
- 2024-2025学年人教版七年级数学上册期末达标测试卷(含答案)
评论
0/150
提交评论