#51单片机自行车测速(含实时时间,温度显示,断电保存等)

#51单片机自行车测速(含实时时间,温度显示,断电保存等)
#51单片机自行车测速(含实时时间,温度显示,断电保存等)

单片机课程设计报告

自行车测速仪

学院信息工程学院

专业信息工程

(电子信息工程方向)

年级班别 2010级(4)班

学号 3110002980

学生姓名 XXX

指导教师 XXX

申请成绩 XXX

1

)

附加功能:实时时钟,行驶里程累计

2.设计思路:

首先是选择基于51单片机来设计这个产品,这个产品主要的功能是用来测量自行车的车速,既然要测车速,那就要用到传感器,所以选择了红外光电传感器,它的检测头里也装有一个发光器和一个收光器,但前方没有反光板。正常情况下发光器发出的光收光器是找不到的。当检测物通过时挡住了光,并把光部分反射回来,收光器就收到光信号,输出一个开关信号。在没有遮挡物时,传感器输出端输出一个高电平,当有遮挡物时,输出端就会输出低电平,那样就可以利用单片机的计数功能,把传感器输出的信号输入到单片机的外部脉冲输入端,可以通过测试脉冲数来算出车速,具体实现是利用单片机的计数功能实现下降沿计数,然后在两秒内统计出自行车走过的圈数,算出自行车车轮的周长,再乘以圈数,再除以时间两秒,就得到车速,然后在lcd上面显示,还可以算出自行车的路程,也利用单片机的定时中断功能可以设置和显示实时时间,还可以利用单片机上自带的温度传感器ds18b20测出实时温度,在lcd上显示出来。

3.任务分工:XXX(100%)

4.设计步骤:

1.先完成lcd的显示代码,使单片机上的lcd能正常显示数字,字符。

2,利用单片机的定时计数功能,首先在lcd上显示实时时间能每秒加一。

3.通过对按键的扫描检测,实现对实时时间的设置。例如按下按键,使能设置时间(断开计时中断),再分别设置三个按键分别实现对小时,分钟,秒的设置(按下一次加一)

4.通过单片机的计数功能,即外部脉冲信号输入到引脚P3.5(T1),电平从1到0跳变,则计数器加一。把红外光电传感器的信号输出端接到引脚P3.5,自行车车轮的周长,再乘以圈数,再除以时间两秒,就得到车速,然后在lcd上面显示。

5.车轮的周长乘以圈数(每次累加起来),就可以得到自行车走过的路程,并在lcd上显示出来。

6.利用单片机上的温度传感器ds18b20,把得到的温度数据转化并显示在lcd上。5,.程序流程(含流程图及详细步骤解释)

流程图详细步骤解释:

1.程序开始运行,初始化。

2.判断key6=0,即键6是否被按下,按下则对路程清零,否则显示累计的路程值。

3. 利用单片机上的温度传感器ds18b20,不断得到实时温度值。

4.把TMOD=01010001,即把T1作为计数器,把T0作为定时器,利用定时功能实现实时时间的显示,即实现每秒加一,利用T1的计数功能,记录由传感器输出的脉冲数,然后可以换算成速度,还可以算出走过的路程。

5.判断key1是否为0,即key1是否被按下,若按下,则令ET0=0(停止定时中断),便于设置时间。

6.判断key2是否被按下,若按下则令小时h加一。

7.判断key3是否被按下,若按下则令分钟m加一。

8.判断key4是否被按下,若按下则令秒s加一。

9.判断key5是否被按下,若按下则令ET0=1,TR0=1允许并启动定时中断。6.操作步骤及方法:

1.电源开关,把线接好后先下载程序,再按电源开关,实现冷启动。

2.1602液晶显示模块。分别显示速度,路程,时间,温度。

3.这些是独立按键,通过这些按键可以实现设置实时时间。(第一行对应为key1,key2,key3,key4,第二行第三个对应key5,第四个为key6),key1按下,则令ET0=0(停止定时中断),便于设置时间。Key2按下则令小时h加一,key3按下则令分钟m加一,key4按下则令秒s加一,key5按下则令ET0=1,TR0=1允许并启动定时中断.。

4.红外光电传感器模块,有三个引脚,分别是接地,接电源,输出信号端接P3^5,分别用杜邦线连接。

5.温度传感器ds18b20,对传感器的输出数据进行处理,然后在lcd上显示温度值

3.1602lcd显示模块,4温度处理模块,5断电保存模块。51单片机都适用,只需修改一下对应的引脚即可。

