在c51单片机串口通讯时的问题,mpi send char_char什么意思,temp为什么要对256取整,取余。temp时无符号整型。

关于c51单片机串口通信问题
[问题点数:40分,结帖人jeasonlsn]
关于c51单片机串口通信问题
[问题点数:40分,结帖人jeasonlsn]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2017年12月 VC/MFC大版内专家分月排行榜第二2017年6月 VC/MFC大版内专家分月排行榜第二2017年5月 VC/MFC大版内专家分月排行榜第二2017年1月 VC/MFC大版内专家分月排行榜第二2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2018年3月 VC/MFC大版内专家分月排行榜第三2018年2月 VC/MFC大版内专家分月排行榜第三2018年1月 VC/MFC大版内专家分月排行榜第三2017年11月 VC/MFC大版内专家分月排行榜第三2017年9月 VC/MFC大版内专家分月排行榜第三2017年8月 VC/MFC大版内专家分月排行榜第三2017年4月 VC/MFC大版内专家分月排行榜第三2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2008年2月 VB大版内专家分月排行榜第一2003年4月 VC/MFC大版内专家分月排行榜第一2002年11月 VC/MFC大版内专家分月排行榜第一
2011年11月 VC/MFC大版内专家分月排行榜第二2008年3月 VB大版内专家分月排行榜第二2008年3月 硬件/嵌入开发大版内专家分月排行榜第二2003年4月 其他开发语言大版内专家分月排行榜第二2003年4月 VB大版内专家分月排行榜第二2003年3月 VB大版内专家分月排行榜第二
匿名用户不能发表回复!|C51单片机串口通信_百度知道
C51单片机串口通信
我想使用89S52单片机做一个控制LED灯的实验,要求为:PC通过串口工具发送指令控制单片机,让其点亮或熄灭LED即可;
我尝试过发单字节是可以实现的,比如发 00给单片机,LED灯亮,发FF,LED灯灭;
我现在的问题是:比如我要发送多个字节来控制LED灯就不行了,...
我有更好的答案
可以通过缓冲区或者switch语句来实现 字符命令的话一般要buff区缓冲数据最后一次处理这样的只要switch语句就可以解决了。在串口中断加入如下代码:void UARTInterrupt(void) interrupt 4//串口中断{
stati//接收计数
//临时变量
switch(cont)
case 0:if(SBUF==0x1b){cont=1;}//检测第一个起始码
case 1:temp=SBUF-'0';temp=1&&cont=2;//获取要点亮的LED号
case 2:if(SBUF-1)P1&=~(temp);else P1|=cont=0;//判断点亮还是熄灭
你好,我按你上面说的把代码加上去了,但是好像没有看到有效果喔?请帮忙指正,谢谢!
#include &reg51.h&void InitUART(void){
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
TR1 = 1;}void input(unsigned char str){stati//接收计数
stati//临时变量
switch(cont)
case 0:if(str==0x1b)//检测第一个起始码{cont=1;}
case 1:temp=str-0x30;//获取要点亮的LED号temp=cont&&cont=2;
case 2:if(str-1)//判断点亮还是熄灭P1|=else //P1口输出指定数据P1&=~cont=0;
}}void main(void){
InitUART();while(1);}void UARTInterrupt(void) interrupt 4//串口中断{
RI = 0;input(SBUF);
采纳率:70%
串口助手因为没有握手信号的关系,所以发送数据是没有等待的,因此,单片机端接受需要开辟缓冲区才可以保证数据不丢失。用C的话就,你就用一个数组来做就OK了。#include&reg51.h&#define uchar unsigned charuchar getdat[16],getp,sbit LED=P1^0;void serisr() interrupt 4{if(RI)
getdat[putp]=SBUF;
putp&=0x0f;
uchar comd[5],i;
TMOD=0x20;
SCON=0x50;
getp=putp=0;
if(getp!=putp)
comd[i]=getdat[getp];
getp&=0x0f;
if((comd[0]==0x1b))&&(comd[1]==0x31)&&(comd[2]==0x01))LED=0;
if((comd[0]==0x1b))&&(comd[1]==0x30)&&(comd[2]==0x02))LED=1;
你好,我试了把你上面的代码下载到芯片里面测试,但好像LED灯不能受PC的控制喔,请帮忙指正,谢谢!
#include&reg51.h&#define uchar unsigned charuchar getdat[16],getp,sbit LED=P1^0;void serisr() interrupt 4{if(RI)
getdat[putp]=SBUF;
putp&=0x0f;
uchar comd[5],i;
TMOD=0x20;
SCON=0x50;
getp=putp=0;
if(getp!=putp)
if((getdat[getp]==0x1b)||(i&0))
comd[i]=getdat[getp];
getp&=0x0f;
if((comd[0]==0x1b))&&(comd[1]==0x31)&&(comd[2]==0x01))LED=0;
if((comd[0]==0x1b))&&(comd[1]==0x30)&&(comd[2]==0x02))LED=1;
你这个是这样的,你检测两个和检测三个的长度改了吗? 我的意思是,如果你检测00两位的数组长度没有变, 那么你发三次就会变成01.
另外一种可能是,串口发送的时候,空格是不计的。电脑发送的,你程序里面判定要有空格了。
发你判定接受数据代码上来
不是很简单吗?在接收中断里面加个计数器,接收完3个字节数据后再对数据进行处理。
串口通讯和单片机控制LED灯是两回事,通讯的内容的含义自己可以随便定义,但必须编程实现协议的解释。
如果每隔一段时间led亮灭一次的话,比如亮一秒灭一秒吧,你可以定时1秒,送个高电平给口线,然后再定时1秒,把高电平取反给口线,如此循环就行了。
其他3条回答
为您推荐:
其他类似问题
串口通信的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&&&&MSP430单片机原理与应用
自营订单满49元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:1页 数:399字 数:633000印刷时间:日开 本:32开纸 张:胶版纸包 装:平装-胶订是否套装:否国际标准书号ISBN:4丛书名:高等学校电子信息类专业系列教材所属分类:&&&
下载免费当当读书APP
下载当当读书APP,免费阅读万本电子书。
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读单片机中断装初值时为什么要对256求模和求余_百度知道
单片机中断装初值时为什么要对256求模和求余
我有更好的答案
定时器工作在16位计数模式的时候有两个个参数TH跟TL这2个参数都是8位(0-255)的,不能直接接受16位(0-65535)数据为了使高8位赋值到TH里面就要采用除以256的方法,等效于&&8(2的8次方=256),就相当于把高字8位移动到低8位的位置了求余数是为了把低8位赋值到TL里面,当不能被256整除留下的余数范围只有0-255以内。所以可以直接赋值给TL了。所以TH0=()/256;TL0=()%256;等效于TH0=()&&8;TL0=()&0x00在运算时 单片机在逻辑运算方面效率高于算术运算。
为什么是除以256和取余呢,为什么不是减呢
简单的原理 十进制运算中如果我要分离18取出十位1只要18/10即可获得
取出个位8还是18/10,但是这次取的是余数8在单片机里面只有二进制像()这样十进制的最终还是会被转换成二进制写到单片机里面二进制也是一样的道理要取出高8位
只要除以2八次方也就是256,不就得到高8位的值了低8位再取余数不就行了
采纳率:70%
应为采用定时器2方式,即采用16位计数器,低字节的数是0~255,256就是0x0100,即THn=0x01,低字节是0x00,可以人为逢256向高字节进一,所以对256取模就是高字节的数,对256求余就是低字节的数
TH0和TL0中应该装入的总数是=15536.,为什么要减去50000呢,然后再对摸对余呢?
因为51是向上计数,也就是每次加1,到满时(65536)溢出产生中断,65536 - n (n & 65536)表示需要及时n个机器周期才发生中断,当你是12M晶振时,机器周期是1us,65536 - 50000就是启动定时器后50ms发生中断。
你说的这种情况是采用16位的定时器,所以最大值应该是65535 ,THX为高八位,TLX为低八位。我们赋值时,就必须 进行对THX和TLX 赋值,因为THX为高8位 ,所以就要对256进行取模(取整) ,得到高8位的值。对256进行取余,得到低8位的值。因为一个字节就是 256 。
一个值放到高位,一个值放到低位。
其他1条回答
为您推荐:
其他类似问题
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: >>
单片机原理及应用
单片机原理及应用主讲:石亚和 E-mail:教材:单片机原理及接口技术 编著 李朝青 北京航空航天大学出版社 第一章 单片机基础知识1.1 微处理器、微机和单片机的概念关于单片机的名称 单片机的发展简史 常见单片机种类 本课程的任务 课程特点和难点 学习方法介绍 关于名称? ??? ? ? ? ?CPU (中央处理单元) 微处理器 (即CPU) 微控制器 (单片机的准确名称) 单片计算机 (国内习惯称谓) Central Processing Unit Microprocessor Microcontroller Single Chip Computer 常见单片机种类(按制造商分类)??? ? ???厂家 主要产品 Intel
Motorola MC68hc908GP32 机 Philips P89C66X Microchip(pic) PIC16CXX Atmel At89c51,s51 Cygnal C特点 国内普及 电信,电 高速,flash 低耗,精指 主流,通用 多功能 单片机的发展简史?位数 位片机 4位单片机 8位单片机 16位单片机 32位单片机年代典型产品典型厂家? ? ? ? ?80’ 80’ 90’ LPC2104Intel Intel Philips 本课程的任务? ? ??? ?学习掌握主流单片机的硬件原理和汇编语言 掌握存储器、I/O接口的基本知识 学习单片机装置的基本设计方法 通过实验训练动手实践技能,增强感性认识 通过课程设计环节巩固理论知识,积累设计 经验 在理论学习中注意总结获取新知的认知方法 和途径,为今后工作中再学习本课程的任务 打好基础。 课程特点和难点??? ? ? ?A B C D E F要求良好的电子技术理论基础 无严谨的理论体系,知识庞杂 抽象概念多,灵活性很大 实践性极强,理论教学必须配合实验 课内外学习时间比应为1:2 许多问题答案不唯一,自我评价困难 学习方法介绍????? ?A B C D E F课前预习 浏览参考书 做笔记(重点为对教材补充的部分) 多思多问 必须做习题,从中发现和解决问题 重视实验,变被动式为主动式 1.2 微机的工作过程计算机中的三种总线: 地址总线AB: Address Bus 三态,单向输出,高有效,数量决定寻址范围 数据总线DB:Date Bus 三态,双向,高有效,数量决定数据宽度 控制总线CB:Control Bus 三态,单线定义,有输入输出之分,又有高低 电平之别,数量反映控制功能强弱. 微机组成框图 取指令过程图谱 单片机概念抽象单片机 =CPU+ROM+RAM+C/T+I/O+UART +A/D+D/A+…… 单片机能做什么???? ? ? ? ? ?工业仪表:热工、机械、成分量检测与控制 带通讯接口的网络化仪表 科学实验装置:存储示波器、信号发生器 医疗设备:心脏监护仪、跟踪器、扫描仪 便携式仪表:数字频率计、测速器、抄表器 温度巡检仪 其他:通讯设备、智能玩具、智能家电、防 盗监控、信息显示屏、报警系统…… 单片机和程序存储器式样 一种单片机应用装置:家庭智能终端 单片机产品实物示例:门锁控制器 复杂印刷电路板实物示例 机芯与机壳 一种高档智能终端 双面印刷电路板示例 采用表面封装方式的电路板 常用元气件图谱 一条指令的执行过程语言描述:1.取指令: 程序计数器PC中存放有要执行的指令的首地址, 把它放到地址总线上,找到ROM中存放该指令字节 的地址单元, 程序计数器PC自动加1; CPU发出读指令字节控制信号(PSEN 或IRD); ROM中的数据(即指令内容)出现在数据总线上; 数据读入CPU的指令寄存器,指令译码器; 经译码后CPU发出相应的控制信号完成后续操 作; 2.执行指令:根据有无操作数决定后续走向,详见教材第 6-7页. 第二章 MCS-51单片机的结构 和原理 1节 MCS-51单片机的结构和原理??? ? ? ? ? ??注意:如无特别说明,机型以8031为例 1.1 片上资源 (结构框图见图2.1 ) 8位微处理器 CPU 4个8位并行口 PIO 2个16位定时计数器 CTC 1个全双工串行口(UART) SIO 5个中断源,2个优先级 21个专用寄存器SFR 64K ROM/RAM寻址能力 1.2 内部结构 读结构图注意事项:注意总线与单信号线的画法区别 ? 注意连接线的箭头代表信号流向,分为双向 和单向,通常: 地址信息为单向 如程序地址寄存器发出 数据信息常为双向 如各口 控制信息为单向 如ALE, RST,PSEN等 简要说明: SP堆栈指针,DPTR数据地址指针,PC 程序计数器,ACC累加器,OSC振荡器,PSW程 序状态字,AUL算术逻辑单元? 1.3 51系列单片机子型号性能比较 2节 8031引脚及功能?2.1 引脚分类记忆法 2.2 各I/O口简要说明?? ??? ??? ?口 结构特征 常用功能 驱动能力 P0 准双向 D0-D7/A0-A7 8TTL P1 准双向 通用I/O 4TTL P2 准双向 A8-A15 4TTL P3 准双向 替代功能 4TTL P3替代功能名称和功能含义: P3.0 RXD P3.3 /INT1 P3.6 P3.1 TXD P3.4 T0 P3.7 P3.2 /INT0 P3.5 T1特点 开漏输出 内部上拉 内部上拉 内部上拉 /WR /RD 补充:关于开漏、OC门和上拉 2.3 8031各I/O口的较固定的用法?? ? ? ???P0: 低8位地址总线/数据总线分时复用 P1: 通用I/O口 P2: 高8位地址总线 P3: 替代功能或通用I/O口线 特殊说明: a. 使用替代功能可充分发挥硬件优势 b 当T0/T1 用做定时器时,其外部引脚仍 可作为通用输出线,但不能做输出线.请 注意后文说明. 2.4 8031最小系统?所谓最小系统,是指最简工作条件 3节 8031存储器配置?? ????术语解释:配置有配备、组织管理规则的含义 3.1 两种存储器结构 3.1.1 普林斯顿结构 特点:RAM、ROM统一编址,占同一空间,无地 址重叠,用相同指令访问RAM和ROM。微型计算 机常采用此结构。 3.1.2 哈佛结构 特点:RAM与ROM分别编址;控制信号和指令都不 同.单片机采用这种结构. 3.1.3I/O指令寻址特点: A. 不同结构对应的寻址方式 ? I/O端口地址与存储器单元地址互相独立 ? I/O地址比存储器地址短 ? CPU有专门控制信号对两者进行读写控制 ? 操作指令明显不同( 如IN A,(80H);LD A,(HL) ) ? B. 存储器映像寻址特点(8031采用此法): ? 与上项恰相反. 特点是: ? I/O端口数量几乎不受限制 ? I/O操作与存储器操作指令一样.? 3.2 8031的三个互相独立地址空间(EA=0)? ? ? ? ??? ? ?物理位置 功能 数量 地址空间 长度 片内 RAM 128B 00H-7FH 8位 片外 RAM 64K 0000H-FFFFH 16位 片外 ROM 64K 0000H-FFFFH 16位 各空间可以重叠,例如: MOV A,$02H 片内RAM空间 MOV DPTR,# 0002H MOVX A,@DPTR 片外RAM MOVC A,@A+DPTR 片外ROM 3.3 各空间详解?教材中图2.4 如下: ? ??3.3.1 程序存储器空间(ROM) 要点: 最大64K,内容为应用程序,常数表格; 非易失性(掉电不丢失); 首地址必须为0000H,且要求连续. 教材 表2-2 程序存储器中的特殊地址单元 3.3.2 片外RAM(I/O)空间??? ? ? ??? ? ?要点: 片外RAM+I/O端口=64KB 用/RD, /WR信号进行读写 地址长度为16位 使用指令形式为MOVX 例如:把片外RAM地址2000H内容读入A MOV DPTR,#2000H MOVX A,@DPTR 再如:把A累加器内容送到I/O地址08F0H MOV DPTR,#08F0H MOVX @DPTR,A 3.3.3 片内RAM(重点内容) *片内RAM要点说明:? ? ? ? ? ??? ??工作寄存器:共32字节,分4区,命名为R0-R7; R0、R1有特殊性; 任何时刻只能使用一个区,可切换; 不使用的区可做随机RAM。 位寻址区20H-2FH:位地址00H-7FH; 既能位操作也能字节操作; 可从指令结构区分是何种地址。 堆栈:后入先出RAM,向上生成,指针SP,初值7; 理论最大值为128字节; 用途为服务于中断、调用子程序、保护/恢复 现场和参数传递。 * 随机RAM的一般用途: ? 变量地址 ? 暂存中间结果 ? 数据缓冲 ? 随机变量 * 访问字节地址和位地址的区别方法: ? 根据操作数对等原则来判断。 ? 例如 MOV C,20H (20H为位地址) ? 而 MOV A,20H (20H为字节地址) ? 原因: C为进位位(位累加器),是一个位 ? A为累加器,是8位,字节型 3.3.4 特殊功能寄存器SFR??? ? ? ? ? ??定义:它们对应硬件特殊资源的使用和管理 分类:A.命令寄存器,如定时/计数方式、中断 控制、I/O口锁存器等,可位寻址; B.常数寄存器,如堆栈指针,定时常数、 DPTR等,不可位寻址。 主要SFR说明: 累加器A 字节地址E0H 算术逻辑操作中的一个必然的操作数和结果,输 入输出的比用寄存器,使用最频繁。在MOVC和 MOVX指令中必须使用到。 B寄存器 字节地址F0H??? ?主要用途是支持单字节乘除法: MUL AB A*B=BA (B中存乘积高字节) DIV AB A/B= A……..B(商在A,余数在B) 当不进行乘除法时,B可做通用寄存器 程序状态字 PSW 字节地址D0H 指示指令运行的某些结果或状态,提供判断依据: 堆栈指针 SP??字节地址81H(不能位寻址)SP,#60H指针装载: MOV压栈操作: PUSH A PUSH DPH等 ? 弹栈操作: POP A POP PSW等 ? 注意:压栈时,指针先加1,再压入; ? 弹栈时,先弹出内容,指针再减1。 数据地址指针DPTR 字节地址82H、83H(非位寻址) 它是唯一一个可以进行16位操作的寄存器,主要用于存放对 外数据操作时的16位数据地址,也可以分高低字节分别操作。 位图如下: DPTR 在指令中使用情况举例: ? 赋值:MOV DPTR,#XXXXH ? 增量:INC DPTR ? 减量:DEC DPTR 也可以单独字节操作:INC DPL MOV DPH,#20H等 I/O口锁存器 P0-P3 字节地址80H/90H/A0H/B0H (请判断它们能否位寻址?) 输出时,写到口锁存器 ,如:MOV P1,A 输入时有两种情况:读引脚 MOV A,P2 读锁存器(读-修改-写) ANL P1,A(后述) 4节 CPU时序和复位电路????? ? ? ? ?4.1 三种周期及其相互关系 振荡周期:1-12MHz ,由外接晶体固有频率决定 机器周期:固定由12个振荡周期组成 指令周期:分为单、双、四周期三种类型 如取主频 F=12MHz,则有: 振荡周期t= 1/F=0.0833微秒 时钟周期t’=2t (P1、P2两个节拍) 机器周期T=12t=1微秒 指令周期为1-4微秒 需要注意:指令的执行时间以机器周期数为准, 与指令本身的字节数不直接相关(因此有双字节 单周期、单字节双周期的现象)。4.2 学习时序的目的意义: 了解某种操作有哪些控制信号参与; 这些信号动作次序及影响; 作用时刻、有效电平和维持的宽度; 研究未知IC器件时需要读懂其时序。 4.3 指令举例 单字节单周期 INC A 双字节单周期 MOV A,#05H 三字节双周期 MOV 25H,4FH
4.5 复位电路?? ? ? ? ?复位的作用:使单片机从确定状态开始运行 复位的效果:程序计数器PC=0; 各口输出为“1‖; 各SFR为0(SP=7,SBUF不定) 复位条件:RESET引脚上出现2T以上的高电平 复位方法: (1)上电自动复位,RC电路或者用门电路 (2)手动复位,用按扭使Reset脚获得高电平 (3)看门狗自动复位,后述
5节 定时/计数器、中断、串行口5.1 定时计数器 概述: 定时/计数器是计算机中不可缺少的技术环节.早 期当CPU本身不含此硬件时,在Z80中有CTC芯片,在 PC机中有Intel8253. 功能举例: 定时:系统定时; 本地时钟; 软件看门狗; 音乐编制; A/D转换; 扫描键盘/显示器; 事件捕捉; 波形输出; 脉冲宽度测量; 串行通讯波特率发生器. 计数: 脉冲计数; 光电测量; 能耗仪表; A/D转换辅助; 5.1.1 基本硬件结构 前图重要信息解读:定时与计数的本质相同:对脉冲计数. 标准脉冲源导致定时 T=t*n 外部不确定脉冲输入可进行计数 2. 定时精度与主频有关,应等于机器周期 3. 计数脉冲有最小宽度要求,高、低电平都不能小于机 器周期宽度。 4. TH、TL为常数寄存器,2个8位寄存器组成16位.数值 范围是0-65535.向上加1式工作. 5. 在脉冲下跳沿触发计数动作. 思考:设主频是12MHz,问定时精度和最大定时时间是多 少?1. 5.1.2 定时器的控制和相关SFR1.相关的SFR 名称 功能 地址 位数 可否位寻址 TMOD 模式 89H 8 否 TCON 控制 88H 8 可 TL0/TL1 常数低 8AH/8BH 8 否 TH0/TH1 常数高 8CH/8DH 8 否 小结:常数类寄存器不可(也不必)位寻址; 控制类寄存器要位寻址,地址结尾通 常是0或8. 2. 关于控制字它是计算机领域的重要技术特征: 它是以字节的形式出现; 它的意义总是按位定义的; 该字节的数值不能表征实际含义; 编写程序时调动硬件资源的主要依据; 不要求记忆,但是要求能真正理解和使用.定时器的方式选择寄存器TMOD: * TMOD 各位的意义及方式选择举例 GATE: 有启动定时器运行功能,可测INTi脚正脉冲宽度C/T: C=Counter定时器, T=Timer计数器,C对“1‖,/T对 “0‖ M1M0: 00=模式0;01=模式1;10=模式2;11=模式3. 例1: 定义T0工作于定时器模式1,不受INTi引脚控制: 则有TMOD=H(高4位无关暂取0) 例2:定义T1工作于计数器模式0,不受控: 则TMOD=H 例3: 定义T0模式1定时,T1模式1计数,均不受控: 则TMOD=H 思考: 能从数值51H直接获得模式选择信息吗? * 控制寄存器TCON:与定时器有关的位操作说明: TF1- T1溢出标志位,为1有效,硬件清除 TR1- T1运行启动控制位,为 1有效 TF0- T0溢出标志位,为1有效,硬件清除 TR0-T0运行启动控制位,为 1有效其他四位与中断有关,后述. 5.1.3 四种模式及应用模式0 (M1M0=00)特点:13位定时器.TH(8)+TL(5)定时常数的计算: 定时时间T=(213 C初始值 )×机器周期 t 模式1(M1M0=01,使用最经常)说明:模式1可以覆盖模式0,请思之. 特点: 全16位定时/计数器定时常数计算公式有改变: T=(216 C初始值 )×机器周期 t例如:设定时器为模式1,主频12MHz,求定时10ms的时 间常数. 由公式解出:初始值= 216 - T/t= 216 - T* f =65536 C (0.01*106 *12/12) =65536 - =D8F0H * 关于定时与计数常数初始值的选取 如前面的例子所见,定时常数需要计算,而计数 常数往往不需要计算.见下图:请思考:如果要在记录到100个脉冲时产生中 断,则计数初始值应如何计算? 模式2 (M1M0=10)功能概要:常数自动重新装载,8位计数器,主要应用于在串 行通讯中产生波特率.(见教材图6-9). 操作要点: 1. TH、TL 装载相同的数值,TL运行,TH保留 初始值实现重新装载. 2. 可实现精确定时. 3.在作为波特率发生器使用时不允许中断.模式3(M1M0=11) 此方式只适用于T0,两个8位定时器.具体略,请自阅. 5.2 中断5.2.1 中断概述: (1).CPU对外部设备的数据交换方式有:A. 无条件传送(认为总是准备好的) B. 查询方式传送(需要查询和应答,效率低),同步 C. 中断方式 (效率高,多设备“同时”运行),异步 D. 直存储器访问DMA(51单片机不支持) (2). 中断概念举例:读书-来电话-接电话-继续读书 特点:来电话的时刻是事先不能确定的; 必须停下当前工作来接电话; 接完电话后能够继续刚才的工作. 类比:某个事件的发生事先不知道时刻,如按键操作; 这个操作必须在发生时立即得到响应; 处理完之后必须能继续刚才被打断的事件序列. 思考:如果没有中断机制,系统将如何面对该情况.
5.2.2 8031单片机中断系统硬件背景 中断源说明:共5个中断源,两个优先级 符号 名称 查询级别 应用举例 其他 INT0 外部中断0 最高 掉电/键盘/打印机 低有效 T0 定时器0 定时中断 INT1 外部中断1 同INT0 低有效 T1 定时器1 同T0 TI/RI 串行口中断 最低 通讯 注意: 1. 中断有两级允许控制; 2. TI/RI标志必须用软件清除; 3. 通常不定义一个以上的高级中断. 5.2.3 相关的专用寄存器 中断请求标志 TCON 中断允许控制寄存器 IE(Interrupt Enable) 优先级控制寄存器 IP (Interrupt Priority) 中断嵌套中断优先级的作用在于:可以实现中断嵌套,使最紧急的事件得到优先响应。高级 中断能够打断低级中断。 举例:读书-内线电话-接听内线-外线电话-接听外线(此时内 线不挂断,暂侯)-外线完毕-继续接听内线电话-返回读书。 5.2.4 中断响应处理过程A.中断响应条件1. 当前无同级和高级中断在进行中; 2. 当前机器周期是一条指令的最后一个周期; 3. 当前执行的指令不是RETI或者访问IP和IE; 4. 中断是允许的(包括总允许和源允许).B.响应过程1. CPU在S5P2采样中断源,下一周期查询标志,再下一 周期按优先级处理:中断入口地址(矢量) PC. 2. 阻止同级和低级中断,断点地址进入堆栈,程序转到 中断入口地址处. C.中断入口地址(应该记忆)外部中断0: 定时器0: 外部中断1: 定时器1: 串行口中断INT0 T0 INT1 T1 TI/RIBH BH 0023H D.中断相关程序举例:org 0000h ajmp start org 0003h ljmp ex0_sub …….. org 0028h Start: mov sp,#60h ……. ljmp star Ex0_sub: push A ….. 复位入口地址 ; 短跳到主程序入口 ; INT0入口地址 ; 长跳到INT0服务程序口 ;主程序开始地址 ; 主程序第一条指令 ;主程序循环 ;中断入口保护现场栈操作 ;中断返回 F. 中断响应延迟时间 假定系统只有一个中断源的简单情况: 最快情况: 最慢情况: 重要结论: 1.若系统中只有一个中断源,则从中断请求信号 有效到开始执行中断服务程序的时间延迟是38个机器周期. 2. 若系统中有多个中断源,则低级中断被接受的 延迟时间不确定;若只有一个高级中断,它被接 受的延迟时间是3-8个机器周期; 3.延迟时间将造成单片机本地时钟不准确; 4.中断服务程序执行时间不宜过长,应为ms级. 5.2.5 软件配合问题* 关于保护现场: 含义: 在中断服务程序开始前把一些内容送入堆栈. 理由: 发生中断的时刻不确定;中断程序中也要使用 一些资源,可能与主程序发生冲突. 操作: 把A、B、PSW、DPTR等送入堆栈,并切换 工作寄存器区。于是这些资源在此可用。 举例:PUSH A PUSH DPL PUSH DPH SETB RS0(RS1RS0=01,选中1区) * 中断服务程序本体 : 含义:是为提出请求的设备服务所编写的程序段,平 时不执行,只在发生中断请求时执行; 举例1:键盘服务程序,任务是识别按键位置、执行 按键功能。 举例2:打印服务程序,任务是向打印机发送一字节 数据。 举例3:启动一次A/D转换过程,并读取转换结果。 要点: 程序写法与主程序相似,也可以调用子程序, 但必须注意被调用的子程序与它本身使用相 同的工作寄存器区。 * 关于恢复现场:? ? ? ? ???含义:中断程序结束,返回主程序前的恢复性 操作。 操作内容: 按压栈的相反顺序出栈; 工作寄存器区不必切回(因为PSW恢复); 必要的开或管中断源操作; 最后一条指令必须是RETI。 5.2.6 外部中断的扩展* 利用定时器扩展外部中断 原理: 外部中断可以是负跳变脉冲; 定时器的记数方式可接外部脉冲; 方法:使定时器工作于记数方式,常数初始值设置 为最大FFFFH,则再来一个负脉冲就可以引起中断. 硬件加查询扩展法方法: 利用逻辑门电路把多个中断源组合起来; 利用I/O口线查询来确定具体中断源位置. 5.3 串行口 概述: 串行通讯是计算机技术中重要的数据交 换方式,尤其在远程数据传递中是不可缺少 的. 串行与并行的比较: 基本概念:?? ? ?传输方式: 单工、半双工、全双工 通讯形式: 同步(Synchronous) 异步(Asynchronous) 波特率(Baud Rate): 每秒钟传递的二进制位数 bps. 通讯标准: RS-232C RS-422 RS-485 电流环标准 5.3.1 8031的串行口(1)硬件资源: * 全双工串行接口UART,支持4种方式; * 波特率发生器; * 专用寄存器 SCON、SBUF、PCON; * 外部引脚 TXD 数据发送 RXD 数据接收 * 中断入口地址 0023H UART=Universal Asynchronous Receiver/Transmitter (2) UART的结构 (3)相关的专用寄存器?方式控制寄存器SCON(98H) 表1 串行口的工作方式 * 电源控制器PCON 这个寄存器只有最高位与串行口有关, 此位的名称是SMOD,它是波特率加倍 位。 5.3.2 串行通讯工作方式(1)方式0 :同步移位寄存器 主要用于扩展并行I/O口
(2)方式1:异步串行通讯,用于点对点 (2)方式3:异步串行通讯,多机方式 5.3.3 波特率计算 ? 方式1和3的波特率由定时器T1产生 ? 波特率计算公式:? 例1: 单片机主频为12MHz, 方式1通讯,采用T1 方式2产生波特率,求波特率为2400时的定时 常数装载值. 解: 取SMOD=1,根据公式,有: 例2. 主频为11.0592MHz,其他条件同例1,求 定时器T1常数装载值. 例3. 主频为4MHz,求波特率为9600时T1的 常数装载值. 6节 输入输出口的结构(重要)概述:具有 I/O接口是单片机的一个重要硬件特征。地 址/数据总线和I/O(输入输出)接口是完全不同的概 念。两者的主要区别是: 地址/数据总线:接存储器设备,高速,无稳态, 标准用法,信号宽度受控于指令类型。 I/O接口:接输入输出设备,如键盘、打印机、输入输 出开关量、模拟信号等等。可有稳态。 单片机系统设计中对I/O资源的使用情况最灵活,也最 重要。它比存储器设计复杂得多。必须清楚I/O口的 结构和工作原理,才能在装置设计中得心应手。 6.1 P0口 6 .1.1 P0口的位结构图 6.1.2 P0口的用途:P0口的定义:通用并行I/O口;地址/数据复用总线. 两种不同的使用情况: A. 通用I/O口:此时“控制C‖=0,T1截止,开漏输出 条件:单片机系统无外部存储器和并行I/O设 备(8031不满足这个条件,为什么?) B. 地址/数据复用总线:此时“控制C‖=1,T1导通 情况受地址/数据线状况控制,可输出地 址/数据信息,或者从外部引脚读入信息. A和B两种情况互斥,不能同时存在。 对8031 ,只能工作在A情况; 对、89C51 等,可工作于B情况。 6.1.3 P0口的硬件特征1. 作为总线时,内部有上下拉等效电阻(T1、T2) 2. 作为I/O口时,是开漏输出: 做输出用必须外加10K欧姆左右的上拉电阻 做输入时: 若驱动灌电流负载,可不加电阻 否则必须加外上拉 3. 准双向口的含义(有附加条件): 从输出改为输入时,必须先向口写“1‖,目的是 关闭输出级,防止误读引脚状态. 4. 关于“读-修改-写”: 以口为目的的逻辑操作 注意:此时是读锁存器而不是外引脚(解释). 6.2 P1口P1口的重要性在于:它是唯一由用户定义的真正通用 I/O口,资源宝贵,需要慎用. 5.2.1 P1 口的位结构与P0很不相同,见下图: 6.2.2 P1口的用途:单片机系统对P1口无任何占用,完全由使用者定义. 使用举例: 1. 8条线一起用,如驱动一个LED数码管显示数 0字0-9.可以保持稳定状态. 2.单根线定义,可以是输入或输出. A.输出:驱动一个继电器,控制它是否闭合. B.输入:检测一个按键的闭合状态 C. 直接驱动一个发光二极管 D. 控制信号输出和外设状态检测输入 6.2.3 P1口的硬件特征 1.只能做通用I/O口,不能做地址/数据总线 2. 内部有等效上拉电阻,阻值为20-40K.3. 准双向口的含义(有附加条件):从输出改为输入时,必须先向口写“1‖,目的是关闭输出级,防止误读引脚状态. 4. 关于“读-修改-写”: 以口为目的的逻辑操作 注意:此时是读锁存器而不是外引脚(解释). 6.3 P2口 6.3.1 P2口的位结构图 6.3.2 P2口的用途: 1.通用I/O口,这时与P1口基本无差别 2.高8位地址总线. 当系统中有外部存储器时,如果存储器单元数 量超过256字节,就需要使用P2口担当高8位地 址线.一旦P2口中有一以上作为地址线使用,则 该口所有其他线都不能再作为I/O口线. 3. P2口的多路控制器特点: 当执行片外存储器操 作时,开关切向“地址”;之后,自动切回到锁 存器Q端.此特点可以构造另一个“DPTR‖,后 述. 6.3.3 P2口的硬件特点 1.锁存器正端输出,多一级反向 2.高8位地址/通用I/O两种功能不能兼顾 3.其他同P0、P1 (准双向,读-修改-写等) 6.4 P3口 6.4.1 P3口的位结构图 6.4.2 P3口的用途:1. 作为通用I/O口,与P1类似 2. 第二功能(替代功能) - 重要内容 与硬件资源背景有关的第二功能,用户自选: 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 CPU写控制信号(外部RAM和I/O写操作) 出 P3.7 /RD CPU读控制信号(外部RAM和I/O读控制) 出 6.4.3 P3口的硬件特点1. 第二功能的实现: 若第二功能是输入的,则在两个输入缓冲器之间分流 信息,不进入内部总线而进入替代功能模块; 若第二功能是输出的,则此时锁存器输出“1‖,使第二 功能信息顺利经过与非门输出到引脚上. 2. 与非门的控制是自动的,在编写程序中不必理会 3. 当某种替代功能不使用时,对应的P3口引脚可以作为 通用I/O线.比如当没有通讯功能时,TXD和RXD都与 P1.X相同. 4. 特殊情况:当T0或T1作为定时器时,其外部引脚仍可作 为通用I/O线,但只能输出,不能输入.请考虑这是为什么? 6.5 各口小结 1. P0-P3共同特征: 准双向I/O口, 输入变输出先写“1‖,读-修改写. 2. 差异部分,见下表 第三章 8051汇编语言指令系统?? ? ? ? ? ?1节 汇编语言概述 1.1 基本概念 指令:CPU执行操作的命令 指令系统:所有指令的集合 程序:根据指令系统编写的指令序列 语言:计算机所能识别的指令形式 语言种类:机器语言、汇编语言、高级 语言 语言分类举例(以10+20=30并存放为例)? ? ? ? ? ??? ? ?机器语言: 01010 A 10 (74 0AH) 10100 A=A+20 (24 14H) 计算机真正能识别的是这种二进制代码,但不直观 汇编语言: MOV A,#0AH (74 0AH) ADD A,#14H (2414H) 采用助记符可便于阅读和编写,效率高 高级语言:A=10 A=A+20 最直观,软件开发快,效率不如汇编 1.2 汇编语言指令格式 ? 标准5段式:标号: 操作码 [目的操作数],[源操作数] ;注释 例如: LOOP: MOV A,R0 ;把R0内容放入A 标号和注释不是必须的,操作数的数量不确定,可能 是一个、两个或没有: 例如:MOV A,#20H (两个操作数) INC R0 (一个操作数) RET (没有操作数) 单字节、双字节、三字节指令* 单字节指令(49条) (1)指令码中隐含对寄存器的操作 如 INC DPTR A3H CLR A E4H 这类指令主要涉及一些专用寄存器 (2)操作码中的rrr三位指定一个工作寄存器 如 MOV A,Rn 11101rrr 其中rrr =0~7,分别对应R0~R7 所以有:MOV A,R0 H MOV A,R4
EFH * 双字节指令(45条)?一个字节操作码,另一个字节为操作数或地址 *指令中给出操作数地址的情况(隐含寻址)?指令形式:这时R0或DPTR中的内容本身不是操作数, 而是操作数所在存储单元的地址。? *三字节指令(17条) 2节 寻址方式 定义:寻址方式是指寻找操作数(尤其源 操作数)的途径或手段。51单片机共7种。 * 寄存器寻址(最常用) 寄存器指R0~R7和A、B、DPTR 例如 MOV A,R0 MOV R1,A ADD A,R5 MOV P1,A? *直接寻址? ? ? ? ?直接给出操作数所在的地址,包括片内128字节 RAM地址和专用寄存器SFR的名称。 例如: MOV A,45H 454H本身不是数据,而 是指45H单元内的数据内容。 又如:MOV A,P1(或MOV A,90H) 再如:MOV 99H,A 是填写串行发送缓冲器 这种寻址方式的指令至少占2字节,想一想,为什 么? * 立即寻址 ? 为一字节直接数据 ? 如 MOV A,# 20H ? 注意立即数只能是源操作数,不能是 目的操作数。 ? 特殊指令: ? MOV DPTR,#DATA16 ? 具体如:MOV DPTR,#2000H ? 请判断这条指令应为几字节? *寄存器间接寻址(难点) ? 概念:寄存器中的内容不是数据,而是数 据所在的地址。 ? 可做间址的寄存器有R0、R1、DPTR ? 有效空间:R0、R1操作片内128字节RAM ? DPTR操作片外最大64KRAM ? 注意:不能用此方式操作SFR。 ? 指令举例:? *变址寻址(主要用于查表) 含义:基地址+变址寄存器间址 如:MOVC A, A+DPTR 指令说明: 本条指令中,MOVC是专门用来读取 程序存储器空间ROM单元内容的,源操作 数的地址由累加器A中的偏移量与指针 DPTR 16位地址之和来指定。操作顺序是 先求地址之和,再读取数据,送入累加器。 * 相对寻址(重要) 要点: (1)出现在相对转移指令中 (2)当前PC值=执行完转移指令后的值 (3)跳转的偏移量是一字节补码rel 若rel&80H,向地址增大方向转移 若rel&=80H,向地址减小方向转移 (4)目的地址=源地址+2+rel (rel有正负) 相对寻址指令举例: JC rel (JC NEXT) 如果当前进位位为1,则转到NEXT标号处; 否则,继续执行下一条指令。 DJNZ R7, LOOP R7内容减1,然后判断是否为0。若不为0则 转到标号LOOP处,否则继续执行下一条。 这里,NEXT和LOOP都是自己定义的标号 地址,在汇编时将自动翻译成相对地址 rel 值。 * 位寻址 寻址区域:某些专用寄存器 片内RAM中20H~2FH各字节中的位 指令举例:CLR 02H JNB 03H,rel 注意操作数按对等原则区分字节和位地址: MOV A,40H 40H是字节地址 MOV C,40H 此时40H是位地址 想一想,为什么? 寻址空间和符号规定请同学自阅并熟悉之。 3节 51单片机指令系统要求:了解汇编指令按功能分类 能读懂简单程序片段 3.1 5种类别:数据传送类:源、目的,源不变,目的修改 算术运算类:四则运算,影响标志位 逻辑运算及移位类:按位操作,影响标志 控制转移类:跳转、调用和返回,地址变 化 位操作类:置位、复位、测试,判断分枝 3.2 数据传送类共8种助记符: MOV CPU与内部RAM和SFR之间传送 MOVX CPU与外部RAM和I/O之间传送 MOVC CPU对程序存储器ROM读操作 PUSH 压栈 POP 弹栈 XCH 字节交换 XCHD 半字节交换 SWAP 累加器自身半字节交换 MOV 指令详解(使用最频繁) 在 MOV x,y 格式中 y为源操作数,可以是: A、立即数、工作 寄存器、直接地址、间接地址。 x为目的操作数,可以是:A、工作寄存器、 直接地址、间接地址。 注意(1)立即数不能是目的操作数 (2)不存在 MOV R1,R2 MOV @R1,@R0 MOV A,@R2 指令举例MOV A,#05H MOV A,@R0 MOV R3,A MOV R5,33H MOV 22H,A MOV 40H,41H MOV 43H,#3AH MOV A,R7 MOV A,40H MOV R4,#33HMOV 23H,R6 MOV 42H,@R1 关于对专用寄存器的操作对SFR实际采用的是直接寻址方式,写法可有变化, 例如: 堆栈指针SP字节地址为81H,对它操作可写成: MOV SP,#60H (编译系统自动识别SP) 或者 MOV 81H,#60H 这两者是等价的,但以前一种为方便,条件是编译系 统能识别SP之类的保留字。 再如 MOV A,PSW MOV A,D0H 后一种方法要求记忆所有的SFR地址,且阅读不方 便。 特殊的16位传送操作(常用)数据地址指针寄存器DPTR结构:它可以按16位操作,也可以按高低字节单独操 作。 例如: MOV DPTR,#2000H MOV DPH,#20H MOV DPL,#00H 数据传送类指令应用举例例1:为R7赋值立即数2AH MOV R7,#2AH 例2:将46H单元内容读到累加器A MOV A,46H 例3:将R2中的字节内容送到片外1008H单元 MOV A,R2 MOV DPTR,#1008H MOVX @DPTR,A 3.3 算术运算类(四则运算,双目)共5种助记符: ADD :不带进位加法 ADDC:带进位加法 SUBB:带借位减法 MUL AB:无符号乘法 A×B= B A(高在前) DIV AB:无符号除法A/B= A(商)B(余数) 要点:A是必然的目的操作数 指令应用举例例1:单字节加法,R4+R3 R6R5(高在前) MOV A,R3 取一个加数 ADD A,R4 加上另一个加数 MOV R5,A 存和低字节 CLR A A清零 ADDC A,#00H 考虑进位位 MOV R6,A 存高字节(0或1) 注意:执行ADD操作时影响进位位CY 例2:双字节加法 R2R1+R4R3=R7R6R5 MOV A,R1 取加数低字节 ADD A,R3 与被加数低字节相加 MOV R5,A 存低字节和 MOV A,R2 取加数高字节 ADDC A,R4 与被加数高字节相加 MOV R6,A 存高字节和 CLR A A清零 ADDC A,#00H 加进位 MOV R7,A 存进位值 例3:双字节减法 R2R1-R4R3=R6R5CLR C 预先清除借位标志 MOV A,R1 取被减数低字节 SUBB A,R3 减去减数低字节 MOV R5,A 存低字节差值 MOV A,R2 取被减数高字节 SUBB A,R4 减去减数高字节和借位 MOV R6,A 存高字节差值 注意:可根据此时CY的状态判断是否够减 例4:多字节乘法演算规则 双字节乘以双字节的结果要由4字节表示 如 R3R4×R5R6=H 3.4 逻辑操作类 要点: (1)逻辑运算与算术运算的最大不同在于,虽然 是字节的形式,但是按位运算. (2)一目运算的操作数必然是A,双目运算多数有 A参加且为目的操作数. (3)指令功能包括:与、或、异或、清除、求反、 移位 共7种指令助记符:ANL:ANL A,x(x: Rn,地址,@Ri,立即数) ORL: ORL A,x XRL: XRL A,x 以上操作称为双目运算.下列为单目的,只对A. CLR: CLR A A累加器清零 CPL: CPL A A按位求反 RL/RLC: RL A/RLC A算术/逻辑左移 RR/RRC: RR A/RRC A算术逻辑右移 应用举例 例1: 把P1口高4位清零,低2位置1,其余不变 MOV A, #0FH ANL P1, A MOV A,#03H ORL P1, A 说明: 这时的逻辑操作称为读-修改-写 0FH可称为屏蔽字,03H可称为组合字. 例2: 逻辑操作位图(A) ANLA, 38H(A=9FH)(B)CPLA(A=7CH) 3.5 控制转移类(使用较少但很重要)共16种助记符:无条件小类 JMP @A+DPTR 间接转移 SJMP rel 一字节补码 AJMP 11位地址标号 2K空间 LJMP 16位地址标号 64K空间 条件转移小类 JZ rel / JNZ rel 为0/非0转 JC rel / JNC rel 有/无进位转 JB bit,rel / JNB bit,rel 置位/复位转 CJNE [x],[y],rel 比较不等转 DJNZ x, rel 减1不为0转 调用和返回小类 ACALL / LCALL 短调用/长调用 RET / RETI 子程序返回/中断返回 3.6 位操作类 共15种助记符: MOV C,bit / MOV bit,C CLR C / CLR bit SETB C / SETB bit ANL C,bit / ANL C,/bit ORL C,bit / ORL C,/bit CPL C / CPL bit JB bit,rel / JNB bit,rel /JBC bit,rel 综合编程举例例1.把片外RAM FH内容传送到片内 RAM 40H~4FH中. 解: MOV DPTR,#2000H 源首地址 MOV R7,#10H 计数初始值 MOV R0,#40H 目的首地址 LOOP: MOVX A, @DPTR 取一个源数据 MOV @R0,A 存一个数据 INC DPL 修改源地址 INC R0 修改目的地址DJNZR7,LOOP判结束 例2. 把P1口的P1.6、P1.7清零,且置P1.0、P1.1 为1,其余不变. 解:MOV ANL ORL MOV A,P1 A,#B A,#B P1,A 例3. 把31H单元的数据变换为BCD码解: 需3字节表示,设结果存于R0~R2,高在前.MOV MOV DIV MOV MOV MOV DIV MOV MOV A,31H B,#64H AB R0,A A,B B,#0AH AB R1,A A,B 取该字节 64H=100 除以100,的BCD码最高位(百位) 存最高位 余数送A 除以10,得十位结果MOVR2,A余数即为个位结果 例4. 把片外RAM H内容移动到 H中.说明: 这样的数据块移动在实际应用中经常会 遇到.它的困难在于需要同时运用两个数据 地址指针,而CPU中只有一个DPTR! 研究P2口的结构,可知当P2口不做地址总 线时可从锁存器输出.所以可以构造另一个 数据地址指针如下: P2口: 高8 位 @R0(或R1):低8位 本题的解答见下页 MOV MOV MOV MOV LOP: MOVX MOVX INC INC DJNZR7,#08H DPTR,#3200H P2,#22H R0,#00H A, @R0 @DPTR,A R0 DPTR R7,LOP 第四章 单片机系统扩展及接口技术概述: 单片机资源有限(以8031最为突出) 片内RAM容量不够需外部扩展; 片内ROM容量不够或根本没有; I/O接口数量不足(8031仅有P1口可用); 对8031而言: 必须扩展外部ROM,所以P0、P2都不再是I/O口 最大I/O线数量=P1+6=14条(不含RD、WR) 当设计复杂系统时,资源不满足,就需要扩充 * I/O口的任务:时序匹配; 电平转换; 地址选择; 功能设置; 信息加工。 * I/O口的基本要求: 输入要锁存; 输出要缓冲; 能进行译码和控制; 可编程/ 1节 I/O口的直接应用及资源局限 要点:8031只能使用P1口和P3口的个别引脚; 可使用P0~P3,P0要外上拉; 各I/O口可并行使用,也可单独定义。 1.1 TTL/MOS电平的开关量输入输出 1. 开关量输入 A.简易键盘输入接口 B.开关量检测(输入型) 用于状态检测,如报警信息、拨码状态、外设状态等 2.开关量输出 A.直接驱动LED发光二极管 在智能装置中,经常要用LED发光二极管来指示状态. 常用的有红、绿、黄、兰4种颜色,直径规格有 3/5/10mm,亮度有普通、高亮、超高亮.工作电流 1~20mA. B. 驱动继电器继电器提供电气隔离的开关量输出手段,并具有带较 大负载的能力,可以直接控制交流220V通路. C. 外设控制信号 D.用I/O口线模拟其他功能 1.2 电平转换有时,CPU控制的电路需要其他电平等级,可进行电平 转换. 8031 的I/O口资源局限可用I/O资源=P1口+6=14条I/O线 在许多情况下这些资源显得不足.比如扩展并 行打印机设备需要10条线;扩展n个独立按键 需要n条线(通常为3-8个);扩展串行现实接 口需要3条;扩展串行非易失存储器需要2条; 看门狗清除信号1条;A/D转换电路的启动、 状态查询2条;通讯方向控制1条;大容量 存储器模拟地址线若干条…… 当I/O资源不足时,可以进行扩展. 2节 扩展外部存储器及系统译码方法 简要说明: 1. 8031没有片内ROM,必须在外部扩展; 2. 当128字节内部RAM不够用时需扩展外部 RAM; 3. 这里的译码是指系统地址译码; 4. 地址译码的含义是用地址线的组合来产生 确定的地址信息(地址空间或端口地址). 存储器芯片引脚说明: /CE(/CS): chip enable/select 片选 /OE: output enable 输出允许(读允许) /WE: write enable 写允许 Vcc,GND: 电源,地 Vpp,PGM: program power 编程电压 NC: no connection 不连接 地址线数量与容量的关系: 容量=2n n为地址线 数 数据线数量表征: 每单元的二进制位数 /WE: 有此引脚为RAM,否则为ROM 2.1 三种常用的地址译码方法 A. 线译码 线译码就是用空余地址线控制器件的选择端
线译码法的特点: 硬件简单,地址空间浪费大,只能适用于小系统. B.全译码 全译码的特点是,不浪费任何地址空间,指出每一个存 储器单元或I/O端口地址时,16条地址线都必须有确 定的逻辑状态.这种方法需要使用大量的逻辑器件, 而实际应用中并不必要.所以不展开讨论。 C.局部译码(重要) 方法: 用空余高位地址线,经过地址译码器产生各芯片 的译码信号/CS. 特点: 使用方便灵活,有少量地址空间浪费,但能满足系 统要求,是最适宜的方法,要求熟练掌握. 常用3-8译码器简介: 2.2 应用举例例1. 8K RAM ,8K ROM, 4个 I/O接口 例1的地址空间求取 例2.16K ROM, 8KRAM, 8个I/O器件 此题的难度在于:空余地址线减少,设备增多.用多级译 码法. 例2的地址空间计算 (138-2输出.必须Y3有效)ROM的空间计算: A15 A14 A13 A12 A11 …… A1 A0 0 0 0 0 0 …… 0 0 首地址 1 1 1 …… 1 1 末地址3FFFH 所以地址空间为 0000H-3FFFH, 共16K字节 RAM空间计算: 0 1 X 0 0 …… 0 0 首地址 X 1 1 …… 1 1 末地址5FFFH 所以地址空间为:4000H-5FFFH 各I/O 端口地址计算:I/O1: A15 A14 A13 A12 …A10 A9 A8 A7 …A1 A0 1 1 X X 0 0 0 X 0 0 所以端口地址为:C000H(X为无关位,取0) I/O2: 1 1 X X 0 0 1 X … 0 0 1 所以端口地址为: C100H/C101H 同理可得I/O3端口地址: C200H-C203H 其他I/O端口地址请同学自己写出. 例3. 32K ROM,32K RAM, 2个I/O器件此题的难度在于空余地址线过少,考虑采用I/O口线来模拟高位地 址线. 3节.扩展简单串并行I/O接口3.1 用锁存器扩展简单并行输出口 3.2 用缓冲器扩展简单并行输入口 3.3 用移位寄存器扩展并行口方法1:用串行口方式0扩展方法2:用I/O口线扩展 4节.扩展通用并行接口82554.1 8255芯片概述 Intel公司产品 通用可编程并行I/O接口 三个8位并行口 A、B、C 可用软件定义各口的工作方式 方式0-基本输入/输出 方式1-选通输入/输出 方式2-口A为双向输入/输出口 4.2 8255的引脚说明 4.3 8255的结构框图 4.4 8255的各端口地址在/CS有效的条件下: A1 A0 端口 0 0 A 0 1 B 1 0 C 1 1 命令口 可能的地址安排如: H 4.5 控制字 控制字格式及各位意义: 8255编程初始化举例设8255的控制要求为:A口方式0输出; B口方式1输入; C口高半字节为输出 C口低半字节为输入 则控制字为 B,即 87H 写为: MOV DPTR,#8003H MOV A,#87H MOVX @DPTR,A 4.6 8255的应用(1)8255与单片机的连接 (2) 8255 与微型打印机接口 打印驱动程序举例定义:A口方式0输出;C口高4位输入,低4位输出; B口闲置不用. 则控制字为:,即88H. 设内部RAM 20H开始有50个字节的打印数据 待送出. 程序见下页. LOOP: LOOP1:MOV MOV MOVX MOV MOV MOV MOVX JB MOV MOV MOVX INC MOV MOVDPTR,#8003H A,#88H @DPTR,A R1,#20H R7,#32H DPTR,#8002H A,@DPTR ACC.7,LOOP1 DPTR,#8000H A, @R1 @DPTR,A R1 DPTR,#8002H A,#00H;指向命令口 ;准备控制字 ;送控制字 ;数据指针 ;数据长度 ;指向C口 ;读C口 ;判忙否,忙则等待 ;指向A口 ;取一个字节数据 ;送到A口 ;修改指针 ;指向C口 ;模拟/STB MOVX MOV MOVX DJNZ@DPTR,A A,#01H @DPTR,A R2,LOOP;/STB负脉冲 ;/STB恢复 ;未送完继续 (3) 8255驱动3个静态LED数码管(4) 8255 检测24路开关量输入 此二题留给学生自己思考. 5节.接口电路设计实例 例1.89C51系统有256K的RAM,试设计该系统. 例2. 89C51系统驱动三相步进电动机,并带有三个 发光二极管,检测两个限位开关的状态. 例3. 设计带光电隔离的4路输入/4路输出I/O 第五章 单片机串行通讯技术1节. 51单片机的串口资源 8位UART ( Universal Asynchronous Receiver Transmitter) 4种运行方式(方式0-3) 3个相关的专用寄存器 SBUF SCON PCON 2个专用通讯引脚 TXD RXD 硬件波特率发生器 T1方式1 概念复习: 各种通讯方式的特征 方式 帧长 波特率 同/异步 0 10 固定 同 1 10 可变 异 2 11 固定 异 3 11 可变 异 外部引脚: TXD- 串行通讯数据发送端 RXD- 串行通讯数据接收端 支持多机 否 否 可 可 相关专用寄存器 SBUF Serial Buffer 串行收发缓冲器; 它的字节地址是99H,读操作执行的是接收字节; 写操作执行的是发送字节; 由于该字节内容是一个数据,所以没有位寻址的必要. PCON Power Control 电源控制器; 它的字节地址是87H,其最高位是波特率加倍位. SCON Serial Controller 串行控制器; 2节.通讯标准概述:通讯标准规定通讯过程中的电平定义,线制等内容,它 隐含表达了某种标准的通讯距离、波特率上限、是否支持 多机网络、抗干扰性能等指标。 常用标准及特点见下表: 2.1 RS-232C标准概述:RS-232C是个老资格的通讯标准,早期的PC机、 PC/XT/AT,286,386,486,586乃至目前的奔腾 系列机都配备有这个标准的通讯接口,而且不止 一个通道。标准的接口是DBF/9形式的。它的设 计目的是连接个人电脑的串行外围设备,如打印 机、键盘、游戏控制器等。 特点:硬软件成熟,配用的设备多; 协议规范,多数厂家支持; 结构简单,方便操作; 距离短,速度慢,不支持网络,共地。 A.电平标准和接口方法RS-232C的电平标准是负逻辑高电压的,三线制: 逻辑“0‖ : +5V---+15V 逻辑“1‖ : -5V----15V 优点:噪声容限提高,抗干扰能力增强,支持全双工方式 缺点:电源复杂,共地,无法实现隔离,不支持多机网络 芯片资料: MC1488 / MC1489 芯片资料:ICL232
2.2 RS-422标准概述:差分式的,4线制 A.电平标准 逻辑“0‖: -2V----6V 逻辑“1‖:+2V---+6V 优点:平衡双绞线传输,抗干扰强,三态,支持网络、全双工 缺点:传输线较多 芯片资料:MC3486/ MC3487 2.3 RS-485标准概述:差分式,二线制,平衡双绞线 A. 电平标准 逻辑“0‖: -2V----6V 逻辑“1‖:+2V---+6V 优点:平衡双绞线传输,抗干扰强,三态,支持网络 缺点:仅支持半双工方式 芯片资料:MAX485 芯片资料:MAX1487E 2.4 电流环标准 优点:根据电流的有无传输信号,抗干扰极强,对 线路阻抗不敏感; 缺点:4线制,线多,不支持网络应用 芯片资料:SN75452
3节.多机通讯系统软件设计3.1 多机通讯网络概念 A. 拓扑结构 a.总线型 b. 星型 c.树型 d.环型 B. 通讯控制方式 a. 主从查询式(一主多从)优点:准确可靠,可及时发现故障设备; 缺点:效率低,总线无静默状态。b. 多主方式(2个或以上主设备)优点:主机有备份,避免网络因主机故障而瘫痪;缺点:协议复杂。c.无主方式(所有节点同级别)优点:效率高,可设优先级,合理; 缺点:有碰撞危险,可能堵塞,不能及时发现故障节 点。 C.侦错技术 a. 奇偶校验利用数据中“1‖位数量的奇偶性查错,简单,成功率一 般,可提前终止出错的传输过程。b.累加和校验 双方利用全部数据的累加和尾数进行核对,简单方便,准确率优于奇偶校验,不能提前终止错误的传输过程。c.异或和校验类似于累加和校验d.CRC校验即“循环冗余校验”,是一种多项式计算方法,准确率最 高,算法比较复杂,误码率可控制在10-6以下。 D.通讯协议 高级数据链路通讯协议HDLC High data Link Communication 3.2 51单片机的多机通讯技术 A. SM2、Tb8、Rb8的作用 SM2:多机通讯控制位,用以区别地址帧和数据帧。 Tb8、Rb8:发送或接收的第9位数据。使用过程: 主机、从机都工作于方式2或3; 各从机初始条件下SM2位=1; 主机发送地址帧,且Tb8=1; 所有从机都接收该字节,并核对本机地址是否符合; 若符合则从机令SM2=0,准备接收主机的后续数据; 若不符合,维持SM2=1; 主机发送数据/命令字节,且Tb8=0; 只有SM2=0的从机可以产生接收中断,其他从机忽略。 B. RS-485通讯网络的硬件设计 (1) 系统规模与驱动芯片的对应关系 应根据网络节点数量选择适当的驱动接口器件. (2) 必须设计隔离电路 选择光电隔离器时应注意器件的使用频率,并精 心测试和确定外围电阻参数. (3) 规范总线的总长度,使之不超过1.2Km距离. (4) 必要时可使用中继器(总线驱动器)成倍地延长 通讯距离. (5) 考虑接口引脚的保护,包括共模电压,总线串扰和 雷电. 规范的RS-485接口硬件电路 C. 设备地址问题 网络中每个节点都有一个唯一的地址码.产生方法: (1) 软件中直接写定 方法简单,无附加电路,修改不方便,设备不能互换; (2) 通过外部开关进行设置 可以动态改变,组织灵活,但占用资源,机械开关不 可靠; (3) 用非易失存储器保存,可以在线修改,灵活,可靠,但 需要增加硬件设备,软件较复杂. 机械开关式地址码产生电路 非易失存储器与单片机的接口 D.传输介质、总线电气特性、负载量等问题 (1)传输介质 普通双绞线 RVV2*1.0建筑物内部,短距离场合,干扰不严重情况屏蔽双绞线 同轴电缆RVVP2*1.0 SYV 75-5建筑物之间空旷地带,距离远,干扰大情况适合做干线光导纤维(单膜和多膜)高速网络,主干线,Internet接口,计算机之间局域网络 (2) 总线电气特性 RS-485通讯信号的传输距离和波特率主要受总线分 布电容的影响. 分布电容的实际测量值为: 网线(5类线), 5000pf/100m=50pf/m RVV线 , 6200pf/100m=62pf/m 工程实践证明:485总线负载电容上限为75000pf 所以,使用RVV线时距离为: L=9米 使用5类线时L=0米 (3)负载量RS-485通讯发送驱动芯片的输出电流能力约为60mA, 接收器吸收电流的情况有所不同,所以有32站、 128站和256站的区别。 对于MAC1387E驱动器,等效负载约为并联电阻37欧 姆,见下图。 E.通讯数据编码方法 (1)数据流表达方式 单极性 双极性 数字编码 模拟编码 (2)数据编码方式 二进制编码 ASCII码 曼彻斯特编码 智能仪器设计基础主讲 石亚和 ??? ? ? ? ?第六章 智能仪器概论 1节 智能仪器的发展概况 智能仪器概述: 它是计算机技术与测量仪器结合的产物 是含有微处理器或微控制器的仪器 具有存储、运算、逻辑判断和控制功能 从运算处理向知识处理方向发展 向模糊判断、故障诊断、容错技术、传感 器融合、寿命预测方向发展。 1.1 微控制器芯片? ??? ? ? ? ?A.Intel系列内核的单片机芯片 C31 B. 51内核其他单片机 89C51(ATMEL) 89C2051(ATMEL) C8051FXXX(CYGNAL) 1.2 数字处信号理芯片DSP(Digital Signal Processor)??? ? ? ???智能仪器中经常遇到下列计算问题: 数值滤波 快速傅立叶变换FFT 相关 卷积分 数字音视频信号转换、存储和处理 典型产品: 美国德州仪器TI的TMS32032位处理器 1.3 专用集成电路ASIC(Application Specific IC)?? ? ???概念:相对于使用专用芯片如CPU、存储器、 通讯接口、逻辑门电路等去搭建特定系统来 完成设计任务,采用专用芯片的思想是把待 解决的具体问题设计到芯片级。根据任务的 不同对硬件环节进行取舍选择。 设计过程: 提出原理图 制作晶元 流片 条件:要有较大批量;设计费用逐步降低。 2节 智能仪器的特点??2.1 测量过程的软件控制内容包括: ? 自稳零放大 ? 自动极性判别 ? 自动量程转换 ? 非线性补偿(线性化) ? 自诊断 ? 自校准 ? 人机对话??打印输出和自动记录 实现条件:内嵌微控制器,才能装载和运行软件程序. 2.2 数据处理? ??? ? ? ? ? ?用软件算法实现: 误差剔除 精度补偿 函数运算 对在线信号实时采集、存储、显示和分析 数值滤波 时域分析(相关分析、传递函数等) 频域分析(幅值、相位、功率等) 适用于:生物医疗、语音分析、模式识别等 2.3 多功能化? ? ? ??? ? ? ?功能组合,一机多用,例如: A. 智能化电能表可测量: 有功功率和无功功率 视在功率 电能 频率 各相电压、电流、功率因数 B. 智能流量积算仪: 体积流量、质量流量、密度、打印输出、 历史记录、信号远传、参数设定、报警、本地控 制? 3节 智能仪器的基本结构? ?3.1 微机内置式 微控制器化,小型化,便携式,电池供电 3.2 微机扩展式?以计算机为依托,充分利用其资源,只做少量 输入输出通道硬件.又可分为插件式和插件箱 式. 4节 虚拟仪器? ?概念:个人计算机+数据采集+软件=虚拟仪器 例如,可以把CRT当作仪表显示窗口,可做示波 器、台式万用表、心电图仪、频谱分析仪、 扫描仪、逻辑分析仪等等。它是一种发展方 向。 第七章 输入通道及接口技术1节 放大器电路设计 1.1 运算放大器概念复习 A. 理想放大器模型 B. 同相放大器特点: 输入阻抗较高 增益不小于1 输入输出信号同极性 C. 反相放大器特点: 输入阻抗低 增益可小于1(用做衰减器) 输出与输入极性相反 D. 差动放大器 特点: 对地悬浮输入 信号运算 抗共模干扰能力强 E. 仪用放大器(测量放大器) F. 反向器(注意不是反相器) G. 电压跟随器电压跟随器可用做有源阻抗变换,降低信号在输 入阻抗上的损失. H. 绝对值电路对光电转换类传感器,经常需要把有极性信号转 换成为无极性的单边信号: 1.2 运算放大器的主要性能指标失调电压 零点漂移 共模抑制比 功率消耗 带宽 非线性度 开环增益 输入阻抗 输入为0,输出不为0 的最小值 主要是温漂, μv/℃ CMRR= 20log(Ad/Ac ) db 毫瓦 上限频率 Hz % n(如100) MΩ 1.3 供电方法A. 双电源对称供电 ±5V~ ±15VB.双电源非对称供电C.单电源供电: V=5-30V 1.4 运算放大器种类和常用芯片A.放大器数量分:单运放、双运放、4运放 例如:μ A741 LM358 LM324 B.按功能特点分: 普通运放如: Μ a741、LM351、LM324 低飘移运放:OP07、OP37、AD111 斩波自稳零运放: AD7650 音频放大器: AD386、LM2822 视频放大器:AD818 集成放大器:AD521 1.5 使用放大器应注意的主要问题A. 供电制度 B. 输出饱和问题 C. 泄放回路 D. 前级的箝位保护 E. 测量放大器的参数对称性及调整 F. 周边电阻参数的选取(除比值外还考虑功耗) G. 多级放大器的增益分配(高共模抑制者增益大) H. 设计PCB板时注意屏蔽和设置去耦电容 1.6 设计举例例1 将0-200mV的电压信号放大到0-5V 解:要求放大倍数为25倍,设计图如下: 例2. 输入信号0-10mV,要求输出0-10V解: 这是小信号放大问题,应采用测量放大器,图 略. 增益要求为1000倍,两级放大器的增益分配 可选择为100*10. 请同学们自行做出设计图并确定电阻参数. 例3. 设计 1.250V 基准电压源题目说明:在仪表系统中常需要各种等级的电压 源,可利用放大器自行制备.见下图: 2节 量程自动转换及零点迁移2.1 程控放大器(可变增益放大器) 用途: A. 宽范围参数测量时自动换挡; B. 信号幅值低时不损失分辨率. 方法: 将与增益有关的电阻支炉支路设计成可 选择的电阻网络(通常是利用反馈电阻的改 变实现). 方法2: 串联电阻网络,增益线性变化 方法3:输入电阻的R-2R T型电阻网络 计算公式推导 ∑If=(C3?-1+C2? -2+C1?-3+C0? -4)*Vi/R 2 2 2 2=[ C3 C2 C1 C0 ]? / (R? 4) Vi 2 式中C3 C2 C1 C0 表示二进制数据排列 又因为I=-V0/Rf 所以整理可得:增益A=V0/Vi= - (Rf) ? 3 C2 C1 C0 ]/ [C (R? 4) 2 若Rf=R,最大衰减比为1:16 若C3 C2 C1 C0 =0000,则放大器输出为0 集成仪用放大器实例A: BURR-BROWN 公司的INA111 高速FET输入仪用放大器 性能: 高速 Ts=4μs 低失调电压 500 μv 低漂移 5 μv/ ℃ 高CMRR&=106db 内部结构及用法见下图 INA111的结构和用法 B. 可编程增益放大器PGA103性能参数 三档增益:1,10,100 CMOS/TTL电平兼容(指控制信号) 低增益误差 ±0.05% (A=10时) 低温漂 2 μv/ ℃ 低静态电流 2.6mA 该放大器结构图见下页
C. 程控可编程仪用放大器PGA202 2.2 零点迁移问题的引出:用PN结进行温度测量.PN结的温度信号特性为 -2mV/ ℃,且 Vi(T=0)= 700mV.特 性曲线如下: 分析:为什么要进行零点迁移1.如果要测量的温度范围为0-100 ℃,则由PN结 特性可知信号范围是:500mV-700mV.动态范 围是 200mV. 2.这个信号幅度需要进行放大,但由于起点不是 0,所以放大后的信号中有无效部分. 3.这样的结果是:后续电路的A/D转换数据中只 有一小部分有意义,白白浪费了A/D转换的分 辨率. 4.降低了测量的速率. 5.系统校零不方便. *用差动放大器电路来进行零点迁移在本例中,信号迁移量是500mV.电路如下: 另例:半导体点温计AD590的设计AD590介绍: 三端测温元件. 输出特性为: 1 μA/K 其中K为绝对温度 零点迁移电路设计如下图,可测量环境温 度,可作为热电偶的冷端温度补偿 2.3 量程的自动转换一般要求: 高测量速度,快速选择适当的量程档 位; 确定性,不能在两档位间来回反跳; 安全性,要有过载保护. *衰减器在输入端,当K1打A处时: VA=Vi? 100K / (9.9M+100K) = Vi /100即输入信号衰减100倍. 当K1打在B处时,无衰减作用.* 增益调整若K2打在D处,则有: VD=Vi ? / R6=Vi (1+R5/R6). R5 A=1+R5/R6=1+9/1=10(倍) 若K2打在C处,这是电压跟随器,增益=1.*输出衰减若K3打在向下位置,则输出衰减10倍. 3节. A/D转换接口技术及应用方法3.1 基本概念和主要性能指标 常用的A/D转换器特点如下: 逐次比较式 双积分式 电压/频率转换 式 分辨率 8,10,12,16 3.5,4.5 软件控制 速度 快 μs级 慢 百ms级 中等 ms级 抗干扰性 差 最强 较强 适用场合 控制 测量仪器 检测 接口方式 并行/串行 扫描BCD 脉冲输出 3.2 转换原理概述A.逐次比较式 (如ADC0809,AD574,ADC1210) 内核是一个R-2R T型电阻网络的D/A转换器, 它从最高为开始试置“1‖,其输出的模拟电 压输入到一个电压比较器,与输入的被转换 电压相比较. 如果外信号大,则此高位“1‖保留;否则清零. 再试置次高位,……….直到 n位比较完毕.所 以称为逐次比较式. 特点:速度快,不可逆,容易受干扰,需多次采样 求平均,位数每增加一位,硬件复杂加倍. 逐次比较式A/D转换器结构示意图 B. 双积分式(如MC14433,ICL7135)双积分式A/D转换器是利用积分电容的充放电 计时来实现转换的. C. 电压/频率转换式(如LM331,AD654)这种方式也简称为V/F式,根据器件输出频率与 输入电压成正比的原理来工作: 3.3 A/D转换器主要性能指标1. 分辨率 分辨率是衡量转换结果的数字量精细程度. 设转换位数为n,则有: η = 1/ (2n-1)*100% 例如8位的A/D转换器, η =1/255=0.39% 另一种说法称为“量化误差”. 注意,这只是定义性误差,不代表精确程度. 2. 转换时间表示转换的快慢,有三种表达方式: A. 每次转换所需要的时间,如: ADC0809 一次转换需要时间为125 μs AD574 一次转换需要时间为12 μs B. 每秒钟可转换的次数,如: MC14433 每秒钟转换4-10次 AD9220 12位,10MHz采样频率(每秒10M 次) C. 对于V/F型,给出脉冲上限频率,如: LM331 Fmax=100K AD654 Fmax=500K 3.精度精度是一个不容易量化的比较抽象的指标. 相关因素有: 器件的分辨率; 电压基准源的稳定度; 信号放大器的附加误差; 温度湿度的影响; 抗干扰能力; 元器件的老化情况; 数值处理方法; 孔径误差. 3.4 A/D转换接口技术(1)ADC0809 逐次比较式,8位,8通道,125 μs. 前图解读IN0-IN7: 8个输入通道,在实验中只接了IN0,用电位 器来给出输入模拟电压,可调节. ? D0-D7: 器件的转换结果输出,可接单片机P0口. ? EOC:end of convert, 转换结束标志,高有效,这里加 非门,是要连接到外部中断/INT. ? CLOCK:外部提供的时钟,应在650K左右.由芯片 4013提供. ? ADDA-C:通道选择信号,可接系统地址线. ? ALE/START: 通道选择信号锁存和启动转换信号, 由系统译码信号与读写信号配合产生.? 实验信息:??? ? ? ? ? A.B.ADC0809的8位模拟开关译码地址为: IN0= #2030H IN1= #2031H IN2= #2032H IN3= #2033H IN4= #2034H IN5= #2035H IN6= #2036H IN7= #2037H 单片机的ALE信号为主频的1/6,可利用来作为 一种较低频率的时钟源. 软件控制方法有3种: 查询法 :启动转 换后不 断检查 EOC是否 变为 “1‖; 中断法:把EOC反向后连接到单片机的/INT1; 应用程序说明:ORG 0000H ;复位入口地址 LJMP MAIN ;短跳转 MAIN: MOV DPTR,#2003H ;指向8255命令口 MOV A,#80H ;置A口为输出 MOVX @DPTR,A ;送命令 CONVER:MOVDPTR,#2030H ;指向0809通道0 MOV A,#00H ;任意数值 MOVX @DPTR,A ;启动转换 MOV R0,#200 ;计数常数 LOOP:NOP DJNZ MOVX MOV MOVX WAIT:NOP 果 NOP JMP END;空语句,配时间 R0,LOOP ;延时等待转换结束 A,@DPTR ;读出A/D转换的结果 DPTR,#2000H ;指向8255A口地址 @DPTR,A ;把结果送8255A口 ;可在此加入断点查看转换结CONVER ;绝对跳转,构成循环 查询式编程片段(假设EOC连接到P1.2)……MOV R7,#0AH ;计划采集10次 MOV R0,#40H ;准备从40H开始存放 MOVDPTR,#2030H ;指向通道0 LOOP:MOVX @DPTR,A ;启动转换 NOP ;空操作 WAIT:JB P1.2,NEXT ;查询是否转换结束 AJMP WAIT ;若未结束则循环等待 NEXT:MOVX A, @DPTR ;读取结果数字量 MOV @ R0,A ;存结果 INC R0 ;修改存放地址指针 DJNZ R7,LOOP ;判断是否到10次. (2) LM331实用电路图如下: V/F型A/D转换技术的实现方法要点: 在预定时间内对Fout脉冲进行计数; 改变定时时间可改变分辨率; 定时时间应选择工频周期20ms的整数倍; 采样不确定性为1LSB. 设计举例?利用单片机的T0做定时器,T1做计数器.连接 方法如前图所示. 假设每次采样时间定为20ms,求得定时时间 常数为xxyyH. 编程片段如下: …… ACALL INIT ;(调用初始化子程序) …… ACALL SAMP ;(调用采样子程序) 子程序分别编写INIT: …… MOV SMOD,#B;(置方式) …… RET SAMP:MOV TH1,#00H MOV TL1,#00H MOVTH0,#xxH MOVTL0,#yyH SETB TR0 SETB TR1 ;装载常数;启动T0和T1 ASK: JBC TF0,OVER AJMP ASK OVER: CLR TR1 CLR TR0 MOV A,TL1 MOV R1,A MOV A,TH1 MOV R2,A RET 从这个子程序返回后,转换结果在R1R2中,R2高 位 (3)AD654AD654是美国模拟器件公司生产的一种低成本,8脚 封装的电压频率(V/F)转换器。它由低漂移输入放 大器、精密振荡器系统和输出驱动级组成,使用 时只需一个RC网络,即可构成应用电路。AD654 既可以使用单电源供电,也可使用双电源供电, 且工作电压范围很宽。输出为频率受控于输入电 压的方波。可用于信号源、信号调制、解调和A/D 变换等。 主要技术性能 单电源供电电压:4.5~36V 双电源供电电压: 5~ 18V 输出频率范围:0~500kHz 线性误差:0.06%(250kHz时) 输入阻抗:250M 输入电压范围:单电源 0~Vs-4V 双电源 -Vs~Vs-4V 静态电流:2.0mA(Vs=30V时)
应用电路及参数 当使用逐次比较式A/D转换器时,或者被测信号有较高 频率或干扰较大时,容易造成附加转换误差,称为孔径 误差.使用采样保持器可以避免这类误差.3.5 采样保持器 实用原理 集成采样保持器LF198/298/398 3.6 A/D转换电路的基准源问题对于逐次比较式和双积分式来说,因为其工作 原理的需要,必须提供精确的电压基准,通常 在器件引脚上标记为Vref. 基准源的处理方法: A.某些器件本身具有内部基准源,如AD574. B.可以用高稳定度稳压器件搭建,如LM336. 精密参考基准源TL431TL431是精密电压基准集成电路,有两种封装 形式:一种为TO-92封装,它的外型和小功 率塑封三极管一模一样;另一种为双列直插 8脚塑封结构。TL431有三个引出脚,分别 用K、R、A表示,其中K为控制端,R为取 样端,A为接地端,有些电路图中用1、2、 3分别代表R、A、K。TL431损坏后,如无 同型号的进行更换,可用KA431、μ A431、 LM431、YL431、S431、TA76431S、 μ PC10931J等直接代换。
下图是一个用TL431为核心部件的实用的可调 三端稳压电源,它是利用TL431精密稳压源 和大功率高反压达林顿三极管D768扩流组 合而成。D768的电流为5A,功率为50W, 正向最小工作电压为1.5V。若输入电压与输 出电压之差大于10V时,则需更换R1(R1为 1KΩ ~2KΩ )。在输入电压为5V~33V时, 输出电压为5V~30V连续可调。在使用时应 根据功率大小为D768配备散热片。 实用可调三端稳压电源 4节.多通道结构概述: 在智能化装置中,为了充分发挥微控制器的 能力,通常要处理多种或多路输入输出信号.而 为了共享放大器、转换器等硬件资源,需要 对多路信号分时切换.切换环节称为MUX. 多路切换的方法: A. 继电器: 准理想开关,速度慢,寿命短,有噪音. B.模拟电子开关:速度快,容易控制,无触点,寿 命长,有开路漏电流和导通电阻,功率有限.(典 型情况下只能通过约5mA电流,电压不能超过 芯片供电电压.) 4.1 继电器(1)继电器的种类 干簧继电器 无源干簧继电器有源干簧继电器 电磁继电器 又可分为单路单触点、单路双触点、双路、 双触点等多种形式。固态继电器(SSR) 无动点,功率大,较昂贵(略)。 (2) 触点容量设计中选用继电器时必须考虑触点容量指标. 触点容量包括: 导通电流: 如2A、5A、10A等; 开路电压:如24VDC、220VAC、500VAC 吸合线圈参数: 电压等级:如5V、12V、24V等; 直流阻抗(间接参数,需测量):如470Ω. 根据这两个参数可推算吸合电流,并进而 设计适当的驱动三极管电路(留有一定电流 余量). (3)继电器电路设计举例A. 单片机控制220V交流电气设备B. 用继电器组成4选1切换电路 4.2 模拟电子开关(1)CD4051 CD4051是一种8选1模拟电子开关,见下图: *CD4051的用法:A.单片使用,构成单端8选1切换电路 B. 2片同时用,可分两种情况:(a)构成单输入16路选1切换开关 通道选择信息码的计算设8031对2片开关的控制连接为:/INH INH C B A /P1.3 P1.3 P1.2 P1.1 P1.0 则有 1 0 0 0 0 1 0 0 0 1 ……………….. ……………….1 1 1 0 1 0 0 0 0 1 0 0 1 ………………… ……………… 1 1 1 选中 通道0 通道1 通道7 通道8 通道9 通道15 通道码 00H 01H 07H 08H 09H 0FH (b).构成双输入8选1切换开关 (2)CD4067CD开关,管脚见下图: (3)CD4052CD4052是双选1开关: (4) CD4053CD4053是三组二路双向模拟开关: (5) CD4066CD4066是4独立通道模拟开关: (6) 模拟开关技术参数和使用特点以CD4051为例,芯片供电15V时: 导通阻抗80Ω(5V供电时约300 Ω) 开路漏电流10pA 最大电流通过能力 约5-6 mA 通过信号的幅值 &= 电源电压 通道选择信号A、B、C等的电平需与芯片 电源相一致(若芯片供电不是5V而是12V或 15V,则单片机I/O口线信号需要进行电平转 换)。 输入端应进行防静电保护设计。 5节.输入通道设计实例例1: 8点PN结温度传感器输入电路
例2. 热电偶信号输入电路 第八章 外设控制技术1节 键盘接口 1.1 键盘的种类 琴键 按下闭合,自动弹起,最常用 自锁键 每按一次改变一次状态 扳钮 按位置确定状态,如电源开关 拨码开关 用于产生地址信息、设定状态等 薄膜按键 美观,便于安装,寿命短 触摸屏 压阻传感器,配合文字窗口使用 1.2 键盘的机械特性导通阻抗为0,断开阻抗为无穷大. 闭合和释放时的机械抖动: 1.3 非编码键盘的管理方法A. 独立查询式 特点:硬件简单,效率低,不能管理多键查询周期应小于100ms,宜采用定时中断的 方式来查询. 程序举例主程序 ORG AJMP ORG LJMP ORG STATR:MOV LCALL …….. …….. LJMP 0000H START 000BH T0INT ;定时器T0中断入口 0030H SP,#60H ;设置堆栈指针 INIT ;调用初始化子程序START;主循环 初始化子程序中对定时器操作部分:INIT: …… …… MOV TMOD,#B ;T0为定时器方式1 MOV TH0,#xxH ;装载常数高字节 MOV TL0,#yyH ;写常数低字节 SETB EA ;系统开中断 SETB ET0 ;T0开中断 SETB TR0 ;启动T0运行 ……RET ;子程序返回 定时中断扫描键盘程序:T0INT: PUSH A ;A累加器入栈 PUSH PSW ;程序状态字入栈 SETB RS0 ;切换到工作寄存器1区 MOV TH0,#xxH ;装载定时时间常数高字节 MOV TL0,#yyH ;低字节 MOV A,P1 ;读键盘状态 JNB ACC.0,KEY0 ;若是0号键则转移到KEY0 JNB ACC.1,KEY1 ;若是1号键则转移到KEY1 JB ACC.2 ,OVER ;若不是2号键则转结束 KEY2: …… ;KEY2功入口 …… ; K2按键服务功能 AJMP RETURN ;转出口 KEY0: …… K0服务功能 AJMP RETURN ;转出口 KEY1: …… K1服务功能 …… RETURN: POP PSW ;出栈 POP A ;出栈 RETI ;中断返回 B. 查询与中断结合式查询式太浪费CPU时间,可考虑中断方式: 查询与中断结合方式的运行特点:占用CPU的一个外部中断资源; 平时CPU不理会键盘外设; 有键盘操作时会自动产生中断请求; 在中断程序中再进行高效率的软件查询,确认按键; 执行键盘操作功能的方式: a. 在中断程序中直接进行(中断时间较长); b. 中断程序只判断按键位置,置标志,返回主程序 后再查询执行(按键反应时间稍长,但可保证中断服 务程序执行时间短). 对a和b两种情况应根据实际进行考虑决定. 程序举例(在中断中执行服务功能)ORG 0000H SJMP START ORG 0013H LJMP KEYB START:MOV SP,#60H ACALL INIT …… LJMP START INIT: …… SETB EA SETB EX1 …… RET KEYB: PUSH PUSH SETB MOV ………POP POP RETIA PSW;键盘中断入口,压栈RS1 ;切换工作寄存器2区 A,P1 ;读P1口 ;以下操作同前例.此处略 PSW A ;出栈 ;中断返回 C.矩阵查询式此法可用较少的I/O线管理更多的按键: *行扫描法:行扫描法步骤: 1. 使P1口低三位输出110(仅0行有效); 2. 回读P1口,关注P1.3-P1.5; 3. 若此三位均为“1‖,说明无按键操作; 若有变“0‖的位,则该闭合键行列位置 知; 4.若行无按键,继续,P1口低三位输出101; 重复上述过程; 5.P1口底三位输出 011;重复上述过程; 因为是逐行变低输出,故称行扫描.从开始到发 现闭合键的时间长度不确定. * 线反向法线反向法方便易行,效率高: 1.从P1口低三位输出000;2.回读P1口,关注P1.3-P1.5; 3.若此三位全为“1‖,无按键操作,结束; 若有“0‖,必有闭合键. 4.把读得的数据(比如为101)原样输出; 5.从P1口低三位读回,可知闭合键所在 的行列位置. 1.4 编码键盘编码键盘是用专用芯片完成对键闭合及位置的 搜索,无需CPU软件太多干预. 相应地,前述的方法都叫做非编码键盘. Intel公司的专用键盘/显示接口芯片8279 A. 功能描述: 可管理最多64个独立按键; 可驱动最多16个LED数码管; 100K工作频率; 40脚DIP封装. B. 引脚介绍 C.的连接方法 D.8279内部资源情况:16*8显示RAM,可读写,可寻址,自动扫描输出,可擦除; ? 8*8 FIFO(先入先出栈): 键盘方式下的FIFO; 传感器方式下的RAM; ? 两个I/O口地址:A0=1,命令口,8种编程命令; A0=0,数据口,写显示RAM; 读FIFO和显示RAM; ? 两种扫描方式: 编码扫描,外加译码器,二进制增量输出; 译码扫描,不加译码器,本身是译码输出; 编码扫描 译码扫描 SL3 SL2 SL1 SL0 SL3 SL2 SL1 SL0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 ………………….. 0 1 1 1 1 1 1 1? E. 8279的控制字及工作方式简介(1) 键盘显示方式 (2) 时钟分割 (4) 读显示RAM F.键盘代码格式 G. 应用举例题目:要求32种按键功能 例题中的各键代码说明:对于键盘,只有扫描输出信号SL0-2有 效,而SL3无效。根据键代码格式 C 可知 Y0-RL0交点 1 Y0-RL1交点 1 。。。。。。 Y0-RL7交点 1 Y1-RL0交点 1 Y1-RL1交点 1 。。。。。。 Y1-RL7交点 1 S 1 1 1 1 1 1 扫描位 000 000 000 001 001 001 回读位 000 C0H 001 C1H 111 C7H 000 C8H 001 C9H 111 CFH SHIFT键按下的情况C Y0-RL0交点 1 Y0-RL1交点 1 。。。。。。 Y0-RL7交点 1 Y1-RL0交点 1 Y1-RL1交点 1 。。。。。。 Y1-RL7交点 1 S0 00 0 0 0扫描 000 000 000 001 001 001回读 000 001 111 000 001 111码 80H 81H 87H 88H 89H 8FH 键盘代码编辑总结:1.若无CONTROL和SHIFT键: 键代码为C0H-FFH,以少用Yi,多用RLi为宜; 2.若单独加SHIFT键,则为组合操作方式: 键代码变化为80H-BFH; 3.若单独加CONTROL键,为组合操作方式: 键代码变化为40H-7FH; 4.若执行CONTROL+SHIFT+独立键: 键代码变化为00H-3FH; 总之:一字节00H-FFH都可能是一个操作代码. 8279软件操作(以PLM语言叙述,类似于C)A.初始化,设8279命令口地址8001H,数据口8000H 外层变量和地址声明: declare C8279 byte at(8001H) declare D8279 byte at(8000H)
…… 初始化程序片段: initial: /* 过程名 */ C8279=00H; /* 8字符左入口编码扫描键盘方式 */ C8279=2AH; /* 1MHz输入,前置除数为10 */ ea=1; ex1=1; /* 系统开中断,外部中断1开中断 */ /* 过程结束 */ 中断服务过程keyb: procedure interrupt 2 using 1; /* 中断声明,用1区 */ declare (x,y,z) /* 声明部分局部变量备用 */ C8279=40H; /* 建立读FIFO命令 */ keycode=(D8279 and 3FH) ; /* 执行读FIFO操作 */ /* 根据键值选择性执行下列块 */ /* 键值为0时执行此块 */ …… /* 键值为时执行此块 */ …… (续) /* 与 do case 对应的结束语句 */ /* 与过程入口对应的结束语句 */ 2节 显示接口2.1 显示设备的种类 发光二极管 最简单的独立发光体 光柱、箭头、频闪 直观模拟显示方式 七段数码管 可显示0-9数字和少量字符 14段数码管 可显示数字和英文字母等 发光二极管阵列 可组成大型显示屏幕 液晶显示屏 有字符式和点阵图形式 CRT视频显示器 阴极射线管显示器,图象 TFT视频显示屏 模-数-模转换,RGB原理 监视器 专用图象观察设备 2.2 七段LED显示器概说A. LED数码管的结构和分类 亮度:分为普通型 工作电流 10-20mA 高亮度 5-10mA 超高亮度 5mA以下 结构: 有共阴极和共阳极两种,见下页
2.3 接口方法 A. 静态驱动 特点是:亮度高,控制软件简单,功耗大,需要 I/O口线多. 简单I/O口控制下的显示驱动程序方法1情况: MOV P1,A 方法2情况: 设有多个锁存器和LED,地址分别为 4000H、4001H、4002H…….,待显示数据在40H开始的 单元中. MOV R0,#40H MOV DPTR,#4000H MOV R7,#04H ;设有4LED LOOP: MOV A,@R0 INC R0 MOVX @DPTR,A INC DPL DJNZ R7,LOOP
串口方式0驱动程序设显示缓冲区在40H单元开始共8个字节. DISP: MOV R0,#40H ;缓冲区首地址 MOV R7,#08H ;计数器初始值 LOOP: MOV A,@R0 ; 取一个字节 INC R0 ;修改地址 MOV SBUF,A ;启动发送 WAIT: JNB TI,WAIT ;等待发送完成;清TI DJNZ R7,LOOP ;未完继续 RET ;结束 第三种方法占用了串行口,若还需要通讯,可以 用普通I/O口线来模拟串口方式0的功能. 控制显示程序构思:用一条I/O线输出显示数据字节(按位移出),另一条I/O线输 出移位时钟信号,设有4个LED.数组buff(). send: declare (x,y,k ) do y=0 to 3; /* 外层,对应4个LED */ k=80H /* 中间变量,控制移出的位筛选 */ do x=0 to 7; /* 内层,对应每字节的8个位 */ if (buff(y) and k)=0 then z=0,else z=1; k=k/2;p1.2=z;p1.1=1;p1.1=0; /* 送一个位和移位脉冲 */ B.动态扫描驱动扫描方法的特点: 占用I/O线少,硬件节省,功率消耗 小; 亮度低,软件较复杂,需要刷新. 扫描驱动软件的基本要求(1). 视觉暂留:每个LED显示暂留时间应在2ms以 上; (2). 扫描周期:每个LED每秒钟应刷新30次以上; (3). 应采用定时器产生2ms-5ms的基准定时来完 成显示的刷新. (4). 应建立专用的显示代码缓冲区. (5). 设置专用的数据指针和计数器. 设计应用举例用单片机数据总线口经锁存器扩展并行I/O口, 用部分I/O口线做位选. 编程概要设有4个LED,主频12MHz,显示变量数组BUFF(),373锁存地址为4000H. 用PLM语言: 全局变量声明: declare buff(4)
declare k373 byte at (4000H) 初始化部分:Initial: …… SMOD=B;TH0=0F8H;TL0=30H; EA=1;ET0=1; pointer=0; 显示过程: display: procedure interrupt 1 using 1; TH0=0F8H;TL0=30H; k373=buff(pointer); pointer=pointer+1; if pointer&3 then pointer=0; C.用8279设计LED驱动电路方案1.设计驱动8LED电路: 方案2.设计驱动16 LED电路 与8279显示驱动有关的程序片段:设8279命令口4001H,数据口4000H,显示数据数 组为BUFF(). 显示过程(不用中断方式):display: c8279=40H; do kp=0 to 3; d8279=buff(kp); 3节. 打印机接口打印机概说: 它是一个相对于CPU来说比较慢的外部设 备,用做资料硬拷贝. 种类简介: TP-UP 16 微打 单色,9针,窄纸,如超市所见; Laser-pp40, 4色描绘器,单笔绘画方式; Sharp-515P,上项的改进型(日本产品); EPSON-1600K,台式24针打印机; Brother-1724, 同上; 激光打印机,喷墨打印机等. 打印机接口要点:硬件:分并行接口和串行接口两种 并行接口信号种类: 数据8位 忙状态提示 数据选通控制 地线 串行接口信号线(以RS-232C标准为主): 公共地线 数据发送 数据接收 波特率设定 软件驱动程序命令类: 回车 换行 抬针 空跳 反向打印 方式切换(文本/字符) 数据类: 汉字区位码 ASCII代码 控制类: 参数设定 启动/停止 8031与并行打印机的接口方法 查询方式下的驱动程序:设打印数据变量数组名为pdata(),数据个数为num,锁存器 操作地址为A000H. 外层声明: declare pdata(*) declare k373 byte at (0a000H) printer: do kn=0 to (num-1); k373=pdata(kn); p1.2=0;p1.2=1; do while p1.1=1; 第九章 输出通道接口1节. D/A转换接口 1.1 电流型D/A转换器工作原理 1.2 主要技术指标(1)分辨率:只与器件的二进制位数有关.(2)精度:实际输出与理论值的最大偏差,包括非 线性误差、零点误差、增益误差、温度漂移 等。 (3)建立时间:指数字量从全0变为全1 (或 相反)时模拟量达到终点值1/2LSB误差范围 所需要的时间,它表征器件转换的速度快慢。 常用D/A转换器的技术指标 1.3 DAC0832管脚资料: 结构框图 0832与单片机的连接 应用电路 电路分析 Iout1+Iout2=Vref/Rfb=常数Iout1= (Vref/15K)*( 输入数字量/256)’ Iout2= (Vref/15K) *( [256-数字量]/256) Iout1+Iout2= (Vref/15K)*(255/256)=常数数字量为0,Iout1=0; 数字量为255,Iout1=Imax 双极性输出 双极性电路的证明证明:数据D=0FFH时,V’=-5V. 用迭加原理: V’单独作用时,I= Vout/2R=(0-V’)/R 所以: Vout=-2RV’/R=-2V’ 参考源单独作用时, I=Vout/2R= (Vout-Vref)/4R 所以:Vout=-Vref (证明续) 设Vref=+5V 迭加:Vout=-2V’-Vref=10V-Vref=5V D=00H时,V’=0V V’作用,Vout=0 Vref作用,Vout/2R=-Vref/2R 所以:Vout=Vref. 当D=80H时,V’=-2.5V=-Vref/2,迭加之, 得 Vout=0V. 所以Vout=±5V. 实验相关信息 具体情况:1. 单缓冲方式 2. 单极性输出方式 3. 参考电压为+2.5V,所以数据0-2

我要回帖

更多关于 mpi send char 的文章

 

随机推荐