第一范文网 - 专业文章范例文档资料分享平台

基于单片机的脉搏计

来源:用户分享 时间:2025/5/21 2:05:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

系统仿真图

LCD1LM016LVSSVDDVEERSRWE456RV21k233P1.0P1.1P1.2C1U130pF19XTAL17891011121314D0D1D2D3D4D5D6D7RP1123456789RESPACK-8X1晶振18C230pFXTAL29RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617C310uR1100293031PSENALEEAU42X1VCC1VCC281P1.0P1.1P1.212345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7X2CRYSTAL3X2RSTSCLKI/O576DS1302单片机C60.1uC70.1uR5Q12k7U2:A(V-)R4680KR82k7R7680k1U3:A274HC1473U3:B474HC145U3:C674HC14U2:A4U2:B4D1LED-REDBUZ1C4(1)8550C410u213C510u65R31k蜂鸣器U2:A(V+)R268k8R668k8R9LM3581kLM358 1

元件清单

名称 STC89C52 30PF电容 10UF电容 1000UF电容 1K电阻 10K电阻 10K电位器 DIP40插座 轻触按键 12M晶振 8550 LED LCD1602 蜂鸣器 板子 铜柱 螺帽 33K电阻 68k电阻 150欧姆电阻 2.7K电阻 680K电阻 0.1UF电容 LM358 DIP插座 光电传感器 74HC14 DIP14插座 USB座子 数量 1 2 3 1 2 1 1 1 5 1 1 1 1 1 1 4 4 1 2 1 2 2 3 1 1 1 1 1 1 1

系统源程序

#include #include\#include\

unsigned char time; //定时器1s计数 unsigned char time1; //定时器15s计数 unsigned int count; //中断计数

unsigned int fre=0; //最后计算的脉搏

unsigned char flag=0;//用于忽略第一次的采样结果。

void timer_init(void) //定时/计数器初始化 {

TMOD=0x66; //计数器0工作工作方式2,自动重装初值 TH0=0; //计数器初值为0 TL0=0;

TR0=1; //计数器开始计数 ET0=1; //打开计数器0中断

TH1=0; //计数器初值为0 TL1=0;

TR1=1; //计数器开始计数 ET1=1; //打开计数器0中断

RCAP2H=(65536-62500)/256; //在程序初始化的时候给RCAP2L和RCAP2H赋值,

RCAP2L=(65536-62500)%6; //TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。

TH2=RCAP2H; //12M晶振下每次中断62.5ms TL2=RCAP2L;

ET2=1; //打开定时器2中断 TR2=1; //定时器2开始计时 // EA=1; //开总中断 }

void DisplayInit(void) //初始化LCD和时钟的显示,初始化定时器 {

LCDInit();//液晶初始化 timer_init(); //定时器初始化

LCDDispString(1,1,\显示字符串 LCDDispString(0,2,\显示字符串 LCDDispString(9,1,\显示字符串 LCDDispString(9,2,\显示字符串

1

flag=0;//标志位初始化 }

void main(void) //主函数 {

DisplayInit();//初始化

while(1)//死循环 { if(gFunctionCount == 0)//判断是否为正常显示界面 { ;//空操作 } KeyScan();//键盘扫描子函数

} }

//---------------------------------------------------------------- void timer2(void) interrupt 5 //定时器2中断(62.5ms) {

time++;

TF2=0; //定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零

if (time==16) //定时1s时间到 {

time=0; //计时清0 time1++;

if(time1 == 15) //15S到 { time1 = 0; EA=0; //关中断 if(flag)//判断是否是第一次测量,第一次测量的结果将舍弃 { fre=(long)count*256+TL0; //count*256强制转换成long型,否则将不产生进位 先判断分频后的 fre=fre*4; if(fre<180) { LCDDispString(0,2,\ /Min\ LCDDispNum(0,2,fre/100); LCDDispNum(1,2,fre/10); LCDDispNum(2,2,fre); LCDDispString(3,2,\

1

搜索更多关于: 基于单片机的脉搏计 的文档
基于单片机的脉搏计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4rro96cp5m7f2vc1v0ey6gjog0oh7b0064z_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top