1.主函数模块:

#include

#include

#include

#include

#include

#include

extern unsigned long int t1;

void main()

{

uchar a,i;

uchar re[4]={0};

Initlcd();

time_init();

EA=0;

re[0]=read_add_data(0x2003);

delay(5);

re[1]=read_add_data(0x2002);

delay(5);

re[2]=read_add_data(0x2001);

delay(5);

re[3]=read_add_data(0x2000);

delay(5);

EA=1;

t1=0;

for(i=0;i<4;i++)

{

t1=t1<<8;

t1=t1|re[i];

}

while(1)

{

time_set(); //调用时间设置函数

speed_display(); //调用速度显示函数

delay(5);

journey_display(); // 调用路程显示函数

delay(5);

time_display(); // 调用时间显示函数

delay(5);

tem_change();

for(a=20;a>0;a--)

get_temperature(); //得到温度值函数

display_temp(); //显示温度函数

}

}

}

2.时间和路程处理模块

uchar s,m,h,i;

uchar count1,count2,count3;

uchar temp1;

unsigned long int sp1,jour1, t1;

uchar sp[4]={0}; //速度

uchar jour[7]={0}; //路程uchar wr[4]={0};

void time_init()

{

TMOD=0x51;

//01010001,T1做计数器,T0做定时器

TH0=(65536-50000)/256; //定时器T0的高8位设置初值

TL0=(65536-50000)%256; //定时器T0的低8位设置初值

TH1=0x00; //计数器的初值为0

TL1=0x00;

EA=1; //开总中断

ET0=1; //允许定时器0溢出中断

TR0=1; //启动定时器0

TR1=1;

}

void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器

{

count1++;

//每产生1次中断,中断累计次数加1

count2++;

count3++;

if(count3==40)

delete_add_data(0x2000);

delay(5);

wr[0]=t1&0xff;

wr[1]=(t1>>8)&0 xff;

wr[2]=(t1>>16)& 0xff;

wr[3]=(t1>>24)& 0xff;

for(i=0;i<4;i++)

{

EA=0;

write_add_data(0 x2000+i, wr[i]);

delay(5);

EA=1;

}

}

if(key6==0)

//路程清零

{

delay(100);

if(key6==0)

{

t1=0;

TH1=0;

TL1=0;

jour[6]=0;

jour[5]=0;

jour[4]=0;

jour[3]=0;

jour[2]=0;

jour[1]=0;

jour[0]=0;

}

}

if(count2==40) //两

秒钟测一次转了多少圈

{

count2=0;

temp1=TL1;

sp1=3212*temp1;

sp[3]=sp1/10000;

sp[2]=sp1/1000% 10;

sp[1]=sp1/100%1 0;

sp[0]=sp1/10%10;

t1=t1+temp1;

jour1=189*t1;

jour[6]=jour1/100 0000%10;

jour[5]=jour1/100 000%10;

jour[4]=jour1/100 00%10;

jour[3]=jour1/100 0%10;

jour[2]=jour1/100 %10;

jour[1]=jour1/10 %10;

jour[0]=jour1%1 0;

TH1=0;

TL1=0;

//计数器的值清零

}

if(count1==20) //如果中断次数计满20次,即定时1s

{

count1=0; //中断累计次数清0

s++; //秒加1

}

if(s==60) //如果计满60秒

{

s=0; //秒清0

m++; //分钟加1

}

if(m==60) //如果计满60分

{

m=0; //分钟清0

h++; //小时加1

}

if(h==24) //如果计满24小时

{

h=0; //小时清0

}

TH0=(65536-50000)/256; //定时器T0高8位重新赋初值

TL0=(65536-50000)%256; //定时器T0低8位重新赋初值

}

void time_set()

//设置时间函数

{

if(key1==0)

{

delay(100); //延时消抖

if(key1==0)

{

TR0=0;

ET0=0;

//停止计时

TL0=0;

TH0=0;

}

}

if(key2==0)

//key2设置小时

{

delay(100);

if(key2==0)

{

if(h==23)

{

h=0;

}

else

{

h=h+1;

}

}

}

if(key3==0)

//key3设置分钟

{

delay(100);

if(key3==0)

{

if(m==59)

{

h=h+1;

m=0;

}

else

{

m=m+1;

}

}

}

if(key4==0)

//key4设置秒

{

delay(100);

if(key4==0)

{

if(s==59)

{

m=m+1;

s=0;

}

else

{

s=s+1;

}

}

}

if(key5==0) //按下key5,启动定时器继续计时

{

delay(100);

if(key5==0)

{

ET0=1;

TR0=1;

}

}

}

