电子秤stm32程序
基于STM32F1单片机的电子秤设计

基于STM32F1单片机的电子秤的设计1.本文概述随着技术的进步和电子技术的普及,电子秤已成为日常生活和工业生产中不可或缺的工具。
与传统的机械秤相比,电子秤具有更高的测量精度、更强的功能性和更广泛的应用范围。
本文旨在设计一种基于STM32F1单片机的电子秤。
该设计不仅专注于电子秤的称重和单位转换等基本功能,而且通过使用STM32F1微控制器,赋予电子秤更智能的功能,如数据存储、传输和用户界面交互。
文章首先介绍了STM32F1单片机的特点和适用性,然后详细阐述了电子秤的设计原理、硬件选择和软件实现。
本文还包括对系统的测试结果和分析,以验证设计的有效性和可靠性。
通过本文的研究和设计,有望为电子秤领域提供一种创新实用的解决方案。
2.系统设计原则在这种电子秤的设计中,STM32F1微控制器作为核心控制器,其重要性体现在以下几个方面:处理能力:STM32F1系列微控制器基于ARM CortexM3内核,具有强大的处理能力和高效的能耗比。
其最大工作频率可达72MHz,足以处理电子秤所需的复杂计算和数据传输任务。
集成:该系列微控制器集成了丰富的外围接口,如ADC(模数转换器)、UART(通用异步收发器)、I2C(集成电路总线)等。
这些接口对电子秤的设计至关重要。
稳定性和可靠性:STM32F1微控制器具有优异的抗干扰能力和稳定性,适用于工业应用,确保了电子秤在复杂环境中的准确性和可靠性。
电子秤的核心部件是传感器,用于将物体的重量转换为电信号。
在该设计中,选择了压力传感器作为主要测量元件。
传感器的工作原理是基于弹性变形。
当物体受到压力时,传感器内部的电阻应变计变形,从而改变电阻值并通过惠斯通电桥将其转换为电压信号。
信号放大和滤波:传感器输出的模拟信号通常较弱,需要通过信号放大器进行放大。
为了提高信号质量,设计了滤波电路来去除噪声,保证信号的准确性。
模数转换:通过STM32F1微控制器内置的ADC将放大后的模拟信号转换为数字信号,使微控制器易于处理和计算。
电子行业电子秤stm32程序

电子行业电子秤stm32程序1. 引言电子行业中常用的电子秤是一种电子计量设备,广泛应用于商场超市、物流仓储、餐饮行业等场所。
它能够准确地测量物体的重量,并将结果以数字显示出来。
本文将介绍使用STM32微控制器编写的电子秤程序。
2. STM32微控制器概述STM32是意法半导体(STMicroelectronics)推出的一系列32位RISC微控制器。
它基于ARM Cortex-M内核,并且拥有丰富的外设接口和功能,适用于各种应用领域。
在电子秤中使用STM32微控制器能够提供较高的计算性能和稳定性。
3. 电子秤原理电子秤通过测量物体所产生的压力或弯曲来测量其重量。
一般来说,电子秤由称重传感器、模拟信号处理电路和数字显示及控制电路组成。
•称重传感器:称重传感器主要用于测量物体施加在秤盘上的压力或弯曲量,并将其转化为电信号。
•模拟信号处理电路:模拟信号处理电路对传感器输出的电信号进行放大、滤波和线性化处理。
•数字显示及控制电路:数字显示及控制电路接收模拟信号处理电路的输出,并将其转换为数字量,最终在显示屏上显示出来。
4. STM32电子秤程序设计4.1 硬件配置在设计STM32电子秤程序之前,需要先进行硬件配置。
以下是常见的硬件配置方案:•使用STM32微控制器:选择一款适合应用的STM32微控制器。
•连接称重传感器:将称重传感器与STM32微控制器连接,通常使用模拟输入通道接收传感器的电信号。
•连接数字显示屏:选择合适的数字显示屏,并将其与STM32微控制器连接,通常使用串行通信方式。
•添加按键和LED指示灯:加入按键和LED指示灯模块,用于用户操作和状态指示。
4.2 软件开发在进行软件开发之前,需要先搭建好开发环境,包括安装相应的开发工具和配置环境参数。
以下是常用的软件开发步骤:•创建工程:在开发工具中创建一个新的STM32工程。
•配置时钟系统:根据具体的硬件配置,配置STM32的时钟系统,确保系统运行稳定。
基于STM32的多功能电子秤

