版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第一章 单片机综述 (1.5),+ 外设(键盘、显示、AD、DA),1、单片机的概念(单片微型计算机、微控制器) 将CPU、存储器、定时器/计数器、多种I/O接口等电路集成在一块芯片上所构成的计算机。 2、单片机的内部结构:,2,2.1 单片机的内部结构,由运算器(ALU)、控制器和专用寄存器组构成,程序计数器PC:存放下一条需要执行的指令内存地址,自动加1。,16位、决定了可以寻址的程序存储器的空间64KB。 上电后初始值是0000H,所以从该地址开始执行程序。,累加器A、B 程序状态字PSW,堆栈指针SP,数据指针DPTR,3,存储器结构-ROM,8051的内部ROM 4K B; 80
2、31没有内部ROM。 如果使用8051,/EA引脚如何连接?如果片内ROM用完了怎么办?也就是说当PC值为多少的时候,会转到片外ROM执行? 内部ROM和外部ROM的最大寻址空间多大?决定于哪个寄存器?,单片机的存储器 有ROM、RAM之分;还有片内、片外之分,4,存储器部分片内RAM,8051片内RAM 128字节(地址00-7FH),片外RAM 可扩展64KB(地址0000H-FFFFH)。共同占用部分访问时用MOV和MOVX指令区别。 片内RAM分为:(1)工作寄存器区(00H-1FH)4组R0-R7 (2)位寻址区(20H-2FH):两种访问方法。 (3)便笺区(30H-7FH),5,
3、6,上电后,默认使用的是哪一组工作寄存器?地址是多少?如果要更改工作寄存器的地址,使用什么寄存器、什么指令?,7,7FH 便笺区 30H,2FH 位寻址区 20H,1FH 工作寄存器区 00H,1、位寻址区是指 20H2FH单元,共16个单元。 2、 位寻址区的 16个单元(共计128位)的每1位都有一个8位表示的位地址, 位地址范围为00H1FH。 4、 同样, 位寻址的RAM单元也可以按字节操作作为一般的数据缓冲 区。 两种寻址方法:假如寻找0B位,可以用 SETB 0BH; SETB 21H.3;,8,7FH 真正RAM区 00H,FFH SFR区 80H,1、高128B的RAM单元中有
4、21个单元可用,这21个分散在高128B的地址空间内,分别是A,B,PSW,SP,DPH,DPL,P0,P1,P2,P3,IP,IE,TCON,TMOD,TH0,TL0,TH1,TL1,SCON,SBUF,PCON。 2、11个可以按位寻址。规律:地址可以被8整除。,3 特殊功能寄存器区(SFR):有特殊用途的寄存器的集合。参见P58表2-3、图2-6,9,控制引脚的功能,单片机最小系统的组成,10,3、控制线,RST复位信号 需要让8051复位时,给该引脚高电平,并保持24个时钟周期。,地址锁存允许/编程线 有外部存储器:访问外存时锁存低8位地址 无外部存储器时,ALE输出为晶振6分频的脉冲
5、序列,可用作外部时钟源;,片外ROM选通线。MOVC命令时自动在该脚产生负脉冲,选通外部ROM,-允许访问片外存储器/编程电源线) /EA=1 从内部开始执行程序; /EA=0 只访问外程序存储器;,11,7.上电自动复位和手动复位,上电复位,按键电平复位,复位在RST引脚上保持24个震荡周期(即两个机器周期)以上的高电平,习题,12,第六章 MCS-51的中断系统,(1)什么是中断,中断的作用是什么?,13,80C51中断系统结构示意图,14,15,中断相关的几个重要SFR,3)中断允许寄存器IE(A8H),16,4)中断优先级寄存器IP(B8H),5)定时器方式控制寄存器TMOD(89H
6、不能位寻址),同级中断的优先级顺序 INT0 T0 INT1 T1 串行口。,17,外部中断初始化步骤,3、开中断,2、设立优先级,1、设立触发方式(电平or边沿),例6.1 请写出/INT1为低电平触发 和高中断优先级的中断系统初始化程序 CLRIT1 ;电平触发 IT1 = 0; SETBEX1 EX1 = 1; SETBPX1 PX1 = 1; SETBEA EA = 1;,18,、,TCON(模式控制寄存器):用来设置定时器/计数器的操作模式; TMOD(方式寄存器):用来控制定时器的启动与停止。 TH0、TL0、TH1、TL1:两个16位加法计数器 T0 和 T1 均可分成2个独立的
7、8位计数器,用于存放定时或计数的初值,并用作加1的计数。 与定时器/计数器相关的输入引脚有四个: T0、T1、 、,。,5.MCS-51定时器逻辑结构与相关寄存器,19,20,控制寄存器TCON是一个8位寄存器,既可以字节寻址也可以位寻址,字节地址为88H,位寻址的地址为88H8FH。其格式为:,TF1和TF0:分别为T1和T0的溢出标志。当定时器/计数器计满产生溢出时,由硬件自动置“1”,可申请中断。 TR1和TR0:为定时器/计数器T1和T0的启动、停止控制位。 IE1和IE0:外部中断1( )和外部中断0( )的中断请求标志位。当外部中断源有请求时其对应的中断标志位置“1”。 IT1和I
8、T0:为外部中断1和外部中断0的触发方式选择位。ITi设置为“0”时为电平触发方式;设置为“1”时为边沿触发方式。 系统复位时,TCON被清0。,控制寄存器TCON(P.109),21,方式控制寄存器TMOD是一个8位寄存器,字节地址为89H,只能用字节传送指令来设置定时器的工作方式,系统复位时TMOD所有位均为0。其格式为,(1)GATE:门控位。 GATE=1时,定时器/计数器由外部中断引脚 和 TRi共同来启动。 当 引脚为高电平时,TRi=1,启动定时器/计数器Ti ; TRi=0,定时器/计数器 Ti 停止工作。 GATE=0时,仅由TRi来启动定时器/计数器,又称为软件启动。 TR
9、i=1,定时器/计数器Ti启动开始工作; TRi=0,定时器/计数器Ti停止工作。,、,方式寄存器TMOD,(2) :功能选择位。 当 =0时设置为定时器方式,计数脉冲由内部提供,计数周期等于机器周期。 当 =1时设置为计数器方式,计数脉冲为外部引脚T0或T1引入的外部脉冲信号。,22,6.定时器/计数器有四种工作方式(P.109-),表 定时器/计数器T0、T1的四种工作方式,23,初值设定-关键,为什么要给定时器预设初值?如何确定预设初值是多少呢?,16位计数方式,0,65535,定时时间65536us,定时时间50000us,X,定时时间50000us,X=65536-50000=155
10、36=3CB0H,MOV TH0, #3CH MOV TL0, #0B0H,定时时间:开始计数 溢出,24,定时器初始化编程格式,初始化编程格式:,TMOD = x ;选择工作方式 THx = 0 x#;装入Tx时间常数 TLx= 0 x# ETx = 1;开Tx中断 EA = 1;开总中断 TRx = 1;启动Tx定时器,25,例:若单片机时钟频率为12MHz,请计算定时100us所需的定时器初值,并写出初始化程序,各种方式定时时间比较: 方式0:213 *1us=8192us=8.192ms 方式1:216 *1us=65.536ms 方式2、方式3:28 *1us=0.256ms 方式0
11、时:(213 TC)*1us=100us TC=1F9CH;TH0=FCH、TL0=1CH 方式1:(216 TC)*1us=100us TC=FF9CH 方式2: (28-TC)*1us=100us TC=009CH,定时器/计数器例程,1 根据时钟频率计算机器周期 2将定时时间与各种方式最大时间比较 3、选择合适的方式,求出初值 4、写出初始化程序,26,中断程序格式,Sbit LED = P10; Void main() IT0 = 0; EX0 = 1; EA = 1; while(1); Void Int0_Int() interrupt 0 LED = !LED; ,27,定时器例
12、程,例7.11 设8051时钟频率12MHz,编写程序令P1.0引脚输出2S的方波程序,sbit Pulse = P10; unsigned char Cnt_50ms; Void T1_Init(void) TMOD = 0 x10; TH1 = 0 x3c; TL1 = 0 xb0; ET1 = 1; EA = 1; TR1 = 1; ,Void T1_Int() interrupt 3 TH1 = 0 x3c; TL1 = 0 xb0; if(Cnt_50ms = 20) Cnt_50ms = 0; Pulse = Pulse; ,Void main() T1_Init(); while
13、(1); ,28,计数器例程,分析:T1工作在方式2,200个脉冲产生一次溢出,所以,256-200=56 ;C=38H。那么TH0=TL0=38H。,利用T1的方式2对外部信号计数,要求每计满200个数,将P1.0引脚取反。,Sbit Pin = P10; Void main() TMOD = 0 x60; TH1 = 0 x38; TL1 = 0 x38; ET1 = 1; EA = 1; TR1 = 1; Void T1_Int() interrupt 3 Pin = Pin; ,29,第八章 MCS-51对AD和DA的接口,ADC0809、DAC0832的作用是什么?什么是分辨率、什么
14、是转换精度?这两款芯片的分辨率、转换精度分别是多少?,DAC0832和MCS51单片机的连接方法有:直通方式、单缓冲方式、和双缓冲方式。 (两个锁存器处于不同的导通关闭状态),30,其内部结构和引脚功能如下图所示:,数模转换器-DAC0832,DAC0832结构引脚图,缓冲器,31,如图所示连接是那种接口方式? DAC0832的地址应该是多少? 使用什么样的指令启动DAC转换? 如果要用该图原理产生三角波、锯齿波分别该如何写程序?,32,ADC0809芯片内部结构 以及引脚功能,START CLOCK,33,MCS-51对ADC0809的接口,从该图上可以获得的信息: 1、要启动IN0的AD转
15、化,需要用命令 MOV DPTR,#FEF8H MOVX DPTR,A 2、要读出转化后的数据 需要使用命令 MOV DPTR,#FEF8H MOVX A,DPTR 3、8个通道的选通地址分别是FEF8 FEFF,34,第9章 MCS-51 的串行通信,MCS-51含有一个可编程全双工串行通讯接口,能同时进行数据的发送和接收,也可以作为一个同步移位寄存器使用。,MOV A , SBUF ;接收数据 MOV SBUF , A ;发送数据,35,单片机串口相关知识回顾,(1) MCS-51串行口的原理结构图,36,单片机串口相关知识回顾,(2) 串行口控制寄存器SCON,D7 D6 D5 D4 D
16、3 D2 D1 D0,D7 D6 D5 D4 D3 D2 D1 D0,(3) 特殊功能寄存器PCON,37,单片机串口相关知识回顾,(4) 串口通信的波特率,对于方式0,波特率是固定的,为单片机时钟的1/12,即fosc/12。 对于方式2,波特率有两种可供选择,即fosc/32和fosc/64。对应于以下公式: 波特率=fosc(2SMOD)/64 对于方式1和方式3,波特率都由定时器T1的溢出率来决定,对应于以下公式: 波特率=(2SMOD/32)(定时器T1的溢出率) 而定时器T1的溢出率则和所采用的定时器工作方式有关,并可用以下公式表示: 定时器T1的溢出率=fosc/12(2n-X)
17、,38,对于方式1和方式3,波特率由定时器/计数器T1的溢出率和SMOD决定,即由下式确定: 波特率=(2SMOD /32 )定时器/计数器T1溢出率 计算溢出率:溢出率即定时时间的倒数。 机器周期T=1/(fosc/12) 定时时间=(2K - 初值)*T,实际使用串行通信时,要首先确定波特率才能进行双方的通信。 根据波特率计算定时器T1的计数初值。 波特率=(2SMOD /32 )定时器/计数器T1溢出率 进行定时器的初始化。通常使用T1的方式2作为波特率发生器 TMOD、TCON、TH1=TL1=?、关T1中断、启动定时 进行串行口初始化。SCON、PCON(SMOD),39,其格式如下
18、: 各位的意义如下: SM0(SCON.7),SM1(SCON.6)串行口工作方式选择位 。其功能见表。 SM2(SCON.5)允许方式2、3中的多处理机通信位。 方式0时,SM20。 方式1时,若SM2l,只有接收到有效的停止位,接收中断RI才置1。而当SM20时,则不论接收到的笫九位数据是”0” 或”1” ,都将前八位数据装入SBUF中,并申请中断。,2. 串行口状态控制寄存器 SCON(P122) 串行口状态控制寄存器SCON用来控制串行通信的方式选择、接收,指示串行口的中断状态。寄存器SCON既可字节寻址也可位寻址,字节地址为98H,位地址为98H9FH。,40,串行口工作方式选择 (
19、P.122),41, 电源控制寄存器 PCON(P.123) 电源控制寄存器PCON仅有几位有定义,其中最高位SMOD与串行口控制有关,其它位与掉电方式有关。寄存器PCON的地址为87H,只能字节寻址。其格式如下: SMOD(PCON.7)串行通信波特率系数控制位。 当SMOD1时,使波特率加倍。复位后,SMOD0。,42,读SBUF(MOVA,SBUF),访问接收数据寄存器;写SBUF(MOV SBUF,A),访问发送数据寄存器。, 串行数据寄存器SBUF 串行数据寄存器SBUF包含在物理上是隔离的两个8位寄存器:发送数据寄存器和接收数据寄存器,但是它们共用一个地址99H。其格式如下:,43
20、,3.串行口的通信波特率(P.125),方式0:波特率固定,fosc/12 方式1:波特率可变,由定时器控制 方式2:波特率为fosc/64或fosc/32 波特率2SMOD/64 SMOD=1或0 方式3:波特率可变,由定时器控制,44,可变波特率的计算(方式1,3),波特率,SMOD为PCON寄存器的最高位,定时器的溢出率:单位时间定时器溢出的次数;,溢出率为溢出周期的倒数,溢出周期:定时器溢出一次所需的时间,45,当定时器1作波特率发生器时,通常选用定时工作方式2(8位自动加载)。 设X为计数初值,则 溢出周期(定时时间),XM计数值Mt/TM(fosct)/12,定时器T1溢出率,46
21、,通常是知道波特率,求计数初值X,实际使用: 1)首先确定波特率 2)然后计算定时器1的计数初值 3)然后进行定时器的初始化,SMOD值可以通过: MOV PCON #00H 或 MOV PCON #80H 设定,47,串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下: 确定串行口控制(编程SCON寄存器); 确定T1的工作方式(编程TMOD寄存器); 计算T1的初值,装载TH1、TL1; 启动T1(编程TCON中的TR1位); 串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。 初始化后,设置串口工作。 发送:直接写SBUF,
22、查询TI/中断 接收:REN置1,查询RI/中断,(五)串行口使用步骤,48,例7-1 设时钟fosc=11.0592MHZ,要设置串行通信的波特率为4800bps,波特率不倍增,串行口方式1,则初始化程序为:,Void Uart_Init(void) TH1 = 0 xfa; TL1 = 0 xfa; TMOD = 0 x20; TR1 = 1; SM0 = 0; SM1 = 1; REN = 1; ,49,要求:单片机串口通信的应用,通过串口,电脑和单片机系统进行通信。电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED 显示接收到的数据和向上位机发回
23、原样数据。,50,程序: #include unsigned char dat; /用于存储单片机接收发送缓冲寄存器SBUF 里面的内容 sbit gewei=P13; /个位选通定义 sbit shiwei=P12; /十位选通定义 unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66, 0 x6d,0 x7d,0 x07, 0 x7f,0 x6f; void Delay(unsigned int tc) /延时程序 while( tc != 0 ) unsigned int i; for(i=0; i100; i+); tc-; void LED( ) /LED 显示接收到的数据(十进制) shiwei=0; P0=tabledat/10; Delay(5);,51,续前页: shiwei=1; gewei=0; P0=tabledat%10; Delay(5); gewei=1; void Init_Com(void) /功能:串口初始化,波特率9600,方式1 TMOD = 0 x20; PCON = 0 x00; SCON = 0 x50; TH1 = 0 xFd; TL1 = 0 xFd; TR1 = 1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玩具企业在全球化背景下的机遇与挑战考核试卷
- 石油及制品进出口知识考核试卷
- 畜牧良种繁殖资源整合与优化配置考核试卷
- 生态保护工程生态保护与生态工程经济效益分析考核试卷
- 白酒产地旅游推广策略考核试卷
- 移动通信工程课程设计
- 皮革护理的历史文化研究与生活美学传播考核试卷
- 2024年度预拌干粉砂浆原材料采购及供应链管理合同2篇
- 2024年度代收款业务委托管理服务合同3篇
- 玉米户外课程设计
- SJG 74-2020 深圳市安装工程消耗量定额-高清现行
- 新媒体运营期末复习试题及答案
- 在全市高技能人才队伍建设工作会议上的讲话
- 最新开利中央空调故障代码大全
- 列车牵规正文
- 中小学优秀备课组(教研组)评比考核表(分值已调整)
- 时产10吨配合饲料厂工艺设计
- 挡风玻璃自动涂胶方案
- 四层电梯控制系统设计-(共38页)
- 资产损失鉴证报告(范本)
- 配电房施工方案及技术措施
评论
0/150
提交评论