




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1设计任务12设计方案13硬件设计131AT89C51简介132MAX232芯片简介433串行通信电路54软件设计641BIOS串行通信口功能642单片机串行口控制寄存器及波特率的计算743程序流程图10431PC机部分程序流程图10432单片机部分125心得体会13参考文献14附录一15附录二17计算机通信系统设计1设计任务1画出简要的硬件原理图,编写通信程序。2程序运行后,实现PC机和单片机之间的串行通信。2设计方案PC机与单片机之间最简单的连接是零调制3线经济型,所谓三线就是指发送数据线TXD、接收数据线RXD以及信号地线GND。连接时,双方的地线直接相连,收发数据线交叉相连。这是进行全双工通信所必需的最少数目的线路。由于单片机的输入、输出、均为TTL电平,而PC机配置的是RS232标准串行接口,二者的电气规范不一致,因此要完成PC机与单片机之间的串行通信,必须进行电平转换。本次课程设计我们选用AT89C51单片机,电平转换芯片选用MAXIM公司生产的MAX232芯片。3硬件设计31AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFLASHPROGRAMMABLEANDERASABLEREADONLYMEMORY)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。以下是AT89C51芯片的引脚图图31AT89C51引脚图接下来对单片机个管教进行简要说明VCC供电电压。GND接地。P0口P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口P3口管脚是带8个内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示管脚备选功能P30RXD(串行输入口)P31TXD(串行输出口)P32INT0(外部中断0)P33INT1(外部中断1)P34T0(记时器0外部输入)P35T1(记时器1外部输入)P36WR(外部数据存储器写选通)P37RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。32MAX232芯片简介MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA232C和V28/V24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的5V电源电压变换成RS232C输出所需要的正负10V电压。所以,采用此芯片的接口串行通信系统只需要单一的5V电源就可以了。以下是MAX232芯片的引脚图图32MAX232引脚MAX232典型工作电路图图33MAX232典型工作电路图在MAX232工作电路中,电容C1、C2、C3、C4、以及V_、V是电源变换电路部分。在实际应用中,期间对电源噪声很敏感。因此,VCC必须要对地加去耦电容,其他电容同样是用以提高抗干扰能力,在连接时必须尽量靠近器件。下半部分是发送和接收部分,实际应用中,INT1和I2可直接接TTL/CMOS点评的89C51单片机的串行发送端TXD;OUR和可直接接TTL/CMOS电平的89C51单片机的串行接收端RXD;T1和T2可直接接PC机的RS232串口接收端RXD;INR1和I2可直接接PC机的RS232串口发送端TXD33串行通信电路通过以上对AT89C51和MAX232两个芯片的介绍,接下来设计串行通信电路。现从MAX232芯片中两路发送接收中任选一路作为接口。应注意其发送、接受的引脚要对应。以下为接口电路图图34PC机与单片机通信电路4软件设计编写程序,实现单片机与PC机之间的串行通信。程序实现以下功能单片机向PC机发送数据,PC机接收后将接收到的数据反馈给单片机,由单片机检测发送的数据是否正确,正确则继续发送并由数码管显示该数字,否则重新发送,直至数据发送完毕。41BIOS串行通信口功能PC机提供比较灵活的关于串行口的BIOS中断调用方法,即通过”INT14”调用ROMBIOS串行通信口例行程序。该例行程序包括将串口初始化为指定的字节结构和传输速率,检查控制器的状态、读写字符等功能。下面介绍”INT14”中断调用功能。1初始化串行通信口(AH0)调用参数AL初始化参数DX通信口号,0COM1,2COM2返回参数AH通信口状态AL调制解调器状态2向串行通信口写字符(AH1)输入参数AL所写字符DX通信口号,0COM1,2COM2输出参数写字符成功AH70,AL已写入字符写字符失败AH71,AH06通信口状态3从串行通信口读字符(AH2)输入参数DX通信口号,0COM1,2COM2输出参数读字符成功AH70,AL读入字符读字符失败AH71,AH06通信口状态4取通信口状态(AH3)输入参数DX通信口号,0COM1,2COM2输出参数AH通信口状态AL调制解调器状态42单片机串行口控制寄存器及波特率的计算89C51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示。SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON就是51芯片的串行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。它的各个位的具体定义如下SM0SM1SM2RENTB8RB8TIRISM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。SM0SM1模式功能波特率000同步移位寄存器FOSC/120118位UART由定时器设置1029位UARTFOSC/32或FOSC/641139位UART由定时器设置在这里只说明最常用的模式1,其它的模式也就一一略过。表中的FOSC代表振荡器的频率,也就是晶振的频率。UART为UNIVERSALASYNCHRONOUSRECEIVER)的英文缩写。SM2在模式2、模式3中为多处理机通信使能位。在模式0中要求该位为0。REN为允许接收位,REN置1时串口允许接收,置0时禁止接收。REN是由软件置位或清零。如果在一个电路中接收和发送引脚P30,P31都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REN0来禁止接收,在子程序结束处加入REN1再次打开串口接收。TB8发送数据位8,在模式2和3是要发送的第9位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。RB8接收数据位8,在模式2和3是已接收数据的第9位。该位可能是奇偶位,地址/数据标识位。在模式0中,RB8为保留位没有被使用。在模式1中,当SM20,RB8是已接收数据的停止位。TI发送中断标识位。在模式0,发送完第8位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI置位后,申请中断,CPU响应中断后,发送下一帧数据。在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。RI接收中断标识位。在模式0,接收第8位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI1,申请中断,要求CPU取走数据。但在模式1中,SM21时,当未收到有效的停止位,则不会对RI置位。同样RI也必须要靠软件清除。常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。如果波特率为9600,它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是960010960字节。51芯片的串口工作模式0的波特率是固定的,为FOSC/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。模式2的波特率是固定在FOSC/64或FOSC/32,具体用那一种就取决于PCON寄存器中的SMOD位,如SMOD为0,波特率为FOCS/64,SMOD为1,波特率为FOCS/32。模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢可以用以下的公式去计算。波特率(SMOD32)定时器1溢出速率上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2倍。通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做为计数,TH1做为自动重装值,这个定时模式下,定时器溢出后,TH1的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2下定时器1溢出速率的计算公式如下溢出速率(计数速率)/256TH1上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。通常用110592M晶体是为了得到标准的无误差的波特率,那么为何呢计算一下就知道了。如我们要得到9600的波特率,晶振为110592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。代入公式110592M9600232110592M/12/256TH1TH125012M960023212M/12/256TH1TH124949上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。当然一定的误差是可以在使用中被接受的,就算使用110592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。43程序流程图431PC机部分程序流程图开始串口初始化接收字符数据是否就绪接收成功取回发送保持器是否空发送字符是否成功NYNYNYNY接收完毕结束N图35PC机通信程序流程图432单片机部分等待反馈数据NYY图36单片机通信程序流程图开始串口初始化发送数据是否正确发送出错重新发送发送完毕结束N5心得体会这学期学习了微机原理与接口技术,接触汇编语言,开始对其有一定的了解,以前编写程序用的都是C语言,基本上不涉及硬件方面的东西,而汇编语言则不同,它需要对硬件电路有一定的了解,这样在学习汇编语言的时候,就需注意硬件方面的知识的掌握。本次课程设计我所做的题目是实现单片机与PC机之间的串行通信,对于这个题目,在微机原理与接口技术这门课程里曾学过关于PC机的串行通信的知识,而对于单片机,在以前也曾经自学过,所以最初看到这个题目的时候,并没有感到无从下手,接下来需要做的事情就是通过查找资料确定硬件电路,然后再通过硬件电路编写实现功能的程序。通过查找资料,最终确定下来硬件电路图,进而根据要求编写程序。由于对此类题目以前没有做过,所以本次课程设计,无论是硬件电路方面,还是软件方面,难免会有些不足之处,比如硬件电路可以尝试其他的实现方法,而软件方面,则可以修改程序使其实现更加复杂的功能等。虽然如此,通过此次课程设计还是感觉获益匪浅,首先是对汇编语言和微机的串行通信知识有了进一步的了解和巩固,为以后更加系统的学习和应用奠定了一定的基础;其次是对单片机知识有了很好的认识,以前只是很粗浅的学习了单片机,经过这几天的学习和应用,有了很大程度的提高;最后一点就是提高了自己分析和解决问题的能力,面对我们未知的问题,我们应该知道如何下手,如何解决。总之,通过此次课程设计,让我收获了很多。参考文献1周佩玲微机原理与接口技术电子工业出版社,20052周坚单片机C语言轻松入门北京航空航天大学出版社,20063李朝青单片机原理及接口技术(第三版)北京航空航天大学出版社,20054潘超群单片机控制技术在通信中的应用MCS51系列电子工业出版社,20085程学先汇编语言程序设计武汉理工大学出版社,2002附录一PC机通信程序DATASEGMENTRBUFDB10DUP0COUNTDB10DATAENDSCODESEGMENTASSUMECSCODE,DSDATA,STARTPROCFARPUSHDSPUSHAXMOVAX,DATAMOVDS,AXLEADI,RBUF置接收数据块首地址MOVCL,COUNT置接收数据块长度MOVAH,00H0号功能MOVAL,0E3H串口初始化波特率9600,无校验,1位停止位,8位数据位MOVDX,00H指定COM1端口INT14HREPT1MOVAH,02H2号功能接收字符MOVDX,00H指定COM1端口INT14H出口参数AL中为接收到的参数,AH中为线路状态MOVBX,AXAX中的内容暂存于BX中MOVAL,AH取线路状态至ALTESTAL,80H接收是否成功(D70)JNZREPT1不成功,重接TESTAL,01H数据是否准备就绪JNZREPT1未就绪,重接MOVAL,BL就绪,取回字符MOVDI,AL保存INCDI指向下一个地址单元REPT2MOVAH,03H3号功能检查串口状态MOVDX,00H指定COM1端口INT14HMOVAL,AH取线路状态至ALTESTAL,20H发送保持器是否空(D51)JZREPT2REPT3MOVAL,BL将接收到的字符存至ALMOVAH,0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物开发过程中的经济分析试题及答案
- 激光技术与可再生能源结合试题及答案
- 考场必胜健康管理师考试试题及答案
- 社交能力与心理调节的关系试题及答案
- 营业税转增值税影响试题及答案
- 教育信息化试题及答案
- 药剂学重要考点精讲试题及答案
- 药品购销链管理与风险控制试题及答案
- 激光成形技术的创新发展试题及答案
- 药物临床监测技巧考核试题及答案
- 2025年济源职业技术学院单招职业技能测试题库附答案
- 承包餐馆协议书模板
- 危险化学品事故应急预案
- 第三方房屋抵押担保合同
- 2025年山东建筑安全员《B证》考试题库及答案
- 2025届上海市黄浦区高三下学期二模政治试题(原卷版+解析版)
- 校园零星维修协议书
- “燕园元培杯”2023-2024学年全国中学生地球科学奥林匹克竞赛决赛试题详解
- 消防队伍廉洁警示教育
- 总体概述:施工组织总体设想、方案针对性及施工段划分
- 涉密和非涉密计算机保密管理制度
评论
0/150
提交评论