基于C51单片机的脉搏测量仪设计(5)

1970-01-01 08:00

桂林电子科技大学课程设计(论文)报告用纸 第 18 页 共 26 页

附 录

原理图

桂林电子科技大学课程设计(论文)报告用纸 第 19 页 共 26 页

PCB图

程序代码:

#include #include

#define uchar unsigned char #define uint unsigned int uchar i=0xfe;//显示位选初值 uchar ge,shi,bai;

uint count =887;//脉搏次数 uint t;

uchar disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管编码

桂林电子科技大学课程设计(论文)报告用纸 第 20 页 共 26 页

sbit P0_0=P0^0; //黄灯 sbit P0_1=P0^1; //红灯 sbit P0_2=P0^2; //绿灯 sbit P2_4=P2^4; //按键 //sbit P3_2=P3^2;

sbit P3_6=P2^3; //蜂鸣器 bit BELL=0; //响铃标志

/**************************************/ /* / /* 软件延时函数 /

/* / /**************************************/ void delay10ms(void) {

uchar i,j;

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

for(j=248;j>0;j--); }

/**************************************/ /* / /* 显示函数 / /* / /**************************************/ void display(uchar i,uchar number) {

P2=i;

P1=disp[number]; }

/**************************************/ /* / /* 定时器0中断处理函数 / /* 用于定时一分钟 / /**************************************/

void timer0(void) interrupt 1 {

TH0=0x3c; TL0=0xb0; t++;

if(t==1200) {

桂林电子科技大学课程设计(论文)报告用纸 第 21 页 共 26 页

EA=0; t=0;

bai=count/100;

shi=(count0)/10; ge= (count0);

if(count<60)//设置最低值 {

P0_0=0; P3_6=0; BELL=1; }

else if(count>120) //设置最高值 {

P0_1=0; P3_6=0; BELL=1; } else P0_2=0; EA=1;

TR0=0; //开定时器0

ET0=0; //开定时器0中断 EX0=0; //开外部中断 } }

/**************************************/ /* / /* 定时器1中断处理函数 / /* / /**************************************/

void timer1_int(void) interrupt 3 {

TH1=-5000/256; TL1=-5000%6;

bai=count/100; //提取三位数字 shi=(count0)/10; ge= (count0);

switch(i)//选择数码管位 {

case 0xfe: display(i,ge);break;

桂林电子科技大学课程设计(论文)报告用纸 第 22 页 共 26 页

case 0xfd: display(i,shi);break; case 0xfb: display(i,bai);break; }

i=i<<1; //流水效果 i=i|0x01;

if(i==0xf7) //右移三位后置初值 i=0xfe;

if(BELL) //蜂鸣器响 {

P3_6=0; } }

/**************************************/ /* / /* 初始化函数 / /* / /**************************************/ void init() {

t=0;

TMOD=0x11; //定时器0,1的定时方式1都打开 TH1=-5000/256; //定时器1定时5ms TL1=-5000%6;

TH0=0x3c; //定时器0定时50ms TL0=0xb0;

EA=1; // 开总中断

ET1=1; //开定时器1中断 TR1=1; //开定时器1

TR0=1; //开定时器0

ET0=1; //开定时器0中断

IT0=1; //下降沿促发 EX0=1; //开中断0 }

/**************************************/ /* /

桂林电子科技大学课程设计(论文)报告用纸 第 23 页 共 26 页

/* 按键软件处理函数 / /* / /**************************************/ void key() {

if(P2_4==0) {

delay10ms(); delay10ms(); if(P2_4==0) {

// TR0=1; //开定时器0 // ET0=1; //开定时器0中断 // EX0=1; //开外部中断 init();

count=0; //显示清零 BELL=0; P0=0xff; }

while(P2_4==0);//等待按键释放,如果键未释放则一直在此等待。不过此处开中断非计数可不写 } }

void main() {

//P3_2=0; init();

TR0=0; //关定时器0

ET0=0; //关定时器0中断 EX0=0; //P3_6=0; while(1) {

key(); } }

void int0(void) interrupt 0 {

count++; }


基于C51单片机的脉搏测量仪设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:潍坊历史9班简报

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: