ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:395.78KB ,
资源ID:12661041      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12661041.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机双击串行通信MS51汇编代码.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机双击串行通信MS51汇编代码.docx

1、单片机双击串行通信MS51汇编代码单片机双击串行通信MS51汇编代码2012级单片机接口课程设计石家庄铁道大学四方学院集中实践报告书课题名称双机串行通信设计姓 名邢志杰学 号20127019系、 部电气工程系专业班级方1210-4指导教师马丽2015年 7 月 3 日 一、设计任务及要求:设计任务:双机串行通信设计设计要求:1、两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。 2、两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定

2、。故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。 3、要求发送方读入按键值,发送到接收方,接收方接受数据并显示在数码管上。 4、要求做出实物。二、指导教师评语: 三、成绩 指导教师签名: 年 月 日 第1章 设计目的1.1 设计目的(1)掌握单片机实际系统的开发步骤。(2)了解串行通信的原理;了解数码管显示的工作原理;了解键盘扫描的工作原理;对双机串行通信软件编程、调试、相关硬件设备的使用技能等方面得到真正的实践机会,把软硬件结合,克服其中的种种问题,提高编程能力。第2章 设计要求2.1设计要求(1)两片单片机利用串行口进行串行通信:串行通信的波

3、特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。 (2)两个单片机之间进行通讯波特率的设定,最终归结到对定时计数器T1计数初值TH1、TL1进行设定。故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的T1计数初值TH1、TL1实现的。 (3)要求发送方读入按键值,发送到接收方,接收方接受数据并显示在数码管上。 (4)要求做出实物。第3章 硬件电路设计3.1系统框图按键电路单片机1AT89C52单片机2AT89C52显示电路图3-1 系统框图3.2STC89C52单片机最小系统89C52共有四个八位的并行双向

4、口,即有32根输入输出口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。 VCC(40引脚):电源电压VSS(20引脚):接地 图3-2 STC89C52引脚图P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1

5、口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P1口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1。 此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。P3口为准双向口。可以字节访问,也可以位访问。P3.0-RXD,串行输入口。P3.1-TXD,串行输出口。P3

