任务 任务 智能小车电池电量的 采集 智能小车电池电量的 采集软件程序 开发 软件程序 开发_第1页
任务 任务 智能小车电池电量的 采集 智能小车电池电量的 采集软件程序 开发 软件程序 开发_第2页
任务 任务 智能小车电池电量的 采集 智能小车电池电量的 采集软件程序 开发 软件程序 开发_第3页
任务 任务 智能小车电池电量的 采集 智能小车电池电量的 采集软件程序 开发 软件程序 开发_第4页
任务 任务 智能小车电池电量的 采集 智能小车电池电量的 采集软件程序 开发 软件程序 开发_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务5-1任务5-1主讲:孙方霞智能小车电池电量的采集智能小车电池电量的采集软件程序开发软件程序开发软件程序设计电池电压检测通道软件程序设计010203软件程序A/D转换芯片程序设计了解XPT2046的工作原理和数字接口时序图,然后进行程序开发数码管显示程序设计直接进行代码的移植和修改根据任务需求,进行主逻辑编写,完成整个任务主函数main软件程序设计软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计电池电压检测通道软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计1软件程序设计1110软件程序设计11100软件程序设计111001软件程序设计11100100软件程序设计111001000xe4软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计采用单片机I/O口模拟SPI的方式实现软件程序设计XPT2046.c/************************************************************文件名:XPT2046.c功能说明:电池电量检测程序作者:HJX版本:V1.0日期:修改记录:************************************************************/#include<reg52.h>//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选/***********************************************************函数名称:SPI_Write函数功能:使用SPI写入数据输入参数:dat:写入数据输出参数:无返回值:无备注:************************************************************/voidSPI_Write(uchardat){uchari;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;

//放置最高位dat<<=1;CLK=0; //上升沿放置数据CLK=1;}}软件程序设计XPT2046.c/************************************************************文件名:XPT2046.c功能说明:电池电量检测程序作者:HJX版本:V1.0日期:修改记录:************************************************************/#include<reg52.h>//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选/***********************************************************函数名称:SPI_Write函数功能:使用SPI写入数据输入参数:dat:写入数据输出参数:无返回值:无备注:************************************************************/voidSPI_Write(uchardat){uchari;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;

//放置最高位dat<<=1;CLK=0; //上升沿放置数据CLK=1;}}/********************************************************函数名称:SPI_Read函数功能:使用SPI读取数据输入参数:无输出参数:dat:读取到的数据返回值:无备注:**********************************************************/uintSPI_Read(void){uinti,dat=0;CLK=0;for(i=0;i<12;i++)

//接收12位数据{dat<<=1;CLK=1;CLK=0;dat|=DOUT;}returndat; }软件程序设计XPT2046.c/************************************************************文件名:XPT2046.c功能说明:电池电量检测程序作者:HJX版本:V1.0日期:修改记录:************************************************************/#include<reg52.h>//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选/***********************************************************函数名称:SPI_Write函数功能:使用SPI写入数据输入参数:dat:写入数据输出参数:无返回值:无备注:************************************************************/voidSPI_Write(uchardat){uchari;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;

//放置最高位dat<<=1;CLK=0; //上升沿放置数据CLK=1;}}/********************************************************函数名称:SPI_Read函数功能:使用SPI读取数据输入参数:无输出参数:dat:读取到的数据返回值:无备注:**********************************************************/uintSPI_Read(void){uinti,dat=0;CLK=0;for(i=0;i<12;i++)