void speed_display() //显示速度(km/h)函数

{

Displayonechar(0,0,sp[3]+0x30);

Displayonechar(1,0,sp[2]+0x30);

Displayonechar(2,0,0x2e);

Displayonechar(3,0,sp[1]+0x30);

Displayonechar(4,0,sp[0]+0x30);

}

void journey_display()

//显示路程(m)函数

{

Displayonechar(8,0,jour[6]+0x30);

Displayonechar(9,0,jour[5]+0x30);

Displayonechar(10,0,jour[4]+0x30);

Displayonechar(11,0,jour[3]+0x30);

Displayonechar(12,0,jour[2]+0x30);

Displayonechar(13,0,0x2e);

Displayonechar(14,0,jour[1]+0x30);

Displayonechar(15,0,jour[0]+0x30);

}

void time_display()

//显示时间函数

{

Displayonechar(0,1,h/10+0x30);

Displayonechar(1,1,h%10+0x30);

Displayonechar(2,1,0x3a);

Displayonechar(3,1,m/10+0x30);

Displayonechar(4,1,m%10+0x30);

Displayonechar(5,1,0x3a);

Displayonechar(6,1,s/10+0x30);

Displayonechar(7,1,s%10+0x30);

}

3.1602lcd显示模块

void Waitforenable() //检测忙信号子函数

{

dataport=0xff;

lcm_rs=0;lcm_rw=1;_nop_();

lcm_en=1;_nop_();_nop_();

while(dataport&0x80); //检测到忙信号就等待

lcm_en=0;

}

void Writecommandlcm(uchar cmd,uchar attribc) //写命令到lcm子函数

{

if(attribc)Waitforenable();

lcm_rs=0;lcm_rw=0;_nop_();

dataport=cmd;_nop_();

lcm_en=1;_nop_();_nop_();lcm_en=0;

}

void Writedatalcm(uchar dataw)

{

Waitforenable();

lcm_rs=1;lcm_rw=0;_nop_();

dataport=dataw;_nop_();

lcm_en=1;_nop_();_nop_();lcm_en=0;

}

void Initlcd() //函数名为Initlcd的lcm初始化子函数

{

Writecommandlcm(0x38,1); //8位数据传送,2行显示,5x7字型,检测忙信号

Writecommandlcm(0x08,1); //关闭显示,检测忙信号Writecommandlcm(0x01,1); //清屏,检测忙信号

Writecommandlcm(0x06,1); //显示光标右移设置,检测忙信号

Writecommandlcm(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号

}

void Displayonechar(uchar x,uchar y,uchar ddata) //显示指定坐标

一个字符的子函数

{

y&=1; //限定范围为0~1

x&=15; //限定范围为0~15

if(y)x|=0x40; //若y为1(显示第二行),地址码+0x40

x|=0x80; //指令码为地址码+0x80

Writecommandlcm(x,0); //将指令x写入lcm,忽略忙信号检测(显示光标定位,数字显示位置)

Writedatalcm(ddata); //写入要显示的

字符

}

4.温度处理模块

sbit ds= P3^7; //单总线引脚

uchar flag;

uint temp;

void TempDelay (uchar us)

{

while(us--);

}

void ds_reset(void)

{

ds=1;

_nop_(); //1us

ds=0;

TempDelay(68); //当总线停留在低电平超过480us,总线上所以器件都将被复位,这里//延时约530us总线停留在低电平超过480μs,总线上的所有器件都将被复位。

_nop_();

ds=1; //产生复位脉冲后,微处理器释放总线,让总线处于空闲状态TempDelay(10); //释放总线后,以便从机18b20通过拉低总线来指示其是否在线,存在检测高电平时间:15~60us,所以延时44us

_nop_();

_nop_();

_nop_();

if(ds==0)

flag=1;

else

flag=0;

TempDelay(20); //存在检测低电平时间:60~240us,所以延时约140us

_nop_();

_nop_();

ds=1; //再次拉高总线,让总线处于空闲状态

/**/

}

/*----------------------------------------

读/写时间隙:

DS1820 的数据读写是通过时间隙处理

位和命令字来确认信息交换。

------------------------------------------*/

bit ds_read_bit(void) //读一位

{

bit dat;

ds=0; //单片机(微处理器)将总线拉低

_nop_(); //读时隙起始于微处理器将总线拉低至少1us

ds=1; //拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据

_nop_();

_nop_(); //小延时一下,读取18b20上的数据,因为从ds18b20上输出的数据

//在读"时间隙"下降沿出现15us内有效

dat=ds; //主机读从机18b20输出的数据,这些数据在读时隙的下降沿出现//15us内有效

TempDelay(20); //所有读"时间隙"必须60~120us,这里77us

return(dat); //返回有效数据

}

uchar ds_read_byte(void ) //读一字节

{

uchar value,i,j;

value=0; //一定别忘了给初值

for(i=0;i<8;i++)

{

j=ds_read_bit();

value=(j<<7)|(value>>1); //这一步的说明在一个word文档里面

}

return(value); //返回一个字节的数据

}

void ds_write_byte(uchar dat) //写一个字节

{

uchar i;

bit onebit; //一定不要忘了,onebit是一位

for(i=1;i<=8;i++)

{

onebit=dat&0x01;

dat=dat>>1;

if(onebit) //写1

{

ds=0;

_nop_();

_nop_(); //看时序图,至少延时1us,才产生写"时间隙"

ds=1; //写时间隙开始后的15μs内允许数据线拉到高电平

TempDelay(20); //所有写时间隙必须最少持续60us

}

else //写0

{

ds=0;

TempDelay(20); //主机要生成一个写0 时间隙,必须把数据线拉到低电平并保持至少60μs,这里64us

ds=1;

_nop_();

_nop_();

}

}

}

void tem_change() //温度转换{

ds_reset();

delay(3); //约2ms

ds_write_byte(0xcc); //写跳过读ROM 指令

ds_write_byte(0x44); //写温度转换指令

}

