单片机的异步串行通信功能和基本使用方法
算机上的串口应用程序,主要作用是向RS-232C端口发送控制信号、接收和处理返回信号。上位机程序由笔者用VB语言编写,在编写和使用时均要使用MSComm通信控件。软件的界面如下图所示,当用鼠标单击某一开关按钮时,其上面的圆形指示灯状态就会发生变化,红色表示电源打开,黑色表示电源关闭,对应单片机控制的继电器也会发生相应的变化。程序界面上的串口指示灯作串口工作状态指示,串口通信正常时状态为绿色,反之为黑色。软件还可以对使用的串口进行选择。
下位机程序如下:
#includeiom8V.h>
unsigned char temp:
void mein(void)
{
DDRD=0xff;//设置D口为推
挽1输出
PORTD=0x00;
OSCCAL=0xaa://校正内部RC
振荡器频率,不同的芯片参数有差异
UCSRB=0x18;//RXD、TXD4使能
UBRR=51;//9600bit/s,8.0M
UCSRC=0x86;//8位数据,1
位停止位.无校验
while(1)
{
while(!(UCSRA0x80));
等待接受完整
temp=UDR;//接收数据
PORTD=temp;//将数据输
出至D口
while(!(UCSRA0x20));
//等待移位寄存器空
UDR=temp;//发送数据,
让上位机检验串口是否工作
}
}
于只有两路输出,因此实际上只要控制PD6、PD7就可以了。点击“开关1”按钮可以改变PD6的输出状态,点击“开关2”按钮可以改变PD7的输出状态。点击“全部开启”按钮PD6、PD7均输出高电平1;点击“全部关闭”按钮PD6、PD7均输出低电平0。PD6、PD7的输出电平决定继电器K1、K2的工作状态。
3.控制实验
先将程序目标文件写入单片机,再接好串口通信线,通信线的接线方法见上图。打开实验板的电源,运行上位机程序文件夹中的电源开关控制器.exe可执行文件,如果出现缺少控件的提示,只先执行一下install.bat即可。点击上位机软件上的命令按钮,我们发现实验板上的发光二极管VD5、VD6发光状态会随之发生相应的变化,与之对应的继电器的工作状态也会发生相应的变化。
如果我们把继电器的触点串联在电源插座上,再将家用电器的插头插在这个电源插座上就可以用计算机对家用电器的开关进行控制了。
实验二串口通信
1.实验电路
实验板上与本实验相关的电路见上图,这个实验主要用来演示计算机与单片机收发字符串的实验。计算机通过软件“串口调试助手”将字符串发送给单片机,单片机将收到的字符串在LCD显示屏上显示,并自动将字符串回发给计算机。
2.程序设计
计算机上的程序使用“串口调试助手”,用来通过串口发送和接收字符串。这个实验中串口传递的是字符的ASC码,一个字符的ASC码正好是8位二进制数,所以一帧信号即可传递一个字符。 单片机程序中的主程序如下:
void main(void)
{
uchar i;
DelayMs(500);//启动等
待,等LCD进入工作状态
Init();//初始化
while(1)
{
Display(O,O,RS_Data)
;//显示接收数据
for(i=O;i6;i++)
{
while(!(UCSRA0x80))
;//等待接收完成
. RS_Data[i]=UDR;//接
收数据
}
for(i=O;i6;i++)
{
while(!(UCSRA0x20));
//等待移位寄存器空
UDR=RS_Data[i];//发
送数据
}
}
}
程序中的数组Rs_Data[]用来存储接收和发送的字符串。RS_Data[]的初始值为RS_Data[]=“:Hello!”,接收和发送均使用循环语句,因为接收和发送的字符数为6个,所以循环次数为6次。
3.通信实验
用串口通信线连接好计算机和实验板后,接通实验板的电源,这时实验板LCD显示屏显示的是:“Hello!”。在计算机上打开串口调试助手软件,对串口按波特率9600、8位数据位、1位停止位、无校验设置。在发送区随便填写6个字符,比如abc123,点击“手动发送”按钮,我们会发现LCD显示屏显示:abc123(见题图),同时串口调试助手接收区也收到单片机回发的字符串,如下图所示。
- 科技帮我们远离灾难:灾难检测飞行器(03-18)
- Atmega8型号细分区别(12-01)
- 研究arduino支持Atmega8作为主控制芯片(11-30)
- ATMEGA8超声波测距程序(11-30)
- ATmega8---SPI总线控制(11-27)
- ATmega8和ATmega162内部资源(11-27)