第二批第2组串口通信查询设计3Word文档格式.docx
- 文档编号:21679157
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:95.86KB
第二批第2组串口通信查询设计3Word文档格式.docx
《第二批第2组串口通信查询设计3Word文档格式.docx》由会员分享,可在线阅读,更多相关《第二批第2组串口通信查询设计3Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
第10章参考文献11
第1章项目简介
1.1项目名称
1.2开发人员
11通信班卢剑萍、郜丽冰、车静静、李莹
1.3指导教师
第2章项目研究意义
2.1课程设计概述
串行通信接口SCI的主要功能:
接收时,把外部的单线输入的数据变成一个字节的并行数据送入MCU内部;
发送时,把需要发送的一个字节的并行数据转换为单线输出。
为了设置波特率要有波特率寄存器。
为了能设置通信格式、是否校验、是否允许中断需要控制寄存器。
要知道串口是否有数据接收发送,要有控制寄存器。
程序员不直接与移动寄存器打交道,只与数据寄存器打交道。
2.2需求分析及研究意义
通过PC机的VB编写的界面发送一串字符,通过串行口发给单片机,单片机接收后回送给该界面,要求显示所接收的字符和发送的字符一样。
通过串口的中断函数,可以实现在串口通信的一帧数据传送完成后,实现你想要的功能。
例如,想看一帧数据是否完成传送,可以利用串口通信的中断函数去验证。
第3章采用的技术
3.1课程设计的方案设计论证
通过PC机的RS232串口来实现与单片机的串口通信,PC机送出的信号经过MAX232芯片进行电平转换后,接到PS232总线上,单片机的串口引脚直接接到PS232总线上,从而实现PC机与多单片机的串口通信。
3.2重要算法的设计、流程描述或伪代码描述
SCI通信流程图(中断方式主程序及其中断子程序)
第4章课程设计项目进度表
日期
完成的工作
2012.6.10
项目可行性研究,研究报告
2012.6.11
查找通信串口查询相关知识
2012.6.12
子模块的程序设计和调试
2012.6.13
系统联合调试,撰写课程设计总结报告
2012.6.15
交课程设计
第5章课程设计任务分配表
成员
座号
项目内容
序号
卢剑萍
38号
1、程序设计与调试
2、系统联合调试
3、编写课程设计报告
01
郜丽冰
51号
1、修改程序
02
车静静
53号
1、任务分配
2、编写课程设计报告
3、程序设计
03
李莹
55号
1、编写课程报告
2、页面设计
04
第6章达到的效果
6.1程序设计思想
根据设计要求,1.小灯的初始化2.通信测试3.实现发送与接收,要实现通过串口进行通信,就必须有一个发送端和一个接收端,因此要编写两个程序,在发送端编写发送程序,在接受端编写接收程序。
发送PC机和接收PC机通过RS-232C的3根信号线(TXD、RXD、GND)进行相连。
我们决定采用查询方式编写发送程序和接收程序。
(一)SCI通信原理图:
(二)SCI通信接线图:
6.2程序最终实现结果
编制一个查询方式通信程序。
通过PC机发送一个命令以控制接在PTA0~PTA7口的8个小灯亮暗状态,具体是:
各个小灯初始状态都为暗,首先进行通信测试,PC机发送“A”(65),若单片机接收到则8个小灯全亮,并回送字符“A”(65),虽然单片机接收到但有问题,不是“A”(65),说明有误码,则4个小灯全亮,并回送字符“0”(48),否则8个小灯全暗无反应。
PC机发送字符串“11”发送“10”发送“21”……进入死循环
第7章源程序
7.1主程序及其中断子程序的部分代码
//------------------------------------------------------*
//工程名:
SCI_Pooling.prj*
//硬件连接:
*
//
(1)MCU的串口与PC方的串口相连*
//程序描述:
利用查询方式把收到的数据发送回去*
//目的:
初步掌握利用查询方式进行串行通信的基本知识*
//--------清华2007版《嵌入式技术基础与实践》实例--------*
///总头文件
.include"
Includes.h"
//主程序
.areaflash(abs)
.orgFlashStartAddr
MainInit:
:
//复位后从此处执行(见Vectors08.s文件末尾处)
SEI//关总中断
//1.堆栈初始化为RAM最高端
//LDHX#RAMendAddr+1//HX=#RAMEndAddr+1
//TXS//HX-1->
SP
//2.芯片初始化
JSRMCUinit//初学时跳过此处
//3.模块初始化
JSRSCIinit//
(1)串行口初始化
LDA#$FF
STADDRA//小灯的初始化
STAPTA//初始化8盏小灯为暗
//总循环
Test:
JSRSCIre1
BCSTest
CBEQA#$41,Good
LDA#$0F
STAPTA
LDA#$30
JSRSCIsend1
BRAmain
Good:
LDA#$00
STAPTA
LDA#$41
main:
BCSmain
CBEQA#$1,QL
CBEQA#$0,QA
CBEQA#$B,L11
CBEQA#$A,L10
CBEQA#$15,L21
CBEQA#$14,L20
CBEQA#$1F,L31
CBEQA#$1E,L30
CBEQA#$29,L41
CBEQA#$28,L40
CBEQA#$33,L51
CBEQA#$32,L50
CBEQA#$3D,L61
CBEQA#$3C,L60
CBEQA#$47,L71
CBEQA#$46,L70
CBEQA#$51,L81
CBEQA#$50,L80
QL:
LDA#00000000
JMPmain
QA:
LDA#11111111
L81:
LDA#01111111
L80:
L71:
LDA#10111111
L70:
L61:
LDA#11011111
L60:
L51:
LDA#11101111
L50:
L41:
LDA#11110111
L40:
L31:
LDA#11111011
L30:
L21:
LDA#11111101
L20:
L11:
LDA#11111110
L10:
RTS
//包含本工程的其他文件-----------------------------------
MCUinit.s"
//芯片初始化
SCI.s"
//串行通信
//包含中断处理子程序与中断向量表文件"
Vectors08.s"
--------
//注意:
这个包含语句的存放位置必须放在最后
//中断处理子程序与中断向量表
7.2源程序部分代码
GP32Init:
PSHA;
[A进栈](保护寄存器A)
;
初始化CONFIG2
LDA#%00000001
||_SCIBDSRC=1内部总线时钟用作SCI时钟
|__OSCSTOPENB=0在stop模式下禁止
振荡器工作
STACONFIG2
初始化CONFIG1
LDA#%00111101
||||||||_COPD=1禁止COP模块
|||||||__STOP=0禁止STOP指令
||||||___SSREC=132个CGMXCLK周期退出STOP模式
|||||____LVI5OR3=1LVI工作在5V
||||_____LVIPWRD=1禁止LVI模块电源
|||______LVIRSTD=1允许LVI复位信号
||_______LVISTOP=0在stop模式下禁止LVI
|________COPRS=0COP溢出范围使用长的时间
STACONFIG1
[PLL编程]
CLRPCTL;
①禁止PLL:
清零PLL控制寄存器PCTL
LDA#01
STAPCTL;
②将P、E写入PTCL
STAPMSH;
③将N写入PMSH、PMSL
LDA#0x2C
STAPMSL
LDA#0x80
STAPMRS;
④将L写入PMRS
STAPRDS;
⑤将R写入PRDS
BSET#5,PCTL;
⑥置PTCL.PLLON=1,启动PLL电路
BSET#7,PBWC;
⑦PBWC自动带宽控制位=1
BSET#4,PCTL;
⑧PTCL.BCS=1
PULA;
[A出栈](恢复寄存器A)
JSREnableSCIreInt//
(1)允许串行接收中断
//5.开放总中断
CLI
//程序总循环入口
MainLoop:
NOP
BRAMainLoop
EnDisInt.s"
//允许/禁止MCU各模块中断
7.3
//[HC08SCI.s]串口通信-----------------------------------*
//本文件包含:
*
//
(1)SCIInit:
串行口初始化*
//
(2)SCISend1:
串行发送A中的1个字节*
//(3)SCISendN:
串行发送N个字节*
//(4)SCIRe1:
串行接收一个字节->
A*
//(5)SCIReN:
串行接收N个字节*
//MCU的SCI模块接口与PC方的COM1相连*
//头文件
HC08SCI.h"
//串行通信头文件
//SCIInit:
串行口初始化----------------------------------*
//功能:
对串行口进行初始化,允许SCI,正常码输出,8位数据,*
//无校验,允许发送器,允许接收器。
查询方式收发,*
//波特率为9600(设fBUS=2.4576MHz)*
//入口:
无*
//出口:
//堆栈深度:
2+1=3*
SCIInit:
PSHA
//1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600
LDA#%00000010
STASCBR
//2.设置允许SCI,正常码输出、8位数据、无校验
LDA#%01000000
STASCC1
//3.设置允许发送、允许接收,查询方式收发
LDA#%00001100
STASCC2
PULA
//SCISend1:
串行发送A中的1个字节-------------------------*
//功能描述:
串行口发送A中的1个字节数据*
A=待发送的数据*
2*
//------------------------------------------------------*
SCISend1:
BRCLR#SendTestBit,ReSendStatusR,SCISend1
STAReSendDataR
RTS
SCIRe1:
PSHH
PSHX
//等待接收一个字节数据
LDHX#$FFFF
SCIRe1_1:
BRCLR#ReTestBit,ReSendStatusR,SCIRe1_2
LDAReSendDataR//收到的数据放入A中
CLC
BRASCIRe1_3//收到数据,退出
SCIRe1_2:
AIX#-$1
CPHX#$0000
BNESCIRe1_1
//等待时间到,未收到数据,令c=1,A=FF,返回
SEC
SCIRe1_3:
PULX
PULH
//SCIReN:
串行接收N个字节--------------------------------*
串行接收N个字节放在以HX为首地址的内存中*
A=待接收数据的字节数N,HX=接收数据存放的首地址*
C=是否收到数据标志,0收到,1未收到*
2+4+1=7*
//内部调用:
SCIRe1*
第8章附录
所用寄存器名称及其所用的位如下所示:
SCI波特率寄存器(SCIBaudRateRegister,SCBR)
数据位
D7D6D5D4D3D2D1D0
定义
XXSCP1SCP0XSCR2SCR1SCR0
复位
00000000
SCI控制寄存器1(SCIControlRegister1,SCC1)
LOOPSENSCITXINVMWAKEILTYPENPTY
SCI控制寄存器2(SCIControlRegister2,SCC2)
SCTIETCIEISCRIEILIETERERWUSBK
SCI状态寄存器1(SCIStatusRegister1,SCS1)
SCTETCSCRFIDLEORNFFEPE
11000000
A口数据寄存器(PTA)
D7D6D5D4D3D2D1D0
PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0
A口数据方向寄存器(DDRA)
DDRA7DDRA6DDRA5DDRA4DDRA3DDRA2DDRA1DDRA0
00000000
第9章设计心得
通过此次课程设计,使我更加扎实的掌握了通信串口查询方面的知识,在设计过程中虽然遇到了一些问题,但经过请教老师,一次又一次的思考,一遍又一遍的检查并解决了一些原因,也暴露出了我们知识欠缺。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟。
这次课程设计完成了,虽然最终的现象没有完全调试出来,但是我们还是收获了很多,在遇到难题的时候,我们通过查找资料和请教老师的过程中相关知识不断的提高,加深。
在实验课上,我学到了在编写程序的过程中不能一气呵成,要分步进行,要先编写能实现一个小功能的程序开始,然后调试它,成功之后,把这些小程序串联起来。
这样不会导致我们调试不出来的时候,找不到原因。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,我们学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正使知识为我们所用,从而提高自己的实际动手能力和独立思考的能力。
第10章参考文献
[1]王宜怀,嵌入式技术基础与实践第二版
[2]《VisualC++/TurboC串口通信编程实践》
[3]Visual_Basic与_RS-232_串行通信控制
[4]Delphi串口通信工程开发实例导航
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 串口 通信 查询 设计