ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:68.11KB ,
资源ID:4415344      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4415344.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计说明.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计说明.docx

1、课程设计说明5.将采集的脉搏信号上传到计算机并存储5.1心电信号上传、存储模块的介绍该模块的设计思路是将采集到的模拟信号通过A/D转换模块转换为可上传、存储的数字信号。然后通过串口通信将数据上传到计算机。在PC端上用Visual C+编写一个串口通信程序将上传的数据存储到TXT文档,供Matlab进行分析。计算机单片机A/D转换采集到的模拟信号 . . 图5.1 心电信号上传、存储模块结构图 5.2 A/D转换模块5.3数据上传模块为了将数字信号的数据上传到计算机,需要通过串口通信来传输数据。89C51有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一

2、定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND.第2脚的RXD.第3脚的TXD。5.3.1 硬件实现:(1)AT89C52:AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的. AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器

3、(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

4、及PLCC等三种封装形式,以适应不同产品的需求。图2 AT89c52引脚图(2) MAX232芯片:是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28/V.24的通信接口。 MAX232芯片的功能: MAX232内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有12V电源的场合,其适应性更强图3 MAX232芯片引脚 图4中,上半部分的的电容C1,C2,C3,C4以及V+,V-是电源变换电路部分。在实际应用中,器件对电源噪声很敏感

5、。因此,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。图4 MAX232典型工作电路图(3)9针串口:一个完整的RS-232接口是一个25针的D型插头座,25针的连接器实际上只有9根连

6、接线,所以就产生了一个简化的9针D型RS-232插头座,常用的就是一个9针的D型插头座。EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定:在TxD和RxD上:逻辑1(MARK)=-3V-15V 逻辑0(SPACE)=+315V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)+3V+15V 信号无效(断开,OFF状态,负电压)=-3V-15V 介于-3+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义。因此如果要进行通信,还要对信号的电平进行转换,比如使用MAX3232芯片来转换电平。使用串口进进行通信时,我们最主要

7、关心的时以下这三个引脚:5 GND2 RXD3 TXD要完成数据的发送与接收就必须要到上面这三个引脚。而其它引脚是用来控制传输规则的,即握手协议。下面是9针串口(DB9),引脚功能。引脚号缩写英文全称功能说明1DCDData Carrier Detection数据载波检测2RXDReceive Data接收数据3TXDTransmit Data发送数据4DTRData Terminal Ready数据终端准备5GNDSystem Ground信号地6DSRData Set Ready数据设备准备好7RTSRequest to Send请求发送8CTSClear to Send清除发送9RIRi

8、ng Indicator振铃指示图5 九针串口引脚功能5.3.2 模块实现 51单片机串口通信电路图ORG 0000H MOV SCON,#50H;设置成串口1方式 MOV TMOD,#20H;波特率发生器T1工作在模式2上 MOV PCON,#80H;波特率翻倍为2400x2=4800BPS MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值) SETB TR1;启动定时器T1 ;以上完成通讯初始化设置 WRIT:JB P3.6,$;判断K1是否按下,如果没有按下就等待 ACALL DELAY10;

9、延时10毫秒消触点抖动 JB P3.6,WRIT;去除干扰信号 JNB P3.6,$;等待按键松开 MOV A,#0AFH;将16进制的字符AF发送到串口去 MOV SBUF,A;将AF通过串口发送出去 AJMP WRIT ;10毫秒延时子程序 DELAY10:MOV R4,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET END ;=两机串口通讯程序(主机)=; 功 能: 使用串行中断,接收数据并显示 ; 硬件环境: 自制单片机实验板 ; 软件环境: 伟福 V3.20 ; Create date: 2004_07_26 ; First Modify: 2

