




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林动植物遗传资源保存考核试卷
- 环保型金属防锈剂的制备与应用考核试卷
- 化妆品企业质量风险管理及应对措施考核试卷
- 玻璃纤维增强型复合板材考核试卷
- 电动车电机维修与调试考核试卷
- 玻璃仪器在光学显微镜升级改造中的应用考核试卷
- 电梯门系统的智能故障诊断与预测维护考核试卷
- 卫浴零售商大数据应用实践考核试卷
- 炼油厂智能化与大数据分析应用考核试卷
- 2025会议场地租赁合同协议书
- 《脑脊液幻灯》课件
- 2024年许昌电气职业学院高职单招职业技能测验历年参考题库(频考版)含答案解析
- 湖北省武汉市重点中学5G联合体2023-2024学年高一下学期期末考试英语试卷 含答案
- 2025年重庆中烟工业限责任公司招聘21人高频重点提升(共500题)附带答案详解
- 零星维修工程施工组织设计方案
- 2025年福建省南平事业单位招考笔试高频重点提升(共500题)附带答案详解
- 外墙保温及涂料施工组织设计方案
- 移植排斥反应早期诊断-洞察分析
- 星际分子光谱分析学的研究方法探究系列如下-洞察分析
- 电力系统继电保护知到智慧树章节测试课后答案2024年秋福建水利电力职业技术学院
- IATF16949基础知识培训教材
评论
0/150
提交评论