/*----------------------------------------

获得温度:

------------------------------------------*/

uint get_temperature() //读取寄存器中存储的温度数据

{

float wendu;

uchar a,b;

ds_reset();

delay(3); //约2ms

ds_write_byte(0xcc);

ds_write_byte(0xbe);

a=ds_read_byte(); //读低八位

b=ds_read_byte(); //读高八位

temp=b;

temp<<=8; //两个字节组合为一个字节

temp=temp|a;

wendu=temp*0.0625; //一次读取十六位,之后将低11位转换为十进制后乘以0.0625便使所测实际温度

temp=wendu*100+0.5; // 乘以100表示读取小数点后面2位,+0.5表示四舍五入

return temp; //temp是整型

}

void display_temp()

{

Displayonechar(9,1,(temp/1000)%10+0x30);

Displayonechar(10,1,(temp/100)%10+0x30);

Displayonechar(11,1,0x2e);

Displayonechar(12,1,(temp/10)%10+0x30);

Displayonechar(13,1,temp%10+0x30);

Displayonechar(14,1,0xdf);

Displayonechar(15,1,'C');

}

5.断电保存处理模块

//寄存器定义,因为头文件里面没有这个定义

sfr isp_data=0xe2;

sfr isp_addrh=0xe3;

sfr isp_addrl=0xe4;

sfr isp_cmd=0xe5;

sfr isp_trig=0xe6;

sfr isp_contr=0xe7;

//这断话要看看

//擦除片内EEPROM的一个扇区

//擦除只能以扇区为最小单位进行,没法只擦除一个字节

//一个扇区是512个字节

//本函数参数里面的地址落在哪个扇区,则该扇区内数据都将被擦除

//例如:STC89C52RC片内EEPROM第一扇区开始地址为0x2000,结束地址为0x21ff

//如果调用delete_add_data(2001); 则第一扇区内数据都将被擦除

//擦除成功后,该扇区内各字节都将变为0xff

void delete_add_data (unsigned int address) //擦除扇区

{

unsigned char i;

isp_addrl=address;

isp_addrh=address>>8;

isp_contr=0x01;

isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if

SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz isp_cmd=0x03; //擦除扇区命令

isp_trig=0x46;

isp_trig=0xb9;

for(i=0;i<3;i++);

isp_addrl=0xff;

isp_addrh=0xff;

isp_contr=0x00;

isp_cmd=0x00;

isp_trig=0x00;

}

//对STC片内EEPROM的指定地址写入数据(即,字节编程)。

//注意:字节编程是指将eeprom的1写成1或0,将0写成0,而无法将0写成

//所以,在写入数据前,一定要用扇区擦除将所有字节变为0xff

void write_add_data(unsigned int address, unsigned char write_data)

