资源描述:
《单片机原及应用课程设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机课程设计课题目串行通讯系统设计学院工学院专业名称机械设计制造及其自动化班级机械11-4班学号111014410姓名高尚指导教师张超一目录一、课程设计的任务和目的-2-二、串行通信实验内容-2-2.1电路图-2-2.2程序流程图-3-2.3上机程序-4-主机(A机)-4-从机(B机)-5-2.4调试结果及结论-6-三、扩展功能-6-3.1电路图-6-3.2上机程序-6-主机(A机)-6-从机(B机)-7-3.3调试结果及结论-8-四、课程设计总结与心得-8-五、参考文献-9-一、课程设计的任务和目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、
2、更深一步的了解,面对一个电子设计,应对出系统的方案,电路的设计。再根据该电路完成程序流程图,再根据程序流程图完成程序的设计,并通过反复的调试、运行、改正,直至完成既定功能为止,最后进行功能的最终测试,并反复思考测试中遇到的问题及原因,并将其一一处理,从而完成本次课程设计的实验要求,以及本次课程设计的最终目的。二、串行通信实验内容2.1电路图本次课程设计的任务是串行通讯,采用方式1,由A机发送16个数据到B机,B机接收后送到P1口显示,并反送A机,A机接收后,送P1口显示。根据要求,我们设计了符合要求的电路,实验电路的简图2.2程序流程图设计好电路后,分别编写A机(主机)和B机(从机)程序流
3、程图,实现A机发送数据给B机后,B机接收并显示,再将数据返还给A机,如此进行16次。A机和B机的流程图分别如下图左右所示。A机(主机)B机(从机)2.3上机程序根据流程图,分别编写主从机的程序,反复调试、运行及不断改正,完成满足既定功能的程序,主从机流程分别如下。主机(A机)ORG4000H;机箱入口地址LJMPMAIN;ORG4100H;MAIN:MOVTMOD,#20H;置T1定时方式2MOVTL1,#0F3H;设置定时常数MOVTH1,#0F3H;MOVPCON,#80H;置SMOD=1,波特率加倍MOVSCON,#50H;设置工作方式1MOVR6,#10H;数据区地址指针MOVR7
4、,#10H;数据长度SETBTR1;启动定时器T1CLREA;禁止中断LOOP:MOVA,R6;取发送数据MOVSBUF,A;送串口并开始发送数据WAIT:JBTI,NEXT;检测是否发送SJMPWAIT;NEXT:CLRTI;清TIWAIT1:JBRI,READ;等待接收数据SJMPWAIT1;READ:CLRRI;清RIMOVA,SBUF;读一帧数据MOVP1,A;送P1口显示INCR6;修改指针地址DJNZR7,LOOP;循环END从机(B机)ORG4000HLJMPMAINORG4100HMAIN:MOVSCON,#50H;设置工作方式1MOVPCON,#80H;置SMOD=1,波
5、特率加倍MOVTL1,#0F3H;设置定时常数MOVTH1,#0F3H;MOVTMOD,#20H;置T1定时方式2SETBTR1;启动定时器T1CLREA;禁止中断MOVR5,#20H;数据区地址指针MOVR7,#10H;数据长度WAIT1:JBRI,READ;等待接收数据SJMPWAIT1;READ:CLRRI;清RIMOVA,SBUF;接收一帧数据MOVP1,A;送P1口显示LCALLDELAY;调用延时程序LOOP:MOVSBUF,A;送串口并开始发送数据WAIT:JBTI,NEXT;检测是否发送SJMPWAIT;NEXT:CLRTI;清TIINCR5;修改发送数据地址DJNZR7,
6、WAIT1;判断是否发送,结束转接收AJMP$;DELAY:MOVR2,#2;给R2设初值UP:MOVR6,#250;DJNZR6,$;DJNZR2,UP;RET;END2.4调试结果及结论LED灯显示结果为从机先亮,主机再亮,循环16次。三、扩展功能在完成了基本功能后,我们对扩展功能进行了尝试。3.1电路图扩展功能电路图与基本功能一致。3.2上机程序主从机程序如下主机(A机)ORG4000HLJMPMAINORG4010H;从地址10H开始设定十六个数据DB0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FHORG4100H;MAIN
7、:MOVSCON,#0D0H;设定方式3,并允许接收MOVPCON,#80H;置SMOD=1,波特率加倍MOVTL1,#0FDH;设置定时常数MOVTH1,#0FDH;MOVSBUF,#00H;将SBUF清零MOVTMOD,#20H;置定时方式2SETBTR1;启动定时器T1CLREA;禁止中断MOVR0,#10H;置接收数据区地址指针MOVR7,#10H;数据长度LOOP:MOVA,#0AAH;将0AAH给累加器MOV