2012年电子设计大赛黑龙江科技大学题目名称:多功能电子计价秤制作参赛队员:张城照黄力修陈高禹院系:电气与信息工程学院摘要:智能电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。
它与我们日常生活紧密结合成为一种方便、快捷、称量精确的工具,广泛应用于商业、工厂生厂、集贸市场、超市、大型商场、及零售业等公共场所的信息显示和重量计算。
本作品使用STM32单片机作为中心控制单元,通过称重传感器采集质量信息,以HX711进行模数转换单元,在配以TFT液晶显示和触摸屏控制,及WT588D进行语音播报组成。
该电子称不但计量准确、快速方便,更重要的自动称重、计价功能外,还可实现去皮、净/毛转,自动计算,数字显示,语音播报,显示实时温度,实时时间。
本系统是针对是电子称的自动称重、自动计价、数据处理,语音播报进行研究的。
为了阐明用单片机是如何对采样数据进行处理,对数据的采集和转换、计算问题进行了研究。
讨论了单片机控制系统中关键的中断、计算问题,结果表明通过软件设计实现更完善。
本文在给出智能电子称硬件设计的基础上,详细分析了电子称的软件控制方法。
由于单片机控制的电子称结构简单,成本低廉,深受人们的喜爱,本文将对此进行详细讨论关键字:电子秤;STM32;称重传感器;HX711; TFT液晶屏幕;WT588DAbstract:Intelligent electronic balance values detection and the modern new-type names of technical com prehensive one body such as conversion technical, computer technology, message handling and d igital technology instrument. Its and our close combination of daily life becomes a kind of conveni ent, shortcut, weighing accurate tool , is applied extensively in commercial, factory raw factory , g athers trade market, supermarket and large scale market , the message of the etc. public place of retail trade shows and weight calculation.Intelligent electronic name passes through name mainly with STM32 as central control unit, value sensor to carry out modulus conversion unit , it is matching with keyboard , show by TFTand powerful software to form. It is accurate that this electron claims to not only measure , fast c onvenience, more important automatic name may still realize besides heavy, valuation function t o remove the peel , completely / hair turns , calculate voluntarily, figure shows , is welcomed by masses of user. Intelligent electronic name since carry convenience.This system aims at is the automatic name of electronic name heavy, automatic valuation and dat a handling carry out research. To expound to use single flat machine , it is to how to carry out han dling for sampling data , is for the collection of data and conversion and calculation problem has s tudied. Have discussed the suspension of the key in single flat machine control system , calculate problem , show as a result that through software design, realization is perfected more. This text is weighing the foundation of hardware design to intelligent electron , has analysed the software c ontrol method of electronic name in detail. Since the electron of single flat machine control weig hs structure, is simple, cost is cheap, receive deeply people like , this text will carry out detailed di scussion for this.Key words:Intelligent and electronic to scale; Single flat machine 89c52; Weigh heavy sensor; LED shows题目要求:1.基本部分:(1)能用键盘设置单价,称重后能同时显示重量、单价和总额;电子计价秤:最大称重为10.000公斤,重量误差不大于±0.1%;(2)具有TFT液晶屏显示,显示重量、单价、总额等信息。
基于STM32和HX710A的简易电子秤

基于STM32和HX710A的简易电子秤本系统设计以24位A/D转换芯片HX710A和STM32F103系列单片机为核心,由称重传感器模块、A/D采样模块、可控精密稳压源、显示模块等电路模块组成,设计了一款高精度的简易电子秤。
本文介绍了系统的硬件电路组成以及软件的设计流程。
系统通过称重传感器和24位的HX710A转换器实现对重量的高精度测量,此设计集微处理技术、传感器技术和数字显示技术等于一体,具有稳定性强、成本低、便捷性好等优点。
系统可以实现称重数据显示、在设计要求范围内达到一定的精确度、设置单价并进行金额累加和去皮等功能。
设计一款简易电子秤,对未来的发展有积极地促进作用。
在现实生活中,电子秤可以為人们的生活带来便利,并具有广泛的应用价值和推广意义。
标签:称重传感器;应变电桥;A/D转换;单片机;电子秤电子秤是集现代传感器技术、电子技术和计算机技术于一体的电子称量装置,具有快速、直观、精度高、操作简单、多功能等称量装备,具有快速、直观、精度高、操作简单、多功能等优点,与传统的机械秤相比更符合计量管理和工业生产过程控制要求。
国内从20世纪60年代中期开始模拟指针式电子秤三个阶段。
总体而言,电子秤的发展呈现出小型化、智能化和模块化的特点。
1.总体方案设计电子秤的工作原理是将作用在承载器上的质量或力的大小,通过称重传感器转换为与之成正比的电信号,并且以模拟或数字量的形式在称重仪表上显示出来。
方案一:系统由称重传感器、弱信号放大和滤波、高精度A/D转换器、MCU 和显示器组成,其系统组成框图如图l所示。
系统由称重传感器电路、高精度A/D采样电路、显示电路等电路模块组成。
2.硬件电路设计2.1电阻应变片组成电桥电路惠斯顿电桥,如果电阻为电阻应变片,则称为电阻应变电桥,目的是将应变片电阻值的变化量转换为电压变化量来方便测量。
实际工作中,采用同型号的应变片接人惠斯顿电桥四臂,称为全桥结构,在应变为0的初始状态下,电桥平衡,没有输出电压;在应变片承受应变时,电桥失去平衡,有输出电压。
基于单片机的智能电子秤设计

