当前位置:文档之家› 电子秤stm32程序

电子秤stm32程序

#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函数,使用画点功能画字符。

相关主题