1、单片机课程设计报告书课题名称 双机之间的串行通信设计姓 名学 号院 、 系 、部电气系专 业 电子信息工程指导教师2012 年 9 月 21 日2009 级单片机课程设计 目录一. 设计目的二. 串行口及其扩展简介三. 设计要求四. 硬件电路设计五. 使用说明六. 流程图设计七. 程序设计八. 设计小结九. 参考文献双机之间的串行通信设计学号 姓名 一、 设计目的1、了解串行通信的工作原理2、了解键盘设定的工作原理3、掌握 80C51 的定时器 1 计数器 1 的编程4、掌握电路板的实物焊接二、 串行口及其扩展简介1. 串行通信的基本特征是数据逐位顺序进行传送2. 全双工制式是指通信双方均设有
2、发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送3. 串行通信的传送速率用于说明数据传送的快慢.“波特率”表示每秒种传输离散信号事件的个数,或每秒信号电平的变化次数,单位为 band(波特)。“比特率”是指每秒传送二进制数据的位数,单位为比特/秒,记作bits/s 或 b/s 或 bps。在二进制的情况下,波特率与比特率数值相等4. SM01、SM10,选择方式 2;由 TXD 引脚发送数据。由 RXD 引脚接收数据。方式 2 波特率: 波特率=(2SMOD /64) fosc5.软件消抖在检测到键按下时,执行一段延
3、时 10ms 的子程序后,再确认该键电平是否仍保持闭合状态电平,如果闭合状态电平,则确认为真正有键按下6. 键扫描:先通过输出口使所有列线输出为低电平,然后从输入口读入所有行线的状态。若行线中有低电平,则表明有键被按下。判断按键位置。使列线从低位至高位逐位变低电平输出,每次均读入行线的状态,以确定那条列线为“0”状态。由行、列线的状态就可判断是哪一个键被按下 当判断出哪个键压下后,程序转入相应的键处理程序三、设计要求随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用串行口实现不同计算机之间的相互通信,以达到信息或程序的
4、共享是非常有用的。另一方面,在某计算机的软磁盘驱动器万一出现故障的情况下,也可以通过它将计算机硬盘的数据或程序拷贝出来。文件传输程序可以用来在两个计算机之间传输任何类型的文件(包括二进制文件),对于那些有不同类型的计算机特别有用。网络的发展,局域网的建立,使得一个文件服务器以及允许其他计算机从服务器中装入文件或将它们存入文件服务器也可以通过串口来实现:1.两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为 1200、2400、4800 和 9600bit/s。串行口工作方式为方式 1 的全双工串行通信。2. 两个单片机之间进行通讯波特率的设定,最终归结到对定时计
5、数器 T1 计数初值 TH1、TL1 进行设定。故本题目本质上是通过键盘扫描得到设定的波特率,从而载入相应的 T1 计数初值 TH1、TL1 实现的。3、要求发送方读入按键值,发送到接收方,接收方接受数据并显示在数码管上。三、硬件电路设计1.所需元件序号 名称 数量15 40P zip 座 17 串口接口 113 MAX232 芯片 112 USB 接口 1C1、C2 晶振电容 22p 251、AVR 复位按钮 2Y1 晶振座 3 孔J16 复位跳线插针 3 针RP1 47排阻 白发红 电源跳线 针 复位电阻 单独按键 输出口 双排针 针 外围电容 自锁按钮 复位电容 电源指示灯电阻 限流电阻
6、 指示灯 绿发绿 电源滤波电容 2.protel 仿真电路图五、流程图设计1.1 主机主程序 1.2 键盘扫描子程序设置串行口通讯方式及其波特率检测键盘输入有无列置零开始读行状态非零确定行值下一列零开始选择波特率读入键值串行口发送键码确定键码查表键盘输入2.1 从机主程序 2.2 数码管显示子程序开始设置串行口通讯方式及其波特率RI=?读入数据保存10开始送段码位码地址显示十位保存输入内容结束返回数码管显示选择波特率显示个位送段码位码地址TI=?回发10六、程序设计如下:1.主机:ORG 0000HSJMP MAINORG 000BHSJMP INTT0ORG 0030HMAIN:MOV TM
7、OD, #21H ;T1 方式二 定时功能 波特率发生器MOV SCON, #40H ;串行口方式一CLR ES ;关串行中断MOV PCON, #00H ;波特率不倍增MOV B, #0E8H ;波特率为 1200b/s E8(1200) F4(2400) FA(4800) FD(9600)CLR ET1 ;关 T1 中断SETB ET0SETB TR0返回延时延时结束SETB TR1SETB EAMOV 70H,#01HMOV R7,#5MOV TH0,#3CHMOV TL0,#0B0HMOV A,BMOV TH1,AMOV TL1,AMOV A,70HMOV SBUF,AJNB TI,$
8、CLR TISJMP $INTT0: MOV TH0,#3CHMOV TL0,#0B0HDJNZ R7,LPMOV R7,#5JB P3.3,LP ;位为 1 跳INC 70HMOV A,70HCJNE A,#5,CHANGEMOV 70H,#01HCHANGE: MOV A,70HCJNE A,#01H,B2MOV B,#0E8HJMP GIVEB2: CJNE A,#02H,B3MOV B,#0F4HJMP GIVEB3: CJNE A,#03H,B4MOV B,#0FAHJMP GIVEB4: CJNE A,#04H,LPMOV B,#0FDHGIVE: MOV SBUF,AJNB TI
9、,$CLR TICPL P0.7MOV A,BMOV TH1,AMOV TL1,ALP: RETIEND 2. 从机:ORG 0000HSJMP MAINORG 0030HMAIN:MOV TMOD, #20HMOV SCON, #50HCLR ESMOV PCON, #00HMOV B, #0E8HCLR ET1SETB TR1GIVE: MOV A,BMOV TH1,AMOV TL1,AJNB RI,$CLR RI; SETB P2.7AGAIN: MOV A,SBUFMOV P1,AMOV 50H,ALCALL XIANB1: CJNE A,#1,B2MOV P1,AMOV B,#0E8
10、HSJMP GIVEB2: CJNE A,#2,B3MOV B,#0F4HMOV P1,ASJMP GIVEB3: CJNE A,#3,B4MOV P1,AMOV B,#0FAHSJMP GIVEB4: CJNE A,#4,AGAINMOV P1,AMOV B,#0FDHSJMP GIVEXIAN:PUSH ACCPUSH PSWPUSH BSETB P2.1MOV P1,#0FEHCLR P2.1MOV A,50HMOV DPTR,#TABMOVC A,A+DPTRSETB P2.0MOV P1,ACLR P2.0MOV R6,#250WAIT: MOV R7,#250DJNZ R7,$DJ
11、NZ R6,WAITPOP ACCPOP PSWPOP BRETTAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 39H,5EH,79H,71H七、设计总结:我们这次做的是串行口的通信的实验,通过这个实验,让我们对串口通信方面的知识有了更深刻的了解和认识,是平时学不到的知识。在这次的单片机小学期里,我学会了不少的新知识,巩固了平时学习淡薄的知识,活跃了思考,真是受益匪浅。在这里我首先感谢老师们的指导,在我们遇到困难的时候,老师总是细心指导我们,使得我们完成了小学期题目,还有曾帮助过我们的同学。这次小学期让我知道要不断把所学知识学以致用,还需通过自身的努力,不断提高分析问题的能力。这对我们以后实际工作有着很大的帮助。八、参考文献:1 高峰.单片微型计算机原理与接口技术.科学出版社,20072 马丽.焦永梅.单片机仿真实验系统.石家庄铁道大学四方学院,20113 李飞.单片机原理及其应用 西安电子科技大学出版社 ,2007