10、004_07_26 ; second Modify: ; Last Modify: 2004_07_26 ; Author: Sujiande ; ;=预定义=LED0 EQU 40H ;预定义数码管 LED1 EQU 41H ;预定义数码管LED2 EQU 42H ;预定义数码管 LED3 EQU 43H ;预定义数码管 LED4 EQU 44H ;预定义数码管 LED5 EQU 45H ;预定义数码管 LED6 EQU 46H ;预定义数码管 LED7 EQU 47H ;预定义数码管 SDA BIT P0.1 ; 定义数据线引脚定义 SCL BIT P0.0 ; 定义时钟线引脚定义 ;-

11、ORG 0000H ;主程序入口 AJMP MAIN ;跳转到主程序 ORG 0100H ;主程序在ROM中存放位置 ;=主程序=MAIN: MOV LED0,#00H ;赋初值 MOV LED1,#00H MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭 MOV LED3,#16 MOV LED4,#16 MOV LED5,#16 MOV LED6,#16 MOV LED7,#16 ;- ;MOV DPTR,#TABLE ; 赋显示代码首地址 MOV R1,#00H ; 给R1赋初值00H ACALL DISPLAY ; 调显示子程序 MOV SP, #30H ; 给堆栈指

12、针赋初值 ;- ; 使用定时器1,作为波特率发生器,设定波特率=9600, ; 定时器初值为:FAH ; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0, ; RB8=0,TI=0,RI=0 即0101 0000B ; 波特率加倍 ;- MOV TMOD,#20H ;设置定时器1,工作方式2 MOV TH1,#0FAh ;赋初值: FA MOV TL1,#0FAh ;赋初值: FA MOV SCON, #50h ;设置串行口控制寄存器 MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X) SETB TR1 ;启动定时 ;*主程序结束* LP8:

13、 MOV A,R1 ;将1的数据装到A中 ;- MOV SBUF,A ;将A的数据送到缓冲区 JNB TI,$ ;等待数据发送完毕 CLR TI ;清发送中断标志 ;- INC R1 CJNE R1,#99,LP3 MOV R1,#00H LP3: ACALL SEPERATE ;调拆分程序 ACALL DISPLAY ;调显示子程序 ACALL DELAY_1S ;调延时子程序 AJMP LP8 ;=拆分程序=SEPERATE: ANL A,#0Fh ;与操作得到个位数据 MOV LED0,A ;个位送LED0 MOV A,R1 ANL A,#0F0H ;与操作得到十位数据 SWAP A M

14、OV LED1,A ;十位送LED1 RET ;=显示子程序=DISPLAY: MOV DPTR,#TABLE ; 赋显示代码首地址 MOV A,LED0 ;查表数据送A MOVC A,A+DPTR ;查表,得到显示代码 ACALL SHIFT ;调移位子程序 MOV A,LED1 MOVC A,A+DPTR ACALL SHIFT MOV A,LED2 MOVC A,A+DPTR ACALL SHIFT MOV A,LED3 MOVC A,A+DPTR ACALL SHIFT MOV A,LED4 MOVC A,A+DPTR ACALL SHIFT MOV A,LED5 MOVC A,A+D

15、PTR ACALL SHIFT MOV A,LED6 MOVC A,A+DPTR ACALL SHIFT MOV A,LED7 MOVC A,A+DPTR ACALL SHIFT RET ;-显示代码表- TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9, DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,- ;=移位子程序=SHIFT: PUSH A ; 进栈暂存A值 MOV R0,#8 ; 循环8次 CLR C ;清

16、进位标志 CLR SCL ;时钟线,先钳位为0 LP2: RLC A MOV SDA,C NOP NOP SETB SCL NOPNOP CLR SCL NOP NOP DJNZ R0,LP2 POP A ; 出栈恢复A值 RET ;=延时子程序=DELAY_1S: MOV R7,#0ffH LOOP7: MOV R6,#0ffH LOOP6: NOP NOP NOP NOP NOP NOP DJNZ R6,LOOP6 DJNZ R7,LOOP7 RET ;- END ;=两机串口通讯程序(从机)=; 功 能: 使用串行中断,接收数据并显示 ; 硬件环境: 自制单片机实验板 ; 软件环境: 伟