{

unsigned char i;

isp_data=write_data;

isp_addrl=address;

isp_addrh=address>>8;

isp_contr=0x01;

isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if

SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz isp_cmd=0x02; //对flash编程命令

isp_trig=0x46;

isp_trig=0xb9;

for(i=0;i<3;i++);

isp_addrl=0xff;

isp_addrh=0xff;

isp_contr=0x00;

isp_cmd=0x00;

isp_trig=0x00;

}

//读取STC单片机内部EEPROM的一个字节

//主要不同的STC单片机EEPROM起始地址不同

//例如:STC89c52RC的片内EEPROM起始地址为0x2000

unsigned char read_add_data(unsigned int address)

{

unsigned char i,z;

isp_addrl=address;

isp_addrh=address>>8;

isp_contr=0x01;

isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if

SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz isp_cmd=0x01; //读

isp_trig=0x46;

isp_trig=0xb9;

for(i=0;i<3;i++);

isp_addrl=0xff;

isp_addrh=0xff;

isp_contr=0x00;

isp_cmd=0x00;

isp_trig=0x00;

z=isp_data;

return(z);

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

基于单片机的测速仪设计

基于单片机的测速仪设计

————————————————————————————————作者:————————————————————————————————日期: ?

华北理工大学轻工学院 Qing Gong CollegeNorthChinaUniversityof Science and Technology 课程设计报告 课程名称:EDA辅助设计 项目名称:基于单片机的测速仪设计 专业班级: 学号: 姓名: 成绩:

一、项目说明 转速是工程中应用非常广泛的一个参数, 其测量方法较多,而模拟量的采集和模拟处理一直是转速测量的主要方法,目前这种测量方法已不能适应现代科技发展的要求。随着大规模及超大规模集成电路的发展,使得全数字测量仪器越来越普及,其转速测量仪器也可以用全数字化处理。在测量范围和测量精度方面都有很大提高。因此,本次设计的目的是:对各种测量转速的方法加以分析,针对不同的应用环境,利用AT89S52系列单片机设计一种全数字化测速仪器。本设计在通电后就会开始运行进行测速,由数码管进行显示当前转速,按下S1将会重置。 二、项目原理图 1、原理图

图1 项目原理图 2、各部分说明 (1)电源部分 DC002插座是带有插入断开开关,中心脚为1脚,下面为2脚,侧面为3脚,插入时3脚断开。的一款给单片机提供5v电压的电源。 图2电源 (2)STC89C52芯片 STC89C52是一个低功耗,高性能CMOS8位单片机,片内含具有如下特点:40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDTC)电路,片内时钟振荡器。此外,STC89C52设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)

电路实物图如下图所示: C 语言程序如下所示: /******************************************************************** zicreate ----------------------------- Copyright (C) https://www.360docs.net/doc/0d15916953.html, -------------------------- * 程序名; 基于DS18B20的测温系统 * 功 能: 实时测量温度,超过上下限报警,报警温度可手动调整。K1是用来 * 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限 * 调节模式。在正常模式下,按一下K2进入查看上限温度模式,显示1s 左右自动 * 退出;按一下K3进入查看下限温度模式,显示1s 左右自动退出;按一下K4消除 * 按键音,再按一下启动按键音。在调节上下限温度模式下,K2是实现加1功能, * K1是实现减1功能,K3是用来设定上下限温度正负的。 * 编程者:Jason * 编程时间:2009/10/2 *********************************************************************/ #include //将AT89X52.h 头文件包含到主程序 #include //将intrins.h 头文件包含到主程序(调用其中的_nop_()空操作函数延时) #define uint unsigned int //变量类型宏定义,用uint 表示无符号整形(16位) #define uchar unsigned char //变量类型宏定义,用uchar 表示无符号字符型(8位) uchar max=0x00,min=0x00; //max 是上限报警温度,min 是下限报警温度 bit s=0; //s 是调整上下限温度时温度闪烁的标志位,s=0不显示200ms ,s=1显示1s 左右 bit s1=0; //s1标志位用于上下限查看时的显示 void display1(uint z); //声明display1()函数 #include"ds18b20.h" //将ds18b20.h 头文件包含到主程序 #include"keyscan.h" //将keyscan.h 头文件包含到主程序 #include"display.h" //将display.h 头文件包含到主程序

基于51单片机的温度控制系统

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王*

毕业论文设计 基于51单片机的温度控制系统

