当前位置:文档之家› PC机双机串行通信

PC机双机串行通信

PC机双机串行通信
PC机双机串行通信

信息科学与技术学院《微机原理与接口技术》

课程设计报告

题目名称:PC机与PC机间进行串行通信学生姓名:吴森

学号:03

专业:计算机科学与技术

班级:09级(01)班

指导教师:裘祖旗张更新

完成日期:2012年1月2日

目录

一.设计任务与技术要求: ......................................................... - 3 - 二.课程设计总结报告正文 ......................................................... - 3 -

1. PC机间串行通信测试........................................................... - 3 -

设计思路 ............................................................................ - 3 -

程序框图 ............................................................................ - 4 -

程序清单 ............................................................................ - 5 -

2. PC机间进行字符动画控制................................................... - 6 -

设计思路 ............................................................................ - 6 -

程序框图 ............................................................................ - 7 -

从机程序清单 .................................................................... - 7 -

3. 程序分析 .............................................................................. - 7 -

4. 调试步骤 .............................................................................. - 7 -

5. 开发心得 .............................................................................. - 7 - 三.参考文献................................................................................. - 7 -

一.设计任务与技术要求:

A.PC与PC机能进行串行通信;

B.一台PC机能对另一台PC机进行字符动画控制

扩展功能:制定一定的通信协议

本串行通信程序利用汇编语言通过BIOS中断调用和DOS功能调用实现PC机双机串行通信。其中,上位机和下位机串行口均为辅串口COM2(口地址为2FXH),对外用9针连接器与令一台PC机连接;BIOS通过“INT 14H”4个中断服务子程序,分别完成串口初始化编程、发送一帧数据、接受一帧数据以及测试通信线状态。本程序分为PC机串口自动测试程序(目的是测试串口好坏)和PC机全双工双机通信程序两个部分。

二.课程设计总结报告正文

1. PC机间串行通信测试

对PC机主串口进行外环自动测试,要求:

(1)调用BIOS通信软件,采用查询方式编程,将下列测试电文10行由主串口发出,经外环连接线再由主串口接受送屏幕显示。测试电文如下:

THE QUICK BROWN FOX JUMPS OVER LAZY DOG

(2)通信速率为1200波特,一帧字符有8个数据位,1个停止位,无校验。

设计思路

由于调用BIOS通信软件发送和接受数据,因此主串口RS-232C连接器必须按图1(a)连线。

(a)有联络线自发自收(b)有联络线全双工通信

图 1 串行通信RS-232C连接器连线方式

测试电文译为:狡猾的褐色狐狸越过懒狗的背。它是国际电报通信常用的测试电文,电文包含了26个字母,又称狐狸电文。在一条报路上长时间的循环发送这条电文,接收方统计在一定时间内的差错率,即可知道报路的通信质量。

程序框图

程序框图如图2所示。

图 2 PC机间串行通信测试程序框图

程序清单

DATA SEGMENT

TEXT DB ‘THE QUICK BROWN FOX JUMPS OVER LAZY DOG’,0DH,0AH

LLL EQU $-TEXT

ERROR DB ‘COM2 BAD!’,0DH,0AH, ‘$’

DATA ENDS

;---------------------------------------------------------------------------------------------------------------------CODE SEGMENT

ASSUME CS: CODE, DS: DATA

BEG: MOV AX, DATA

MOV DS, AX

CALL I8250 ;辅串口初始化

MOV CH,10 ;电文行数送CH

AGAIN: MOV CL,LLL ;电文长度送CL

MOV BX, OFFSET TEXT

SEND: MOV AL, [BX] ;取数据

MOV AH, 1 ;BIOS调用

MOV DX, 1

INT 14H ;发送一个数据

TEST AH, 80H ;发送成功否

JNZ DISPERR ;否,转出错处理

RECEIVE: MOV AH, 2 ;BIOS调用

MOV DX, 1

INT 14H ;接受一个数据

TEST AH, 80H ;接受成功否

JNZ DISPERR ;否,转出错处理

DISP: MOV AH, 2

MOV DL, AL

INT 21H ;接受字符送屏幕显示

INC BX

DEC CL ;电文长度计数

JNZ SEND

DEC CH ;行计数

JNZ AGAIN

JMP EXIT

DISPERR: MOV AH, 9

MOV DX, OFFSET ERROR

INT 21H ;显示出错信息

EXIT: MOV AH, 4CH

INT 21H ;返回DOS

;---------------------------------------------------------------------------

I8250 PROC

MOV AX, 0083H ;波特率1200,无校验,8位

