基于STM32的纸张计数装置

该装置基于ARM Cortex-M内核,主控制器采用STM32F103C8T6单片机,电容采集装置使用FDC2214电容数字转化器,电容极板使用同纸张直接接触的覆铜板,电容数字转换器将采集到的数据通过IIC协议传输给单片机,单片机通过前期纸张数量校准存取每一张纸的电容值从而建立数据阈值区间表,即相邻两张纸的电容值取中值得到后一张纸的下限阈值,通过后期测量对比前期校准建立的数据阈值区间表,从而实现非线性运算来识别纸张数量,该装置能在5秒内将测量结果显示在OLED屏幕上。

代码
主函数代码

#include "bsp.h"
#include "key.h"
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "oled.h"
#include "usart.h"
#include "beep.h"
#include "math.h"
#include "stdio.h"

//无纸张报警函数
void error(void)
{
   
    OLED_Clear(); //清屏
    OLED_ShowCHinese(36, 0, 19); //极
    OLED_ShowCHinese(54, 0, 20); //板
    OLED_ShowCHinese(72, 0, 23); //短
    OLED_ShowCHinese(90, 0, 24); //路
	
	}
//主函数
int main()
{
   
    int ChValue[4] = {
   0};	//清理通道
	
    u32 FF=0;				//前一张频率值0
	u32 FF1=0;				//后一张频率值1
	u32 ffLast=0;			//间距检查标志
	u8	resultSign=0;		//安全间距标志
    u8 key;					//
	u8 keySign=0;			//初始化按键标志
	
 //程序手动数值校准,存取1-50纸张频率数值,可根据不同机械结构环境进行校准
			u16 valueBuf[51]={
   1000, 3728,4494,5219,5702,6182,6688,7050,7396,7823,8266
		,8757,9246,9571,9891,10179,10482,10974,11376,11604,11893
		,12169,12410,12682,12949,13203,13459,13697,13937,14180,14418
	,14651,14906,15129,15178,15272,15495,15707,15760,15790,15984
	,16209,16302,16502,16687,16737,16797,16847,16943,17126,18000};
		
		
//	u16 valueBuf[61]={1000, 5500,6470,7186,7726,8287,8818,9319,9779,10250,10567,
//							10873,11364,11695,11986,12418,12863,13169,13439,13688,
//							13959,14223,14301,14532,14775,14994,15264,15537,15764,15987,
//							16251,16493,16880,16780,17018,17216,17295,17509,17717,17794,
//							17870,18072,18262,18322,18382,18562,18746,18805,18860,18910,19085,
//							19265,19314,19356,19404,19579,19752,19794,19839,19873,19911};
	u8 bufCount=0;			//初始化数组元素计数标志符				

    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    BEEP_Init();         	//初始化蜂鸣器端口
    KEY_Init();         	//初始化与按键连接的硬件接口
    OLED_Init();			//初始化OLED
    OLED_Clear();
 // 主界面
    OLED_ShowCHinese(0, 0, 0); //纸
    OLED_ShowCHinese(16, 0, 1); //张
    OLED_ShowCHinese(32, 0, 2); //计
    OLED_ShowCHinese(48, 0, 3); //数
    OLED_ShowCHinese(54 + 10, 0, 4); //显
    OLED_ShowCHinese(80, 0, 5); //示
    OLED_ShowCHinese(96, 0, 6); //装
    OLED_ShowCHinese(112, 0, 7); //置
    OLED_ShowCHinese(16, 6, 9); //启
    OLED_ShowCHinese(32, 6, 10); //动
    OLED_ShowCHinese(80, 6, 29); //校
    OLED_ShowCHinese(96, 6, 30); //准
    delay_ms(8000);
    uart_init(115200);		//串口初始化
    IIC_Init();				//iIC初始化
    //InitSingleFDC2214();//初始化单通道
    InitMultiFDC2214();//初始化多路复用
	BEEP = 0;
    while(1)
    {
   
        ChValue[1] = FDC2X14ReadCH(0X02);//读取FDC2214通道二的数据
		
        printf("%d\r\n", FF = ChValue[1]);//串口打印,并将频率值转送给频率标志0
			OLED_ShowCHinese(0, 4, 27); //频
       OLED_ShowCHinese(18, 4, 28); //率
			OLED_ShowString(36,4,":",16);
			
//		OLED_ShowString(0,4,"parameter:",16); 
			
        OLED_ShowNum(54, 4, FF, 8, 16);
			
//		OLED_ShowNum(54, 6, ffLast, 8, 16);
//		OLED_ShowNum(0, 6, KEY1_PRES, 1, 16);
//		OLED_ShowNum(32, 6, KEY2_PRES, 1, 16);
//检查区间长度,安全间距为5	
		if (FF>ffLast)
		{
   
			if(FF-ffLast<=5)
				resultSign=1;
		}
		else
		{
   
			if(ffLast-FF<=5)
				resultSign=1;
		}
		ffLast=FF;
        delay_ms(2);
        key = KEY_Scan();	//得到键值
		delay_ms(100);
		
//进行测量和校准
        if(key)
        {
   
          //区分是检测模式还算校准模式
			switch(key)
            {
   
            case KEY1_PRES:	//检测模式
                //delay_ms(10);
                OLED_Clear(); //清屏
                ///
                OLED_ShowCHinese(36, 0, 11); //测
                OLED_ShowCHinese(54, 0, 12); //试
                OLED_ShowCHinese(72, 0, 13); //结
                OLED_ShowCHinese(90, 0, 14); //果
                //delay_ms(8000);
                OLED_ShowCHinese(0, 2, 15);  //纸
                OLED_ShowCHinese(18, 2
  • 20
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
csdn基于stm32水质监测装置是一种能够检测水质的装置,它使用stm32微控制器作为核心控制单元。该装置通过测量水样中的各种物理和化学参数,来评估水质的优劣。 首先,stm32微控制器具有强大的处理能力和丰富的外设资源,能够高效地采集和处理传感器获取的数据。可以使用stm32的模拟输入通道来接收从传感器获取的水质信息,例如温度、PH值、浊度等。 其次,csdn在stm32的基础上进行了软件和硬件的优化,以满足水质监测的需求。软件方面,通过编写相应的驱动程序,使stm32能够准确读取传感器数据,并根据预设的标准判断水质是否达标。同时,还可以通过通信模块将数据传输到上位机进行分析和显示。在硬件方面,csdn在电路板上添加了额外的电源管理模块、存储模块和传感器接口,提高了系统的可靠性和稳定性。 此外,csdn基于stm32的水质监测装置还具有一些附加功能。例如,可使用LCD显示屏显示实时的水质数据,方便用户及时了解水质情况。装置还可以设置一定的阈值,当水质超出设定范围时,可以触发警报,提醒用户采取相应的措施。 综上所述,csdn基于stm32的水质监测装置具有高性能和可靠性,可以快速、准确地检测水质,并提供了多种功能以方便用户的使用和管理。该装置在环境保护、饮用水安全等方面有着广泛的应用前景。
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值