东莞网站开发教程,网络营销导向企业网站建设的一般原则是什么?,广州o2o网站建设,wordpress中页面编辑一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPU6050角度值送到液晶1602显示。 3、红外传感器检测心率。 4、跌倒远程GSM报警。
二、硬件设计 原理图如下#xff1a;
三、单片机软件设计 1、首先是系统初始化 void LCD_Init() //初始化液晶时间显示 { write_com…一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPU6050角度值送到液晶1602显示。 3、红外传感器检测心率。 4、跌倒远程GSM报警。
二、硬件设计 原理图如下
三、单片机软件设计 1、首先是系统初始化 void LCD_Init() //初始化液晶时间显示 { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x800x10); }
void LCD_Clear(void) { write_com(0x01); } 2、液晶显示程序 void delay(uint z) { uint x,y; for(xz;x0;x–) for(y110;y0;y–); }
void write_com(uchar com) { w0; lcdrs0; P0com; delay(5); lcden1; delay(5); lcden0; } void write_dat(uchar date) { w0; lcdrs1; P0date; delay(5); lcden1; delay(5); lcden0; }
void write_char(uchar x,uchar y,uchar dat) { if (x 0) { write_com(0x80 y); } else { write_com(0xC0 y); } write_dat(dat); }
void write_string(uchar x,uchar y,uchar *s) //显示字符串 { if(x0) write_com(0x80y); else write_com(0xc0y); while(*s) { write_dat(*s); s; } }
void shownum(uchar x,uchar y,int dat,uchar n) //x行 y列 dat 数据位 { if(n5) { if(x0) { write_com(0x80y); //显示湿度值 write_dat(dat%100000/100000x30); write_dat(dat%10000/10000x30); write_dat(dat%1000/1000x30); write_dat(dat%100/100x30); write_dat(dat%100x30); } if(x1) { write_com(0xc0y); //显示湿度值 write_dat(dat%100000/100000x30); write_dat(dat%10000/10000x30); write_dat(dat%1000/1000x30); write_dat(dat%100/100x30); write_dat(dat%100x30); } }
if(n4){if(x0){write_com(0x80y); //显示湿度值write_dat(dat%10000/10000x30);write_dat(dat%1000/1000x30);write_dat(dat%100/100x30);write_dat(dat%100x30);}if(x1){ write_com(0xc0y); //显示湿度值 write_dat(dat%10000/10000x30);write_dat(dat%1000/1000x30);write_dat(dat%100/100x30);write_dat(dat%100x30);}}if(n3){if(x0){write_com(0x80y); write_dat(dat%1000/1000x30);write_dat(dat%100/100x30);write_dat(dat%100x30);}if(x1){ write_com(0xc0y); write_dat(dat%1000/1000x30);write_dat(dat%100/100x30);write_dat(dat%100x30);}} if(n2){if(x0){write_com(0x80y); write_dat(dat%100/100x30);write_dat(dat%100x30);}if(x1){ write_com(0xc0y); write_dat(dat%100/100x30);write_dat(dat%100x30);}}} 3、MPU6050程序 void show_x() { int i; float t; iGetData(ACCEL_XOUT_H); //X 16位 i/64; //转换为10位数据 if(i0) { i-i; // DisplayOneChar(2,1,‘-’); write_com(0xC08); write_dat(0x2D); } else { write_com(0xC08); write_dat(0x2B); } t(float)i*3.9; if(t800) { beep1(); } else beep1; write_dat((uint)t/10000x30); write_dat(0x2e); write_dat((uint)t%1000/1000x30); }
void show_y() { int i; float t; iGetData(ACCEL_YOUT_H); //X 16位 i/64; //转换为10位数据 1024 if(i0) { i-i; // DisplayOneChar(2,1,‘-’); write_com(0xC08); write_dat(0x2D); } else { write_com(0xC08); write_dat(0x2B); } t(float)i*3.9; write_dat((uint)t/10000x30); write_dat(0x2e); write_dat((uint)t%1000/1000x30); }
void show_z() { int i; float t; iGetData(ACCEL_ZOUT_H); //X 16位 i/64; //转换为10位数据 if(i0) { i-i; // DisplayOneChar(2,1,‘-’); write_com(0x802); write_dat(0x2D); } else { write_com(0x802); write_dat(0x2B); // } t(float)i*31; //转化为90度 angle(uint)t/100(uint)t%1000/100; // shownum(0,8,angle,4); write_dat((uint)t/10000x30); write_dat(0x2e); write_dat((uint)t%1000/1000x30); }
void show_sx() { int i; float t; iGetData(GYRO_XOUT_H); //X 16位 i/64; //转换为10位数据 if(i0) { i-i; flag0; anglei; // DisplayOneChar(2,1,‘-’); write_com(0xC08); write_dat(0x2D); //- } else { flag1; anglei; write_com(0xC08); write_dat(0x2B); // } if(i10) beep2(); else beep1; write_dat(i/10000x30); write_dat(i%100/100x30); write_dat(i%100x30); }
void show_sy() { int i; float t; iGetData(GYRO_YOUT_H); //X 16位 i/64; //转换为10位数据 if(i0) { // DisplayOneChar(2,1,‘-’); i-i; flag0; anglei; write_com(0xC08); write_dat(0x2D); } else { flag1; anglei; write_com(0xC08); write_dat(0x2B); } write_dat(i/10000x30); write_dat(i%100/100x30); write_dat(i%100x30); } void show_sz() { int i; float t; iGetData(GYRO_ZOUT_H); //X 16位 i/64; //转换为10位数据 if(i0) { i-i; flag0; anglei; // DisplayOneChar(2,1,‘-’); write_com(0xC08); write_dat(0x2D); } else { flag1; anglei; write_com(0xC08); write_dat(0x2B); } write_dat(i/1000x30);write_dat(i%100/100x30);write_dat(i%100x30);}
4、核心算法程序 void main() { LCD_Init() ; InitMPU6050(); // init_uart(); // Time0_init(); write_string(0,0, Please “); write_string(1,0,” Wait ); delayms(1000); LCD_Clear() ; delayms(500); write_string(0,0,“A:”); write_char(0,5,0xdf) ;
while(1)
{show_z();Alarm(angle);if(displayOK0)//如果显示关{rate 0;}else//如果显示开{rate60000/(time[1]/5time[2]/5time[3]/5time[4]/5time[5]/5); //计算脉搏次数}write_com(0x807);write_dat(rate/1000x30);write_dat(rate%100/100x30);write_dat(rate%100x30);write_dat(/);write_dat(m);write_dat(i);write_dat(n);if(Flag_GPS_OK 1 RX_Buffer[4] G RX_Buffer[6] , RX_Buffer[13] .) //确定是否收到GPGGA这一帧数据{for( i 0; i 68 ; i){Display_GPGGA_Buffer[i] RX_Buffer[i]; }Flag_Calc_GPGGA_OK 1;}if(Flag_Calc_GPGGA_OK 1){Flag_Calc_GPGGA_OK 0;write_com(0x800x40); //设置指针write_dat(Display_GPGGA_Buffer[28]); //N 或者 Swrite_dat(Display_GPGGA_Buffer[17]); //纬度write_dat(Display_GPGGA_Buffer[18]); //纬度write_dat(.); //.write_dat(Display_GPGGA_Buffer[19]); //纬度write_dat(Display_GPGGA_Buffer[20]); //纬度write_dat( ); write_dat(Display_GPGGA_Buffer[42]); //E 或者 Wwrite_dat(Display_GPGGA_Buffer[30]); //经度write_dat(Display_GPGGA_Buffer[31]); write_dat(Display_GPGGA_Buffer[32]); write_dat(.); //. write_dat(Display_GPGGA_Buffer[33]); write_dat(Display_GPGGA_Buffer[34]); }}}
四、 proteus仿真设计 Proteus软件是一款应用比较广泛的工具它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况这样就可以通过软件仿真来验证我们设计的方案有没有问题如果有问题可以重新选择器件连接器件直到达到我们设定的目的避免我们搭建实物的时候如果当初选择的方案有问题我们器件都已经焊接好了再去卸载下去再去焊接新的方案的器件测试这样会浪费人力和物力也给开发者带来一定困惑Proteus仿真软件就很好的解决这个问题我们在设计之初就使用该软件进行模拟仿真测试选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸焊接实物调试最终完成本设计的作品。