6、.2-INT0,外部中断0的请求。P3.3-INT1,外部中断1的请求。P3.4-T0,定时器/计数器0外部计数脉冲。P3.5-T1,定时器/计数器,1外部计数脉冲。P3.6-WR,外部数据存储器写选通。P3.7-RD,外部数据存储器读选通。RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。ALE(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。STC89C52引脚图如图3-2所示

7、。3.3 按键电路图3-3 按键电路图本设计按键采用矩阵键盘,键盘连接主机的P2口,主机从矩阵键盘接收信息,通过串行输出口输出到从机,从机从串行输入口接收信息并把信息显示在数码管上。3.4 主电路设计图3-4 主电路图第4章 软件程序设计设计思路为:主机通过键盘扫描程序确认是否有键按下,若有键按下则将按键号对应的显示代码发送给从机,并判断是否是波特率按键,若是则进行波特率调整,若无键按下,则继续进行键盘扫描。从机主程序动态显示缓冲区内的数据。中断子程序接收数据并判断是否是波特率按键所对应的显示代码,若是则进行波特率调整,然后将数据保存到缓冲区。初始波特率都为9600。 4.1 主程序流程图 键

8、盘连接到甲机的P2口,通过按键扫描确定键值,从机与主机通过串行输入口P3.0和串行输出口P3.1相连接,实现两机之间的串行通信。开始设置串行口工作方式及波特率检测按键确定按键号并发送波特率按键调整波特率YYNN图4-1 主机主程序流程图4.2 键盘扫描子程序流程图矩阵式键盘扫描的方法常用的有两种,一种是逐列送0,依次读回行;另一种为反转法。本程序采用前者,程序流程图如下:开始P2口列置0,行置1读回P2口得键号行值是否变化调整行,列值结束YN图4-2 键盘扫描子程序流程图4.3 从机主程序流程图从机主程序动态显示缓冲区的4个数据。从机的P1口经锁存器74HC573连接数码管位码,P2口经锁存器

9、74HC573连接数码管的段码。从机与主机通过串行输入口P3.0和串行输出口P3.1相连接,利用中断来接收主机发来的数据,并根据接收的数据来判断是否需要进行波特率调整。从机主程序流程图如下:图4-3 从机主程序流程图4.4 从机中断子程序流程图 图4-3从机中断子程序流程图4.5程序调试图4-5 程序调试4.6 双机串行通信源程序/*程序调试软件:Keil uVision4程序仿真软件:ISIS即Proteus-7.8sp2/*双机串行通信主机程序源代码:/*双机串行通信波特率可改变主机程序代码(汇编)主机功能:通过键盘扫描得到键号,并发送对应键号的显示代码,同时判断是否是波特率按键。简要说明

10、:甲机P2口接4*4矩阵式键盘,高4位行,低4位列。其中04号按键分别代表4种不同波特率(1200、2400、4800、9600)。初始波特率9600。编 写:邢志杰(QQ824997141)时 间:2015年07月02日最后修改:2015年07月03日*/ORG 00HAJMP MAINORG 30HMAIN:MOV SP,#60HMOV TMOD,#20H ;定时器T1,方式2MOV TH1,#0FDH ;初始波特率9600MOV TL1,#0FDHSETB TR1MOV SCON,#40H ;串口方式1;主程序从这里开始LOP1:MOV P2,#0F0H ;列置0,行置1MOV A,P2

11、 ;读回P2口ANL A,#0F0H ;屏蔽列,保留行MOV B,A ;暂存A,用于二次读回时判断XRL A,#0F0H ;相异或判断是否有键按下JZ LOP1 ;无键按下返回LCALL Delay ;有按键,延时消抖MOV A,P2 ;二次读回ANL A,#0F0H ;屏蔽列,保留行CJNE A,B,LOP1 ;判断两次读数是否相等,(其实没多大用)。LCALL SCAN ;掉键盘扫描LCALL LOOSE ;等待按键松开LCALL GET_KEY ;得键号并发送,同时根据是否是波特率按键来改变波特率AJMP LOP1 ;主程序到此结束,返回开始处不断循环;键盘扫描函数SCAN:MOV R3

12、,#0 ;列号初值0MOV R2,#0FEH ;R2用于扫描时行置1,逐列送0SCAN2:MOV A,R2MOV P2,A ;行置1,逐列送0MOV A,P2 ;逐列送0,依次读回行JB ACC.4,LOOP1 ;判断第0行是否为0,若为0则该列,该行有按键MOV R4,#0 ;第0行的行号0送R4RETLOOP1:JB ACC.5,LOOP2MOV R4,#04H ;第1行的行号4送R4RETLOOP2:JB ACC.6,LOOP3MOV R4,#08H ;第2行的行号8送R4RETLOOP3:JB ACC.7,SCAN1MOV R4,#0CH ;第3行的行号12送R4RETSCAN1:IN

13、C R3 ;该列无按键则列号加1MOV A,R2RL AMOV R2,AJB ACC.4,SCAN2 ;4列未扫描完,扫描下一列RET;等待按键松开子函数LOOSE:MOV P2,#0F0H MOV A,P2ANL A,#0F0HXRL A,#0F0HJNZ LOOSERET;得键号并发送GET_KEY: MOV A,R4ADD A,R3 ;得偏移量A即键号MOV B,A ;暂存键号MOV DPTR,#TAB ;查表得对应键号的显示代码MOVC A,A+DPTRMOV SBUF,A ;发送显示代码JNB TI,$ ;未发完等待CLR TI ;清发送标志位MOV A,B ;取出键号,判断是否是波

14、特率按键并调整波特率CJNE A,#0,GET1 ;键号0对应波特率1200MOV TL1,#0E8HMOV TH1,#0E8HAJMP GET4GET1:CJNE A,#1,GET2 ;键号1对应波特率2400MOV TL1,#0F4HMOV TH1,#0F4HAJMP GET4GET2:CJNE A,#2,GET3 ;键号2对应波特率4800MOV TL1,#0FAHMOV TH1,#0FAHAJMP GET4GET3:CJNE A,#3,GET4 ;键号3对应波特率9600MOV TL1,#0FDHMOV TH1,#0FDHGET4:RET;延时子涵数(10ms)Delay:MOV R2

15、,#20DEY1:MOV R3,#248NOP DJNZ R3,$DJNZ R2,DEY1RETSJMP $;共阴极数码管显示代码TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HEND双机串行通信从机程序源代码/*双机串行通信波特率可改变从机程序代码(汇编)从机功能:主函数显示缓冲区数据。中断子函数接收主机发送的显示代码,同时判断是否是波特率按键代码。简要说明:P1口接4个数码管位码,P2口接段码。缓冲区30H33H用于存放要显示的数据代码。其中30H存放波特率的显示代码初值为:4FH即显示3(

16、波特率9600)。编 写:邢志杰时 间:2015年07月02日最后修改:2015年07月03日*/ORG 00HAJMP MAINORG 23HAJMP Rece ;中断子程序ORG 30HMAIN:MOV SP,#60HMOV TMOD,#20H ;T1方式1MOV TH1,#0FDH ;波特率9600 MOV TL1,#0FDHMOV SCON,#50H ;串口方式1,允许接收SETB TR1SETB ESSETB EAMOV R6,#3 ;动态显示三个非波特率数据MOV 30H,#4FH ;保存接收的数据(波特率代码)初值为3所对应的代码,代表初始波特率9600MOV R1,#31H ;

17、保存接收的数据 (非波特率代码) ;主函数一直在显示缓冲区DISP:MOV P1,#0FEH ;送位码MOV P2,30H ;送段码LCALL Delay ;调延时函数MOV P1,#0FDH MOV P2,31HLCALL Delay MOV P1,#0FBH MOV P2,32HLCALL Delay MOV P1,#0F7H MOV P2,33HLCALL DelayAJMP DISP ;返回主函数开始处,循环显示 ;接收中断子函数Rece:CLR RI ;清接收标志位MOV A,SBUF LCALL Option ;调波特率选择子函数MOV R1,A ;存入缓冲区INC R1 DJNZ

18、 R6,Rec1 ;三个数未显示完跳转MOV R1,#31H ;三个数显已示完,从31H从新开始MOV R6,#3Rec1:RETI;延时子函数Delay:MOV R2,#20DEY1:MOV R3,#248NOP DJNZ R3,$DJNZ R2,DEY1RET;波特率判断选择Option:CJNE A,#3FH,Opt1 ;判断是否是波特率1200所对应的按键代码MOV TL1,#0E8H MOV TH1,#0E8HACALL Rest ;是波特率按键则初始化缓冲区,重新显示AJMP Opt4Opt1:CJNE A,#06H,Opt2MOV TL1,#0F4HMOV TH1,#0F4HAC

19、ALL RestAJMP Opt4Opt2:CJNE A,#5BH,Opt3MOV TL1,#0FAHMOV TH1,#0FAHACALL RestAJMP Opt4Opt3:CJNE A,#04FH,Opt4MOV TL1,#0FDHMOV TH1,#0FDHACALL RestOpt4:RET;缓冲区初始化Rest:MOV 30H,A ;保存波特率MOV 31H,#0 ;清0缓冲区MOV 32H,#0MOV 33H,#0MOV R1,#30H ;为了与返回时衔接,使重新显示MOV R6,#1 ;同上RETEND第5章 结论串口通信是学习单片机的重点也是难点。要想实现正常通信就必须保证两个单

20、片机具有一致的波特率。单片机具有强大中断功能,使得从机在显示数据的同时还能接收主机发来的信息,这给程序设计带来了极大的方便。尽管与C语言等高级语言相比汇编语言的可读性不高,也缺乏灵活性,但是在某些情况下汇编语言却是其他语言无法替代的,因此本程序依然采用汇编语言来编写。在本次的课程设计过程中,我们通过查阅资料,接口设计,程序设计,安装调试等环节完成了仿真电路的设计,然后才进行硬件电路的焊接,实现了一个基于MCS51系列单片机,涉及多种资源应用,并具有综合功能的小应用系的统设计。由于提前进行了软件的仿真,所以得到的实物结果也比较理想。本次设计提高了我们在单片机方面的实践技能和综合运用理论知识解决问题的能力。参考文献1 高峰.单片微型计算机原理与接口技术.科学出版社,2007.2 胡汉才.单片机原理及其接口技术.清华大学出版社,2004.3 李勋.单片机微型计算机大学读本.北京航空航天大学出版社,2002.4 王幸之.单片机应用系统抗干扰技术.北京航空航天大学出版社,2001.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1