//接收12位数据{dat<<=1;CLK=1;CLK=0;dat|=DOUT;}returndat; }/****************************************************函数名称:Read_AD_Data函数功能:读取触摸数据输入参数:cmd:读取的X或者Y输出参数:endValue:最终信号处理后返回的值返回值:无备注:*****************************************************/uintRead_AD_Data(ucharcmd){uchari;uintAD_Value;CLK=0;CS=0;SPI_Write(cmd);for(i=6;i>0;i--); //延时等待转换结果CLK=1; //发送一个时钟周期,清除BUSY_nop_();_nop_();CLK=0;_nop_();_nop_();AD_Value=SPI_Read();CS=1;returnAD_Value;

}软件程序设计XPT2046.c/************************************************************文件名:XPT2046.c功能说明:电池电量检测程序作者:HJX版本:V1.0日期:修改记录:************************************************************/#include<reg52.h>#include"XPT2046.h"/***********************************************************函数名称:SPI_Write函数功能:使用SPI写入数据输入参数:dat:写入数据输出参数:无返回值:无备注:************************************************************/voidSPI_Write(uchardat){uchari;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;

//放置最高位dat<<=1;CLK=0; //上升沿放置数据CLK=1;}}/********************************************************函数名称:SPI_Read函数功能:使用SPI读取数据输入参数:无输出参数:dat:读取到的数据返回值:无备注:**********************************************************/uintSPI_Read(void){uinti,dat=0;CLK=0;for(i=0;i<12;i++)

//接收12位数据{dat<<=1;CLK=1;CLK=0;dat|=DOUT;}returndat; }/****************************************************函数名称:Read_AD_Data函数功能:读取触摸数据输入参数:cmd:读取的X或者Y输出参数:endValue:最终信号处理后返回的值返回值:无备注:*****************************************************/uintRead_AD_Data(ucharcmd){uchari;uintAD_Value;CLK=0;CS=0;SPI_Write(cmd);for(i=6;i>0;i--); //延时等待转换结果CLK=1; //发送一个时钟周期,清除BUSY_nop_();_nop_();CLK=0;_nop_();_nop_();AD_Value=SPI_Read();CS=1;returnAD_Value;

}#ifndef__XPT2046_H#define__XPT2046_H#include<reg52.h>//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选uintRead_AD_Data(ucharcmd);;//函数的声明XPT2046.h软件程序设计main.c/****************************************************************start_countdown.c功能说明:下载程序后数码管前4位显示电位器检测的AD值,范围是0-4095,

接线说明:

1,单片机-->AD/DAC模块 P34-->DIN P35-->CS P36-->CLK P37-->DOUT

2,单片机-->动态数码管模块 J22-->J6 P22-->J9(A) P23-->J9(B) P24-->J9(C) 作者:HJX版本:V1.0日期:修改记录:*****************************************************************/include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器#include"XPT2046.h" sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;uchardisp[4];ucharcodesmgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(unsignedinti);//函数的声明/****************************************************函数名称:DigDisplay函数功能:数码管显示函数输入参数:输出参数:返回值:备注:*****************************************************/voidDigDisplay(){uchari;for(i=0;i<4;i++){switch(i) //位选,选择点亮的数码管,{case(0): LSA=1;LSB=1;LSC=1;break;//显示第0位case(1): LSA=0;LSB=1;LSC=1;break;//显示第1位case(2): LSA=1;LSB=0;LSC=1;break;//显示第2位case(3): LSA=0;LSB=0;LSC=1;break;//显示第3位 }P0=disp[i];//发送数据delay(100);//间隔一段时间扫描 P0=0x00;//消隐} }软件程序设计XPT2046.c/****************************************************************start_countdown.c功能说明:下载程序后数码管前4位显示电位器检测的AD值,范围是0-4095,

接线说明:

1,单片机-->AD/DAC模块 P34-->DIN P35-->CS P36-->CLK P37-->DOUT

2,单片机-->动态数码管模块 J22-->J6 P22-->J9(A) P23-->J9(B) P24-->J9(C) 作者:HJX版本:V1.0日期:修改记录:*****************************************************************/include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器#include"XPT2046.h" sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;uchardisp[4];ucharcodesmgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(unsignedinti);//函数的声明/****************************************************函数名称:DigDisplay函数功能:数码管显示函数输入参数:输出参数:返回值:备注:*****************************************************/voidDigDisplay(){uchari;for(i=0;i<4;i++){switch(i) //位选,选择点亮的数码管,{case(0): LSA=1;LSB=1;LSC=1;break;//显示第0位case(1): LSA=0;LSB=1;LSC=1;break;//显示第1位case(2): LSA=1;LSB=0;LSC=1;break;//显示第2位case(3): LSA=0;LSB=0;LSC=1;break;//显示第3位 }P0=disp[i];//发送数据delay(100);//间隔一段时间扫描 P0=0x00;//消隐} }/**********************************************************函数名称:delay 函数功能:延时函数输入参数:i输出参数:无返回值:无备注:***********************************************************/voiddelay(unsignedinti){

