没有合适的资源?快使用搜索试试~ 我知道了~
基于单片机C#串口通信(完整资料).doc
0 下载量 103 浏览量
2022-12-01
02:24:41
上传
评论
收藏 2.41MB DOC 举报
温馨提示
试读
82页
基于单片机C#串口通信(完整资料).doc
资源推荐
资源详情
资源评论
基于单片机 C#串口通信(完整
资料)
(可以直接使用,可编辑 优秀版资料,欢迎下载)
基于 C#与单片机串口通信的投票器
李浩东20093101004 周守悦 20093101012
一.作品的设计概述
我们知道每年每个班都需要班委换届,有很多同学积极参加竞选,然而每一次竞选投
票都是大家拿出一张纸,然后再纸上写上自己心目中班委的名字,然后交给监票读票记票,
这个过程不仅大大浪费了大家的宝贵时间,还有可能出现漏票等情况,体现不了公平公正公
开。
本设计是通过按钮给班委竞选人投票,每个候选人都对应一个按钮,投票人如果想投票
给某个人可以按下其对应按钮,每按下一次改竞选人的票数就会自动增加 1,每个人只能按
下一次,电脑显示屏将通过柱形图动态的呈现每个候选人获得票数竞争的情况以及通过框
图显示总票数,不仅使得投票结果更加公开公正,而且也大大节省了大家的时间.本设计
的创新点是通过柱形图动态显示整个投票过程,而不是直接显示到最后投票结果,更加体
现公正公开。
二.作品的设计与分析
1.主要功能与分析
主要使用单片机和 PC 机之间的串口通信,在单片机硬件上设置七个按键,其中四个键
是用来给 A,B,C,D四个人投票的,这四个按键每按下一次就自动增1,记录这四个按
键按下的总次数num1,num2,num3,num4,并把四个数按顺序不断循环通过串口发
给 PC 机,PC 机通过串口把这些数据存储下来,并读出来,通过 C#编程,把这四个人所获
得的总票数在picturebox 控件上面的柱形图动态呈现出来,通过 time 控件,不断更新
这个人所获得的票数,让投票人通过柱形图更加形象直观的看出每个被投票人的竞争情
况,同时在柱形图下方有着这四个人获得总票数的真实数目。还有一个按键是票数清零,
如果这次投票已经完成或者无效可以按下这个按键,此时 A,B,C,D 四个人的总票数将变
成零。还有一个按键作用是停止投票,如果需要停止这次投票可以按下此键,这时候那四
个投票的按键将不可用。最后一个按键的作用是继续投票,如需继续投票,可按此键。其
系统设计图如下:
数据传输
2.串口通信规则
单片机与PC机为了可以进行通信,必须要遵守一定的通信规则,这个共同的规则就是通信
端口的初始化。通信端口的初始化有以下几项必须设置:
(1)数据的传输速率
传输双方通过传输线的电压改变来交换数据,但传输线的电压改变的速度必须和接收
端的接收速度保持一致,RS—232通常用于异步传输,即双方并没有一个可参考的同步
单片机
A
B
C
D
清零
暂停
继续
PC 机
图像显示
时钟作为基准。由于没有一个参考时钟,双方所发送的高低电位到底代表几个位就不得而
知了,要使得双方的数据读取正常,就要考虑到传输速率——波特率,其所代表的意义是每
秒钟所能产生的最大电压状态改变率,或者说是每秒钟可以振荡的次数.
原始信号经过不同的波特率取样后,所得的结果完全不一样。取样速度只有原来的一
半时,信号被跳着取样,数据因此产生错误。因此通信双方获得相同的通信速度是首先要做
的事情.
(2)数据的发送单位
一般串行通信端口所发送的数据是字符类型的,若用来传输文件,则会使用二进制的
数据类型。当使用字符类型时,通常使用ASCII码,ASCII码中8个位形成一个字符.以
实际的RS-232传输来看,由于大多数应用只是发送文字码,因此只要7个位就可以将AS
CII码的0-127号字符表达出来,所有的可见字符都在这个范围内,所以只要7个数据
位就足够了.不同的情况下,会使用到不同的发送单位,但使用多少个位合成一个字节必须
先行确定.
(3)起始位及停止位
由于异步串行通信中并没有使用同步脉冲作为基准,故接收端完全不知道发送端何时
将进行数据的发送,而当发送端准备要开始发送数据时,发送端会在所送出的字符前后分
别加上高电位的起始位(逻辑0)及低电位的停止位(逻辑1),它们分别是所谓的起始位
和停止位。当发送端要开始发送数据时,便将传输在线的电位由低电位提升至高电位,而
当发送结束后,再将电位降至低电位.接收端会因起始位的触发(因电压由低电位升至高电
位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而确切数据的字符信号
已经结束。
(4)校验位的检查
为了预防错误的产生,因此使用校验位作为检查的机制;校验位是用来检查所发送数据正
确性的一种核对码,其中又分成奇校验位和偶校验位两种方式,分别是检查字符码中 I 的
数目是奇数或偶数。以偶校验位为例,A 的 ASCII 码01100001 (二进制),其中 1 的数
目是三个,因此校验位便是 1,使 1 的数目保持偶数。同理,校验位是奇校验位时,A 的校
验位便是0,使 1 的数目保持奇数。
3.串口通信协议
由于本设计主要从单片机串口发送数据,所以因此有关串口通信的原理的介绍都是围绕单
片机讲解的。
(1)80C51 串行口的控制寄存器
(1.1)特殊功能寄存器 SCON
SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状
态标志,字节地址为 98H.SCON 寄存器的各位定义如表3-1 所示。
位
7
6
5
4
3
2
1
0
字节地址:98H
SM
0
SM1
SM
2
RE
N
TB8
RB8
T
I
RI
SCO
N
表 3—1 SCON 寄存器
SM0 和 SM1为工作方式选择位,可选择四种工作方式,如表3—2 所示.
SM
0
SM1
方式
说明
波特率
0
0
0
移位寄存器
fosc/12
0
1
1
10 位异步收发器(8 位数据)
可变
1
0
2
11 位异步收发器(9 位数据)
f o sc/6 4 或 fo s
c/32
1
1
3
11 位异步收发器(9 位数据)
可变
表3-2 串口通信 4 种工作方式
SM2 为多机通信控制位,主要用于方式2和方式 3。当接收机的 SM2=1时可以利用收到的
RB8 来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1 时收到的数
据进入SBUF,并激活 RI,进而在中断服务中将数据从 SBUF读走)。当 SM2=0 时,不
论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活 RI(即此时 RB8 不具有
控制 RI 激活的功能)。通过控制 SM2,可以实现多机通信。
在方式 0 时,SM2 必须是 0.在方式 1 时,若SM2=1,则只有接收到有效停止位时,RI 才
置 1。
REN 为允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置 REN=0,则
禁止接收。
TB8 用在方式 2 或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数
据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位(在方式0和方式 1 中,
该位未用).
RB8 用在方式 2 或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧
的标志位。在方式1时,若SM2=0,则 RB8 是接收到的停止位。
TI,发送中断标志位.在方式 0 时,当串行发送第 8 位数据结束时,或在其它方式,串行
发送停止位的开始时,由内部硬件使 TI置 1,向 CPU 发中断申请。在中断服务程序中,
必须用软件将其清0,取消此中断申请。
RI,接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其它方式,串行
接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。也必须在中断服务程
序中,用软件将其清 0,取消此中断申请
[7]
。
(1.2)特殊功能寄存器PCON
PCON 的字节地址为 87H,它的第7位 SMOD 是与串口通信波特率的设置有关的选择位。S
MOD(PCON.7)为波特率倍增位。在串行口方式 1、方式2、方式 3 时,波特率与 SMOD
有关,当 SMOD=1时,波特率提高一倍.复位时,SMOD=0。
(2)80C51单片机串行口的工作方式
(2.1)方式 0
设置 SCON 寄存器的 SM0、SM1=0 0 时,串行口工作于方式 0。此时,串行口为同步
移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由 RXD(P3.0)引
脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位
在先,高位在后。波特率固定为 fosc/12。其中 fosc为时钟频率.
(2.2)方式 1
设置SCON 寄存器的 SM0、SM1=0 1时,串行口工作于方式 1.方式 1 是 10 位数据
的异步通信口。TXD为数据发送引脚,RXD 为数据接收引脚,传送一帧数据的格式如图
所示。其中 1 位起始位,8 位数据位,1 位停止位。 用软件置 REN 为 1 时,接收器以所选
择波特率的 16倍速率采样 RXD引脚电平,检测到RXD 引脚输入电平发生负跳变时,则
说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程
中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进
行最后一次移位。当 RI=0,且SM2=0(或接收到的停止位为 1)时,将接收到的 9 位数据
的前 8 位数据装入接收 SBUF,第 9 位(停止位)进入 RB8,并置RI=1,向 CPU 请求中断.
方式一的输入输出图如图 3—8、3—9 所示。
图3-8 方式 1 输入
图3-9 方式 1 输出
(2.3)方式 2 和方式3
设置SCON 寄存器的SM0、SM1=1 0时,串行口工作于方式 2,当 SM0、SM1=
1 1时,串行口工作于方式 3。方式 2 或方式 3 为 11 位数据的异步通信口.TXD 为数据发送
引脚,RXD 为数据接收引脚 。
方式 2 和方式 3 时起始位 1 位,数据9位(含 1 位附加的第9位,发送时为 SCON中
的 TB8,接收时为 RB8),停止位 1 位,一帧数据为 11 位.方式 2 的波特率固定为晶振频率
的 1/64 或 1/32,方式 3 的波特率由定时器 T1 的溢出率决定。
方式 2 和方式 3 输出:发送开始时,先把起始位0输出到 TXD引脚,然后发送移位寄
存器的输出位(D0)到 TXD 引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,
并由 TXD引脚输出.第一次移位时,停止位“1”移入输出移位寄存器的第 9 位上 ,以
后每次移位,左边都移入 0.当停止位移至输出位时,左边其余位全为 0,检测电路检测到
这一条件时,使控制电路进行最后一次移位,并置 TI=1,向CPU请求中断。发送时序图
如下图 3—10 所示。
D0 D1 D2 D3 D4 D5 D6 D7
写入SBUF
停止位
TXD
TI(中断标志)
起始
D0 D1 D2 D3 D4 D5 D6 D7
停止位
RXD
RI(中断标志)
起始
位采样脉冲
剩余81页未读,继续阅读
资源评论
zzzzl333
- 粉丝: 695
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一个chm格式的 SQL 函数手册-SQL语言手册文档
- 计算当前月份的天数和剩余天数
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功