MOV DX, 1 ;使用辅串口

INT 14H

RET

I8250 ENDP

CODE ENDS

END BEG

如果辅串口是好的,程序执行后自动屏显10行测试电文,否则将屏显“COM2 BAD!”。

2. PC机间进行字符动画控制

利用汇编语言进行编程,实现两台计算机间数据的异步串行发送和接受,要求:(1)上位机接收键盘输入的a、b两个参数,将参数的值通过计算机的串行口传输到下位机,同时接受下位机的计算结果;下位机接受到a、b值后,计算y = ax+b,同时将结果传输到上位机。

(2)上位机在线修改a、b的值,下位机能随之相应。

(3)界面能够清晰的反映操作步骤和操作结果。

设计思路

(1)数据发送采用查询方式,数据接受采用中断方式,对端口直接操作编写通信程序。

(2)上位机传输a、b两个参数时,回车后方为有效参数。

(3)Esc为通信结束字符,当双方都键入Esc的时候结束通信,各自返回DOS。通信结束时,双方不可能同时按下Esc键,必然是有先有后,反送方必须保证通信字符能够完整的传送到对方,这些都必须在程序中考虑进去。

(4)通信速率2400波特,一帧字符有8个数据位,1个停止位,无校验。

程序框图

程序框图如图3所示。

图 3 PC机间进行字符动画控制从机程序框图

从机程序清单

DISP ACRO VAR

MOV AH, 9

MOV DX, OFFSET VAR

INT 21H

ENDM

;---------------------------------------------------------------------------

DATA SEGMENT

0LD0B DD

MESG1 DB ‘Please wait a minute…’, 0DH, 0AH, ‘$’

MESG2 DB ‘Communication line bad!’, 0DH, 0AH, ‘$’

MESG3 DB ‘Ok!’, 0DH, 0AH, ‘$’

TTT DD 1000000

DATA ENDS

;---------------------------------------------------------------------------

CODE SEGMENT

BUF DB

ASSUME S: CODE, DS: DATA

BEG MOV AX, DATA

MOV DS, AX

CLI

CALL I8250 ;8250初始化

CALL I8259 ;开放辅串口中断

CALL RW0B ;置换0BH型中断向量

STI

MOV SI, 10

AGA: DISP MESG1 ;显示等待信息

MOV DX, 2FEH ;读MODEM状态寄存器

IN AL, DX

AND AL, 00110000B

CMP AL,30H ;DSR、CTS引脚为逻辑0

JE OK ;联络成功,转OK

CALL DELAY ;延时1s

DEC SI

JNZ AGA

DISP MESG2 ;显示通信线路坏

JMP RETURN

OK: DISP MESG3 ;显示OK

SCANT: MOV DX, 2FDH ;读通信线状态寄存器

IN AL, DX

TEST AL, 20H ;发送保持寄存器空闲否

JZ SCANT ;否,转SCANT

MOV AH, 1

INT 16H ;有键入否

JZ SCANT ;否,转SCANT

MOV AH, 0

INT 16H ;取键入字符x的ASCII送AL

SUB AL, 60H ;将x变换为十六进制数

MUL CL ;计算a*x

ADD AL, CH ;计算y=ax+b

ADC AX, 3030H ;将y变换为ASCII码

MOV DX, 2F8H

OUT DX, AL ;发送y的低字节

MOV AL, AH

OUT DX, AL ;发送y的高字节

CMP AL, 1BH ;是Esc否

JNZ SCANT ;否,转SCANT

WWW: MOV DX, 2FDH

IN AL, DX ;读通信状态寄存器

TEST AL, 40H ;发送移位寄存器是否为空

JZ WWW ;否,转WWW

LAST: CMP CS: BUF, 1BH ;受到对方Esc否

JNZ LAST ;否,转LAST

RETURN: CALL RESET

MOV AH, 4CH

INT 21H

;-------------------------------------------------------------------------

RECEIVE PROC

PUSH AX ;保护现场

PUSH DX ;保护现场

MOV DX, 2F8H

IN AL, DX ;接受数据

MOV CX: BUF, AL ;送BUF单元保存

NEXT: MOV AH, 0EH

INT 10H ;屏幕显示

CMP AL, 0DH ;是否回车

JNE EXIT ;否,转EXIT

MOV CH, CL ;是,参数a、b顺次

MOV CL, AL ;存入CL、CH

MOV AL, 0AH

INT 10H ;补送换行

EXIT: MOV AH, 20H ;中断结束命令

OUT 20H, AL ;送8259命令寄存器

POP DX ;恢复现场

POP AX ;恢复现场

