资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,ARM嵌入式系统,*,单片机应用技术项目教程(,C,语言版),计算机科学系,项目一 发光二极管,LED,点亮控制,项目一 发光二极管,LED,点亮控制,实训,目的,了解单片机的内部结构与主要型号;,掌握单片机引脚功能;,掌握单片机,I/O,口的基本功能;,掌握用,I/O,口实现简单控制的方法;,利用单片机的,I/O,口实现,LED闪烁,的控制。,2,ARM嵌入式系统,工作模块一 点亮一个发光二极管,工作任务,使用,AT89S52,单片机,,P1.0,引脚接发光二极管(,LED,)的阴极,通过,C,语言程序控制,从,P1.0,引脚输出低电平,使发光二极管点亮。,3,ARM嵌入式系统,LED,控制电路,按照工作任务要求,点亮一个,LED,电路是由,AT89S52,单片机和,1,个,LED,电路构成。,AT89S52,单片机是美国,ATMEL,公司生产的低电压、高性能,8,位单片机,具有丰富的内部资源,使用,AT89S52,单片机无须外部存储器。,4,ARM嵌入式系统,用,PROTEUS,设计第一个,LED,控制电路,新建设计文件,保存设计文件,选取元器件,放置元器件,编辑元器件,放置终端,连线,属性设置,电气规则检测,5,ARM嵌入式系统,工作过程,P1.0,引脚接发光二极管(,LED,)的阴极,,P1.0,引脚输出低电平时,发光二极管点亮。,通过程序控制,使,P1.0,引脚输出低电平,使发光二极管点亮。,6,ARM嵌入式系统,LED,点亮程序,#include,/,包含,AT89X52.H,头文件,sbit,LED=P10;,/定义LED是P1.0,引脚对应的变量名,void main(void),LED=0;,/P1.0=0,,,LED,点亮,while(1);,7,ARM嵌入式系统,KEIL C51(P32),Keil,C51,是德国,Keil,软件公司开发的基于,8051,内核的微控制器软件开发平台,是,51,系列单片机,C,语言软件开发系统,是目前开发,8051,内核单片机的主流工具。,Keil,C51,软件提供丰富的库函数和功能强大的集成开发调试工具,全,Windows,界面。,Vision2,集成开发环境可以完成从工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。,8,ARM嵌入式系统,用,KEIL C51,编写第一个,C,语言程序,建立第一个,C,程序项目,建立工程文件,建立源文件,加载源文件,设置工程的配置参数,进行编译和连接,进入调试模式,全速运行程序,9,ARM嵌入式系统,用,PROTEUS,仿真运行调试,加载“点亮一个,LED.hex”,目标代码文件,打开,Proteus“,点亮一个,LED”,电路。,双击单片机“,AT89S52”,,在弹出的“编辑元件”对话框中单击“,Program File”,栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“点亮一个,LED.hex”HEX,文件,单击“打开“按钮,完成“点亮一个,LED.hex”HEX,文件加载。,将“,Clock Frequency”,栏中的频率设为,12MHz,,单击“确定”,即可完成加载目标代码文件。,仿真运行调试,单击仿真工具栏“运行”按钮,单片机全速运行程序。,10,ARM嵌入式系统,MCS-51,单片机,MCS-51,是美国,Intel,公司的,8,位高档单片机系列,也是我国目前应用最为广泛的一种单片机系列。,8051/80C51,是整个,MCS-51,系列单片机的核心。,51,系列单片机源于,Intel,公司的,MCS-51,系列,在,Intel,公司将,MCS-51,系列单片机实行技术开放政策之后,许多公司都以,MCS-51,中的基础结构,8051,为基核推出了许多各具特色、具有优异性能的单片机,如,Philips,、,Atmel,等。这样,把这些厂家以,8051,为基核推出的各种型号的兼容型单片机统称为,51,系列单片机。,11,ARM嵌入式系统,Atmel,公司的,AT89,系列单片机,AT89,系列单片机不但具有一般,MCS-51,单片机的所有特性,而且其,Flash,程序存储器可以用电擦除方式瞬间擦除、改写,写入单片机内的程序还可以进行加密。,型号,快闪,ROM,片内,RAM,寻址,范围,并行,口线,串行口,中断源,定时器,AT89C51,4K,128,2,64K,32,1,5,2,16,AT89C52,8K,256,2,64K,32,1,6,3,16,AT89C2051,2K,128,2,4K,15,1,5,2,16,AT89C4051,4K,128,2,4K,15,1,5,2,16,AT89S51,4K,128,2,64K,32,1,5,2,16,AT89S52,8K,256,2,64K,32,1,6,3,16,12,ARM嵌入式系统,并行,I/O,口,4,个,8,位的,I/O,口(,P0,、,P1,、,P2,、,P3,),实现数据的并行输入,/,输出,13,ARM嵌入式系统,串行口,一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。,该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。,14,ARM嵌入式系统,中断控制系统,5,个中断源,即外中断两个,定时,/,计数中断两个,串行中断一个。,全部中断分为高级和低级共两个优先级别。,15,ARM嵌入式系统,AT89S52,引脚功能,(P11),电源线:,VCC(+5V)、VSS(,地,),振荡电路:,XTAL1,、,XTAL2,复位引脚:,RST,并行口:,P0,、,P1,、,P2,、,P3,EA,:访问程序存储控制信号,PSEN,:外部,ROM,读选通信号,ALE,:地址锁存控制信号,P3,口线的第二功能,16,ARM嵌入式系统,AT89S52,引脚功能,电源引脚,(2,根,),VCC(40,脚,),:电源端,接,+5V,电源。,VSS(20,脚,),:接地端。,时钟引脚,(2,根,),XTAL1(19,脚,),:接外部晶振和微调电容的一端。,XTAL2(18,脚,),:接外部晶振和微调电容的另一端。,17,ARM嵌入式系统,AT89S52,引脚功能,控制引脚,(4根),RST/VPD(9脚):复位信号。,当输入的复位信号延续两个机器周期以上的高电平时即为有效,用以完成单片机的复位初始化操作。,ALE/PROG(30脚):,地址锁存控制信号。,在系统扩展时,,ALE,用于控制把,P0,口输出的低,8,位地址锁存起来,以实现低位地址和数据的隔离。,EA/VPP(31脚):,访问程序存储控制信号。,当信号为低电平时,对,ROM,的读操作限定在外部程序存储器;当信号为高电平时,对,ROM,的读操作是从内部程序存储器开始,并可延至外部程序存储器。,PSEN(29脚):片外ROM读选通信号端。,在读片外ROM时,PSEN有效,为低电平,以实现对片外ROM的读操作。,18,ARM嵌入式系统,AT89S52,引脚功能,P0,口(引脚,32-39,)普通,I/O,口,P1,口(引脚,1-8,)普通,I/O,口,P2,口(引脚,21-28,)普通,I/O,口,P3,口(引脚,10-17,)普通,I/O,口,或作为其他第二功能口,19,ARM嵌入式系统,P3,口各引脚与第二功能表,引脚,第二功能,功能说明,P3.0,RXD,串行口输入,P3.1,TXD,串行口输出,P3.2,INT0,外部中断,0,输入,P3.3,INT1,外部中断,1,输入,P3.4,T0,定时器,/,计数器,0,计数输入,P3.5,T1,定时器,/,计数器,1,计数输入,P3.6,WR,片外,RAM,写选通信号,(,输出,),P3.7,RD,片外,RAM,读选通信号,(,输出,),20,ARM嵌入式系统,最小单片机系统,(P13),单片机,5V,电源,接地,时钟电路(晶振),复位电路,21,ARM嵌入式系统,时钟电路,时钟电路为单片机产生时钟脉冲序列。,系统允许的晶振频率一般为,6 MHz,和,12 MHz,,电容,C1,和,C2,取,30 pF,左右。,晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。,22,ARM嵌入式系统,时序的概念,单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。,单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。,振荡周期,是指晶体振荡器直接产生的振荡信号的周期,是振荡频率,fosc,的倒数,用,P,表示。,状态周期,(,或,状态,S,),是振荡周期的两倍,它分为,P1,节拍和,P2,节拍。,1,个,机器周期,是由,6,个,状态,构成。,执行一条指令所需的时间称为,指令周期,。,23,ARM嵌入式系统,复位电路,单片机的复位引脚,RST,出现,2,个机器周期以上的高电平时,单片机就执行复位操作。,常见的复位操作有上电自动复位和按键手动复位两种方式。,上电自动复位是通过外部复位电路的电容充电来实现的。,按键手动复位是通过复位端经电阻与电源,VCC,接通而实现的,它兼备上电复位功能。,24,ARM嵌入式系统,技能训练,1-1,单片机最小系统只是单片机能满足工作的最低要求,它不能对外完成控制任务,实现人机对话。,单片机最小系统应用,开关控制,LED,点亮,电路设计,程序设计,25,ARM嵌入式系统,工作模块,2,-,LED闪烁,分析,软件实现思路:,点亮发光二极管,延时(延时子程序),关闭发光二极管,延时,重复上述动作(循环),电路设计和前面一样,26,ARM嵌入式系统,C,语言程序,#include,sbit,LED=P10;,void Delay(),unsigned char i,j;,for(i=0;i255;i+),for(j=0;j0;i-),_,nop,_();,void main(void),while(1,),if(P1_7=0),for(count=200;count0;count-),/1KHz,信号响,100ms,P1_0=P1_0;,dely500();,for(count=200;count0;count-),/500Hz,信号响,200ms,P1_0=P1_0;,dely500();,dely500();,38,ARM嵌入式系统,
展开阅读全文