课程设计说明.docx

上传人:b****3 文档编号:4415344 上传时间:2022-12-01 格式:DOCX 页数:11 大小:68.11KB
下载 相关 举报
课程设计说明.docx_第1页
第1页 / 共11页
课程设计说明.docx_第2页
第2页 / 共11页
课程设计说明.docx_第3页
第3页 / 共11页
课程设计说明.docx_第4页
第4页 / 共11页
课程设计说明.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

课程设计说明.docx

《课程设计说明.docx》由会员分享,可在线阅读,更多相关《课程设计说明.docx(11页珍藏版)》请在冰豆网上搜索。

课程设计说明.docx

课程设计说明

5.将采集的脉搏信号上传到计算机并存储

5.1心电信号上传、存储模块的介绍

该模块的设计思路是将采集到的模拟信号通过A/D转换模块转换为可上传、存储的数字信号。

然后通过串口通信将数据上传到计算机。

在PC端上用VisualC++编写一个串口通信程序将上传的数据存储到TXT文档,供Matlab进行分析。

计算机

单片机

A/D转换

采集到的模拟信号

.

.

图5.1心电信号上传、存储模块结构图

5.2A/D转换模块

5.3数据上传模块

为了将数字信号的数据上传到计算机,需要通过串口通信来传输数据。

89C51有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。

进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。

我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:

第5脚的GND.第2脚的RXD.第3脚的TXD。

5.3.1硬件实现:

(1)AT89C52:

 AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的.

  AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

  AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

图2AT89c52引脚图

(2)MAX232芯片:

是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。

MAX232芯片的功能:

MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的±10V电压。

所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。

对于没有±12V电源的场合,其适应性更强

图3MAX232芯片引脚

图4中,上半部分的的电容C1,C2,C3,C4以及V+,V-是电源变换电路部分。

在实际应用中,器件对电源噪声很敏感。

因此,VCC必须要对地加去耦电容C5,电容C1,C2,C3和C4取同样数值的钽电容,用以提高抗干扰能力。

在连接时必须尽量靠近器件。

下半部分为发送和接收部分。

实际应用中T1IN和T2IN可直接接TTL/CMOS电平的89C52单片机的串行发送端TXD;R1OUT和R2OUT可直接接TTL/CMOS电平的89C52单片机的的串行接收端;T1OUT和T2OUT可直接接PC的RS-232串口的接收端RXD;R1IN和R2IN直接接PC的RS-232串口的发送端TXD。

 

图4MAX232典型工作电路图

(3)9针串口:

一个完整的RS-232接口是一个25针的D型插头座,25针的连接器实际上只有9根连接线,所以就产生了一个简化的9针D型RS-232插头座,常用的就是一个9针的D型插头座。

EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定:

在TxD和RxD上:

逻辑1(MARK)=-3V~-15V

逻辑0(SPACE)=+3~+15V

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3V~+15V

信号无效(断开,OFF状态,负电压)=-3V~-15V

介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。

因此如果要进行通信,还要对信号的电平进行转换,比如使用MAX3232芯片来转换电平。

使用串口进进行通信时,我们最主要关心的时以下这三个引脚:

5GND

2RXD

3TXD

要完成数据的发送与接收就必须要到上面这三个引脚。

而其它引脚是用来控制传输规则的,即握手协议。

下面是9针串口(DB9),引脚功能。

引脚号

缩写

英文全称

功能说明

1

DCD

DataCarrierDetection

数据载波检测

2

RXD

ReceiveData

接收数据

3

TXD

TransmitData

发送数据

4

DTR

DataTerminalReady

数据终端准备

5

GND

SystemGround

信号地

6

DSR

DataSetReady

数据设备准备好

7

RTS

RequesttoSend

请求发送

8

CTS

CleartoSend

清除发送

9

RI

RingIndicator

振铃指示

图5九针串口引脚功能

5.3.2模块实现

51单片机串口通信电路图

ORG0000H

MOVSCON,#50H;设置成串口1方式

MOVTMOD,#20H;波特率发生器T1工作在模式2上

MOVPCON,#80H;波特率翻倍为2400x2=4800BPS

MOVTH1,#0F3H;预置初值(按照波特率2400BPS预置初值)

MOVTL1,#0F3H;预置初值(按照波特率2400BPS预置初值)

SETBTR1;启动定时器T1

;以上完成通讯初始化设置

WRIT:

