RS232串口通信C++课程设计
- 格式:doc
- 大小:383.00 KB
- 文档页数:17


单片机课程设计报告
题目:基于温度采集的单片机和Visual C++串口通信
1.摘要
单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。本文设计的一种温度控制系统,用STC89C51单片机作为温控器,选用DS18B20数字温度传感器,可任意设置上下限报警温度,采用数码管实时显示温度,通过串口利用单片机与上位机的通信,对环境温度采集并进行控制。
关键词:STC89C51单片机、串口通信、上下限报警、数码管显示温度、
2.引论
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。温度是工业生产中主要的被控参数之一,与之相关的跟中温度控制是工业生产过程中经常遇到的过过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量。用单片机做成的产品外围元件很少,能实现的功能却很广,广泛应用于工业,农业等。兼于此,特用单片机设计此电路。
温度控制在实际生产中有着广泛的应用。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。因而设计一种较为理想的温度控制系统是非常有价值的。
在国内外温度控制成了一科广泛应用于很多领域的技术。具体如空调、冰箱、茶叶烘烤、粮仓温度控制、等等。粮食温度检测是储备库中防止粮食霉烂、保质存放的重要环节。对于一个农业大国来讲,粮食生产、需求与储备量都很大。大量粮食在储备的过程中常因粮食湿度过大而升温发热,导致粮食大量腐烂变质,给郭建带来巨大损失。本论文正是以此为出发点,对单片机控制的远程温度控制作了较详尽的介绍。单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。DS18B20是美国DALLAS公司生产的数字温度传感器芯片,具有结构简单、体积小、功耗小、抗干扰能力强、使用方便等优点。本文设计的一种温度控制系统,用STC89C52单片机作为温控器,选用DS18B20数字温度传感器,可任意设置上下限报警温度,采用数码管实时显示温度,通过串口利用单片机与上位机的通信,对温度进行采集、数据处理和控制。
使用VB中的MSComm控件实现RS-232串口通信
实验准备:需要准备一些与串口通信有关的设备,如(外置式)调制解调器、计算机串口与调制解调器的连接线、一根DTE到DTE的无调制解调器连接线(接法见本章有关习题的参考答案),在实验前检查计算机的两个串口是否能够正常工作。
实验环境:Windows 95/98操作系统,Microsoft VB 5.0以上程序设计环境。对例题中涉及调制解调器的内容,采用计算机与调制解调器连接的方式;对在例题中设计数据传输的内容,须事先将DTE到DTE的无调制解调器连接线的两端,分别插入Com1和Com2串口。
实验说明:
VB中的MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件提供下列两种处理通讯的方式:
(1)事件驱动(实时)方式,这是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在Carrier Detect(CD)或RequestToSend(RTS)线上一个字符到达或一个变化发生时。在这些清况下,可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。
(2)轮询方式,在程序的每个关键功能之后,可以通过检查
CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。
每个使用的MSComm控件都对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。可以在Windows“控制面板”中改变端口地址和中断地址。
下面这个简单的例子采用了轮询方法演示了用调制解调器进行基本的串行通讯:
Private Sub Form_Load()
Dim Instring As String '保存输入子串的缓冲区
实验九 RS232串口通讯应用
一、实验目的
串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如可以很直观地把红外遥控器键值的
数据码显示在电脑上等。本次实验目的:
1、通过实际硬件连接及软件编程完成 51单片机和PC机之间的串口通讯,
从而加深对异步串行通信接口的基本结构、工作原理等串行通信基本概念的理
解;
2、了解RS-232C电平规定与TTL电平规定的不同,及采用专用芯片MAX232
实现两者之间电平转换的连接电路。
二、实验设备
51单片机实验板、PC机、串口连接线、串口调试软件、Keil软件、连接导
线等。
三、实验原理及内容
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进
行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电
平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,在
此采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,
但是还是用专用芯片更简单可靠。
采用三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第
5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对
我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11
脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
图1 串口通讯的硬件电路连接 为了能够在电脑端看到单片机发出的数据,必须借助一个WINDOWS软件
进行观察,这里利用一个免费的电脑串口调试软件(这是一个绿色的软件,无需
安装,可以直接在当前位置运行这个软件)。软件界面如下图,
先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。
串口选择为COM1,当然51单片机实验板的串口也要和电脑的COM1连接,将
烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实
「51单⽚机」RS232串⼝通信代码分析
想来想去不知道要怎么样把232串⼝通信说清楚,想想还是直接把代码分析⼀遍吧...
重点是“常⽤波特率与定时器1的参数关系”这张表格!波特率的设置很重要!
⼀、串⼝初始化
void usart_init()
{
SCON = 0x50; //REN=1允许串⾏接受状态,串⼝⼯作模式1
TMOD = 0x20; //定时器⼯作⽅式2
PCON = 0x00;
TH1 = 0xFD; //波特率9600、数据位8、停⽌位1。效验位⽆ (11.0592M)
TL1 = 0xFD;
ES = 1; //开串⼝中断
EA = 1; //开总中断
TR1 = 1; //启动定时器
}
SCON寄存器
1.SM0、SM1:串⾏⼝⼯作⽅式控制位
2.SM2:多机通信控制位
3.REN:允许接收位
4.TB8:发送接收数据位8
5.RB8:接收数据位8
6.TI:发送中断标志位 TI=1表⽰帧发送结束
7.RI:接收中断标志位 RI=1表⽰帧接收完成
1.GATE:门控制位 GATE=0,仅受TRX控制 GATE=1,受TRX和外部中断引脚共同控制
2.C/T:定时器模式和计数器模式选择器 C/T=1,计数器 C/T=0,定时器
3.M1、M0:⼯作⽅式选择位
PCON寄存器
SMOD:是波特率是否加倍的选择位。
SMOD=0时:波特率不加倍。
SMOD=1时:波特率加倍。
⼆、串⼝数据发送
void send_data(unsigned char a)
{
SBUF = a; //SUBF接受/发送缓冲器
while(0 == TI); //每次等待发送完毕,再执⾏下⼀条
TI=0; //⼿动清0
}
SBUF:有两个物理上独⽴的接收、发送缓冲器SBUF,它们占⽤同⼀地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主
动的,不会产⽣重叠错误。
TI:发送中断标志位 TI=1表⽰帧发送结束