基于STM32F030的通用电动车行驶状态监测仪_第1页
基于STM32F030的通用电动车行驶状态监测仪_第2页
基于STM32F030的通用电动车行驶状态监测仪_第3页
基于STM32F030的通用电动车行驶状态监测仪_第4页
基于STM32F030的通用电动车行驶状态监测仪_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

成绩:分湖南科技大学课程设计名称:专业综合课程设计题目:通用电动车行驶状态监测仪学生姓名:黄志恒专业:测控技术与仪器班级:一班学号:1003030113指导教师:戴巨川日期:2023年01月09日机电工程学院机电工程学院课程设计说明书课程设计说明书湖南科技大学机电工程学院课程设计任务书课程设计名称专业综合课程设计课程设计题目通用电动车行驶状态监测仪学生姓名黄志恒年级四专业测控技术与仪器学号1003030113指导教师戴巨川单位湖南科技大学机电工程学院课程设计起止日期设计内容:1、硬件电路设计2、软件设计〔1和2共3人〕3、原理图仿真〔参数分析〕与PCB板设计4、电源电路设计任务与要求:记录电动车已经行驶路程,当前行驶速度,根据单位里程内耗电量预测电动车可行驶路程,少于N公里报警。主要参考资料:[1]山东GS公司.MytySealMSE系列铅蓄电池说明书[Z].1998.[2]美.科蒂斯(CURTIS)仪器公司.关于电池电量监控仪表说明书[Z].1998.[3]北京卫信杰科技开展.LCM103说明书[Z].1998.[4]武汉力源.TLC1543、X24C45说明书[Z].摘要论文以通用电动车行驶状态参数监测为开发背景,以意法半导体公司的STM32F030R8T6芯片为控制核心,实现了通用电动车在行驶过程中的速度检测、行驶里程的计算以及电动车电瓶的剩余电量值,并根据剩余电量值预报电动车的剩余行驶里程,然后通过人机交互界面进行参数的实时显示。在设计工程中主要完成了电源电路设计,微处理器根本工作电路设计,以光电门为传感器的行驶速度和行驶里程检测电路设计,基于A/D转换的电瓶电量检测电路,实时时钟电路设计,按键及TFTLCD液晶显示电路设计。最后,在硬件系统上通过软件编程实现了设计的验证。关键字:STM32F030R8T6;速度、里程检测;电量监测;剩余路程预报。NotePaperwithgeneralbackgroundforthedevelopmentofelectricvehicledrivingstateparametermonitoring,tostmicroelectronicscompanySTM32F030R8T6chipasthecoretorealizethegeneralelectricvehicleintheprocessofdrivingspeeddetection,mileagecalculation,andtheremainderoftheelectricvehiclebatterypowervalue,andaccordingtotheresidualelectricityquantityforecasttheremainderoftheelectriccarmileage,andthenthroughthehuman-computerinteractioninterfaceparametersreal-timedisplay.Indesignengineeringmainlycompletedthepowercircuitdesign,basicworkingcircuitdesign,microprocessorbasedonphotoelectricdoorsensorsdetectthespeedandmileagecircuitdesign,batterypowerdetectionbasedonA/Dconversioncircuit,real-timeclockcircuitdesign,buttonsandTFTLCDliquidcrystaldisplaycircuitdesign.Finally,onthehardwaresystemthroughsoftwareprogrammingtoachievethedesignverification.

