欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    完整版微机原理毕业课程设计.docx

    • 资源ID:16258933       资源大小:171.20KB        全文页数:16页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    完整版微机原理毕业课程设计.docx

    1、完整版微机原理毕业课程设计 目录1 设计任务 12 设计方案 13硬件设计 13.1 AT89C51简介 13.2 MAX232芯片简介 43.3 串行通信电路 54 软件设计 64.1 BIOS串行通信口功能 64.2 单片机串行口控制寄存器及波特率的计算 74.3 程序流程图 104.3.1 PC机部分程序流程图 104.3.2 单片机部分 125 心得体会 13参考文献 14附录一 15附录二 17 计算机通信系统设计1 设计任务1. 画出简要的硬件原理图,编写通信程序。 2. 程序运行后,实现PC机和单片机之间的串行通信。2 设计方案PC机与单片机之间最简单的连接是零调制3线经济型,所

    2、谓三线就是指发送数据线TxD、接收数据线RxD以及信号地线GND。连接时,双方的地线直接相连,收发数据线交叉相连。这是进行全双工通信所必需的最少数目的线路。由于单片机的输入、输出、均为TTL电平,而PC机配置的是RS-232标准串行接口,二者的电气规范不一致,因此要完成PC机与单片机之间的串行通信,必须进行电平转换。本次课程设计我们选用AT89C51单片机,电平转换芯片选用MAXIM公司生产的MAX232芯片。3硬件设计3.1 AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Onl

    3、y Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。以下是AT89C51芯片的引脚图: 图3-1 AT89C51引脚图接下来对单片机个管教进行简要说明:VCC:供

    4、电电压。GND:接地。P0口:P0口为一个8位漏级开路双向IO口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的

    5、8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是带8个内部上拉电阻的双向IO口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输

    6、入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚 备选功能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(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALEPROG:当访问外部存储器时,地址锁存允许的输出电平用于

    7、锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EAVPP:当

    8、EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 MAX232芯片简介MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA232C和V.28V.24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成RS-232C输出所需要的正负

    9、10V电压。所以,采用此芯片的接口串行通信系统只需要单一的+5V电源就可以了。 以下是MAX232芯片的引脚图: 图3-2MAX232引脚MAX232典型工作电路图: 图3-3 MAX232典型工作电路图在MAX232工作电路中,电容C1、C2、C3、C4、以及V_、V+是电源变换电路部分。在实际应用中,期间对电源噪声很敏感。因此,Vcc必须要对地加去耦电容,其他电容同样是用以提高抗干扰能力,在连接时必须尽量靠近器件。下半部分是发送和接收部分,实际应用中,和可直接接TTLCMOS点评的89C51单片机的串行发送端TXD;和可直接接TTLCMOS电平的89C51单片机的串行接收端RXD;和可直接

    10、接PC机的RS-232串口接收端RXD;和可直接接PC机的RS-232串口发送端TXD.3.3 串行通信电路通过以上对AT89C51和MAX232两个芯片的介绍,接下来设计串行通信电路。现从MAX232芯片中两路发送接收中任选一路作为接口。应注意其发送、接受的引脚要对应。以下为接口电路图: 图3-4 PC机与单片机通信电路4 软件设计编写程序,实现单片机与PC机之间的串行通信。程序实现以下功能:单片机向PC机发送数据,PC机接收后将接收到的数据反馈给单片机,由单片机检测发送的数据是否正确,正确则继续发送并由数码管显示该数字,否则重新发送,直至数据发送完毕。4.1 BIOS串行通信口功能PC机提

    11、供比较灵活的关于串行口的BIOS中断调用方法,即通过”INT 14”调用ROM BIOS串行通信口例行程序。该例行程序包括将串口初始化为指定的字节结构和传输速率,检查控制器的状态、读写字符等功能。下面介绍”INT 14”中断调用功能。1 初始化串行通信口(AH=0) 调用参数:AL=初始化参数 DX=通信口号,0:COM1, 2:COM2 返回参数:AH=通信口状态 AL=调制解调器状态 2 向串行通信口写字符(AH=1) 输入参数:AL=所写字符 DX=通信口号,0:COM1, 2:COM2 输出参数:写字符成功:AH.7=0,AL=已写入字符 写字符失败:AH.7=1,AH.06=通信口状

    12、态3 从串行通信口读字符(AH=2) 输入参数:DX=通信口号,0:COM1, 2:COM2 输出参数:读字符成功:AH.7=0,AL=读入字符 读字符失败:AH.7=1,AH.06=通信口状态4 取通信口状态(AH=3) 输入参数:DX=通信口号,0:COM1, 2:COM2 输出参数:AH=通信口状态 AL=调制解调器状态 4.2 单片机串行口控制寄存器及波特率的计算89C51串行通信的方式选择、接收和发送控制以及串行口的状态标志等均由特殊功能寄存器SCON控制和指示。SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串

    13、行口控制寄存器。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51 芯片串行口的工作状态。51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。它的各个位的具体定义如下:SM0 SM1 SM2 REN TB8 RB8 TI RISM0、SM1 为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。串行口工作模式设置。SM0 SM1 模式 功能 波特率 0 0 0 同步移位寄存器 fosc12 0 1 1 8位UART 由定时器设置 1 0 2 9位UART fosc32 或fosc64 1 1 3 9位UART 由定时器设置在这里只

    14、说明最常用的模式1,其它的模式也就一一略过。表中的fosc 代表振荡器的频率,也就是晶振的频率。UART 为(Universal Asynchronous Receiver)的英文缩写。SM2: 在模式2、模式3 中为多处理机通信使能位。在模式0 中要求该位为0。REN: 为允许接收位,REN 置1 时串口允许接收,置0 时禁止接收。REN 是由软件置位或清零。如果在一个电路中接收和发送引脚P3.0,P3.1 都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REN=0 来禁止接收,在子程序结束处加入RE

    15、N=1 再次打开串口接收。TB8: 发送数据位8,在模式2 和3 是要发送的第9 位。该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。RB8: 接收数据位8,在模式2 和3 是已接收数据的第9 位。该位可能是奇偶位,地址数据标识位。在模式0 中,RB8 为保留位没有被使用。在模式1 中,当SM2=0,RB8 是已接收数据的停止位。TI: 发送中断标识位。在模式0,发送完第8 位数据时,由硬件置位。其它模式中则是在发送停止位之初,由硬件置位。TI 置位后,申请中断,CPU 响应中断后,发送下一帧数据。在任何模式下,TI 都必须由

    16、软件来清除,也就是说在数据写入到SBUF 后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI 不会由硬件清除,所以这时必须用软件对其清零。RI: 接收中断标识位。在模式0,接收第8 位结束时,由硬件置位。其它模式中则是在接收停止位的半中间,由硬件置位。RI=1,申请中断,要求CPU 取走数据。但在模式1 中,SM2=1时,当未收到有效的停止位,则不会对RI 置位。同样RI 也必须要靠软件清除。常用的串口模式1 是传输10 个位的,1 位起始位为0,8 位数据位,低位在先,1 位停止位为1。它的波特率是可变的,其速率是取决于定时器1 或定时器2 的定时值(溢出速率)。A

    17、T89C51 和AT89C2051 等51 系列芯片只有两个定时器,定时器0 和定时器1,而定时器2是89C52 系列芯片才有的。波特率:在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。波特率是指串行端口每秒内可以传输的波特位数。如果波特率为9600,它是指每秒可以传送9600 个二进位,而一个字节要8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是960010960 字节。51 芯片的串口工作模式0的波特率是固定的,为fosc12,以一个12M 的晶

    18、振来计算,那么它的波特率可以达到1M。模式2 的波特率是固定在fosc64 或fosc32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs64,SMOD 为1,波特率为focs32。模式1 和模式3 的波特率是可变的,取决于定时器1 或2(52 芯片)的溢出速率。那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢?可以用以下的公式去计算。波特率(32)定时器1 溢出速率上式中如设置了PCON 寄存器中的SMOD 位为1 时就可以把波特率提升2 倍。通常会使用定时器1 工作在定时器工作模式2 下,这时定时值中的TL1 做为计数,TH1 做为自动重

    19、装值 ,这个定时模式下,定时器溢出后,TH1 的值会自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。在这个定时模式2 下定时器1 溢出速率的计算公式如下:溢出速率(计数速率)(256TH1)上式中的“计数速率”与所使用的晶体振荡器频率有关,在51 芯片中定时器启动后会在每一个机器周期使定时寄存器TH 的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51 芯片的计数速率为晶体振荡器频率的112,一个12M 的晶振用在51 芯片上,那么51 的计数速率就为1M。通常用11.0592M 晶体是为了得到标准的无误差的波特率,那么为何呢?计算一下就知道了。如我们要得到96

    20、00 的波特率,晶振为11.0592M 和12M,定时器1 为模式2,SMOD 设为1,分别看看那所要求的TH1 为何值。代入公式:11.0592M9600(232)(11.0592M12)(256-TH1)TH125012M9600(232)(12M12)(256-TH1)TH1249.49上面的计算可以看出使用12M 晶体的时候计算出来的TH1 不为整数,而TH1 的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600 波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M 的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十

    21、分之小的,可以忽略不计。4.3 程序流程图4.3.1 PC机部分程序流程图 图3-5 PC机通信程序流程图4.3.2 单片机部分 图3-6 单片机通信程序流程图5 心得体会这学期学习了微机原理与接口技术,接触汇编语言,开始对其有一定的了解,以前编写程序用的都是C语言,基本上不涉及硬件方面的东西,而汇编语言则不同,它需要对硬件电路有一定的了解,这样在学习汇编语言的时候,就需注意硬件方面的知识的掌握。本次课程设计我所做的题目是实现单片机与PC机之间的串行通信,对于这个题目,在微机原理与接口技术这门课程里曾学过关于PC机的串行通信的知识,而对于单片机,在以前也曾经自学过,所以最初看到这个题目的时候,

    22、并没有感到无从下手,接下来需要做的事情就是通过查找资料确定硬件电路,然后再通过硬件电路编写实现功能的程序。通过查找资料,最终确定下来硬件电路图,进而根据要求编写程序。由于对此类题目以前没有做过,所以本次课程设计,无论是硬件电路方面,还是软件方面,难免会有些不足之处,比如硬件电路可以尝试其他的实现方法,而软件方面,则可以修改程序使其实现更加复杂的功能等。虽然如此,通过此次课程设计还是感觉获益匪浅,首先是对汇编语言和微机的串行通信知识有了进一步的了解和巩固,为以后更加系统的学习和应用奠定了一定的基础;其次是对单片机知识有了很好的认识,以前只是很粗浅的学习了单片机,经过这几天的学习和应用,有了很大程

    23、度的提高;最后一点就是提高了自己分析和解决问题的能力,面对我们未知的问题,我们应该知道如何下手,如何解决。总之,通过此次课程设计,让我收获了很多。参考文献1 周佩玲. 微机原理与接口技术.电子工业出版社,20052 周坚. 单片机C语言轻松入门.北京航空航天大学出版社,20063 李朝青. 单片机原理及接口技术(第三版). 北京航空航天大学出版社,20054 潘超群. 单片机控制技术在通信中的应用-MCS-51系列.电子工业出版社,20085 程学先. 汇编语言程序设计.武汉理工大学出版社,2002附录一PC机通信程序: DATA SEGMENT RBUF DB 10 DUP(0) COUNT

    24、 DB 10 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,START PROC FAR PUSH DS PUSH AXMOV AX,DATAMOV DS,AXLEA DI ,RBUF ;置接收数据块首地址MOV CL,COUNT ;置接收数据块长度MOV AH,00H ;0号功能 MOV AL,0E3H ;串口初始化:波特率9600,无校验,1位停止位,8位数据位MOV DX,00H ;指定COM1端口INT 14HREPT1:MOV AH,02H ;2号功能:接收字符MOV DX,00H ;指定COM1端口INT 14H ;出口参数:AL中为接

    25、收到的参数,AH中为线路状态MOV BX,AX ;AX中的内容暂存于BX中MOV AL,AH ;取线路状态至ALTEST AL,80H ;接收是否成功(D7=0?) JNZ REPT1 ;不成功,重接TEST AL,01H ;数据是否准备就绪JNZ REPT1 ;未就绪,重接MOV AL,BL ;就绪,取回字符MOV DI,AL ;保存INC DI ;指向下一个地址单元REPT2:MOV AH,03H ;3号功能检查串口状态MOV DX,00H ;指定COM1端口INT 14HMOV AL,AH ;取线路状态至ALTEST AL,20H ;发送保持器是否空(D5=1?)JZ REPT2REPT

    26、3:MOV AL,BL ;将接收到的字符存至ALMOV AH,01H ;1号功能:发送字符MOV DX,00H ;指定COM1端口INT 14HMOV AL,AH ;取线路状态至ALTEST AL,80H ;发送是否成功(D7=0?) JNZ REPT3 ;不成功,重发LOOP REPT1 ;数据是否接收完毕?未完,继续POP DSPOP AXCODE ENDSEND START附录二单片机通信程序:#includereg51.() uchar i=0; TMOD=0x20; 确定定时器工作模式 TH1=0xfb; TL1=0xfb; 定时初值 PCON&=0x80; SMOD=1 TR1=1; 开启定时器1 SCON=0x50; 串口工作方式1,允许接收 for(i=0;i10;i+) 发送10个数据 senddata(i); while(1) 等待接收数据 if(RI) 检测接收中断标志 if(SBUF=i) 判断是否发送正确 dis (SBUF); 显示发送的数据 receive(); break; else 不正确,发送出错报告,重新发送 i-; receive(); break;


    注意事项

    本文(完整版微机原理毕业课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开