摘要 在日常生活中温度在我们身边无时不在,温度的控制和应用在各个领域都有重要的作用。很多行业中都有大量的用电加热设备,和温度控制设备,如用于报警的温度自动报警系统,热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,这些都采用单片机技术,利用单片机语言程序对它们进行控制。而单片机技术具有控制和操作使用方便、结构简单便于修改和维护、灵活性大且具有一定的智能性等特 点,可以精确的控 制技术标准,提高了温控指标,也大大的提高了产品的质量和性能。 由于单片机技术的优点突出,智能化温度控制技术正被广泛地采用。本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现。采用温度传感器DS18B20 采集温度数据,7段数码管显示温度数据,按键设置温度上下限,当温度低于设定的下限时,点亮绿色发光二极管,当温度高于设定的上限时,点亮红色发光二极管。给出了系统总体框架、程序流程图和Protel 原理图,并在硬件平台上实现了所设计功能。 关键词:单片机温度控制系统温度传感器

Abstract In daily life, the temperature in our side the ever-present, the control of the temperature and the application in various fields all have important role. Many industry there are a large number of electric heating equipment, and the temperature control equipment, such as used for alarm automatic temperature alarm systems, heat treatment furnace, used to melt metal crucible resistance furnace, and all kinds of different USES of temperature box and so on, these using single chip microcomputer, using single chip computer language program to control them. And single-chip microcomputer technology has control and convenient in operation, easy to modify and maintenance of simple structure, flexibility is large and has some of the intelligence and other characteristics, we can accurately control technology standard to improve the temperature control index, also greatly improve the quality of the products and performance. Because of the advantages of the single chip microcomputer intelligent temperature control technology outstanding, is being widely adopted. This paper introduces the temperature control based on single chip microcomputer AT89C51 design scheme of the system and the hardware and software implementation. The temperature sensor DS18B20 collection temperature data, 7 period of digital pipe display, the upper and lower limits of temperature button when temperature below the setting of the lower limit, light green leds, when the temperature is higher than the set on the limit, light red leds. Given the system framework and program flow chart and principle chart, and in Protel hardware platform to realize the function of the design. Keywords:SCM Temperature control system Temperature sensors

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

基于AT89C5单片机的数字温度计设计

基于AT89C5单片机的数字温度计设计

CHANGZHOU INSTITUTE OF TECHNOLOGY 科研实践 题目:基于单片机的数字温度计的设计

目录 目录 (2) 1.绪论 (3) 1.1课题研究背景及意义 (3) 1.2课题研究的内容 (3) 2.数字温度计的系统概论 (5) 2.1系统的功能 (5) 2.2温度计的分析 (5) 3.设计方案和要求 (6) 3.1设计任务和要求 (6) 3.2元器件的选取 (6) 3.3系统最终设计方案 (7) 4.硬件设计 (8) 4.1总体设计结构图 (8) 4.2硬件电路概述 (8) 4.2.1最小系统 (8) 4.2.2输入电路设计 (11) 4.2.3输出电路设计 (12) 5.硬件仿真 (15)

6.实物制作 (18) 6.1电路板焊接 (18) 6.2电路板调试 (19) 7.小结 (20) 附录 (21) 1.参考文献 (21) 2.原理图 (22) 3.元器件清单 (23) 4.软件程序 (24) 5.实物图 (30) 1.绪论 1.1课题研究背景及意义 单片机技术作为计算机技术的一个分支,广泛地应用于工业控制,智能仪器仪表,机电一体化产品,家用电器等各个领域。“单片机原理与应用”在工科院校各专业中已作为一门重要的技术基础课而普遍开设。学生在课程设计,毕业设计,科研项目中会广泛应用到单片机知识,而且,进入社会后也会广泛接触到单片机的工程项目。鉴于此,提高“单片机原理及应用”课的教学效果,让学生参与课程设计