Keywords:STM32F030R8T6;Speed,mileagedetection;Powermonitoring;Theremainingdistanceforecast.目录第一章绪论……………1第二章通用电动车行驶状态监测仪总体方案设计…22.1总体设计方案……………22.2控制芯片选择……………32.3STM32F030R8T6的特点和资源…………32.4通用电动车行驶状态监测仪各功能模块………………4第三章通用电动车行驶状态监测仪硬件设计………53.1STM32F030R8T6根本外围电路设计……53.2电源电路设计……………73.3按键和TFTLCD显示模块电路设计模块电路设计……83.4红外光电检测模块电路设计……………93.5电池电量检测模块电路设计……………9通用电动车行驶状态监测仪软件设计………104.1开发环境MDK5.0介绍…………………114.2各模块初始化程序的设计………………114.3上电自检程序的设计……………………134.4GUI函数设计……………144.5MAIN函数设计……………15设计总结及体会………………17参考文献………………18附件一作品实物图……………………19附件二作品总电路原理图……………20绪论在新电池和驱动机械马达技术日益成熟的开展之下,电动车已成为未来交通工具的主流趋势。在电动车领域,海外开展较早的要数日本、奥利地、德国、台湾等国家和地区。电动车是以蓄电池作为主要能源来源,具有其他交通工具不可替代的优势。据全国各大城市的市民需求调查,高达76%的市民有将电动车作为代步交通工具的需求。电动车行车监测仪安装在电动车上是电动车的一个重要应用。它能精确显示时速、指示电能状态等。监测仪的这些功能使用户可以便利有效地维护电动车的使用同时为广阔电动车提供了其驾驶活动的反应信息带来人身平安的行车保障对保障道路交通平安起到了直接的作用。1.1电动自行车行车监测仪的开展今后,电动车是一个大有可为的主流产业,在我国有很大的市场潜力。无论从环保角度还是从能源角度来看,未来的电动汽车都需要有一个大的开展,可能成为未来新的经济增长点。然而,目前市场上的一些电动车,控制面板显示的内容比拟简单,功能单一,不具备电动车剩余路程预报,不能很好的反映当前的行车状态,给使用者带来较大不便。举个简单的例子来说,目前的电动车没有电动车剩余路程显示这样的功能,我们在驾车时便无法直观的了解当前的车量还能行驶多少路程,容易造成车辆行走的半路上没电而抛锚,甚至造成平安事故。因此完善的电动车监测仪的功能已成为人们的急迫要求。同时,完善电动车监测仪的功能也在无形中增加了电动车行业的市场竞争力,起到一个良性的循环。1.2本文的研究内容本文研究的主要内容是电动车行车监测仪的设计。监测仪具备有以下功能①时速、累计总里程数存储与显示。②电能状态指示目前剩余电量。③剩余电量可行驶路程预报。在学习和借鉴国内外在电动车监测仪领域已有的成熟经验的根底上以32位单片机STM32F030R8T6为核心对以上各功能提出整体的解决方案,力争使本产品做到操作简便,性能稳定耐用同时尽可能降低本钱,增加市场竞争力。总体方案设计本章着重介绍了通用电动车行行驶状态监测仪的系统总体框架,以及器件选型。系统可分为7个模块,分别为电源模块、微处理器最小工作系统、速度检测模块、电量检测模块、数据存储、时钟模块、键盘和TFTLCD液晶显示模块。2.1总体设计方案STM32F030R8T6微处理器STM32F030R8T6微处理器光电门速度检测单元键盘和LCD显示单元光电门速度检测单元键盘和LCD显示单元EEPROM数据存储单元电池电量检测单元EEPROM数据存储单元电池电量检测单元电源模块RTC实时时钟模块电源模块RTC实时时钟模块图2-1系统整体框图此电动车行车监测仪安装在电动车上。具有时速显示、里程数显示、剩余电能状态指示、剩余可行驶路程显示等一系列功能。为广阔电动车提供了其驾驶活动的反应信息为其带来最大程度行车平安的保障,并且便于电动车的日常维护。主要工作流程见下:时速的测量:使用红外光电传感器实现。车轮每转动45°光电传感器向核心局部STM32F030R8T6微处理器发出一个脉冲信号。微处理器使用定时器记录一定时间内的脉冲总数,做出相应处理,得出时速并显示。此处处理的过程需要用到车轮尺寸这个量,然而不同的电动车车轮尺寸大小不同。所以监测仪支持车轮尺寸的手工设定,通过使用键盘输入实现此项功能的设定。以适用于不同电动车的使用需求。里程数的测量:建立在测得的时速之上。结合已经测得的时速以及定时器的定时长度,累计得到行车里程数显示。并使用EEPROM进行存储。保证每次电动车断电后上一次的行车里程数量不会丧失进行累加。电能状态的指示,通过STM32F030R8T6微处理器内部的AD模块采集电池的输出电压,并结合电池参数计算电池的剩余电量并通过TFTLCD进行显示和预警。剩余行驶路程预报:建立在测得的剩余电量的根底之上。结合已经测得的剩余电量,以及电动车的电动机平均功率,计算得到剩余行车路程数显示。2.2控制芯片选择处理器作为一个控制系统的核心。现在市场比拟通用的51系列单片机,51系列技术比拟成熟,应用比拟广泛,网上资源较多。但此系列单片机是8位机,处理速度不是很快,资源不够充足,而且其最小系统的外围电路都要自己设计和制作,使用起来不是很方便。然而ST意法半导体公司于2023年7月发布的STM32F030,拥有32位的性能,而价格仅为32美分,是该产品的最大亮点。STM32F030超值系列微控制器让低端嵌入式设计使用的极简设计方法成为历史。通过降低8位用户熟知的资源限制,该系列产品有助于简化设计同时提高应用性能。在扩展系统的同时硬件变化很小。该系列微控制器在不牺牲性能的前提下,具有传统8位架构的实惠价格。

