嵌入式系统基本原理与开发入门.docx
- 文档编号:25147187
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:202
- 大小:3.92MB
嵌入式系统基本原理与开发入门.docx
《嵌入式系统基本原理与开发入门.docx》由会员分享,可在线阅读,更多相关《嵌入式系统基本原理与开发入门.docx(202页珍藏版)》请在冰豆网上搜索。
嵌入式系统基本原理与开发入门
中国民航大学电子信息工程学院
嵌入式系统开发入门与基本原理
基于AT89S52单片机
胡铁乔
2014-11-17
以AT80S52单片机为实验平台,以实验操作、分析为中心,从简单到复杂,一步一步教会学生如何进行单片机系统开发,掌握相关基本概念,了解单片机的工作基本原理。
目录
0序言1
1嵌入式系统基本概念2
1.1单片机的由来2
1.251系列单片机2
1.3AT89系列单片机3
2AT89S52单片机内部构成&片内资源3
2.1AT89S52单片机的基本组成4
2.2AT89S52单片机的引脚说明4
2.3中断系统10
2.3.1中断源10
2.3.2中断控制11
2.3.3中断响应13
2.4定时器14
2.4.1定时器基本原理14
2.4.2方式和控制寄存器15
2.4.3工作方式16
2.5串口17
2.5.1串行通信的基本概念17
2.5.2与串行口有关的特殊功能寄存器18
2.5.3串行口模式1说明19
2.5.4波特率20
3AT89S52单片机存储器&KeilC关键字21
3.1AT89S52单片机存储器21
3.2KeilC关键字及数据类型24
3.2.1数据类型24
3.2.2Cx51算术运算符及其表达式26
3.2.3其他常用关键字26
4AT89S52单片机开发硬件系统&软件系统说明27
4.1硬件平台说明27
4.1.1LED&继电器&复位&温度测量电路28
4.1.2数码管显示&按键电路29
4.1.3AD&蜂鸣器&喇叭电路30
4.1.4单片机电路31
4.2软件安装&说明31
4.2.1KeilC软件安装&建立新工程32
4.2.2单片机开发板驱动安装37
4.2.3单片机编程器使用39
4.3课后作业42
5AT89S52单片机开发入门:
流水灯实验43
5.1实验操作与实验结果43
5.2源程序分析43
5.3对程序进行调试45
5.4汇编程序分析46
5.5计算Delay函数延时50
5.6查表法实现流水灯功能51
4.7课后作业51
6AT89S52单片机片内资源使用:
基于定时器&中断的流水灯53
6.1实验操作与实验结果53
6.2源程序分析53
6.2.1全局变量定义53
6.2.2中断服务子程序53
6.2.3主函数54
6.3汇编程序分析56
6.3.1初始化部分56
6.3.2主循环&表格部分57
6.3.3中断部分57
6.4课后习题&思考题59
7AT89S52单片机复杂程序开发60
7.1程序进程-倒计时与电子表实验60
7.1.1倒计时实验60
7.1.2电子表实验64
7.2通信协议-串口通信实验68
7.2.1功能演示&说明68
7.2.2程序分析-初始化部分70
7.2.3程序分析-中断部分71
7.2.4本节课后作业&思考题71
7.3外部接口-AD转换实验71
7.3.1功能演示&说明71
7.3.2程序分析-主程序部分71
7.3.3程序分析-中断部分72
7.3.4程序分析-AD转换部分73
7.3.5本节课后作业&思考题77
8项目开发实例-AT89S52在线编程器的设计与实现78
8.1编程器硬件设计78
8.2编程器嵌入式软件设计79
8.2.1编程思路79
8.2.2主函数80
8.2.3串口中断函数UART_ISR81
8.2.4定时器中断函数timer0_ISR84
8.2.5命令处理函数DealOrder85
8.2.6Flash编程函数WriteFlash87
8.2.7Flash读取函数ReadFlash89
8.2.8EraseFlash函数91
8.2.9编程使能函数ProgramEnable91
8.2.10退出编程状态ProgramProgramDisable函数92
8.2.11其它子函数93
8.2.12烧写芯片93
8.3编程器PC软件设计94
8.3.1打开hex文件95
8.3.2菜单操作人工编程98
8.3.3定时器事件处理函数Timer1Timer103
8.3.4自动编程108
9总结与展望110
10附录111
10.1实验板电路图&PCB图111
10.2汇编指令表114
10.3AT89S52串行在线编程说明117
10.3.1串行编程步骤118
10.3.2串行编程指令集118
10.4ASCII表119
11参考文献120
0序言
本书以实验为中心,力图在实验演示、说明、讲解的基础上,理解51系列单片机(嵌入式系统)工作的基本原理,掌握AT89S52单片机的开发过程,能够自己分析程序、设计程序、调试程序的目的。
主要实验及基本目的如下:
第5章流水灯实验:
掌握实验的基本方法及GPIO、查表法的使用,如何调试程序,写入程序;
第6章基于定时器&中断的流水灯实验:
掌握定时器、中断的原理及使用方法;
第7章动态显示、串行口、AD转换:
掌握数码管动态显示、串行口、接口时序(串行AD)的基本原理及程序实现方法;
另外,为了使同学们对比较复杂的程序有比较深入的理解,第8章以本实验板上的在线编程器为例,详细介绍了编程器硬件、软件的设计实现过程,对相应的PC端软件也做了比较详细的说明。
本书配套的实验板集成了数码管、按键、继电器、蜂鸣器、温度传感器、AD转换器等资源;开发环境选择了KeilCuVsion2,在该编程环境进行程序的编辑、连接、仿真,最后生成hex文件,利用编程器将该hex文件写入实验板观察、测试程序的运行。
为了便于使用,本书对单片机的基本概念等做了基本的介绍,但是主要是围绕实验展开的,本书实验没有涉及的部分(如AT89S52单片机的省电模式、看门狗、定时器2等)基本上不做介绍,以突出本书入门的主要目的,感兴趣的同学可参考其他书籍。
1嵌入式系统基本概念
嵌入式系统(Embeddedsystem,ES)是“控制、监视或者辅助装置、机器和设备运行的装置”(devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants),可以将其理解为嵌入到对象体系中的专用计算机应用系统。
嵌入式系统与应用紧密结合,具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。
嵌入式系统有三个基本特点,即“嵌入性”、“专业性”和“计算机”。
一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成。
通用计算:
PC机,可进行高速、海量的数值运算。
专用计算:
即嵌入式系统,可满足对象系统嵌入式智能化控制要求。
嵌入式系统分类:
●单片机系统:
用于控制,简单、便宜,一般没有操作系统,不需要联网。
其典型应用:
洗衣机、微波炉、遥控飞机等;
●ARM系统:
一般有操作系统,需要联网,常常进行多媒体处理,比较复杂。
其典型应用为智能手机、平板电脑等;
●DSP(DigitalSignalProcessor):
专门用于数据处理,根据应用背景可能需要操作系统。
典型应用:
手机中话音信号编码,调制解调器(Modem)等;
●可编程逻辑(FPGA/CPLD):
高速并行数据处理或复杂逻辑电路。
典型应用:
3G基站、PCI协议接口等;
1.1单片机的由来
单片机是单片微型计算机的简称,就是将CPU、ROM、RAM、定时、计数器和多种接口都集成到一块电路芯片上的微型计算机。
单片机经历了SCM、MCU和SOC三大阶段,目前处于MCU和SOC阶段。
SCM即单片微型计算机(SingleChipMicrocomputer)阶段。
在SCM阶段,芯片往往需外接很多其他的芯片才能工作。
典型的例子就是Intel公司的8031单片机系列。
MCU即微控制器(MicroControllerUnit)阶段,其典型代表为Intel的48、51系列单片机。
主要的技术发展方向是:
不断扩展满足嵌入式应用时对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。
在MCU阶段,单个芯片内集成了大量的存储器、外设,基本上无需其他芯片即可独立工作。
典型例子:
本教材使用的AT89S52单片机。
SoC即片上系统(SystemonChip)阶段,又为系统级芯片,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
单片机是嵌入式系统的独立发展之路。
向MCU发展的重要因素,就是寻求应用系统在芯片上的最大化解决方案。
因此专用单片机的发展自然形成了SoC化趋势。
SoC一般利用CPLD或FPGA实现。
1.251系列单片机
51系列单片机是对所有兼容Intel8051指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,在此基础上进行完善推出了更为成熟8051系列单片机,51系列单片机得到的广泛应用。
后来Intel公司通过专利交换把51单片机的技术授权给了多家公司,如Atmel、飞利浦、凌阳等,各个公司在51单片机的基础上进行修改,推出了很多各具特色的51系列单片机。
我们这里采用的AT89S52单片机就是Atmel公司在Intel8052单片机的基础上添加了看门狗、Flash程序存储器、在线编程等资源,使得使用起来更加方便。
注意:
52单片机在51单片机基础上增加了定时器2、128字节RAM等资源。
1.3AT89系列单片机
AT89系列是美国ATMEL公司推出的单片机,集成了8K字节的电擦除片内程序存储器(Flash),与MCS-51系列单片机完全兼容。
AT89系列主要包括AT89C51/52、AT89C2051、AT89S51/52等。
它们之间区别如下:
●AT89C2051是AT89C51的简化版,只有20个管脚,本实验板的编程器就使用了该芯片,详见第8章;
●AT89S51/52在AT89C51/52的基础上增加了看门狗和在线编程;
它们也具有共同的特性:
●片内程序存储器采用闪烁存储技术(Flash),编程/擦写速度快(擦除时间约10ms,4K编程约3s,并可反复编程(1000次以上),数据不易挥发(至少保存10年);
●具有超强的加密功能。
片内程序存储器在AT89C51/52设有三级加密,在AT89C2051,设有二级加密,保密功能大大强于8751/52,能完全保证程序不被仿制;
●采用了CMOS工艺,具有低电压、低功耗、高速度的特点;
1.4AT89S52单片机
AT89S52为一款低功耗、高性能的COMS8位微控制器,片上集成了8KB可支持在线编程的闪存。
该器件利用了Atmel公司的高密度非挥发存储器技术,并与80C51单片机在指令和管脚上保持兼容。
片上Flash允许程序存储器在系统可编程(本实验平台即利用该技术实现对AT89S52的编程),亦可用常规独立编程器进行编程。
其主要特征:
●8K字节在系统可编程Flash存储器,256字节RAM
●32个可编程I/O口线,3个16位定时器/计数器,1个看门狗定时器
●双数据指针
●静态逻辑操作,支持2种软件可选择的节电模式
⏹空闲模式(idle):
CPU停止工作,允许RAM、定时器/计数器、串口、中断等继续工作,直到有中断发生为止;
⏹掉电方式(powerdown),RAM内容被保存,振荡器冻结,单片机一切工作均停止,直到有外部中断发生或被硬件复位为止。
节电模式对电池供电系统非常重要,但本书是引导读者入门的,因而本书中没有涉及这方面的内容,看门狗也是如此,感兴趣的同学可以参考其他书籍。
1.5思考题
1.什么是嵌入式系统?
2.什么是单片机与ARM、DSP、PC机有什么异同?
3.AT89S52单片机的特点是什么?
2AT89S52单片机内部构成&片内资源
2.1AT89S52单片机的基本组成
图2-1AT89S52单片机内部结构
芯片特性:
●与MCS-51系列单片机兼容
●集成了8K字节的闪存,且支持ISP(InSystemProgrammable:
在系统编程,即无需拔掉芯片,即可对该芯片进行编程,本实验板即利用该技术对其进行编程)
●闪存写周期在1000次以上(若不断对单片机进行擦除、编程,其结果会如何?
)
●工作电压:
4.0V~5.5V
●全静态设计,工作频率:
0Hz~33MHz
●3级程序保密
●256字节内部RAM
●32个可编程输入输出端口(I/O:
Input/Output)(问题:
GPIO是什么?
)
●3个16位定时器/计数器(该计数器的计数范围是多少?
)
●8个中断源
●1个全双工通用异步串行口(UART:
UniversalAsynchronousPort)
●支持低功耗模式、掉电模式
●利用中断从掉电模式恢复
●有一个看门狗定时器(有什么用处?
)
●双数据指针
●掉电标识
2.2AT89S52单片机的引脚说明
AT89S52单片机有3种封装,分别是(参考文献【3】):
●40脚双列直插(PDIP:
PlasticDualInlinePackage)
●44脚(PLCC:
PlasticJ-leadedChipCarrier)
●44脚(TQFP:
Thin(1.0mm)PlasticGullWingQuadFlatPackage)
本实验板采用的封装形式为PDIP40,其芯片管脚分布如图2-2-1a所示,在Protel99SE软件中的符号如图2-2-1b。
图2-2-1a芯片管脚分布图2-2-1b本实验板单片机电路图
图2-2-2单片机时钟波形:
CH1为X2(幅度较大)、CH2为X1(幅度较小)
AT89S52单片机采用CMOS工艺制造,本实验板采用双列直插(DIP)方式封装,有40个引脚,其引脚及功能分类如图2-2-1所示。
引脚说明如下:
●电源引脚:
Vcc为+5V电源,GND为接地端;
●时钟(本实验板上的时钟波形如图2-2-2所示,晶振频率11.0592MHz)
⏹XTAL1(有时简写为X1):
片内振荡器反相放大器的输入端,不使用晶振时,可利用该端口输入外部时钟;
⏹XTAL2(有时简写为X2):
片内振荡器反相器的输出端,可以用该管脚驱动其他电路,作为其他电路的时钟驱动;
●控制总线
◆
(AddressLockEnable/Program):
地址锁存允许/编程信号线。
当CPU访问外部存储器时,ALE用来锁存P0输出的地址信号的低8位,它的频率为振荡器频率的1/6;如图2-2-3所示,在本实验板中ALE输出频率为1.838MHz,1/6晶振频率为1.8432MHz,与测试频率基本一致(从这里看出,示波器测试时间不是很准确);
◆
(ProgramStrobeEnabled):
外接程序存储器读选通信号。
本实验板没有外接程序存储器,故该管脚悬空(参见4.1.4单片机电路);
◆
(ExternalAddress/VoltageProgramPower):
访问内部程序存储器的控制信号。
当
时,CPU从片内ROM读取指令;
时,CPU从片外ROM读取指令;本实验电路中该管脚接高电平;
◆RST/VPD(Reset/VoltagePowerDown):
复位输入信号。
当该引脚上出现2个机器周期以上的高电平时,可实现复位操作。
此引脚为掉电保护后备电源的输入引脚。
在本实验电路中,上电复位波形如图2-2-4所示,上电复位期间(CH1为高电平)约有880个振荡周期(合73个机器周期,要求复位脉冲持续大于2个机器周期即可),足以保证正常的复位(上电复位电路参见4.1.1部分);
图2-2-3时钟管脚X2(振荡周期)与ALE管脚(机器周期)波形之间的关系
图2-2-4上电复位:
RST管脚(CH1)与时钟管脚X2波形
●32根I/O总线。
P0.0~P0.7(P0口),P1.0~P1.7(P1口),P2.0~P2.7(P2口)、P3.0~P3.7(P3口)为输入/输出引线。
说明:
振荡周期为管脚X1、X2上在周期,机器周期为振荡周期的12分频,指令周期为执行一条指令所需的时间,为若干个机器周期(参见10.2)。
AT89S52单片机有4个8位双向I/O接口P0~P3,共32根输入/输出线,每一条I/O口线都能独立使用。
每个端口包含一个8位数据锁存器和一个输入缓冲器。
输出时,数据可以锁存;输入时,数据可以缓冲。
GPIO在指令控制下,可以有三种基本操作方式:
输入、输出和读-修改-写。
P0、P2也可以作为总线接口,外面连接程序或数据存储器。
注意:
本实验板没有外扩存储器,事实上单片机系统很少需要外扩存储器,因此目前很多单片机已取消了外部存储器接口。
P3除了可以用作通用IO口(GPIO)外,还具有特殊的功能,如串行口;P1只能作为GPIO接口。
P1~P3均为准双向口,都包括如下部分:
●端口锁存器
●输入缓冲器
●输出缓冲器
●芯片管脚
下面对这4个8位并行口进行详细的说明。
一.P0口
P0~P3的内部结构大同小异,基本上由数据锁存器、输入缓冲器和输出驱动电路等组成,其中P0口最有为复杂。
图2-2-6是P0口某位结构图。
它由一个输出数据锁存器、两个三态输入缓冲器、输出驱动电路和输出控制电路组成,使用功能有两种。
图2-2-6P0.x结构(x:
0~7)
(l)通用接口功能。
对P0口直接操作时,如执行MOVP0,#00H(P0=0)CPU使控制端C=0,转换开关MUX倒向下面,使输出管脚P0.x与锁存器
端接通,这时P0作为一般I/O口使用。
C=0使与门输出为0,Tl截止,因此使输出驱动级工作在漏极开路的工作方式;因此与其他端口不同,此时P0口没有上拉电阻,所以做GPIO时,P0口外面需要加上拉电阻。
但是在本实验板中,因无需输出拉电流,所以没有接上拉电阻。
P0作为输出口时,锁存器CL(Clock)端加一写入脉冲,与内部总线相连的D端数据取反后出现在
端,又经T2反相,在P0引脚上出现的数据正好是内部总线上的数据。
P0口用做输入时:
三态缓冲门2打开,端口引脚上的数据读到内部总线。
在端口进行读入引脚状态前,先向端口锁存器写入一个“1”,使
,此时Tl和T2完全截止,端口引脚处于高阻状态。
可见,P0作为通用接口时是一准双向口。
(2)地址/数据分时复用功能。
MCS-51单片机没有专门的地址、数据线,这个功能由P0、P2口承担。
当P0口作为地址/数据分时复用总线时,有两种情况:
一种是从P0口输出地址或数据;另一种是从P0口输入数据。
在访问片外存储器时(执行MOVX、MOVC指令时),CPU使控制端C自动为1,转换开关MUX倒向上面,锁存器
端断开,这时地址/数据信号经反向器和与门,作用于T1、T2场效应管,使输出引脚和地址/数据信号相同。
当从P0口输入数据时,执行一条取指操作或输入数据的指令,读引脚脉冲打开三态缓冲门2使引脚上数据送至内部总线。
二.P1、P2和P3口
图2-2-6P1.x结构(x:
0~7)
P1、P2和P3口为准双向口,在内部差别不大,但功能有所不同。
P1口是用户专用的8位准双向I/O口,其内部结构如图2-2-6所示。
具有通用输入/输出功能,每一位都能独立地设定为输入或输出。
注意:
读端口分为2种情况,读引脚和读锁存器,具体如下:
●读引脚:
当由输出方式变为输入方式时,该位的锁存器必须写入“1”,关断图2-2-6中的CMOS管,然后才能进行输入操作,若没有外部电路,内部上拉电阻将P1.x管脚拉为高电平,此时读入的数据为“1”;举例:
flag_b=P1.0;movc,P1.0;
●读寄存器:
使用在读修改指令中,如对P1.0端口取反:
P1.0=!
P1.0;CPLP1.0,此时先读取P1.0对应的锁存器内容,取反后再写入P1.0锁存器;所以每执行一次该指令,P1.0管脚上的电平就会翻转一次;
图2-2-7P2.x结构(x:
0~7)
P2口是8位准双向I/O口,也可作为扩展系统的地址总线,输出高8位地址,与P0口一起组成16位地址总线。
其内部结构如图2-2-7所示,与P1口相比,增加了一个2选1数据选择器(切换开关)和一个反向器,当对P2口操作时,如P2.0=1,MUX自动倒向左边,送出P2.0锁存的内容;当对外部存储器操作时(使用MOVX或MOVC指令),则MUX自动倒向右边,送出高8位地址。
因此,用作GPIO时,P2与P1完全相同。
图2-2-7P3.x结构(x:
0~7)
P3口为双功能口。
当P3作为通用I/O口使用时,也是准双向口,与P1、P2完全相同;此时,第2功能输出高电平,P3.x的信号通过与非门输出;作为第二功能使用时,P3.x输出高电平,则与非门输出第2功能信号,每一位的第2功能定义如表2-2-1所示。
表2-2-1P3口的第二功能
P3口引脚
第二功能标记
第二功能注释
P3.0
Rx
串行口数据接收输入
P3.1
Tx
串行口数据发送输出
P3.2
INT0\
外部中断0输入
P3.3
INT1\
外部中断1输入
P3.4
T0
定时器0外部输入
P3.5
T1
定时器1外部输入
P3.6
WR\
片外存储器写使能
P3.7
RD\
片外存储器读使能
P0的输出级具有驱动8个LSTTL负载的能力,即输出电流不小于800uA;P1、P2、P3口的输出缓冲器可驱动4个LSTTL门电路,并且不需外加上拉电阻就能驱动CMOS电路。
其具体驱动能力参见文献【3】第32页。
2.3中断系统
图2-3-1MCS-51中断系统结构框图
2.3.1中断源
AT89S52提供了6个中断具体如表2-3-1-1所示。
表2-3-1-1AT89S52的中断源
中断源
说明
/INT0
P3.2引脚输入,低电平/下降沿有效,每个机器周期采样并设置IE0标志
定时器0
当定时器T0(TH0TL0)产生溢出时,置位内部中断标志TF0,发出中断申请
/INT1
P3.3引脚输入,低电平/下降沿有效,每个机器周期采样并设置IE1标志
定时器1
当定时器T1(TH1TL1)产生溢出时,置位内部中断标志TF1,发出中断申请
串行口
当一个串行口帧接收/发送完成时,使中断请求标志RI/TI置位,触发中断请求
定时器2
当定时器T2(TH2TL2)产生溢出时,置位内部中断标志TF2,发出中断申请
注意:
机器周期为时钟周期的12倍,本实验板单片机的机器周期约为1us,因此外部中断低电平最短要持续1us。
8051的中断请求分别由特殊功能寄存器TCON(TimerControl:
定时器控制寄存器)和SCON(SerialControl:
串行口控制寄存器)的相应位锁存。
一.特殊功能寄存器TCON中的标志
TCON为内部定时器/数器T0、T1的控制寄存器,其字节地址为88H,位地址为88H~8FH,图2-3-1-1示出了TCON各
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 基本原理 开发 入门