IRET ;中断返回

RECEIVE ENDP

;--------------------------------------------------------------------------

I8250 PROC

MOV AX, 00A3H

MOV DX, 1

INT 14H

MOV DX, 2F9H

MOV AL, 01H

OUT DX, AL ;允许接收中断

MOV DX, 2FCH

MOV AL, 00001011B

OUT DX, AL ;令RTS、DTR端为逻辑0

RET

I8250 ENDP

;---------------------------------------------------------------------------

I8259 PROC ;开放辅串口中断

IN AL, 21H

AND AL, B

OUT 21H, AL

RET

I8259 ENDP

;-----------------------------------------------------------------------------

RW0B PROC ;置换0BH型中断向量

MOV AX, 350HBH

INT 21H

MOV WORD PTR 0LD0B, BX

MOV WORD PTR 0LD0B+2, ES

PUSH DS

MOV AX, CODE

MOV DS, AX

MOV DX, OFFSET RECEIVE

MOV AX, 250BH

INT 21H

POP DS

RET

RW0B ENDP

;------------------------------------------------------------------------------

RESET PROC ;恢复0BH型中断向量

MOV DX, WORD PTR 0LD0B

MOV DS, WORD PTR 0LD0B+2

MOV AX, 250BH

INT 21H

MOV DX, 2FCH

MOV AL, 0

OUT DX, AL ;令RTS、DTR端为逻辑1

RET

RESET ENDP

;------------------------------------------------------------------------------

DELAY PROC

MOV AH,86H ;延时1s

MOV CX, WORD PTR TTT+2

MOV DX, WORD PTR TTT

INT 15H

RET

DELAY ENDP

CODE ENDS

END BEG

主机程序与从机程序类似,这里不再赘述。

3. 程序分析

进行通信联络要采取两项措施:其一,在8250初始化子程序中,响MODEM控制寄存器写入命令字时,令D1位为1,D0位为1,从而使RS-232C的RTS端子、DTR端子输出逻辑0,通知对方本端已经做好了数据发送和数据接受的准备工作;其二,对方在程序执行后,读取MODEM状态寄存器的内容,检查D5、D4位,这两位都为1,说明线路畅通,可以运行通信程序。

4. 调试步骤

程序调试要分两步进行,首先在单机上调试,按照图1(a)连线,使辅串口具有自发自收的外部环境,在这个环境下调试“PC机间串行通信测试程序”,调试成功后,再在双机连同的环境下调试“PC机间进行字符动画控制程序”。双机连通实验时,先在一端执行程序,令一端暂不运行,以便观察屏幕的错误信息。

5. 开发心得

通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课

程设计的基本目的,在于通过理论与实际的结合,人与人的沟通,尤其是观察、分析和解决问题的实际工作能力。作为整个学习体系的有机组成部分,课程设计并不是独立的。它的一个重要功能,在于运用学习成果,检验学习成果,把课堂上学到的系统化的理论知识,尝试性的应用在实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。

在课程设计的过程中,认真编写认真开发,再认真测试,检查其不足之处,相信这对我将来工作都非常有帮助。由于知识面过窄,和对系统需求的理解不透彻,在过程中遇到了一些问题,但是都在同学和老师的帮助下解决了。在以后的软件开发过程中尽量吸取本次课程设计的经验教训,提高项目开发效率。

三.参考文献

戴梅萼史家权编着《微型计算机技术及应用》清华大学出版社2008年二月第四版

单片机双机之间的串行通信设计

专业方向课程设计报告 题目:单片机双机之间的串行通信设计

单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断

方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图)

本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一 数据的发送过程,然后按照此过程不段循环,直到结束。 晶振电路提供脉冲,加上复位电路,将 EA接入高电电平选择片内程序存储器。 这是一个单片机能够工作的最低设置。

C语言串口通信助手代码

该程序全部由C写成没有C++ 更没用MFC 完全是自娱自乐给需要的人一个参考 #include "stdafx.h" #include #include "resource.h" #include "MainDlg.h" #include #include #include HANDLE hComm;//用于获取串口打开函数的返回值(句柄或错误值)OVERLAPPED m_ov; COMSTAT comstat; DWORD m_dwCommEvents;

TCHAR cRecs[200],cSends[100]; //接收字符串发送字符串 char j=0,*cCom; //接收用统计数据大小变量端口选择 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } /*系统初始化函数*/ BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndCombo1=GetDlgItem(hwnd,IDC_COMBO1); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM1")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM2"));