实习甚为重要。单片机应用技术涉及的内容十分广泛,如何使学生在有限的时间内掌握单片机应用的基本原理及方法,是一个很有价值的教学项目。为此,我们进行了“单片机的学习与应用”方面的课程设计,锻炼学生的动脑动手以及协作能力。 单片机课程设计是针对模拟电子技术,数字逻辑电路,电路,单片机的原理及应用课程的要求,对我们进行综合性实践训练的实践学习环节,它包括选择课设任务、软件设计,硬件设计,调试和编写课设报告等实践内容。通过此次课程设计实现以下三个目标:第一,让学生初步掌握单片机课程的试验、设计方法,即学生根据设计要求和性能约束,查阅文献资料,收集、分析类似的相关题目,并通过元器件的组装调试等实践环节,使最终硬件电路达到题目要求的性能指标;第二,课程设计为后续的毕业设计打好基础,毕业设计是系统的工程设计实践,而课程设计的着眼点是让学生开始从理论学习的轨道上逐渐引向实际运用,从已学过的定性分析、定量计算的方法,逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施方法。第三,培养学生勤于思考乐于动手的习惯,同时通过设计并制作单片机类产品,使学生能够自己不断地学习接受新知识(如在本课设题目中存在智能测温器件DS18B20,就是课堂环节中不曾提及的“新器件”),通过多人的合作解决现实中存在的问题,从而不断地增强学生在该方面的自信心及兴趣,也提高了学生的动手能力,对学生以后步入社会参加工作打下一定良好的实践基础。 1.2课题研究的内容 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数 字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机喜爱的硬 件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也进 行一一介绍,该系统可以方便的是实现温度采集和显示,并可以根据需要任意 设定上下限报警温度,它使用起来方便,具有精度高、量程宽、灵敏度高、体 积小、功耗低等优点,适合我们日常生活和工农业生产中的温度测量,也可以 当做温度处理模块嵌入其他系统中,作为其他主系统的辅助扩展。DS18B20和AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合 与恶劣环境下进行现场温度测量,有广泛的应用前景。 本设计首先是确定目标,气候是各个功能模块的设计,再在Proteus软件上 进行仿真,修改,仿真。 本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范 围内时,可以报警。

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下: ①数码管或液晶显示屏显示室内当前的温度; ②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键; ③DS18B20温度采集; ④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。 2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。 方案一:使用LED数码管显示采集温度和设定温度; 方案二:使用LCD液晶显示屏来显示采集温度和设定温度。 LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用RT1602C。

3.硬件设计 根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图1所示: 图1 硬件电路设计框图 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2所示。 单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一 起形成了一个自激振荡电路,为单片机提供时钟源。 复位电路 复位是单片机的初始化操作,其作用是使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同时也为了系统调试方便,需要设计一个复位电路。 单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统 图2 单片机内部时钟方式电路 图3 单片机按键复位电路

最全最好的课程设计-51单片机电子日历时钟( 含源程序)

LED日历时钟课程设计 院系: 班级: 姓名: 学号: 指导教师: 2012 年06 月16 日

目录

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 第一章前言 数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便,但是人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时间,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。 AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k B ytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

基于51单片机及DS18B20温度传感器的数字温度计设计

基于51单片机及DS18B20温度传感器的数字温度计设计

摘要 本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS 公司的DS18B20。本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。 单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。 本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。本设计的显示模块是用四位一体的数码管动态扫描显示实现的。在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。 关键词:单片机、数字温度计、DS18B20、AT89S52

目录 1 概述 ................................................................................................................................................................. - 1 - 1.1系统概述 ................................................................................................................................................. - 1 - 2 系统总体方案及硬件设计 ............................................................................................................................... - 2 - 2.1 系统总体方案 ........................................................................................................................................ - 2 - 2.1.1系统总体设计框图 ...................................................................................................................... - 2 - 2.1.2各模块简介 .................................................................................................................................. - 2 - 2.2 系统硬件设计 ........................................................................................................................................ - 5 - 2.2.1 单片机电路设计 ......................................................................................................................... - 5 - 2.2.2 DS18B20温度传感器电路设计.................................................................................................. - 6 - 2.2.3 显示电路设计 ............................................................................................................................. - 6 - 2.2.4 按键电路设计 ............................................................................................................................. - 7 - 2.2.5 报警电路设计 ............................................................................................................................. - 8 - 3 软件设计 ........................................................................................................................................................... - 9 - 3.1 DS18B20程序设计................................................................................................................................. - 9 - 3.1.1 DS18B20传感器操作流程.......................................................................................................... - 9 - 3.1.2 DS18B20传感器的指令表.......................................................................................................... - 9 - 3.1.3 DS18B20传感器的初始化时序................................................................................................ - 10 - 3.1.4 DS18B20传感器的读写时序.................................................................................................... - 10 - 3.1.5 DS18B20获取温度程序流程图................................................................................................ - 11 - 3.2 显示程序设计 ...................................................................................................................................... - 13 - 3.3 按键程序设计 ...................................................................................................................................... - 13 -4实物制作及调试 .............................................................................................................................................. - 14 -5电子综合设计体会 .......................................................................................................................................... - 15 -参考文献 ............................................................................................................................................................. - 16 -附1 源程序代码 .............................................................................................................................................. - 17 -附2 系统原理图 .............................................................................................................................................. - 32 -

