版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.PAGE :.;PAGE 20电子安装与系统设计课程设计学院: 信息电子学院 班级: 08电子信息工程 学号: E08610308 姓名: 陈建能 指点教师: 陈科沈军民 日期: 20210704 目录1、课程设计目的32、课程设计工具及标题32.1、课程设计工具.3 2.2、课程设计标题.33、课程设计内容、步骤及电路原理图33.1、课程设计内容.33.2、课程设计步骤.33.3、整个系统的电路原理图.44、课程设计各模块任务原理5 4.1、红外心率计模块.54.1.1、负电源变换电路54.1.2、血液动摇检测电路64.1.3、放大、整形、滤波电路74.2、PIC单片机检测并显示模块84.
2、2.1、定时器初始化及中断函数84.2.2、数脉冲个数程序94.2.3、数码管显示程序.104.2.4、延时子程序.11 4.2.5、ds18b20温度采集程序.115、课程设计心得146、参考文献157、附录:源程序代码及注释16课程设计目的:单片机具有体积小、功能强、本钱低、运用面广等优点,可以说,智能控制与自动控制的中心就是单片机。目前,一个学习与运用单片机的高潮在全社会大规模地兴起。学习单片机的最有效方法就是实际与实际并重。系统地运用已学的实际知识处理实践问题的才干和查阅资料的才干。培育一定的自学才干和独立分析问题、处理问题的才干,能经过独立思索、查阅工具书、参考文献,寻觅处理方案;课
3、程设计工具及标题: 1、课程设计工具:PC机、PIC单片机最小系统、红外心率计模块 2、课程设计标题:基于PIC单片机的脉搏检测课程设计内容、步骤及电路原理图 1、学习PCB画图,选好课题,即脉搏检测。购买元器件资料,焊接PIC最小系统版,搭建心率计模块,然后由心率计模块产生方波,用PIC单片机数出一分钟的脉冲个数,然后在数码管上显示出来,即为脉搏。2、首先根据最小系统版的原理图,搭建好电路,调试下载线能否可以下载,复位开关能否可以任务。调试胜利之后,开场搭建心率计模块,搭建好心率计模块之后,开场检测能否可以产生方波,用手指按在传感器上,然后用示波器察看能否出现方波脉冲。调试胜利之后,就编写相
4、应的程序,烧写进单片机中,然后就可以检测相应的脉搏了。3、红外心率计模块电路图 4、PIC单片机最小系统原理图各功能模块的任务原理:红外心率计模块单元电路的任务原理 = 1 * GB2 负电源变换电路负电源变换电路的作用是把+12V直流电变成-10V左右的直流电压,-10V 电压与+12V作为运算放大器的电源。负电源变换电路如图2所示,其中IC1CD4069为六非门集成电路,它的内部构造图如图3(a)所示。负电源变换电路任务原理:通电的瞬间,假设A点是低电位,那么B点是高电位,C点是低电位,D点是高电位。B点的高电位经过R19给C7充电,当F点的电压高于IC1CD4049的电平转换电压时,B点
5、输出低电位,C点C7一端输出高电位,由于电容两端的电压不能突变,所以C7两端的电压经过R19放电。当F点电压低于IC1的转换电压时,B点输出高电位,此高电位经过R19对C7充电,如此循环。C点得到方波,经过后面四个反相器反相、扩流后,在D点得到方波。当D点是高电平的时候,V1导通C8被充电,大约充到11V左右,当D点变成低电平的时候,由于C8两端电压不能突变,G点电压被拉到-11V左右,此时V2导通, C9反方向进展充电,使E点电压到达-10V左右。由于带负载的才干不强,当带上负载后,E点电压大约降到9V左右。图2 电源电路 (a) CD4049 (b) LM741图3 集成电路的构造图 =
6、2 * GB2 血液动摇检测电路血液动摇检测电路首先经过红外光电传感器把血液中动摇的成分检测出来,然后经过电容器耦合到放大器的输入端。如图4所示。图4 血液动摇检测电路TCRT5000红外光电传感器的检测方法:首先用数字万用表的二极管档位正向压降测试控制端发射管浅蓝色的正、负极,将红黑表笔分别接发射管的两个引脚,正反各测一次,表头一次显示“1.050.9-1.1,一次显示溢出值“-1,那么显示1.05V的那次正确,红表笔接的是正极,黑表笔接的是负极。假设两次都显示“1,阐明发射管内部开路,假设两次都显示“0发射管内不短路。然后再判别接纳管的C、E极和光电转换效率,方法如下:将发射管的正负极分别
7、插入数字万用表hFE档NPN型的C、E插孔,再将模拟万用表打到R1k档。红黑表笔分别接接纳管的两个引脚,假设表针不动,那么红黑表笔对调,假设表针向右偏转到15k左右,那么黑表笔所接纳脚为C,红表笔所接纳脚为E。此时,再用手指或白纸贴近两管上方,表针继续向右偏转至1k以内,阐明该红外光电断续器的光电转换效率高。血液动摇检测电路任务原理:TCRT5000是集红外线发射管、接纳管为一体的器件,任务时把探头贴在手指上,力度要适中。红外线发射管发出的红外线穿过动脉血管经手指指骨反射回来,反射回来的信号强度随着血液流动的变化而变化,接纳管把反射回来的光信号变成微弱的电信号,并经过C1耦合到放大器。 = 3
8、 * GB2 放大、整形、滤波电路放大、整形、滤波电路是把传感起检测到的微弱电信号进展放大、整形、滤波,最后输出反映心跳频率的方波,如图5所示。其中LM741为高精度单运放电路,它们的引脚功能如图3 (b)所示。IC2、IC3、IC4都为LM741。图5信号放大、整形电路由于传感器送来的信号幅度只需25毫伏,要放大到10V左右才干作为计数器的输入脉冲。因此放大倍数设计在4000倍左右。两级放大器都接成反相比例放大器的电路,经过两级放大、反相后的波形是跟输入波形同相、且放大了的波形。放大后的波形是一个交流信号。其中A1、A2的供电方式是正负电源供电,电源为+12V、-10V。A1、A2与周围元件
9、组成二级放大电路,放大倍数Auf为:由于放大后的波形是一个交流信号,而计数器需求的是一方向的直流脉冲信号。所以经过V3检波后变成一方向的直流脉冲信号,并把检波后的信号送到RC两阶滤波电路,滤波电路的作用是滤除放大后的干扰信号。R9、V4组成传感器任务指示电路,当传感器接纳到心跳信号时,V4就会按心跳的强度而改动亮度,因此V4正常任务时是按心跳的频率闪烁。直流脉冲信号滤波后送入A3的同相输入端,反相输入端接一个固定的电平,A3是作为一个电压比较器来任务的,是单电源供电。当A3的3脚电压高于2脚电压的时候,6脚输出高电平;当A3的3脚电压低于2脚电压的时候,6脚输出低电平,所以A3输出一个反响心跳
10、频率的方波信号。PIC单片机检测并显示模块 定时器,定时1s实现60秒的计时功能,用于检测的时间,并在数码管上显示出来。相应的初始化程序为:void time1_rtc_init(void) INTCON = 0 x20; /disable global and enable TMR0 interrupt INTCON2 = 0 x84; /TMR0 high priority RCONbits.IPEN = 1; /enable priority levels TMR0H = 100; /clear timer TMR0L = 0; /clear timer T0CON = 0 x85; /
11、set up timer0 - prescaler 1:64 INTCONbits.GIEH = 1; /enable interrupts定时器的中断函数为:#pragma code InterruptVectorHigh = 0 x08voidInterruptVectorHigh (void) _asm goto InterruptHandlerHigh /jump to interrupt routine _endasm#pragma code#pragma interrupt InterruptHandlerHighvoid InterruptHandlerHigh () if(IN
12、TCONbits.TMR0IF) /check for TMR0 overflow INTCONbits.TMR0IF = 0; /clear interrupt flag second+; /indicate timeout if(second = 60) second = 0;result = 1;/if(result != 1)/led = led; 由RB0采集脉搏的方波,计数方波个数,并在60秒后显示在数码管上。#define pulse PORTBbits.RB0采用上升沿触发来实现计数功能,从而实现了计数方波的个数的功能。 if(INTCONbits.INT0IF = 1)INT
13、CONbits.INT0IF = 0; delay_ms(100);fre+;位选和段选的数值和数码管的显示程序如下:const unsigned table10=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F; const unsigned bit_set4=0 xFE,0 xFD, 0 xFB, 0 xF7;void display(int time) PORTC = tabletime % 10;PORTD = bit_set3;delay_ms(20);PORTC = table(time / 10) % 10;P
14、ORTD = bit_set2;delay_ms(20); PORTC = tabletime / 100;PORTD = bit_set1;delay_ms(20);显示带小数位的,代码如下:void display1(int time) PORTC = tabletime % 10;PORTD = bit_set3;delay_ms(10);PORTC = table1(time / 10 )% 10;PORTD = bit_set2;delay_ms(10); PORTC = table(time)/ 100;PORTD = bit_set1;delay_ms(10);延时子程序如下:v
15、oid delay_ms(unsigned int time)int n;for(;time0;time-)for(n = 0; n 0)i-; ds=1; i=4; while(i0)i-;char tempreadbit(void) /读1位函数 int i; char dat; TRISB = 1; ds=0;i+; /i+ 起延时作用 ds=1;i+;i+; TRISB = 3; dat=ds; i=8;while(i0)i-; return (dat);char tempread(void) /读1个字节 char i,j,dat; dat=0; for(i=1;i=8;i+) j=
16、tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tempwritebyte(char dat) /向18B20写一个字节数据 int i; char j; char testb; for(j=1;j1; if(testb) /写 1 TRISB = 1; ds=0; i+;i+; ds=1; i=8;while(i0)i-; else TRISB = 1; ds=0; /写 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 开场
17、获取温度并转换 dsreset(); delay_ms(1); tempwritebyte(0 xcc); / 写跳过读ROM指令 tempwritebyte(0 x44); / 写温度转换指令int get_temp() /读取存放器中存储的温度数据 char a,b; dsreset(); delay_ms(1); tempwritebyte(0 xcc); tempwritebyte(0 xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp=8; /两个字节组合为1个字 temp=temp|a; f_temp=temp*0.
18、0625; /温度在存放器中为12位 分辨率位0.0625 temp=f_temp*10+0.5; /乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05; return temp; /temp是整型课程设计心得参考文献1 郭天祥。新概念51单片机C言语教程M 2021.121 孙安青。PIC单片机运用C言语程序设计与典型实例M 2021.06附录:源程序代码及注释#include #define pulse PORTBbits.RB0#define ds PORTBbits.RB1void delay_ms(unsigned int time); cons
19、t unsigned char table10=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F; const unsigned char table110=0 xBF,0 x86,0 xDB,0 xCF,0 xE6,0 xED,0 xFD,0 x87,0 xFF,0 xEF; const unsigned bit_set4=0 xFE,0 xFD, 0 xFB, 0 xF7;void time1_rtc_init(void);void timer1_rtc_isr(void);void InterruptHandlerHi
20、gh (void);void display(int time);void display1(int time);void main(void);int second, flag, fre, result, temp, count;float f_temp;void dsreset(void) /18B20复位,初始化函数 int i; TRISB = 0 xf1; ds=0; i=103; while(i0)i-; ds=1; i=4; while(i0)i-;char tempreadbit(void) /读1位函数 int i; char dat; TRISB = 0 xf1; ds=0
21、;i+; /i+ 起延时作用 ds=1;i+;i+; TRISB = 0 xf3; dat=ds; i=8;while(i0)i-; return (dat);char tempread(void) /读1个字节 char i,j,dat; dat=0; for(i=1;i=8;i+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tempwritebyte(char dat) /向18B20写一个字节数据 int i; char j; char testb; for(j=1;j1; if(testb) /写 1 TRISB = 0 xf1; ds=0; i+;i+; ds=1; i=8;while(i0)i-; else TRISB = 0 xf1; ds=0; /写 0 i=8;while(i0)i-; ds=1; i+;i+; void tempchange(void) /DS18B20 开场获取温度并转换 dsreset(); delay_ms(1); tempwritebyte(0 xcc); / 写跳过读ROM指令 tempwritebyte(0 x44); / 写温度转换指令int get_temp() /读取存放器中存储的温度数据 char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年吉林省白山市社区工作者招聘笔试模拟试题及答案详解
- 2026年泰州市高港区社区工作者招聘考试备考试题及答案详解
- 2026年生成式AI内容创作合规审查与版权保护手册
- 智能家庭护理机器人2.0:从单一辅助到全场景自主跃迁
- 智能实验套件赋能养老服务:个性化护理与健康管理应用
- 知识产权保护与申请
- 2026年预制装配式建筑项目投资计划书
- 直播带货话术设计与转化流程优化
- 2026年执业药师-药学专业知识二重点药物总结
- 2026年西班牙语口译实战技巧与模拟对话
- 2026年全国新高考2卷数学试卷(含答案及解析)
- 2026年全国一级建造师之一建港口与航道工程实务考试快速提分题详细参考解析
- 上海外服集团外包合同
- 2026及未来5年中国pp塑料制品市场数据分析及竞争策略研究报告
- 2025年广东省深圳市宝安区七年级下学期生物学期末生物试卷(含答案)
- 2026高血压基层医生培训课件
- 雨课堂学堂在线学堂云《西方哲学史(武汉)》单元测试考核答案
- 甘肃日报报业集团招聘笔试题库2026
- 重型货车司机奖惩制度
- 凉茶管理规范制度
- 税务免处罚申请报告(3篇)
评论
0/150
提交评论