JBP3.6,$;判断K1是否按下,如果没有按下就等待

ACALLDELAY10;延时10毫秒消触点抖动

JBP3.6,WRIT;去除干扰信号

JNBP3.6,$;等待按键松开

MOVA,#0AFH;将16进制的字符AF发送到串口去

MOVSBUF,A;将AF通过串口发送出去

AJMPWRIT

;10毫秒延时子程序

DELAY10:

MOVR4,#20

D2:

MOVR5,#248

DJNZR5,$

DJNZR4,D2

RET

END

;=============两机串口通讯程序(主机)=====================

;功能:

使用串行中断,接收数据并显示

;硬件环境:

自制单片机实验板

;软件环境:

伟福V3.20

;Createdate:

2004_07_26

;FirstModify:

2004_07_26

;secondModify:

;LastModify:

2004_07_26

;Author:

Sujiande

;

;===========预定义===================

LED0EQU40H;预定义数码管

LED1EQU41H;预定义数码管

LED2EQU42H;预定义数码管

LED3EQU43H;预定义数码管

LED4EQU44H;预定义数码管

LED5EQU45H;预定义数码管

LED6EQU46H;预定义数码管

LED7EQU47H;预定义数码管

SDABITP0.1;定义数据线引脚定义

SCLBITP0.0;定义时钟线引脚定义

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

ORG0000H;主程序入口

AJMPMAIN;跳转到主程序

ORG0100H;主程序在ROM中存放位置

;===============主程序=====================

MAIN:

MOVLED0,#00H;赋初值

MOVLED1,#00H

MOVLED2,#16;赋初值为16,数码管显示代码为:

MOVLED3,#16

MOVLED4,#16

MOVLED5,#16

MOVLED6,#16

MOVLED7,#16

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

;MOVDPTR,#TABLE;赋显示代码首地址

MOVR1,#00H;给R1赋初值00H

ACALLDISPLAY;调显示子程序

MOVSP,#30H;给堆栈指针赋初值

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

;使用定时器1,作为波特率发生器,设定波特率=9600,

;定时器初值为:

FAH

;串行控制器设置:

SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

;RB8=0,TI=0,RI=0即01010000B

;波特率加倍

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

MOVTMOD,#20H;设置定时器1,工作方式2

MOVTH1,#0FAh;赋初值:

FA

MOVTL1,#0FAh;赋初值:

FA

MOVSCON,#50h;设置串行口控制寄存器

MOVPCON,#80h;设置电源控制寄存器,让波特率加倍(2X)

SETBTR1;启动定时

;*****************主程序结束************************

LP8:

MOVA,R1;将1的数据装到A中

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

MOVSBUF,A;将A的数据送到缓冲区

JNBTI,$;等待数据发送完毕

CLRTI;清发送中断标志

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

INCR1

CJNER1,#99,LP3

MOVR1,#00H

LP3:

ACALLSEPERATE;调拆分程序

ACALLDISPLAY;调显示子程序

ACALLDELAY_1S;调延时子程序

AJMPLP8

;=================拆分程序=====================

SEPERATE:

ANLA,#0Fh;与操作得到个位数据

MOVLED0,A;个位送LED0

MOVA,R1

ANLA,#0F0H;与操作得到十位数据

SWAPA

MOVLED1,A;十位送LED1

RET

;===============显示子程序=====================

DISPLAY:

MOVDPTR,#TABLE;赋显示代码首地址

MOVA,LED0;查表数据送A

MOVCA,@A+DPTR;查表,得到显示代码

ACALLSHIFT;调移位子程序

MOVA,LED1

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED2

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED3

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED4

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED5

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED6

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED7

MOVCA,@A+DPTR

ACALLSHIFT

RET

;---------显示代码表---------

TABLE:

DB11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H;0,1,2,3,4,5,6,7,8,9,

DB50H,1CH,39H,16H,38H,78H,0FFH,0FEH,0EFH;10,11,12,13,14,15,灭,-

;================移位子程序============================

SHIFT:

PUSHA;进栈暂存A值

MOVR0,#8;循环8次

CLRC;清进位标志

CLRSCL;时钟线,先钳位为0

LP2:

RLCA

MOVSDA,C

NOP

NOP

SETBSCL

NOP

NOP

CLRSCL

NOP

NOP

DJNZR0,LP2

POPA;出栈恢复A值

RET

;=============延时子程序===============

DELAY_1S:

MOVR7,#0ffH

LOOP7:

MOVR6,#0ffH

LOOP6:

NOP

NOP

NOP

NOP

NOP

NOP

DJNZR6,LOOP6

DJNZR7,LOOP7

RET

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

END

;=============两机串口通讯程序(从机)=====================

;功能:

使用串行中断,接收数据并显示

;硬件环境:

自制单片机实验板

;软件环境:

伟福V3.20

;Createdate:

2004_07_26

;FirstModify:

2004_07_26

;secondModify:

;LastModify:

2004_07_26

;Author:

Sujiande

;===========预定义===================

LED0EQU40H;预定义数码管

LED1EQU41H;预定义数码管

LED2EQU42H;预定义数码管

LED3EQU43H;预定义数码管

LED4EQU44H;预定义数码管

LED5EQU45H;预定义数码管

LED6EQU46H;预定义数码管

LED7EQU47H;预定义数码管

SDABITP0.1;定义数据线引脚定义

SCLBITP0.0;定义时钟线引脚定义

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

ORG0000H;主程序入口

AJMPMAIN;跳转到主程序

ORG0023H;中断入口地址

AJMPS_INT;跳转到中断程序

ORG0100H;主程序在ROM中存放位置

;==============主程序========================

MAIN:

MOVLED0,#00H;赋初值

MOVLED1,#00H

MOVLED2,#16;赋初值为16,数码管显示代码为:

MOVLED3,#16

MOVLED4,#16

MOVLED5,#16

MOVLED6,#16

MOVLED7,#16

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

MOVDPTR,#TABLE;赋显示代码首地址

ACALLDISPLAY;调显示子程序

MOVSP,#30H;给堆栈指针赋初值

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

;使用定时器1,作为波特率发生器,设定波特率=9600,

;定时器初值为:

FAH

;串行控制器设置:

SM0=0,SM1=1,SM2=0,REN=1,TB8=0,

;RB8=0,TI=0,RI=0即01010000B

;波特率加倍

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

MOVTMOD,#20H;设置定时器1,工作方式2

MOVTH1,#0FAh;赋初值:

FA

MOVTL1,#0FAh;赋初值:

FA

MOVSCON,#50h;设置串行口控制寄存器

MOVPCON,#80h;设置电源控制寄存器,让波特率加倍(2X)

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

SETBEA;启动总中断

SETBES;启动串行中断

SETBTR1;启动定时

AJMP$;等待中断

;*****************主程序结束************************

;===============中断服务程序=============================

S_INT:

MOVR1,SBUF;将缓冲区的数据送到R1

ACALLSEPERATE;调拆分程序

ACALLDISPLAY;调显示子程序

CLRRI;清接收中断标志

RETI;中断返回

;=================拆分程序=====================

SEPERATE:

MOVA,R1

ANLA,#0Fh;与操作得到个位数据

MOVLED0,A;个位送LED0

MOVA,R1

ANLA,#0F0H;与操作得到十位数据

SWAPA;

MOVLED1,A;十位送LED1

RET

;===============显示子程序======================

DISPLAY:

MOVA,LED0;查表数据送A

MOVCA,@A+DPTR;查表,得到显示代码

ACALLSHIFT;调移位子程序

MOVA,LED1

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED2

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED3

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED4

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED5

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED6

MOVCA,@A+DPTR

ACALLSHIFT

MOVA,LED7

MOVCA,@A+DPTR

ACALLSHIFT

RET

;---------显示代码表---------

TABLE:

DB11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H;0,1,2,3,4,5,6,7,8,9,

DB50H,1CH,39H,16H,38H,78H,0FFH,0FEH,0EFH;10,11,12,13,14,15,灭,-

;================移位子程序============================

SHIFT:

PUSHA;进栈暂存A值

MOVR0,#8;循环8次

CLRC;清进位标志

CLRSCL;时钟线,先钳位为0

LP2:

RLCA

MOVSDA,C

NOP

NOP

SETBSCL

NOP

NOP

CLRSCL

NOP

NOP

DJNZR0,LP2

POPA;出栈恢复A值

RET

;=============延时子程序===============

DELAY_1S:

MOVR7,#0ffH

LOOP7:

MOVR6,#0ffH

LOOP6:

NOP

NOP

NOP

NOP

NOP

NOP

DJNZR6,LOOP6

DJNZR7,LOOP7

RET

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

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1