while(i--);}/****************************************************函数名称:data_process函数功能:数据处理函数输入参数:输出参数:返回值:备注:*****************************************************/voiddata_process(){unttemp;staticuchari;if(i==50){i=0;temp=Read_AD_Data(0x94);//AIN0电位器}i++;disp[0]=smgduan[temp/1000];//千位disp[1]=smgduan[temp%1000/100];//百位disp[2]=smgduan[temp%1000%100/10];//个位disp[3]=smgduan[temp%1000%100%10]; }/****************************************************函数名称:main函数功能:主函数输入参数:输出参数:返回值:备注:*****************************************************/voidmain(){ while(1){datapros(); //数据处理函数DigDisplay();//数码管显示函数 } }软件程序设计XPT2046.c/************************************************************文件名:XPT2046.c功能说明:电池电量检测程序作者:HJX版本:V1.0日期:修改记录:************************************************************/#include<reg52.h>#include"XPT2046.h"//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选/***********************************************************函数名称:SPI_Write函数功能:使用SPI写入数据输入参数:dat:写入数据输出参数:无返回值:无备注:************************************************************/voidSPI_Write(uchardat){uchari;CLK=0;for(i=0;i<8;i++){DIN=dat>>7;

//放置最高位dat<<=1;CLK=0; //上升沿放置数据CLK=1;}}/********************************************************函数名称:SPI_Read函数功能:使用SPI读取数据输入参数:无输出参数:dat:读取到的数据返回值:无备注:**********************************************************/uintSPI_Read(void){uinti,dat=0;CLK=0;for(i=0;i<12;i++)//接收12位数据{dat<<=1;CLK=1;CLK=0;dat|=DOUT;}returndat; }/****************************************************函数名称:Read_AD_Data函数功能:读取触摸数据输入参数:cmd:读取的X或者Y输出参数:endValue:最终信号处理后返回的值返回值:无备注:*****************************************************/uintRead_AD_Data(ucharcmd){uchari;uintAD_Value;CLK=0;CS=0;SPI_Write(cmd);for(i=6;i>0;i--); //延时等待转换结果CLK=1; //发送一个时钟周期,清除BUSY_nop_();_nop_();CLK=0;_nop_();_nop_();AD_Value=SPI_Read();CS=1;returnAD_Value; }#ifndef__XPT2046_H#define__XPT2046_H#include<reg52.h>//---重定义关键词---//#ifndefuchar#defineucharunsignedchar#endif#ifndefuint#defineuintunsignedint#endif#ifndefulong#defineulongunsignedlong#endif//---定义使用的IO口---//sbitDOUT=P3^7; //输出sbitCLK=P3^6; //时钟sbitDIN=P3^4; //输入sbitCS=P3^5; //片选uintRead_AD_Data(ucharcmd);;//函数的声明XPT2046.h/****************************************************************start_countdown.c功能说明:下载程序后数码管前4位显示电位器检测的AD值,范围是0-4095,

接线说明:

1,单片机-->AD/DAC模块 P34-->DIN P35-->CS P36-->CLK P37-->DOUT

2,单片机-->动态数码管模块 J22-->J6 P22-->J9(A) P23-->J9(B) P24-->J9(C) 作者:HJX版本:V1.0日期:修改记录:*****************************************************************/include"reg52.h"//此文件中定义了单片机的一些特殊功能寄存器#include"XPT2046.h" sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;uchardisp[4];ucharcodesmgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};voiddelay(unsignedinti);//函数的声明/****************************************************函数名称:DigDisp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论