微机原理课程设计报告-双机串行通信

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称:微型计算机原理及应用技术学年学期:2 0 1 2 —2 0 1 3 学年第一学期 指导教师: 2 0 1 3 年1 月

课程设计成绩评定表

目录 一、设计题目 (1) 二、设计目的 (1) 三、设计原理及方案 (1) 1、8251A的基本性能 (1) 2、8251A的内部结构 (1) 3、8251外部引脚图 (2) 4、8251A的编程 (2) 5、8251A的初始化 (3) 四、实现方法 (5) 1、程序流程图如下: (5) 2、连线图 (5) 3、8251A操作过程流程图 (7) 4、试验程序(见附录) (7) 五、实施结果 (7) 六、改进意见及建议 (7) 七、个人所做贡献 (8) 八、设计体会 (8) 九、同组成员名单 (8) 十、附录 (9)

一、设计题目 双机通过两台试验箱串行通讯 二、设计目的 1、掌握8088/86实验串行口通信的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串行口通讯程序编写方法。 三、设计原理及方案 1、8251A的基本性能 8251A是可编程的串行通信接口芯片,基本性能有: (1).两种工作方式:同步方式,异步方式。同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。 (2).同步方式下的格式 每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。 (3).异步方式下的格式 每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。 (4).全双工的工作方式 (5).提供出错检测 2、8251A的内部结构 发送器由发送缓冲器和发送 控制电路两部分组成。接收器由接 收缓冲器和接收控制电路两部分 组成。数据总线缓冲器,读/写控 制电路,调制解调控制电路。 8251A 内部结构图

双机间的串口双向通信(DOC)

单片机原理与应用课程设计任务书

单片机原理与应用学年设计说明书 学院名称:计算机与信息工程学院 班级名称: 学生姓名: 学号:2012211369 题目:双机间的串口双向通信 指导教师 姓名: 起止日期:2014.12.29至2015.1.4

一、绪论 随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。 对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。 但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通信提出了更高要求。 单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 二、相关知识 2.1 双机通信介绍 两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为: 单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用单工通信属于点到点的通信。根据收发频率的异同,单工通信可分为同频通信和异频通信。 半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接端。但同一时刻里,信息只能有一个传输方向。如

c语言串口通信范例

一个c语言的串口通信程序范例 分类:技术笔记 标签: c语言 串口通信 通信程序 it 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)();

static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data); outp(ComPortAddr+4,0x0a);

双机串行通信的设计与实现

双机串行通信的设计与实现 一、设计要求 1.单机自发自收串行通信。接收键入字符,从8251A的发送端发送,与同一个8251A的接收端接收,然后在屏幕上显示出来。 2.双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。 二、所用设备 IBM-PC机两台(串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片,定时器/计数器8253,终端控制器8259等),串口线一根 串行直连电缆用于两台台电脑通过串行口直接相连,电缆两 端的插头都是9 针的母插头: 三、硬件方案 1.设计思想 计算机传输数据有并行和串行两种模式。在并行数据传输方式中,使用8条或更多的导线来传送数据,虽然并行传送方式的速度很快,但由于信号的衰减或失真等原因,并行传输的距离不能太长,在串行通信方式中,通信接口每次由CPU得到8位的数据,然后串行的通过一条线路,每次发送一位将该数据放送出去。 串行通信采用两种方式:同步方式和异步方式。同步传输数据时,一次传送一个字节,而异步传输数据是一次传送一个数据块。 串口是计算机上一种非常通用设备串行通信的协议。大多数计算机包含两个基于RS232的串口。串口按位(bit)发送和接收字节。尽管比按字节(byte)

的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,RS-232只限于PC串口和设备间点对点的通信。 IBM PC及其兼容机提供了一种有较强的硬件依赖性,但却比较灵活的串行口I/O的方法,即通过INT 14调用ROM BIOS串行通信口的例行程序。该例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读写字符等功能。 14号中断的功能总结如下: 串行口服务(Serial Port Service——INT 14H) 00H —初始化通信口03H —读取通信口状态 01H —向通信口输出字符04H —扩充初始化通信口 02H —从通信口读入字符 (1)、功能00H:初始化通信口 入口参数:AH=00H DX=初始化通信口号(0=COM1,1=COM2,……) AL=初始化参数,参数的说明如下:波特率奇偶位停止位字的位数76543210

c语言串口通信范例

c语言串口通信范例 This manuscript was revised by the office on December 22, 2012

一个c语言的串口通信程序范例 标签:分类: 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <> #include <> #include <> #include <> #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20

static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100);

双机间的串口双向通信2.0

单片机应用课程设计任务书