基于单片机的智能电子秤设计随着科技的不断发展,智能化和自动化已经成为我们生活中不可或缺的一部分。
在众多领域中,智能电子秤的设计与应用也越来越受到。
本文将介绍一种基于单片机的智能电子秤设计方案,该设计具有高精度、低成本、易于实现等优点,具有一定的实用价值。
一、概述智能电子秤是一种能够自动测量物体重量的设备,广泛应用于超市、菜市场等场所。
与传统的机械秤相比,智能电子秤具有测量精度高、使用方便、易于维护等优点。
而基于单片机的智能电子秤设计,更是将智能化和自动化技术融入到电子秤中,提高了设备的性能和可靠性。
二、设计原理基于单片机的智能电子秤设计主要是利用单片机的控制和数据处理能力,实现对物体重量的准确测量。
其核心部件为压力传感器和单片机。
压力传感器负责采集物体的重量信号,并将信号传输给单片机;单片机则对信号进行处理、分析和存储,同时控制显示屏显示物体的重量。
三、硬件设计1、单片机选择单片机是智能电子秤的核心部件,负责控制整个系统的运行。
本设计选用AT89C51单片机,该单片机具有低功耗、高性能、易于编程等优点,能够满足智能电子秤的设计要求。
2、压力传感器选择压力传感器是智能电子秤的重要组成部件,负责采集物体的重量信号。
本设计选用电阻应变式压力传感器,该传感器具有测量精度高、稳定性好、抗干扰能力强等优点。
3、显示模块选择显示模块负责将物体的重量信息呈现给用户。
本设计选用LED显示屏,该显示屏具有亮度高、视角广、寿命长等优点。
4、电源模块选择电源模块为整个系统提供稳定的电源,保证系统的正常运行。
本设计选用线性稳压电源,该电源具有输出电压稳定、纹波小、安全性高等优点。
四、软件设计软件设计是智能电子秤的关键部分之一,直接影响设备的性能和可靠性。
本设计的软件部分采用C语言编写,主要包括数据采集、数据处理、数据显示等模块。
具体流程如下:1、开机后,系统进行初始化操作;2、压力传感器采集物体的重量信号;3、单片机对采集到的信号进行处理和分析;4、单片机将处理后的数据存储到存储器中;5、单片机控制LED显示屏显示物体的重量信息;6、系统继续等待下一次测量。
一种基于STM32的多功能精密电子秤

一种基于STM32的多功能精密电子秤
近年来,随着电子技术的发展和微处理器的普及,电子秤已经走向了一个新的发展阶段。
在这个过程中,基于STM32的多
功能精密电子秤应运而生。
STM32是意法半导体公司推出的一款支持ARM内核的微控制器。
它集成了高性能、低功耗、广泛的应用领域和丰富的外设资源等特点。
基于STM32的电子秤可以满足广大消费者的需求,具有测量精度高,数据读取速度快,稳定性好,可靠性强,易于操作等特点。
这种电子秤不仅具有通常电子秤的测量功能,还具有多个附加功能。
例如,它可以实现自动扣重、自动关机、计重功能、加法计算、总重计算等。
这些功能可以大大提高操作效率和时间,也可以更满足不同用户的需求。
在硬件方面,这种电子秤采用高质量的传感器和微处理器,以确保其测量精度和可信度。
同时,它还具有清晰的液晶屏幕和精美的外观设计,使用户在使用过程中更加方便和愉快。
除此之外,基于STM32的电子秤还具有一些其他的附加功能。
例如,它可以实现数据存储和导出,使用户可以轻松地检查测量结果。
同时,它还可以连接到计算机或其他设备进行数据传输和处理,满足复杂的数据处理需求。
在使用方面,这种电子秤也非常简便易用。
用户只需根据设备菜单选择相应的测量模式,即可开始测量。
同时,设备还具有
一些其他的用户友好功能,例如音量调整、单位转换、预设功能、打印功能等,使用户在使用过程中更加便捷和舒适。
总之,基于STM32的多功能精密电子秤是一种高性能、低功耗、易操作的电子秤,它可以满足广大消费者的需求。
引入它的技术,将会在未来的市场竞争中具有巨大的优势和潜力。
基于STM32的智能称重系统

