《基于单片机的计步器设计及实现毕业设计论文.doc》由会员分享,可免费在线阅读全文,更多与《基于单片机的计步器设计及实现毕业设计论文》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。
1、slay(bs);zongbushu_dislay(zongbushu);}}*******************************voidDelayms(){unsignedchari,j,k;_no_();_no_();i=;j=;k=;do{do{while(k);}while(j);基于单片机计步器的设计}while(i);}*********************************************************************延时微秒(STCCRC@M)**************************************voidDelayus(){_no_();_no_SendACK();}else{基于单片机计步器的设计ADXL_SendACK();}}ADXL_Sto();Delayms();}初始化ADXLvoidInit_ADXL(){Single_Write_ADXL(x,xB);Single_Write_ADXL(xC,x);Single_Write_ADXL(xD,x);Single_Write_ADXL(xE,x);Single_Write_ADXL(xE,x);Single_Write_ADXL(xF,x);Single_Write_ADXL(x,x);}voidData_Convert(){Wbuf[]=BUF[]ltlt|BUF[];Wbuf[]=BUF[]ltlt|BUF[];Wbuf[]=BUF[]ltlt|BUF[];}voidData_Process(){Wordi=;i=Wbuf[]amJudgeP_M;if(i==x)。
2、ss();***********液晶显示部分子程序****************sbitrs=P^;sbiten=P^;ucharcodetable[]={quotbushu:quot};ucharcodetable[]={quotzongbushu:quot};intzongbushu=,bs=;sbitk=P^;sbitk=P^;sbitk=P^;voiddelay(uintx){uinti,j;基于单片机计步器的设计for(i=x;igt;i)for(j=;jgt;j);}voidwrite_com(ucharcom){rs=;P=com;delay();en=;delay();en=;}voidwrite_date(uchardate){rs=;P=date;delay();en=;delay();en=;}voidinit(){write_com(x);write_com(xc);write_com(x);write_com(x);write_com(x);for(num=;numlt;num++)基于单片机计步器的设计{write_date(table[num]);}write_com(x+x);for(num=;numlt;num++){write_date(table[num]);}}voidbushu_dislay(uchardate){ucharqian,bai,shi,ge;qian=date%;bai=date%;shi=date%;ge=date%;write_com(x+);write_date(x+qian);write_date(x+bai);write_date(x+shi)。
3、**************voidADXL_SendACK(bitack){SDA=ack;SCL=;Delayus();SCL=;Delayus();}基于单片机计步器的设计**************************************接收应答信号**************************************bitADXL_RecvACK(){SCL=;Delayus();CY=SDA;SCL=;Delayus();returnCY;}**************************************向IIC总线发送一个字节数据**************************************voidADXL_SendByte(Bytedat){Bytei;for(i=;ilt;i++){datltlt=;SDA=CY;SCL=;Delayus();SCL=;Delayus();}基于单片机计步器的设计ADXL_RecvACK();}从IIC总线接收一个字节数据ByteADXL_RecvByte(){Bytei;Bytedat=;SDA=;for(i=;ilt;i++){datltlt=;SCL=;Delayus();dat|=SDA;SCL=;Delayus();}returndat;}******单字节写入*******************************************voidSingle_Write_ADXL(ByteREG_Address,ByteREG_data){ADXL_Start();ADXL_SendByte(Slave。
4、ddress);ADXL_SendByte(REG_Address);ADXL_SendByte(REG_data);ADXL_Sto();}********单字节读取*****************************************基于单片机计步器的设计ByteSingle_Read_ADXL(ByteREG_Address){ByteREG_data;ADXL_Start();ADXL_SendByte(SlaveAddress);ADXL_SendByte(REG_Address);ADXL_Start();ADXL_SendByte(SlaveAddress+);REG_data=ADXL_RecvByte();ADXL_SendACK();ADXL_Sto();returnREG_data;}连续读出ADXL内部加速度数据,地址范围x~xvoidMultile_read_ADXL(void){Bytei;ADXL_Start();ADXL_SendByte(SlaveAddress);ADXL_SendByte(x);ADXL_Start();ADXL_SendByte(SlaveAddress+);for(i=;ilt;i++){BUF[i]=ADXL_RecvByte();if(i==){ADXL变换器、增益放大、滤波器和温度补偿后以电压信号输出。图ADXL内部结构功能框图所谓的GCell传感器是由半导体材料(多晶硅)经半导体工艺加工得到,其结构可简化为三块电容极板,如图。两端的极板圈定,中间的极板在加速度的作用下,偏离无加速度的位置,这样它到两端极板的距离发生变化,造成电容值的变。
5、;write_date(x+ge);}voidzongbushu_dislay(uchardate){ucharwan,qian,bai,shi,ge;wan=date%;qian=date%;bai=date%;shi=date%;基于单片机计步器的设计ge=date%;SectorErase(x);byte_write(x,zongbushu);write_com(x+x+);write_date(x+wan);write_date(x+qian);write_date(x+bai);write_date(x+shi);write_date(x+ge);}****按键扫描******voidkeyscan(){if(k==){delay();if(k==){while(!k);bs=;}}if(k==){delay();if(k==){基于单片机计步器的设计while(!k);zongbushu=;byte_write(x,zongbushu);write_com(x+x+);}}if(k==){delay();if(k==){while(!k);bs=;zongbushu=;byte_write(x,zongbushu);write_com(x+x+);}}}******主程序********voidmain(){zongbushu=byte_read(x);init();Delayms();基于单片机计步器的设计Init_ADXL();while(){keyscan();Multile_Read_ADXL();Data_Convert();Data_Process();Delayms();bushu_d。
6、。
7、ss();***********液晶显示部分子程序****************sbitrs=P^;sbiten=P^;ucharcodetable[]={quotbushu:quot};ucharcodetable[]={quotzongbushu:quot};intzongbushu=,bs=;sbitk=P^;sbitk=P^;sbitk=P^;voiddelay(uintx){uinti,j;基于单片机计步器的设计for(i=x;igt;i)for(j=;jgt;j);}voidwrite_com(ucharcom){rs=;P=com;delay();en=;delay();en=;}voidwrite_date(uchardate){rs=;P=date;delay();en=;delay();en=;}voidinit(){write_com(x);write_com(xc);write_com(x);write_com(x);write_com(x);for(num=;numlt;num++)基于单片机计步器的设计{write_date(table[num]);}write_com(x+x);for(num=;numlt;num++){write_date(table[num]);}}voidbushu_dislay(uchardate){ucharqian,bai,shi,ge;qian=date%;bai=date%;shi=date%;ge=date%;write_com(x+);write_date(x+qian);write_date(x+bai);write_date(x+shi)。
8、slay(bs);zongbushu_dislay(zongbushu);}}*******************************voidDelayms(){unsignedchari,j,k;_no_();_no_();i=;j=;k=;do{do{while(k);}while(j);基于单片机计步器的设计}while(i);}*********************************************************************延时微秒(STCCRC@M)**************************************voidDelayus(){_no_();_no_SendACK();}else{基于单片机计步器的设计ADXL_SendACK();}}ADXL_Sto();Delayms();}初始化ADXLvoidInit_ADXL(){Single_Write_ADXL(x,xB);Single_Write_ADXL(xC,x);Single_Write_ADXL(xD,x);Single_Write_ADXL(xE,x);Single_Write_ADXL(xE,x);Single_Write_ADXL(xF,x);Single_Write_ADXL(x,x);}voidData_Convert(){Wbuf[]=BUF[]ltlt|BUF[];Wbuf[]=BUF[]ltlt|BUF[];Wbuf[]=BUF[]ltlt|BUF[];}voidData_Process(){Wordi=;i=Wbuf[]amJudgeP_M;if(i==x)。
9、**************voidADXL_SendACK(bitack){SDA=ack;SCL=;Delayus();SCL=;Delayus();}基于单片机计步器的设计**************************************接收应答信号**************************************bitADXL_RecvACK(){SCL=;Delayus();CY=SDA;SCL=;Delayus();returnCY;}**************************************向IIC总线发送一个字节数据**************************************voidADXL_SendByte(Bytedat){Bytei;for(i=;ilt;i++){datltlt=;SDA=CY;SCL=;Delayus();SCL=;Delayus();}基于单片机计步器的设计ADXL_RecvACK();}从IIC总线接收一个字节数据ByteADXL_RecvByte(){Bytei;Bytedat=;SDA=;for(i=;ilt;i++){datltlt=;SCL=;Delayus();dat|=SDA;SCL=;Delayus();}returndat;}******单字节写入*******************************************voidSingle_Write_ADXL(ByteREG_Address,ByteREG_data){ADXL_Start();ADXL_SendByte(Slave。