17、福 V3.20 ; Create date: 2004_07_26 ; First Modify: 2004_07_26 ; second Modify: ; Last Modify: 2004_07_26 ; Author: Sujiande ;=预定义=LED0 EQU 40H ;预定义数码管 LED1 EQU 41H ;预定义数码管 LED2 EQU 42H ;预定义数码管 LED3 EQU 43H ;预定义数码管 LED4 EQU 44H ;预定义数码管 LED5 EQU 45H ;预定义数码管 LED6 EQU 46H ;预定义数码管 LED7 EQU 47H ;预定义数码管 SDA

18、 BIT P0.1 ; 定义数据线引脚定义 SCL BIT P0.0 ; 定义时钟线引脚定义 ;- ORG 0000H ;主程序入口 AJMP MAIN ;跳转到主程序 ORG 0023H ;中断入口地址 AJMP S_INT ;跳转到中断程序 ORG 0100H ;主程序在ROM中存放位置 ;=主程序=MAIN: MOV LED0,#00H ;赋初值MOV LED1,#00H MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭 MOV LED3,#16MOV LED4,#16 MOV LED5,#16 MOV LED6,#16 MOV LED7,#16 ;- MOV DPTR

19、,#TABLE ; 赋显示代码首地址 ACALL DISPLAY ; 调显示子程序 MOV SP, #30H ; 给堆栈指针赋初值 ;- ; 使用定时器1,作为波特率发生器,设定波特率=9600, ; 定时器初值为:FAH ; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0, ; RB8=0,TI=0,RI=0 即0101 0000B ; 波特率加倍 ;- MOV TMOD,#20H ;设置定时器1,工作方式2 MOV TH1,#0FAh ;赋初值: FAMOV TL1,#0FAh ;赋初值: FA MOV SCON, #50h ;设置串行口控制寄存器 MOV PC

20、ON, #80h ;设置电源控制寄存器, 让波特率加倍(2X) ;- SETB EA ; 启动总中断 SETB ES ; 启动串行中断 SETB TR1 ;启动定时 AJMP $ ; 等待中断 ;*主程序结束* ;=中断服务程序=S_INT: MOV R1, SBUF ;将缓冲区的数据送到R1 ACALL SEPERATE ;调拆分程序 ACALL DISPLAY ;调显示子程序 CLR RI ;清接收中断标志 RETI ;中断返回 ;=拆分程序=SEPERATE: MOV A,R1 ANL A,#0Fh ;与操作得到个位数据 MOV LED0,A ;个位送LED0 MOV A,R1 ANL

21、A,#0F0H ;与操作得到十位数据 SWAP A ; MOV LED1,A ;十位送LED1 RET ;=显示子程序=DISPLAY: MOV A,LED0 ;查表数据送A MOVC A,A+DPTR ;查表,得到显示代码 ACALL SHIFT ;调移位子程序 MOV A,LED1 MOVC A,A+DPTR ACALL SHIFT MOV A,LED2 MOVC A,A+DPTR ACALL SHIFT MOV A,LED3 MOVC A,A+DPTR ACALL SHIFTMOV A,LED4 MOVC A,A+DPTR ACALL SHIFT MOV A,LED5 MOVC A,A+

22、DPTR ACALL SHIFT MOV A,LED6 MOVC A,A+DPTR ACALL SHIFT MOV A,LED7 MOVC A,A+DPTR ACALL SHIFT RET ;-显示代码表- TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7,8,9, DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,- ;=移位子程序=SHIFT: PUSH A ; 进栈暂存A值 MOV R0,#8 ; 循环8次 CLR C ;清进位标志 CLR SCL ;时钟线,先钳位为0 LP2: RLC A MOV SDA,C NOP NOP SETB SCL NOP NOP CLR SCL NOP NOP DJNZ R0,LP2 POP A ; 出栈恢复A值 RET ;=延时子程序=DELAY_1S: MOV R7,#0ffH LOOP7: MOV R6,#0ffH LOOP6: NOP NOP NOP NOP NOP NOP DJNZ R6,LOOP6 DJNZ R7,LOOP7 RET ;- END

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

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