基于STM32的智能称重系统作者:姚广芹张岐磊来源:《中国科技纵横》2017年第07期摘要:本设计是以STM32F103RBT6单片机为控制器,电阻应变片为传感器,通过24位并集成放大的CS5530进行模数转换,配以NOKIA5110液晶显示和键盘等部分组成,该称重系统能实现自动称重、计价累计、去皮等主要功能,具有计量准确、快速方便、误差小、数字显示等优点。
关键词:STM32;应变片;CS5530;液晶中图分类号:TP273 文献标识码:A 文章编号:1671-2064(2017)07-0041-021 方案论证1.1 总体方案论证本设计硬件电路由控制器,称重传感器模块,AD转换模块,键盘和显示模块组成,结构框图如图1所示。
1.2 称重传感器部分电路称重传感器部分采用电阻式应变片,其工作原理是基于材料的电阻应变效应。
电阻应变片把机械应变信号转换为ΔR/R后,由于应变量及相应的电阻变化一般都很小,难以测量且不便处理,因此要采用转换电路把应变片的ΔR/R变化转化成电压或者电流变化,常用的转换电路为直流测量电桥。
直流电桥特点是信号不受元件和导线的分布电感和电容的影响,抗干扰能力强,电桥调节平衡电路简单,直流电源(+5V)在系统中比较方便。
直流电桥输出的信号较小,有必要做放大处理。
1.3 信号处理部分由于直流电桥输出的电压信号只有0-30mV,所以需要用高增益、高稳定性的放大器进行放大,再经过AD转换后送给单片机。
选用放大电路与AD转换集成的芯片,可以简化硬件电路,提高抗干扰能力和精度。
CS5530是高度集成的ΔΣ模数转换器,运用电荷平衡技术,性能达24位,非常适合称重衡器、过程控制、科学和医疗应用领域的单极性或双极性小信号测量。
内部集成64倍放大器、数字滤波器、可选的50/60Hz频率抑制以及40倍的可控增益等信号调理电路。
1.4 键盘和显示部分按键采用4*4矩阵按键,功能丰富,节约端口。
液晶显示功耗低,界面清晰,显示信息丰富,NOKIA5110采用串行通信,接口电路简单,字符汉字均能显示,速度快,具有掉电模式,适合便携式的设备。
电子秤stm32程序