单片机应用课程设计说明书 学院名称:计算机与信息工程学院 班级名称:网工124 学生姓名:卞可虎 学号:2012211369 题目:双机间的串口双向通信设计指导教师:于红利 起止日期:2014.12.29至2015.1.4

目录 一、绪论 (1) 二、相关知识 (6) 2.1 双机通信介绍 (6) 2.2单片机AT89C51介绍 (6) 2.3 串行通信简介 (8) 2.3.1串行通信的特点 (8) 2.3.2串行通信技术标准 (9) 三、总体设计 (10) 3.1 设计需求 (10) 四、硬件设计 (10) 4.1 系统硬件电路设计 (10) 4.1.1整体电路设计 (10) 4.1.2 控制电路设计 (11) 4.1.3 复位电路 (11) 4.1.4 显示电路 (12) 五、软件设计 (12) 5.1发送端程序流程 (12) 5.2接收端程序流程 (13) 5.3按键程序 (14) 5.4串口通信程序 (15) 5.5数码管显示程序 (16)

六、Proteus软件仿真 (16) 七、结束语 (19) 参考文献 (20) 指导教师评语 (21) 成绩评定 (21) 附录:源程序 (22) 一、绪论 电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 对于一些类似复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通

C语言串口通信-源代码

#include #include #include #include #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data);

双机通信课程设计

西安邮电大学 单片机课程设计报告书题目:双机通信系统