STM32F030超值系列具有8位微控制器的便利性和简易性,除价格实惠的探索套件和可支持ARMCortex-M的通用工具外,开发生态系统还提供100%免费的开发工具链。2.3STM32F030R8T6的特点和资源如图2-2所示为STM32F030内核资源图。图2-2STM32F030内核资源图STM32F030R8T6微控制器采用高性能的ARMCortex™-M0的32位RISC内核,工作于48MHz频率。内置高速的嵌入式64KB闪存和8KBRAM。采用64引脚封装。集成55个快速I/O口。提供标准的通信接口〔两个I2Cs,两个SPI,一个I2S,1个HDMICEC,两个USART〕。1个1Msample/s12位模拟数字转换器,五个通用16位定时器,一个32位定时器和一个高级PWM电机控制定时器以及一个5通道DMA。STM32F030R8T6微控制器工作在-40至+85℃和-40至+105℃温度范围,2.0至3.6V电源电压。具有一套全面的为低功耗应用设计准备的省电模式。2.4通用电动车行驶状态监测仪各功能模块1、键盘输入及显示输出模块实现车轮尺寸设定、时钟设定等功能共需4个键盘输入量,可以选择,4个按钮接在I/O口上作为中断输入。显示局部选用并行的液晶屏显示。这样不仅可以提高显示速度,而且还能做出美观的人机交互界面。2、测量时速单元光电传感器通常用于测速环节,操作简便,体积小巧,经济实用。测速环节采用光电传感器。电能指示单元电能指示单元由纯硬件电路构成使用运放集成电路实现。LM324为四运放集成电路采用14脚双列直插塑料封装。内部有四个运算放大器有相位补偿电路。电路功耗很小,工作电压范围宽。选用LM324。4、EEPROM存储单元采用STM32F030R8T6微控制器内部flash模拟EEPROM存储单元,采用内部32位数据总线能够同时传输一个字的32个位,速度很快。同时,不需要外扩EEPROM芯片,节约了本钱,又减少了微处理器资源的浪费。通用电动车行驶状态监测仪硬件设计如图3-1所示,为通用电动车行驶状态监测仪硬件系统的整体电路图。包括STM32F030R8T6微处理器最小工作电路、电源电路、复位电路、按键和液晶显示电路、光电测速电路和电池电量检测电路。图3-1硬件系统整体电路图3.1STM32F030R8T6根本外围电路设计该设计采用意法半导体公司最新推出的基于ARMCortex™-M0的32位RISC内核微处理器STM32F030R8T6芯片,该芯片具有超低的本钱、极低的功耗、丰富的片内外设和方便灵活的开发手段将成为众多微处理器系列中一颗耀眼的新星。如图3-2所示,为STM32F030R8T6微处理器的最小工作电路。如下图,BOOT0引脚用于STM32F030R8T6微处理器启动模式的设置,当BOOT0接高电平时,启动方式为从内部FLASH启动。该控制系统使用8.0MHz的外部晶振作为系统时钟,STM32F030R8T6微处理器内部集成锁相环,通过软件设置锁相环倍频数为6,就可以得到系统的最高工作时钟72Mhz。图中的32.768MHz的外部晶振的作用是通过分频,为STM32F030R8T6微处理器内部集成的RTC实时时钟提供一个精确地1秒钟计时。图3-2STM32F030R8T6最小系统图3-3STM32F030R8T6最小系统实物图复位电路:该系统的复位电路如图3-3所示.图3-4复位电路因为STM32F030是低电平复位的,所以我们设计的电路也是低电平复位的,这里的R33和C23构成了上电复位电路。同时,开发板把TFT_LCD的复位引脚也接在RESET上,这样这个复位按钮不仅可以用来复位MCU,还可以复位LCD。3.2电源电路设计如图3-4所示为系统的电源电路原理图。图3-5电源电路该系统直接采用电动车的电瓶作为电源,因为电动车电瓶的电压均高于系统的工作电压〔5V〕,所以我们通过利用稳压芯片L7805CV 使得到稳定的5V直流电压,用以为该系统提供工作电压。图中的C10/C11两个电容用作滤波功能,以使得到稳定的5V直流电压。3.3按键和TFTLCD显示模块电路设计模块电路设计如图3-5所示为系统的按键模块电路原理图。如图3-6系统的按键模块电路按键模块设计的电路也是高电平触发的,这里的电阻和电容作为硬件辅助消抖。三个按键用于实时时钟的设定。如图3-7所示为TFTLCD显示模块电路原理图设计。图3-7TFTLCD显示模块电路原理图图3-8TFTLCD显示模块实物显示模块采用2.8寸TFTLCD模块,该模块支持65K色显示,显示分辨率为320×240,接口为16位的80并口,自带触摸屏。图中LCD_RD、LCD_WR、LCD_RS、LCD_CS分别为彩屏接口的读写命令线,PA0~PA15为16位的80数据并口,采用16位的80并口有效的提高了显示速度,并且可以轻松设计出丰富多彩的人机交互界面。3.4红外光电检测模块电路设计如图3-9所示为红外光电检测模块电路原理图。图3-9所示为红外光电检测模块电路原理图测速装置在电动自行车控制系统中占有非常重要的地位对测速装置的要求是分辨能力强、高精度和尽可能短的检测时间。应用光电传感器通过测量通光情况来得到稳定的脉冲方波信号,实现车速的测量。光电传感器是利用光电二极管实现光电转换的一种传感器。它具有灵敏度高,抗干扰能力强,线性度好,稳定性高、体积小等特点,在机车控制系统中占有非常重要的地位。脉冲发生器的工作原理是按发电机转速上下每转发出相应数目的脉冲信号。按要求选择或设计脉冲发生器能够实现高性能检测3.5电池电量检测模块电路设计如图3-10所示为电池电量检测模块电路原理图。图3-10电池电量检测模块电路由于STM32F030微处理器的AD模块最大支持的检测电压不超过3.3V,所以通过电阻分压电路使电池输出电压降为3.3V以下,再通过STM32F030微处理器的AD模块的通道10进行采集,从而得到电池输出电压,根据电池输出电压可计算电池的当前电量。通用电动车行驶状态监测仪软件设计如图4-1所示为系统的软件框图。该程序以分模块的形式进行编写,首先上电,然后依次完成系统时钟模块初始化、系统延时函数初始化、LED灯初始化、按键初始化、外部中断初始化、定时器初始化、AD采集模块初始化、存储器初始化、LCD液晶显示初始化。然后通过调用自检测函数完成自检功能。调用GUI函数绘制人机交互界面。最后开启外部中断和定时器中断,在中断效劳函数中检测行驶速度和行驶里程,然后在主函数的循环内完成行驶速度、行驶里程、电池电量以及剩余路程的检测、计算及显示。图4-1软件框图4.1开发环境MDK5.0介绍MDK是ARM公司收购Keil公司以后,基于uVision界面推出的针对ARM7、ARM9、Cortex-M0、Cortex-M1、Cortex-M2、Cortex-M3、Cortex-R4等ARM处理器的嵌入式软件开发工具。MDK-ARM集成了业内最领先的技术,支持ARM7、ARM9和最新的Cortex-M3/M1/M0核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,Keil公司开发的ARM开发工具MDK,是用来开发基于ARM核的系列微控制器的嵌入式应用程序。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包含了工业标准的KeilC编译器、宏汇编器、调试器、实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照方案完成工程。本作品采用MDKμVision4V5.00作为软件开发环境,利用其方便的代码编辑器和工程管理器,以C语言为主要程序语言来进行单片机系统的程序设计。经调试和实时在线仿真,设计的程序已经到达了预期的控制效果,实现了设计的最终目的。4.2各模块初始化程序的设计系统时钟初始化函数SystemInit();voidSystemInit(void){RCC->CR|=(uint32_t)0x00000001;RCC->CFGR&=(uint32_t)0xF8FFB80C;RCC->CR&=(uint32_t)0xFEF6FFFF;RCC->CR&=(uint32_t)0xFFFBFFFF;RCC->CFGR&=(uint32_t)0xFFC0FFFF;RCC->CFGR2&=(uint32_t)0xFFFFFFF0;RCC->CFGR3&=(uint32_t)0xFFFFFEAC;RCC->CR2&=(uint32_t)0xFFFFFFFE;RCC->CIR=0x00000000;SetSysClock();}系统延时初始化函数delay_init()voiddelay_init() { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); fac_us=SystemCoreClock/8000000; fac_ms=(int16_t)fac_us*1000;} LED灯初始化函数LED_Init()voidLED_Init(){ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; GPIO_Init(GPIOC,&GPIO_InitStructure); led_off(LED3|LED4);}按键初始化函数KEY_Init(void)voidKEY_Init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_3; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);}外部中断初始化函数EXTI_KEY_Init(void)voidEXTI_KEY_Init(void){GPIO_InitTypeDefGPIO_InitStructure; EXTI_InitTypeDefEXTI_InitStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_3; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_1);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1);EXTI_InitStructure.EXTI_Line=EXTI_Line1; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel=EXTI0_1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority=0x00; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); }定时器初始化函数TIM3_Init(void)voidTIM3_Init(void){ NVIC_InitTypeDefNVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority=3; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); TIM3->PSC=47999; TIM3->ARR=99; TIM3->DIER|=1<<0; TIM3->CR1|=1<<4; TIM3->CR1|=0x01;}FLASH模拟EEPROM初始化函数FLASH_Init(void)voidFLASH_Init(void){ FLASH_Unlock(); FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPERR); NbrOfPage=(FLASH_USER_END_ADDR-FLASH_USER_START_ADDR)/FLASH_PAGE_SIZE;for(EraseCounter=0;(EraseCounter<NbrOfPage)&&(FLASHStatus==FLASH_COMPLETE);EraseCounter++) {if(FLASH_ErasePage(FLASH_USER_START_ADDR+(FLASH_PAGE_SIZE*EraseCounter))!=FLASH_COMPLETE) while(1){} }}另有AD模块初始化函数ADC_Init()、LCD模块初始化函数LCD_Init〔〕等。由于篇幅问题就不一一列举出来。4.3上电自检程序的设计voidSelf_Test(void){uint32_tdata=0x5555AAAA;delay_ms(50);POINT_COLOR=WHITE; LCD_ShowString(20,50,"CPUtest...",1);delay_ms(100);LCD_ShowString(20,50,"OK!",1);delay_ms(100);LCD_ShowString(20,70,"FLASHtest...",1);FLASH_Write(FLASH_USER_START_ADDR,data);while(FLASH_Read(FLASH_USER_START_ADDR)!=data){LCD_ShowString(20,70,"ERROR!",1);delay_ms(10);}LCD_ShowString(20,70,"OK!",1);delay_ms(100);LCD_ShowString(20,90,"TFTLCDtest...",1);delay_ms(100);LCD_ShowString(20,90,"OK!",1);delay_ms(100);LCD_ShowString(20,110,"RTCtest...",1);delay_ms(100);LCD_ShowString(20,110,"OK!",1); LCD_ShowString(10,130,"PleasetapUSERtocontinue!",1); while(KEY_Scan(0)!=1);}图4-2上电自检实物图3.4GUI函数设计voidGUI_Init(void){ LCD_Clear(LBBLUE); POINT_COLOR=RED; LCD_DrawRectangle(0,0,239,21); LCD_Fill(1,1,238,20,BLUE); LCD_DrawRectangle(99,89,200,110); LCD_Fill(100,90,200,110,GRAYBLUE); LCD_DrawRectangle(99,129,200,150); LCD_Fill(100,130,200,150,GRAYBLUE); LCD_DrawRectangle(99,169,200,190); LCD_Fill(100,170,200,190,GRAYBLUE); LCD_DrawRectangle(99,209,200,230); LCD_Fill(100,210,200,230,GRAYBLUE); POINT_COLOR=BLACK; LCD_ShowString(100,92,".km/h",1); LCD_ShowString(100,132,".km",1); LCD_ShowString(100,172,"mAh",1); LCD_ShowString(100,212,"km",1); POINT_COLOR=GREEN; LCD_ShowChinese(24,40,"通用电动车行驶状态检测仪",0); POINT_COLOR=BLACK; LCD_ShowChinese(30,92,"行驶速度",0); LCD_ShowChinese(30,132,"行驶里程",0); LCD_ShowChinese(30,172,"电池电量",0); LCD_ShowChinese(30,212,"剩余路程",0); POINT_COLOR=RED; LCD_ShowString(20,2,"2023-01-0610:58:49monday",1); LCD_ShowChinese(60,280,"CPU温度:.C",0);}图4-3GUI用户界面实物图3.5MAIN函数设计#include"stm32f0xx.h"#include"delay.h"#include"led.h"#include"key.h"#include"exit.h"#include"timer.h"#include"adc.h"#include"lcd.h"#include"gui.h"#include"flash.h"#definepi3.1415926uint32_tkm_test;intmain(void){ uint8_ti=0; uint32_tx; floatbattery; floatremain_km; float km; floattemperate; floattemp; km_test=0; speed_test=0; SystemInit(); delay_init(); LED_Init(); KEY_Init(); EXTI_KEY_Init(); TIM3_Init(); ADC1_CH_DMA_Config(); x=FLASH_Read(FLASH_KM_TEST_ADDR); FLASH_Init(); if(x>=0XFFFFFFF0) FLASH_Write(FLASH_KM_TEST_ADDR,0); else FLASH_Write(FLASH_KM_TEST_ADDR,x); LCD_Init(); Self_Test(); GUI_Init(); BACK_COLOR=GRAYBLUE; km_test=FLASH_Read(FLASH_KM_TEST_ADDR); while(1) { LCD_Show2Num(108,92,(uint16_t)speed,3,16,0); LCD_Show2Num(140,92,(speed-(uint16_t)speed)*100,2,16,0); km= ((float)(km_test/8)*2*pi*0.28/1000)/100; LCD_Show2Num(108,132,(uint16_t)km,4

温馨提示

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

评论

0/150

提交评论