电子秤s t m32程序(总8页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除#include ""#include ""#include ""#include ""#include ""#include ""#include ""#include ""#include ""int main(void){u8 num,flag;float vol1;delay_init();uart_init(9600);LED_Init();LCD_Init();Adc_Init();KEY_Init();HX711_Init();POINT_COLOR=RED;HZ_show();LCD_ShowString(54+25,55,200,24,16,":");便查看LCD驱动IC.{LCD_WriteReg(0x00,0x0000);LCD_WriteReg(0x01,0x0100);LCD_WriteReg(0x02,0x0700);LCD_WriteReg(0x03,0x1030);LCD_WriteReg(0x04,0x0000);LCD_WriteReg(0x08,0x0202); 0x0207)LCD_WriteReg(0x09,0x0000); 0x0000)LCD_WriteReg(0x0a,0x0000); 0x0000)LCD_WriteReg(0x0c,(1<<0)); 0x0000)LCD_WriteReg(0x0d,0x0000);LCD_WriteReg(0x0f,0x0000);delay_ms(50);LCD_WriteReg(0x07,0x0101); delay_ms(50);LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4));0x16b0)LCD_WriteReg(0x11,0x0007);0x0001)LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0));0x0138)LCD_WriteReg(0x13,0x0b00);LCD_WriteReg(0x29,0x0000);LCD_WriteReg(0x2b,(1<<14)|(1<<4));LCD_WriteReg(0x50,0);LCD_WriteReg(0x51,239); LCD_WriteReg(0x53,319);LCD_WriteReg(0x61,0x0001);LCD_WriteReg(0x6a,0x0000);LCD_WriteReg(0x80,0x0000);LCD_WriteReg(0x81,0x0000);LCD_WriteReg(0x82,0x0000);LCD_WriteReg(0x83,0x0000);LCD_WriteReg(0x84,0x0000);LCD_WriteReg(0x85,0x0000);LCD_WriteReg(0x90,(0<<7)|(16<<0)); 0x0013)LCD_WriteReg(0x92,0x0000); 0x0000)LCD_WriteReg(0x93,0x0001);LCD_WriteReg(0x95,0x0110); 0x0110)LCD_WriteReg(0x97,(0<<8));LCD_WriteReg(0x07,0x0173);LCD_WriteReg(0x0008, 0x0202); u32 LCD_Pow(u8 m,u8 n){u32 result=1;while(n--)result*=m;return result;}void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode){u8 t,temp;u8 enshow=0;for(t=0;t<len;t++){temp=(num/LCD_Pow(10,len-t-1))%10;if(enshow==0&&t<(len-1)){if(temp==0){if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,'0',size,mode&0X01);else LCD_ShowChar(x+(size/2)*t,y,'',size,mode&0X01);continue;}else enshow=1;}LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,mode&0X01);}}便查看LCD驱动IC.认为白色///////////////////////////////////////////////////////////////////// ///////////////-----------------LCD端口定义----------------#define LCD_LED PBout(0) //LCD背光 PB0//LCD地址结构体typedef struct{u16 LCD_REG;u16 LCD_RAM;} LCD_TypeDef;//使用NOR/SRAM的 ,地址位HADDR[27,26]=11 A10作为数据命令区分线//注意设置时STM32内部会右移一位对其! 111110=0X3E#define LCD_BASE ((u32)(0x6C000000 | 0x000007FE))#define LCD ((LCD_TypeDef *) LCD_BASE)///////////////////////////////////////////////////////////////////// ///////////////扫描方向定义#define L2R_U2D 0 //从左到右,从上到下#define L2R_D2U 1 //从左到右,从下到上#define R2L_U2D 2 //从右到左,从上到下#define R2L_D2U 3 //从右到左,从下到上#define U2D_L2R 4 //从上到下,从左到右#define U2D_R2L 5 //从上到下,从右到左#define D2U_L2R 6 //从下到上,从左到右#define D2U_R2L 7 //从下到上,从右到左#define DFT_SCAN_DIR L2R_U2D //默认的扫描方向//画笔颜色#define WHITE 0xFFFF#define BLACK 0x0000#define BLUE 0x001F#define BRED 0XF81F#define GRED 0XFFE0#define GBLUE 0X07FF#define RED 0xF800#define MAGENTA 0xF81F#define GREEN 0x07E0#define CYAN 0x7FFF#define YELLOW 0xFFE0#define BROWN 0XBC40 //棕色#define BRRED 0XFC07 //棕红色#define GRAY 0X8430 //灰色//GUI颜色#define DARKBLUE 0X01CF //深蓝色#define LIGHTBLUE 0X7D7C //浅蓝色#define GRAYBLUE 0X5458 //灰蓝色//以上三色为PANEL的颜色#define LIGHTGREEN 0X841F //浅绿色//#define LIGHTGRAY 0XEF5B //浅灰色(PANNEL)#define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色#define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色)#define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色)void LCD_Init(void);//初始化void LCD_DisplayOn(void);//开显示void LCD_DisplayOff(void);//关显示void LCD_Clear(u16 Color);//清屏void LCD_SetCursor(u16 Xpos, u16 Ypos);//设置光标void LCD_DrawPoint(u16 x,u16 y);//画点void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color);//快速画点u16 LCD_ReadPoint(u16 x,u16 y);//读点void Draw_Circle(u16 x0,u16 y0,u8 r);//画圆void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2);//画线void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2);//画矩形void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color);//填充单色void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color);//填充指定颜色void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode);//显示一个字符void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size);//显示一个数字void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode);//显示数字void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p);//显示一个字符串,12/16字体void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue);u16 LCD_ReadReg(u8 LCD_Reg);void LCD_WriteRAM_Prepare(void);void LCD_WriteRAM(u16 RGB_Code);void LCD_Scan_Dir(u8 dir); //设置屏扫描方向void LCD_Display_Dir(u8 dir); //设置屏幕显示方向//9320/9325 LCD寄存器#define R0 0x00#define R1 0x01#define R2 0x02#define R3 0x03#define R4 0x04#define R5 0x05#define R6 0x06#define R7 0x07#define R8 0x08#define R9 0x09#define R10 0x0A#define R12 0x0C#define R13 0x0D#define R14 0x0E#define R15 0x0F#define R17 0x11 #define R18 0x12 #define R19 0x13 #define R20 0x14 #define R21 0x15 #define R22 0x16 #define R23 0x17 #define R24 0x18 #define R25 0x19 #define R26 0x1A #define R27 0x1B #define R28 0x1C #define R29 0x1D #define R30 0x1E #define R31 0x1F #define R32 0x20 #define R33 0x21 #define R34 0x22 #define R36 0x24 #define R37 0x25 #define R40 0x28 #define R41 0x29 #define R43 0x2B #define R45 0x2D #define R48 0x30 #define R49 0x31 #define R50 0x32 #define R51 0x33 #define R52 0x34 #define R53 0x35 #define R54 0x36 #define R55 0x37 #define R56 0x38 #define R57 0x39 #define R59 0x3B #define R60 0x3C #define R61 0x3D #define R62 0x3E #define R63 0x3F #define R64 0x40 #define R65 0x41 #define R66 0x42 #define R67 0x43#define R69 0x45 #define R70 0x46 #define R71 0x47 #define R72 0x48 #define R73 0x49 #define R74 0x4A #define R75 0x4B #define R76 0x4C #define R77 0x4D #define R78 0x4E #define R79 0x4F #define R80 0x50 #define R81 0x51 #define R82 0x52 #define R83 0x53 #define R96 0x60 #define R97 0x61 #define R106 0x6A #define R118 0x76 #define R128 0x80 #define R129 0x81 #define R130 0x82 #define R131 0x83 #define R132 0x84 #define R133 0x85 #define R134 0x86 #define R135 0x87 #define R136 0x88 #define R137 0x89 #define R139 0x8B #define R140 0x8C #define R141 0x8D #define R143 0x8F #define R144 0x90 #define R145 0x91 #define R146 0x92 #define R147 0x93 #define R148 0x94 #define R149 0x95 #define R150 0x96 #define R151 0x97 #define R152 0x98 #define R153 0x99#define R157 0x9D #define R192 0xC0 #define R193 0xC1 #define R229 0xE5#endif。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "led.h"#include "sys.h"#include "delay.h"#include "adc.h"#include "lcd.h"#include "usart.h"#include "lcdfot.h"#include "hx711.h"#include "key.h"int main(void){u8 num,flag;float vol1;delay_init();uart_init(9600);LED_Init();LCD_Init();Adc_Init();KEY_Init();HX711_Init();POINT_COLOR=RED;HZ_show();LCD_ShowString(54+25,55,200,24,16,":000.00g");//提示信息显示LCD_ShowString(54+25,85,200,24,16,":00.00$");//提示信息显示LCD_ShowString(54+25,115,200,24,16,":000.00$");//提示信息显示LCD_ShowString(54+25,145,200,24,16,":000.00g");//提示信息显示while(1){vol1=HX711_count();if(KEY_Scan(1)==WKUP_PRES) //单价设置num的值可直接用{num++;if(num==100)num=0;LCD_ShowxNum(54+25+8,85,num,2,16,0);}if(KEY_Scan(1)==KEY0_PRES) //控制金额是否累加flag=1是累加flag=0不累加{HZ_show_moy();flag++;LED0=0;if(flag==2){LED0=1;LCD_ShowString(54+25+32+30,115,200,16,16," ");flag=0;}printf("%d",flag);}delay_ms(300);LED1=!LED1;}}#include "lcd.h"#include "lcdfot.h"u8 table1[]={0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x04,0x02,0x00,0x04,0x02,0x00,0x24,0x0A, 0xFF,0xA4,0x0A,0x7F,0x24,0x0A,0x49,0x24,0x12,0x49,0x24,0x12,0x49,0x24,0x12,0x49, 0x24,0x1F,0xFF,0xFC,0x12,0x49,0x24,0x12,0x49,0x24,0x12,0x49,0x24,0x22,0x49,0x24, 0x22,0x49,0x24,0x22,0xFF,0xA4,0x02,0x40,0x64,0x06,0x00,0x24,0x06,0x00,0x0C,0x02, 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,};/*重*/u8 table2[]={0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x02,0x00,0x40,0x02,0x00,0x40,0x12,0x3F, 0xDF,0xD2,0x3F,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52, 0x92,0x25,0x5F,0xFC,0x25,0x5F,0xFC,0x25,0x52,0x92,0x25,0x52,0x92,0x25,0x52,0x92, 0x25,0x52,0x92,0x3F,0x5F,0xD2,0x20,0x5F,0xB2,0x00,0x40,0x12,0x00,0x40,0x04,0x00, 0xC0,0x04,0x00,0x40,0x00,0x00,0x00,0x00,};/*量*/u8 table3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x40,0x03, 0xFE,0x40,0x02,0x22,0x40,0x22,0x22,0x40,0x32,0x22,0x40,0x1E,0x22,0x40,0x02,0x22, 0x40,0x03,0xFF,0xFE,0x02,0x22,0x40,0x06,0x22,0x40,0x0A,0x22,0x40,0x72,0x22,0x40, 0x22,0x22,0x40,0x02,0x22,0x40,0x03,0xFE,0x40,0x02,0x00,0x40,0x00,0x00,0xC0,0x00, 0x00,0xC0,0x00,0x00,0x40,0x00,0x00,0x00,};/*单*/u8 table4[]={0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x60,0x00,0x01,0xC0,0x00,0x07, 0xFF,0xFE,0x3C,0x80,0x00,0x30,0x10,0x02,0x00,0x20,0x04,0x00,0x40,0x08,0x00,0x80, 0x18,0x03,0x3F,0xE0,0x06,0x3E,0x00,0x3C,0x00,0x00,0x30,0x00,0x00,0x0C,0x00,0x00, 0x02,0x00,0x01,0x01,0x3F,0xFE,0x00,0x80,0x00,0x00,0xC0,0x00,0x00,0x60,0x00,0x00, 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*价*/u8 table5[]={0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x01,0x08,0x08,0x01, 0x08,0x0C,0x01,0x08,0x1C,0x01,0x08,0x2C,0x01,0x08,0x4C,0x01,0x08,0x88,0x01,0x0B, 0x08,0x3F,0xFE,0x08,0x3F,0xF8,0x08,0x01,0x08,0x08,0x01,0x08,0x08,0x01,0x08,0x48, 0x01,0x08,0x68,0x01,0x08,0x38,0x03,0x08,0x18,0x01,0x08,0x1E,0x00,0x18,0x00,0x00, 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*去*/u8 table6[]={0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x18,0x00,0x00,0xE2,0x07, 0xFF,0x82,0x02,0x00,0x02,0x02,0x00,0x02,0x02,0x08,0x04,0x02,0x0E,0x04,0x02,0x09, 0x08,0x02,0x08,0xC8,0x7F,0xF0,0x70,0x3F,0xF0,0x30,0x02,0x08,0x70,0x02,0x09,0x88, 0x02,0x0B,0x0C,0x02,0x0E,0x0C,0x02,0x98,0x04,0x07,0x08,0x06,0x06,0x00,0x06,0x00, 0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,};/*皮*/u8 table7[]={0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x02,0x00,0x10,0x02,0x00,0x21,0x02,0x00, 0x41,0x82,0x00,0xC1,0x42,0x01,0x91,0x32,0x03,0x11,0x1A,0x0E,0x11,0x02,0x38,0x11, 0x02,0x30,0x1F,0xFC,0x28,0x11,0x02,0x04,0x11,0x02,0x02,0x11,0x04,0x01,0x11,0x1A, 0x00,0xA1,0xE2,0x00,0xD1,0x42,0x00,0x62,0x02,0x00,0x62,0x02,0x00,0x30,0x04,0x00, 0x20,0x04,0x00,0x20,0x00,0x00,0x00,0x00,};/*金*/u8 table8[]={0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x08,0x80,0x0C,0x31,0x00,0x04,0xD3,0xFC,0x07, 0x96,0x84,0x24,0x5C,0x84,0x1C,0x58,0x84,0x04,0x68,0x84,0x05,0xCD,0xFC,0x06,0x06, 0x00,0x0C,0x02,0x02,0x16,0x00,0x02,0x11,0xFF,0x84,0x11,0x00,0x08,0x13,0x00,0x10, 0x1D,0x47,0xE0,0x11,0x3F,0x00,0x11,0x20,0x20,0x11,0x00,0x10,0x11,0xFF,0xD8,0x23, 0xFF,0x8C,0x00,0x00,0x06,0x00,0x00,0x00,};/*额*/u8 table9[]={0x00,0x00,0x00,0x01,0x7C,0x12,0x54,0x94,0x54,0x90,0x55,0xB2,0x56,0xB1,0x7C,0xDE, 0x54,0xD0,0x54,0x90,0x55,0x14,0x54,0x32,0x7C,0x19,0x00,0x00,0x00,0x00,0x00,0x00, };/*累*/u8 table10[]={0x08,0x01,0x08,0x02,0x08,0x0C,0xFF,0xF0,0x08,0x02,0x08,0x01,0x0F,0xFE,0x00,0x00, 0x00,0x00,0x1F,0xFE,0x10,0x04,0x10,0x04,0x10,0x04,0x1F,0xFE,0x00,0x00,0x00,0x00, };/*加*/// 显示一个汉字//u8 lcdoneHZ(u8 x,u8 y,unsigned char *code){u8 temp,t,y0,t1;u8 table[72];y0=y;POINT_COLOR=RED;for(t=0;t<72;t++){temp= *code++;for(t1=0;t1<8;t1++){if(temp&0x80)LCD_DrawPoint(x,y);temp<<=1;y++;if((y-y0)==24){y=y0;x++;break;}}}}u8 lcdone16HZ(u8 x,u8 y,unsigned char *code) {u8 temp,t,y0,t1;u8 table[32];y0=y;POINT_COLOR=RED;for(t=0;t<32;t++){temp= *code++;for(t1=0;t1<8;t1++){if(temp&0x80)LCD_DrawPoint(x,y);temp<<=1;y++;if((y-y0)==16){y=y0;x++;break;}}}}void HZ_show(void){lcdoneHZ(30,50,table1);//重量lcdoneHZ(54,50,table2);lcdoneHZ(30,80,table3); //单价lcdoneHZ(54,80,table4);lcdoneHZ(30,110,table7); //金额lcdoneHZ(54,110,table8); //金额lcdoneHZ(30,140,table5);//去皮lcdoneHZ(54,140,table6);}void HZ_show_moy(void){lcdone16HZ(54+25+32+30,115,table9);lcdone16HZ(54+25+32+30+17,115,table10);}#ifndef __LCDFOT_H#define __LCDFOT_H#include "sys.h"u8 lcdoneHZ(u8 x,u8 y,unsigned char *code); //显示24位汉字u8 lcdone16HZ(u8 x,u8 y,unsigned char *code); //显示16位汉字void HZ_show(void);void HZ_show_moy(void);#endif#include "hx711.h"#include "delay.h"#include "usart.h"void HX711_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PE端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //LED0-->PB.5 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);}u32 HX711_read(void){u32 count;u8 i;delay_us(1);HX711_SCL=0;count=0;while(HX711_DOUT);for(i=0;i<24;i++){HX711_SCL=1;count=count<<1;HX711_SCL=0;if(HX711_DOUT)count++;}HX711_SCL=1;count=count^0x800000;delay_us(1);HX711_SCL=0;return count;}//得到的质量单位是g 克float HX711_count(void){u8 a;u32 adc,wei;float vol;for(a=10;a>0;a--){ adc=HX711_read();wei=wei+adc;}wei=wei/10;printf("hx711值:%d\r\n",wei);vol=((float)(wei-7431260)/1118)-1.8-1.55; //注意改参数wei=0;printf("重量=%f\r\n",vol);return vol;}#ifndef __HX711_H#define __HX711_H#include "sys.h"#define HX711_SCL PAout(5)#define HX711_DOUT PAin(6)void HX711_Init(void);u32 HX711_read(void);float HX711_count(void);#endif#include "lcd.h"#include "stdlib.h"#include "font.h"#include "usart.h"#include "delay.h"////////////////////////////////////////////////////////////////////////////////////本程序只供学习使用,未经作者许可,不得用于其它任何用途//2.4/2.8寸/3.5寸TFT液晶驱动//支持驱动IC型号包括:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/SPFD5408/S SD1289/1505/B505/C505等//正点原子@ALIENTEK//***************************************************************************** ***//V1.2修改说明//支持了SPFD5408的驱动,另外把液晶ID直接打印成HEX格式.方便查看LCD驱动IC.//V1.3//加入了快速IO的支持//修改了背光控制的极性(适用于V1.8及以后的开发板版本)//对于 1.8版本之前(不包括 1.8)的液晶模块,请修改LCD_Init函数的LCD_LED=1;为LCD_LED=1;//V1.4//修改了LCD_ShowChar函数,使用画点功能画字符。