基于51单片机的温度警报器的设计

西安文理学院物理与机械电子工程学院课程设计任务书

目录 摘要 (3) 1 引言 (3) 1.1课题背景 (3) 1.2研究内容和意义 (5) 2 芯片介绍 (5) 2.1 DS18B20概述 (5) 2.1.1 DS18B20封装形式及引脚功能 (6) 2.1.2 DS18B20内部结构 (6) 2.1.3 DS18B20供电方式 (9) 2.1.4 DS18B20的测温原理 (10) 2.1.5 DS18B20的ROM命令 (11) 2.2 AT89C52概述 (13) 2.2.1单片机AT89C52介绍 (13) 2.2.2功能特性概述 (13) 3 系统硬件设计 (13) 3.1 单片机最小系统的设计 (13) 3.2 温度采集电路的设计 (14) 3.3 LED显示报警电路的设计 (15) 4 系统软件设计...................................................15 4.1 流程图........................................................15 4.2 温度报警器程序.................................................16 4.3 总电路图..................................................... 19 5总结 (20)

摘要 随着时代的进步和发展,温度的测试已经影响到我们的生活、工作、科研、各个领域,已经成为了一种非常重要的事情,因此设计一个温度测试的系统势在必行。 本文主要介绍了一个基于AT89C52单片机的数字温度报警器系统。详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度的采集和报警,并可以根据需要任意上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当做温度处理模块潜入其他系统中,作为其他主系统的辅助扩展。DS18B20与AT89C52结合实现最简温度报警系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 关键词:单片机;温度检测;AT89C52;DS18B20; 1 引言 1.1课题背景 温度是工业对象中主要的被控参数之一,如冶金、机械、食品、化工各类工业生产中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的温度处理要求严格控制。随着科学技术的发展,要求温度测量的范围向深度和广度发展,以满足工业生产和科学技术的要求。 基于AT89C51单片机提高了系统的可移植性、扩展性,利于现代测控、自动化、电气技术等专业实训要求。以单片机为核心设计的温度报警器,具有安全可靠、操作简单方便、智能控制等优点。 温度对于工业生产如此重要,由此推进了温度传感器的发展。温度传感器主要经过了三个发展阶段[1]: (1)模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、

基于51单片机的心率体温测试系统

摘要 本文介绍了一种基于51单片机的心率体温采集系统。首先介绍了51系列单片机的内部相关配置、工作原理以及编程方法,其次介绍了温度传感器PT100的相关测温方法以及通过红外光电传感器TCRT5000对射的方法来抓取人体脉搏信号。此次设计的电路部分主要包括:传感测量电路、放大电路、滤波整形电路、AD转换电路、计数显示电路、控制电路、电源供电电路等。通过按键开始测试,将PT100及TCRT5000输入的微弱信号进行放大整形,最后AD采集转换传送给单片机,在LCD1602上显示相关体温及心率信息。 本次硬件设计基于比较稳定可行、低成本的设计思想,软件设计采用模块化的设计方法,并且详细分析了红外传感器TCRT5000应用于心率测量上以及PT100应用于温度测量上的原理及优点,阐述了其他各配合电路的组成与工作特点,并且通过仿真进行电路的可行性验证,最后完成实物电路的设计,使得本次课题的预期结果得以实现。 关键词:51单片机;传感器;仿真;AD转换 -I

Abstract This paper introduced a heart rate and body temperature acquisition system that based on 51 single chip microcomputer. First the internal configurations of 51 single chip microcomputer are introduced. And the paper also tell how 51 single chip microcomputer works and how can we program on it. Then the method of using temperature sensor PT100 to get body temperature is introduced, and we use infrared photoelectric sensor TCRT5000 to get the pulse signal of human body.The design of the circuit mainly comprises sensing circuit , amplifying circuit, filtering and shaping circuit, AD converting circuit, counting and displaying circuit, controlling circuit, power supplying circuit and so on. When the keyboard is pressed, the system starts to get signal. The small signal from PT100 and TCRT5000 will be amplified and shaped. Then ad converter will change the analog signal into digital signal and send to 51 single chip microcomputer . At last LCD1602 will display the information of body temperature and heart rate. Keywords: Piezoelectric sensors;control circuit;counters;Multisim2001 simulation software control circuit. -II

相关文档
最新文档