、系统整体设计 1. 系统设计思路 双机通信的实质就是解决两单片机串行通信问题。针对于89C52单片机全双工异步 串行通信口,我们采用单片机直接交叉互连的串行通信方式。 考虑到设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简 单,我们最终决定采用方式二单片机直接交叉连接的串行通信方式, 上位机发送的数据 由串行口 TXD 端输出,直接由下位机的串行口数据接收端 RXD 接攵。需要注意的是一定 要保证主从机相同的数据传输速率,即要求设置相同的波特率。电路分为数码管显示模 块,以及单片机工作的基本复位、晶振模块。 2. 系统设计原理 (1)串行通信 一个是数据传送,另一个是数据转换。所谓数 所谓数据转换就是指单片机在接收数据时,如 单片机在发送 数据时,如何把并行数据转换为 串行数据进行发送。单片机的串行通信使用的是异步串 行通信, 所谓异步就是指发送端 和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字 符帧传送。字符帧由发送端一帧一帧地传送, 接收端通过传输线一帧一帧地接收。 而对 于两个单片机之间的串行通信,由于具有相同的数据格式及电平且是短距离通信则不必 要使用一些电平转化芯片(如 max232等)便可直接实现串行通讯,需要注意的是两单 片机硬件要共地,软件中需要设置相同波特率 STC89C5单片机有一个全双工的异步串行通信口,串行结构如下: ①数据缓冲器(SBUF 接受或发送的数据都要先送到 SBUF 缓存。有两个,一个缓存,另一个接受,用同 一直接地址99H,发送时用指令将数据送到 SBUF 即可启动发送;接收时用指令将 SBUF 中接收到的数据取出。 ②串行控制寄存器(SCON SCO 用于串行通信方式的选择,收发控制及状态指示,各位含义如下: SM0,SM1串行接口工作方式选择位,这两位组合成 00, 01,10,11对应于工作方 式0、1、2、3。串行接口工作方式特点见下表1. 表1串行口工作方式表 串行数据通信要解决两个关键问题, 据传送就是指数据以什么形式进行传送。 何把接收到的串行数据转化为并行数据,

双机串行通信的设计与实现样本

综合实验报告 实验题目:双机串行通信设计与实现 学生班级:电子 学生姓名: 学生学号: 指引教师: 实验时间: .9.12-.9.17

题目:双机串行通信设计与实现 班级:电子14-2 姓名:陈俊臣 摘要 串行通信是单片机一种重要应用。本次课程设计就是要运用单片机来完毕一种系 统实现双片单片机串行通信。通信成果实用数码管进行显示数码管采用查表方式显示。两个单片机之间采用RS232进行双机通信。在通信过程中使用通信合同进行通信。 双机通信实质就是解决两单片机串行通信问题。针对于89C51单片机全双工异步串行通信口,咱们采用单片机直接交叉互连串行通信方式。考虑到本设计应用于短距离传播、两单片机具备相似数据格式及电平且为使设计简朴,咱们最后决定本系统采用方式一单片机直接交叉连接串行通信方式,上位机发送数据由串行口TXD端输出,直接由下位机串行口数据接受端RXD接受。本设计硬件电路分为数码管显示模块、单片机工作基本复位电路以及晶振模块。编程采用C语言加以实现。通信成果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双向通信。

目录 1 引言------------------------------------------------------- 2 设计原理及规定--------------------------------------------- 2.1设计规定和原理-------------------------------------------- 2.2串行通信概述与分类----------------------------------- 2.3串行通信和并行通信区别------------------------------- 2.4 MCS-51串行接口基本特点----------------------------- 3器件简介 3.1器件简朴概述----------------------------------------- 3.2 器件重要功能特性-------------------------------------- 3.3 芯片引脚简介---------------------------------------- 4系统设计 4.1设计规定-------------------------------------------- 4.2设计方案-------------------------------------------- 4.3硬件设计-------------------------------------------- 4.4软件设计------------------------------------------- 4 电路仿真图---------------------------------------------------- 5心得------------------------------------------------------------

第九章I-O接口

第九章I/O接口 输入输出端口简介 串行端口 异步的串口是作为计算机到计算机的通信端口来设计的。异步意味着不存在同步的时钟信号,所以能够以任意时间间隔来发送字符。 串行是指发送一个字节字符的八位二进制位时是按顺序一位一位的发送了,而接收也是一位一位地接收,而不是八位同时传送。更形象地说,串行是数据通过一条单独的导线传送,并且当发送数据位时,每个数据位都按顺序被串接起来。串行传输的典型例子是我们日常生活中所用的电话系统,它在每个方向都提供了一条传送数据的导线。 串口的典型位置 计算机系统一般都有一个或两个串行端口,通常位于系统的后部。这些内置的串口可以通过主板上的Super I/O芯片控制,或通过South Bridge芯片控制。如果系统提供的串口数目不能满足需要,用户可以购买单口或多口串口卡。 串口可以连接多种设备,例如调制解调器、绘图仪、打印机、其他计算机、条形码阅读器、标尺(scale)和设备控制电路。 AT结构的9针串口连接器的规范说明 官方规范所建议的最大电缆长度为50英尺。其限制因素是电缆及接口输入电路的总负荷电容。最大电容值被指定为2500pF。有些特殊的低电容电缆实际上可以极大地增加电缆的最大长度,使之达到500英尺或更多。此外,线路驱动程序(放大器/中继器)还可以将电缆的长度扩展到更长。

表9-1、表9-2和表9-3中给出的是9针(AT结构)、25针、9转25针串行连接器引脚引出线的说明。 表9-1 9针(AT)串口连接器 引脚信号说明I/O 1 CD 载波检测输入 2 RD 接收数据输入 3 TD 发送数据输出 4 DTR 数据终端就绪输出 5 SG 信号地- 6 DSR 数据准备好输入 7 RTS 发送请求输出 8 CTS 消除发送输入 9 RI 振铃指示输入 表9-2 25针(PC、XT及PS/2)串口连接器 引脚信号说明I/O 1 - 机架接地- 2 TD 发送数据输出 3 RD 接收数据输入 4 RTS 发送请求输出 5 CTS 消除发送输入 6 DSR 数据准备好输入 7 SG 信号地- 8 CD 载波检测输入 9 - +发送当前循环返回输出 11 - -发送当前循环数据输出 18 - +接收当前循环数据输入 20 DTR 数据终端就绪输出 22 RI 振铃指示输入 25 - -接收当前循环返回输入

双机通信课程设计

成绩: 课程设计报告书 所属课程名称单片机原理与接口技术 题目双机串行通信 分院机电学院 专业、班级机械设计制造及其自动化B0902学号0612090218 学生姓名史强 指导教师周春明 2012年7月13日

目录 1课程设计任务书 (1) 2总体设计 (2) 3硬件系统设计 (3) 4程序设计 (6) 5程序调试及结果分析 (11) 6总结 (13) 7参考文献 (14)

辽东学院 一课程设计任务书 课程设计题目:双机串行通信 课程设计时间:自2012 年7月2日起至2012 年7月13日。课程设计要求: 1.通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。 2.两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在接 收端显示。接收完成后,led灯亮。 学生签名:史强 2012 年7月13日 课程设计评阅意见 评阅教师: 2012年月日

二总体设计 2.1 设计目的 通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。 通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。 2.2 设计任务 两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,完成后在接收端的led 灯亮。 2.3 设计方法 本次设计,对于两片89C51,采用RS232进行双机通信。发送方的数据由串行口TXD段输出。接受方接收后,灯亮。为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。 软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH 给主机,重新接受。从机收到16个正确数据后送到一个数码管显示。

微机原理及接口第九章作业答案

“微机系统原理与接口技术”第九章习题解答(部分) 1. 什么是并行接口和串行接口?它们各有什么作用? 答:并行接口是指接口与外设之间按字长传送数据的接口,即4位、8位或16位二进制位同时传送;而串行接口是指接口与外设之间依时间先后逐位传送数据的接口,即一个时刻只传送一个二进制位。 并行接口传送速度较快,但在远距离传送数据时成本高,损耗大,且平行数据线之间干扰大,所以并行接口一般适用于近距离的高速传送,而串行接口则适用于远距离传送。 2. 试画出8255A与8086CPU连接图,并说明8255A的A0、A1地址线与8086CPU的A1、A2地址线连接的原因。 答:8255A与8086CPU的连线图如下图所示: 题9-2图 8086系统有16根数据线,而8255只有8根数据线,为了软件读写方便,一般将8255的8条数据线与8086的低8位数据线相连。8086在进行数据传送时总是将总线低8位对应偶地址端口,因此8086CPU要求8255的4个端口地址必须为偶地址,即8086在寻址8255时A0脚必须为低。实际使用时,我们总是将8255的A0、A1脚分别接8086的A1、A2脚,而将8086的A0脚空出不接,并使8086访问8255时总是使用偶地址。 4. 简述8255A工作在方式1时,A组端口和B组端口工作在不同状态(输入或输出)时,C端口各位的作用。 答:8255A 的A、B口工作在方式1时,C端口各位的使用情况如下表所示:

注:带*的各中断允许信号由C口内部置位/复位操作设置,非引脚电平。 5. 用8255A控制12位A/D转换器,电路连接如下图所示。设B口工作于方式1输入,C 口上半部输入,A口工作于方式0输入。试编写8255A的初始化程序段和中断服务程序(注:CPU采用中断方式从8255A中读取转换后的数据)。 题9-5图 答:设8255的A、B、C及控制端口的地址分别为PORTA、POA TB、PORTC和PCON,则一种可能的程序段实现如下: 主程序:; 初始化8255A …… MOV AL, 10011110B ; 设置8255A的工作方式控制字 OUT PCON, AL MOV AL, 00000101B ; 设置C口置位/复位控制字,使INTEA(PC2)为 OUT PCON, AL ; 高电平,允许B口中断 MOV AL, 00000010B ; 设置C口置位/复位控制字,使PC1(IBF B)输出 OUT PCON, AL ; 低电平,启动第一次A/D转换 …… 中断服务程序:; 取数,并自动启动下一次A/D转换 …… MOV AL, 00000011B ; PC1(IBF B)输出高电平,停止A/D转换 OUT PCON, AL IN AL, PORTC ; 先取高4位转换值 MOV AH, AL MOV CL, 4 SHR AH, CL ; 将高4位转换值放到AH的低端 IN AL, PORTB ; 取低8位转换值放到AL中 MOV AL, 00000010B ; PC1(IBF B)输出低电平,再次启动A/D转换 OUT PCON, AL …… IRET 6. 用8255A作为CPU与打印机接口,8255的A口工作于方式0,输出;C口工作于方式0。8255A与打印机及CPU的连线如下图所示。试编写一程序,用查询方式将100个数据送打印机打印(8255A的端口地址及100个数据的存放地址自行设定)。

RS485串行通信电路设计

RS485串行通信接口电路的总体设计 在电参数仪的设计中,数据采集由单片机AT89C52负责,上位PC机主要负责通信(包括与单片机之间的串行通信和数据的远程通信),以及数据处理等工作。在工作中,单片机需要定时向上位PC机传送大批量的采样数据。通常,主控PC机和由单片机构成的现场数据采集系统相距较远,近则几十米,远则上百米,并且数据传输通道环境比较恶劣,经常有大容量的电器(如电动机,电焊机等)启动或切断。为了保证下位机的数据能高速及时、安全地传送至上位PC机,单片机和PC机之间采用RS485协议的串行通信方式较为合理。 实际应用中,由于大多数普通PC机只有常用的RS232串行通信口,而不具备RS485通信接口。因此,为了实现RS485协议的串行通信,必须在PC机侧配置RS485/RS232转换器,或者购买适合PC机的RS485卡。这些附加设备的价格一般较贵,尤其是一些RS485卡具有自己独特的驱动程序,上位PC机的通信一般不能直接采用WINDOW95/98环境下有关串口的WIN32通信API函数,程序员还必须熟悉RS485卡的应用函数。为了避开采用RS485通信协议的上述问题,我们决定自制RS485/RS232转换器来实现单片机和PC机之间的通信。 单片机和PC机之间的RS485通信硬件接口电路的框图,如下图1所示。 从图1可看出,单片机的通信信号首先通过光隔,然后经过RS485接口芯片,将电平信号转换成电流环信号。经过长距离传输后,再通过另一个RS485接口芯片,将电流环信号转换成电平信号。 图1单片机与PC机之间的RS485通信硬件接口电路的框图(略) 该电平信号再经过光电隔离,最后由SR232接口芯片,将该电平信号转换成与PC机RS232端口相兼容的RS232电平。由于整个传输通道的两端均有光电隔离,故无论是PC机还是单片机都不会因数据传输线上可能遭受到的高压静电等的干扰而出现“死机”现象。 2接口电路的具体设计 2-1单片机侧RS485接口电路的设计 单片机侧RS485接口电路如图2所示。 AT89C52单片机的串行通信口P3 0(RXD)和P3 1(TXD)的电平符合TTL/CMOS标准(逻辑“0”的电平范围为0V~0.8V,逻辑“1”的电平为2 4V~VCC),它们首先通过光电隔离器件6N137隔离,以保护单片机不受传输通道的干扰影响,其中T01和?T02是为了增加光隔输入端的驱动能力。光隔6N137的左侧电源与单片机相同,右侧必须采用另一组独立的+5V电源,且两组电源不能供电。 图2单片机侧RS485接口电路

用C编写的RS232串口通信程序

void main() { delayms(100); init(); //初始化系统 delayms(100); init_wdt(); //初始化看门狗 while(1) { while(!RI_0) //是否收到数据 { clr_wdt(); } RI_0=0; //清除接收中断标志 buffer=S0BUF; if(buffer==0x5a) //检测祯头0 start0=1; if(buffer==0x54) //检测祯头1 start1=1; if(buffer==0x5a) //检测祯尾0 end0=1; if(buffer==0xfe) //检测祯尾1 end1=1; if((start0==1)&(start1==1)) { buff[i]=buffer; //从祯头1开始存储数据 i++; } if((end0==1)&(end1==1)) //是否已经接收祯尾 { count=i; //数据长度为count个 i=1; if((buff[2]==0x03)&(count==107)) //是否422指令 { buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 { buff[count-4]+=buff[k]; } for(k=0;k

S0BUF=buff[k]; while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k

基于51单片机的双机串行通信

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

双机通信,单片机课程设计

单片机课程设计 双机通信 一、设计目的 1、掌握单片机89C52的程序设计,掌握单片机通信程序编制方法。 2、了解单片机实现通信的硬件环境。 3、掌握双机通信的原理和方法。 二、设计要求 1、用两片单片机,实现双机通信; 2、用与A机连接的按键控制A机对B机的信息传输,每按一次键,首先发送端显示要发送数据,两台机器的发光二极管的显示相同。 3、用与B机连接的按键控制B机对A机的信息传输,每次按键,数码管的显示自动加一。 三、设计器材 器件名称个数 STC8952RC 2 晶振 2 电容(30PF) 4 电容(10uF) 2 LED 4 电阻(10K) 4 电阻(330) 2

电阻(8.2K) 2 开关 4 数码管 2 三极管(NPN) 1 排阻 1 四、设计思路及方案 1、设计思路 计划采用主从共两片STC8952RC单片机来实现双机通信的,我们采用单片机直接交叉连接的方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。需要注意的是一定要保证主从机相同的数据传输速率,即要求设置相同的波特率。电路分为数码管显示模块,单片机工作的基本复位、晶振模块。 2、设计原理 (1)原理概述 双机通信系统通过主从单片机的串行口来实现数据的收发。主单片机通过开关电路来启动发送程序,当开关按下时向从机发送一个数据,从机通过接收中断来接收主机发送过来的数据,并通过编写好的数据代码在LED数码管上显示主机发送过来的数据。同时从机给主机发送一个应答信号来表示已经接收到了主机发送过来的数据,在主机接收应答并校验正确,以二极管显示,这样就完成了一个数据的通信过程,等待按键按下,然后继续下一次数据的发送直到结束。(2)串行通信 串行数据通信要解决两个关键问题,一个是数据传送,另一个是

单片机双机之间的串行通信设计

单片机双机之间的串行通 信设计 Prepared on 24 November 2020

专业方向课程设计报告题目:单片机双机之间的串行通信设计单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护

单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图) 本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一数据的发送过程,然后按照此过程不段循环,直到结束。 单片机最小系统:接上电源和地,

相关主题
文本预览
相关文档 最新文档