单片机课程设计
课题目
学 院 专业名称 班 级 学 号 姓 名 指导教师
串行通讯系统设计
工学院
机械设计制造及其自动化
机械11-4班 111014410 高尚 张超一
目 录
一、课程设计的任务和目的 .................................................. - 3 - 二、串行通信实验内容 ........................................................ - 3 - 2.1电路图 ........................................................................ - 3 - 2.2 程序流程图 ............................................................... - 4 - 2.3上机程序 .................................................................... - 5 - 主机(A 机) . ............................................................ - 5 - 从机(B 机) ............................................................. - 6 - 2.4调试结果及结论 ........................................................ - 7 - 三、扩展功能 ........................................................................ - 7 - 3.1电路图 ........................................................................ - 7 - 3.2上机程序 .................................................................... - 7 - 主机(A 机) . ............................................................ - 7 - 从机(B 机) ............................................................. - 8 - 3.3调试结果及结论 ........................................................ - 9 - 四、课程设计总结与心得 . ................................................... - 9 - 五、参考文献 ...................................................................... - 10 -
一、课程设计的任务和目的
以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的了解,面对一个电子设计,应对出系统的方案,电路的设计。再根据该电路完成程序流程图,再根据程序流程图完成程序的设计,并通过反复的调试、运行、改正,直至完成既定功能为止,最后进行功能的最终测试,并反复思考测试中遇到的问题及原因,并将其一一处理,从而完成本次课程设计的实验要求 ,以及本次课程设计的最终目的。
二、串行通信实验内容
2.1电路图
本次课程设计的任务是串行通讯,采用方式1,由A 机发送16个数据到B 机,B 机接收后送到P1口显示,并反送A 机,A 机接收后,送P1口显示。根据要求,我们设计了符合要求的电路,实验电路的简图
2.2 程序流程图
设计好电路后,分别编写A 机(主机)和B 机(从机)程序流程图,实现A 机发送数据给B 机后,B 机接收并显示,再将数据返还给A 机,如此进行16次。A 机和B 机的流程图分别如下图左右所示。
A机(主机) B
机(从机)
2.3上机程序
根据流程图,分别编写主从机的程序,反复调试、运行及不断改正,完成满足既定功能的程序,主从机流程分别如下。
主机(A 机)
ORG 4000H ;机箱入口地址 LJMP MAIN ; ORG 4100H ; MAIN:
MOV TMOD, #20H ;置T1定时方式2 MOV TL1, #0F3H ;设置定时常数 MOV TH1, #0F3H ;
MOV PCON, #80H ; 置SMOD=1, 波特率加倍 MOV SCON, #50H ; 设置工作方式1 MOV R6, #10H ;数据区地址指针 MOV R7, #10H ;数据长度
SETB TR1 ;启动定时器T1 CLR EA ;禁止中断 LOOP:
MOV A, R6 ;取发送数据
MOV SBUF, A ;送串口并开始发送数据 WAIT:
JB TI, NEXT ;检测是否发送 SJMP WAIT ; NEXT:
CLR TI ;清TI WAIT1:
JB RI, READ ;等待接收数据 SJMP WAIT1 ; READ:
CLR RI ;清RI
MOV A, SBUF ;读一帧数据 MOV P1, A ;送P1口显示 INC R6 ;修改指针地址 DJNZ R7, LOOP ;循环 END
从机(B 机)
ORG 4000H LJMP MAIN ORG 4100H MAIN:
MOV SCON, #50H ; 设置工作方式1
MOV PCON, #80H ; 置SMOD=1, 波特率加倍 MOV TL1, #0F3H ; 设置定时常数 MOV TH1, #0F3H ;
MOV TMOD, #20H ; 置T1定时方式2 SETB TR1 ;启动定时器T1 CLR EA ;禁止中断
MOV R5, #20H ;数据区地址指针 MOV R7, #10H ;数据长度 WAIT1:
JB RI, READ ;等待接收数据 SJMP WAIT1 ; READ:
CLR RI ;清RI
MOV A, SBUF ;接收一帧数据 MOV P1, A ;送P1口显示 LCALL DELAY ;调用延时程序 LOOP:
MOV SBUF,A ; 送串口并开始发送数据 WAIT:
JB TI, NEXT ; 检测是否发送 SJMP WAIT ; NEXT:
CLR TI ;清TI
INC R5 ;修改发送数据地址
DJNZ R7, WAIT1 ;判断是否发送,结束转接收 AJMP $ ; DELAY:
MOV R2, #2 ;给R2设初值 UP:
MOV R6, #250 ; DJNZ R6, $ ; DJNZ R2, UP ; RET ; END
2.4调试结果及结论
LED灯显示结果为从机先亮,主机再亮,循环16次。
三、扩展功能
在完成了基本功能后 ,我们对扩展功能进行了尝试。
3.1电路图
扩展功能电路图与基本功能一致。
3.2上机程序
主从机程序如下
主机(A 机)
ORG 4000H LJMP MAIN
ORG 4010H ;从地址10H 开始设定十六个数据 DB 0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH ORG 4100H ; MAIN:
MOV SCON, #0D0H ;设定方式3,并允许接收 MOV PCON, #80H ;置SMOD=1,波特率加倍 MOV TL1, #0FDH ;设置定时常数 MOV TH1, #0FDH ;
MOV SBUF, #00H ;将SBUF 清零 MOV TMOD, #20H ;置定时方式2 SETB TR1 ;启动定时器T1 CLR EA ;禁止中断
MOV R0, #10H ;置接收数据区地址指针 MOV R7, #10H ;数据长度 LOOP:
MOV A, #0AAH ;将0AAH 给累加器 MOV SBUF, A ;准备发送数据 WAIT:
JBC TI, WAIT1 ;检测是否发送并将TI 清零 SJMP WAIT ;
JBC RI, READ ;等待接收数据并将RI 清零 SJMP WAIT1 ; READ:
MOV A, SBUF ;读一帧数据
CJNE A, #0BBH,LOOP ;检测A 与0BBH 是否相等,不相等则返回LOOP
LOOP1:
MOV A, R0 ;将数据区起始地址给累加器 MOV SBUF, A ;送串口并开始发送数据 MOV P1, A ;送P1口显示 WAIT2:
JBC TI, READ1 ;检测是否发送结束并清零 SJMP WAIT2 ; READ1:
INC R0 ;修改发送数据地址指针 DJNZ R7, LOOP1 ;判断发送是否结束 END
从机(B 机)
ORG 4000H
LJMP MAIN ;
ORG 4100H ; MAIN:
MOV SBUF, #00H ;将SBUF 清零
MOV SCON, #0D0H ;设定方式3,并允许接收 MOV PCON, #80H ;设置SMOD=1,波特率加倍 MOV TL1, #0FDH ;设置定时常数 MOV TH1, #0FDH ;
MOV TMOD, #20H ;设置定时方式2
SETB TR1 ;启动定时器 CLR EA ;禁止中断 START:
MOV R0, #80H ;设置数据起始地址指针 MOV R1, #10H ;数据长度 WAIT1:
JBC RI, REC ;等待接收数据并清零RI SJMP WAIT1 ; REC:
MOV A, SBUF ;读一帧数据
CJNE A, #0AAH, NEXT1 ;若A=0AAH,则继续,否则跳转NEXT1 SJMP NEXT2 ;跳转至NEXT2
MOV A, #0FH ;送0FH 给累加器
MOV SBUF, A ;送串口并开始发送数据 SJMP WAIT1 ; NEXT2:
MOV A, #0BBH ; 送0BBHH 给累加器 MOV SBUF, A ; 送串口并开始发送数据 WAIT2:
JBC RI, COMPARE ;等待接收数据并清零RI SJMP WAIT2 ; COMPARE:
MOV A, SBUF ;等待接收数据 MOV R1, A ; MOV P1, A ;
INC R0 ;修改地址指针 DJNZ R1, WAIT1 ; END
3.3调试结果及结论
实验结果为从机灯一直亮,而主机不亮,表明A 机发送数据成功,B 机接收数据成功,但是B 机没有发送数据给A 机或者A 机接收后没有显示。
四、课程设计总结与心得
单片机原理及应用是一门理论性和实践性都很强的专业基础课,也是一门综合性的技术基础学科。它需要C 语言,汇编语言,单片机原理及应用等知识,要掌握单片机指令系统中汇编语言各种基本语句的意义及汇编语言程序设计的基本知识和方法,以及单片机与其他设备相连接的输入输出中断等接口技术。实验就是使学生加深理解所学基础知识,让我们从硬件软件的结合上理论联系实际,提高动手能力,从而全面掌握单片机的应用。实验教学的全过程包括认识、基础、综合3个阶段。以往的单片机实验是进行软件的编制和调试,与实际应用中的硬件电路相脱节,使学生缺乏硬件设计及调试分析能力,对单片机如何构成一个单片机最小应用系统,缺乏认识。单片机实验板,通过计算机连接实验板上
把硬件和软件结合起来一起调试,这样可以节约时间与同学一起讨论,发现问题,解决问题。单片机实验要求的是一种思维的创新,并不是简单的重复老师的实验步骤。老师告诉我们所编程序要达到的实验效果,以两台80C51单片机为核心器件组成串行通讯系统设计,利用提供的单元模块构成硬件系统。我们总共画了一天在单片机实验室,根据书本上的知识来结合实验现象来编语句,不过由于实验室的设备已经很老了,实验箱和电脑都会出现这样那样的问题,这让同学和老师都比较棘手,每一句程序语言都应该考虑前前后后的反应,最后达到应有的实验现象。这次实验我发现我有如下问题:第一,准备不够充分,应该在实验前多看看单片机的语言;第二,过于套用书本上的语句,没有创新;第三,基础知识薄弱,C 语言,微机原理等课程没有学习的很好。单片机在电子应用的领域中越来越多地应用到各行各业,要开发单片机的应用,不但要掌握单片机硬件和软件方面的知识,而且还要深入了解各应用系统的专业知识,融会贯通和有机结合,才能设计出优良的应用系统。并且需要与时俱进,不断了解各公司最新芯片的结构和应用,在实际应用中找到最好的性能价格比。培养自己接受新知识的自学能力, 掌握芯片发展动态。培养自己的创新精神,在原有的基础上进行改进,使之功能不断完善。当然,最重要到还是态度,无论做什么事情,足够认真,足够坚强,足够毅力,足够决心,足够勇气,就一定能办到。
五、参考文献
《单片机中级教程—原理及应用》
- 10 -
附:系统硬件原理图
- 11 -
单片机课程设计
课题目
学 院 专业名称 班 级 学 号 姓 名 指导教师
串行通讯系统设计
工学院
机械设计制造及其自动化
机械11-4班 111014410 高尚 张超一
目 录
一、课程设计的任务和目的 .................................................. - 3 - 二、串行通信实验内容 ........................................................ - 3 - 2.1电路图 ........................................................................ - 3 - 2.2 程序流程图 ............................................................... - 4 - 2.3上机程序 .................................................................... - 5 - 主机(A 机) . ............................................................ - 5 - 从机(B 机) ............................................................. - 6 - 2.4调试结果及结论 ........................................................ - 7 - 三、扩展功能 ........................................................................ - 7 - 3.1电路图 ........................................................................ - 7 - 3.2上机程序 .................................................................... - 7 - 主机(A 机) . ............................................................ - 7 - 从机(B 机) ............................................................. - 8 - 3.3调试结果及结论 ........................................................ - 9 - 四、课程设计总结与心得 . ................................................... - 9 - 五、参考文献 ...................................................................... - 10 -
一、课程设计的任务和目的
以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的了解,面对一个电子设计,应对出系统的方案,电路的设计。再根据该电路完成程序流程图,再根据程序流程图完成程序的设计,并通过反复的调试、运行、改正,直至完成既定功能为止,最后进行功能的最终测试,并反复思考测试中遇到的问题及原因,并将其一一处理,从而完成本次课程设计的实验要求 ,以及本次课程设计的最终目的。
二、串行通信实验内容
2.1电路图
本次课程设计的任务是串行通讯,采用方式1,由A 机发送16个数据到B 机,B 机接收后送到P1口显示,并反送A 机,A 机接收后,送P1口显示。根据要求,我们设计了符合要求的电路,实验电路的简图
2.2 程序流程图
设计好电路后,分别编写A 机(主机)和B 机(从机)程序流程图,实现A 机发送数据给B 机后,B 机接收并显示,再将数据返还给A 机,如此进行16次。A 机和B 机的流程图分别如下图左右所示。
A机(主机) B
机(从机)
2.3上机程序
根据流程图,分别编写主从机的程序,反复调试、运行及不断改正,完成满足既定功能的程序,主从机流程分别如下。
主机(A 机)
ORG 4000H ;机箱入口地址 LJMP MAIN ; ORG 4100H ; MAIN:
MOV TMOD, #20H ;置T1定时方式2 MOV TL1, #0F3H ;设置定时常数 MOV TH1, #0F3H ;
MOV PCON, #80H ; 置SMOD=1, 波特率加倍 MOV SCON, #50H ; 设置工作方式1 MOV R6, #10H ;数据区地址指针 MOV R7, #10H ;数据长度
SETB TR1 ;启动定时器T1 CLR EA ;禁止中断 LOOP:
MOV A, R6 ;取发送数据
MOV SBUF, A ;送串口并开始发送数据 WAIT:
JB TI, NEXT ;检测是否发送 SJMP WAIT ; NEXT:
CLR TI ;清TI WAIT1:
JB RI, READ ;等待接收数据 SJMP WAIT1 ; READ:
CLR RI ;清RI
MOV A, SBUF ;读一帧数据 MOV P1, A ;送P1口显示 INC R6 ;修改指针地址 DJNZ R7, LOOP ;循环 END
从机(B 机)
ORG 4000H LJMP MAIN ORG 4100H MAIN:
MOV SCON, #50H ; 设置工作方式1
MOV PCON, #80H ; 置SMOD=1, 波特率加倍 MOV TL1, #0F3H ; 设置定时常数 MOV TH1, #0F3H ;
MOV TMOD, #20H ; 置T1定时方式2 SETB TR1 ;启动定时器T1 CLR EA ;禁止中断
MOV R5, #20H ;数据区地址指针 MOV R7, #10H ;数据长度 WAIT1:
JB RI, READ ;等待接收数据 SJMP WAIT1 ; READ:
CLR RI ;清RI
MOV A, SBUF ;接收一帧数据 MOV P1, A ;送P1口显示 LCALL DELAY ;调用延时程序 LOOP:
MOV SBUF,A ; 送串口并开始发送数据 WAIT:
JB TI, NEXT ; 检测是否发送 SJMP WAIT ; NEXT:
CLR TI ;清TI
INC R5 ;修改发送数据地址
DJNZ R7, WAIT1 ;判断是否发送,结束转接收 AJMP $ ; DELAY:
MOV R2, #2 ;给R2设初值 UP:
MOV R6, #250 ; DJNZ R6, $ ; DJNZ R2, UP ; RET ; END
2.4调试结果及结论
LED灯显示结果为从机先亮,主机再亮,循环16次。
三、扩展功能
在完成了基本功能后 ,我们对扩展功能进行了尝试。
3.1电路图
扩展功能电路图与基本功能一致。
3.2上机程序
主从机程序如下
主机(A 机)
ORG 4000H LJMP MAIN
ORG 4010H ;从地址10H 开始设定十六个数据 DB 0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,0AH,0BH,0CH,0DH,0EH,0FH ORG 4100H ; MAIN:
MOV SCON, #0D0H ;设定方式3,并允许接收 MOV PCON, #80H ;置SMOD=1,波特率加倍 MOV TL1, #0FDH ;设置定时常数 MOV TH1, #0FDH ;
MOV SBUF, #00H ;将SBUF 清零 MOV TMOD, #20H ;置定时方式2 SETB TR1 ;启动定时器T1 CLR EA ;禁止中断
MOV R0, #10H ;置接收数据区地址指针 MOV R7, #10H ;数据长度 LOOP:
MOV A, #0AAH ;将0AAH 给累加器 MOV SBUF, A ;准备发送数据 WAIT:
JBC TI, WAIT1 ;检测是否发送并将TI 清零 SJMP WAIT ;
JBC RI, READ ;等待接收数据并将RI 清零 SJMP WAIT1 ; READ:
MOV A, SBUF ;读一帧数据
CJNE A, #0BBH,LOOP ;检测A 与0BBH 是否相等,不相等则返回LOOP
LOOP1:
MOV A, R0 ;将数据区起始地址给累加器 MOV SBUF, A ;送串口并开始发送数据 MOV P1, A ;送P1口显示 WAIT2:
JBC TI, READ1 ;检测是否发送结束并清零 SJMP WAIT2 ; READ1:
INC R0 ;修改发送数据地址指针 DJNZ R7, LOOP1 ;判断发送是否结束 END
从机(B 机)
ORG 4000H
LJMP MAIN ;
ORG 4100H ; MAIN:
MOV SBUF, #00H ;将SBUF 清零
MOV SCON, #0D0H ;设定方式3,并允许接收 MOV PCON, #80H ;设置SMOD=1,波特率加倍 MOV TL1, #0FDH ;设置定时常数 MOV TH1, #0FDH ;
MOV TMOD, #20H ;设置定时方式2
SETB TR1 ;启动定时器 CLR EA ;禁止中断 START:
MOV R0, #80H ;设置数据起始地址指针 MOV R1, #10H ;数据长度 WAIT1:
JBC RI, REC ;等待接收数据并清零RI SJMP WAIT1 ; REC:
MOV A, SBUF ;读一帧数据
CJNE A, #0AAH, NEXT1 ;若A=0AAH,则继续,否则跳转NEXT1 SJMP NEXT2 ;跳转至NEXT2
MOV A, #0FH ;送0FH 给累加器
MOV SBUF, A ;送串口并开始发送数据 SJMP WAIT1 ; NEXT2:
MOV A, #0BBH ; 送0BBHH 给累加器 MOV SBUF, A ; 送串口并开始发送数据 WAIT2:
JBC RI, COMPARE ;等待接收数据并清零RI SJMP WAIT2 ; COMPARE:
MOV A, SBUF ;等待接收数据 MOV R1, A ; MOV P1, A ;
INC R0 ;修改地址指针 DJNZ R1, WAIT1 ; END
3.3调试结果及结论
实验结果为从机灯一直亮,而主机不亮,表明A 机发送数据成功,B 机接收数据成功,但是B 机没有发送数据给A 机或者A 机接收后没有显示。
四、课程设计总结与心得
单片机原理及应用是一门理论性和实践性都很强的专业基础课,也是一门综合性的技术基础学科。它需要C 语言,汇编语言,单片机原理及应用等知识,要掌握单片机指令系统中汇编语言各种基本语句的意义及汇编语言程序设计的基本知识和方法,以及单片机与其他设备相连接的输入输出中断等接口技术。实验就是使学生加深理解所学基础知识,让我们从硬件软件的结合上理论联系实际,提高动手能力,从而全面掌握单片机的应用。实验教学的全过程包括认识、基础、综合3个阶段。以往的单片机实验是进行软件的编制和调试,与实际应用中的硬件电路相脱节,使学生缺乏硬件设计及调试分析能力,对单片机如何构成一个单片机最小应用系统,缺乏认识。单片机实验板,通过计算机连接实验板上
把硬件和软件结合起来一起调试,这样可以节约时间与同学一起讨论,发现问题,解决问题。单片机实验要求的是一种思维的创新,并不是简单的重复老师的实验步骤。老师告诉我们所编程序要达到的实验效果,以两台80C51单片机为核心器件组成串行通讯系统设计,利用提供的单元模块构成硬件系统。我们总共画了一天在单片机实验室,根据书本上的知识来结合实验现象来编语句,不过由于实验室的设备已经很老了,实验箱和电脑都会出现这样那样的问题,这让同学和老师都比较棘手,每一句程序语言都应该考虑前前后后的反应,最后达到应有的实验现象。这次实验我发现我有如下问题:第一,准备不够充分,应该在实验前多看看单片机的语言;第二,过于套用书本上的语句,没有创新;第三,基础知识薄弱,C 语言,微机原理等课程没有学习的很好。单片机在电子应用的领域中越来越多地应用到各行各业,要开发单片机的应用,不但要掌握单片机硬件和软件方面的知识,而且还要深入了解各应用系统的专业知识,融会贯通和有机结合,才能设计出优良的应用系统。并且需要与时俱进,不断了解各公司最新芯片的结构和应用,在实际应用中找到最好的性能价格比。培养自己接受新知识的自学能力, 掌握芯片发展动态。培养自己的创新精神,在原有的基础上进行改进,使之功能不断完善。当然,最重要到还是态度,无论做什么事情,足够认真,足够坚强,足够毅力,足够决心,足够勇气,就一定能办到。
五、参考文献
《单片机中级教程—原理及应用》
- 10 -
附:系统硬件原理图
- 11 -