智能超重报警系统的设计与实现
/* config the extiline clock and AFIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);
//浮空输入
GPIO_SetBits(GPIOD,GPIO_Pin_12);//HX711_DOUT=1; //先置1
Delay__ms(50);
GPIO_ResetBits(GPIOD,GPIO_Pin_3); //HX711_SCK=0;
count=0;
while(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12));//while(HX711_DOUT); for(i=0;i<24;i++)
GPIO_SetBits(GPIOD,GPIO_Pin_3);
//HX711_SCK=1;
{
GPIO_SetBits(GPIOD,GPIO_Pin_3); //HX711_SCK=1;
count=count<<1;
GPIO_ResetBits(GPIOD,GPIO_Pin_3); //HX711_SCK=0;
if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_12))//if(HX711_DOUT) }
count++;
count=count^0x800000;//第25个脉冲下降沿来时,转换数据
第 26 页 共 41 页
智能超重报警系统的设计与实现
Delay__ms(50);
GPIO_ResetBits(GPIOD,GPIO_Pin_3); //HX711_SCK=0; return(count); }
//**************************************************** //获取毛皮重量
//**************************************************** void Get_Maopi() { Weight_Maopi = HX711_Read();
}
//**************************************************** //称重
//**************************************************** void Get_Weight() { Weight_Shiwu = HX711_Read();
Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重
if(Weight_Shiwu > 0)
{
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/GapValue); 的实际重量
if(Weight_Shiwu > 5000)
//超重报警
{ Flag_ERROR = 1;
} else
{
第 27 页 共 41 页
//计算实物
智能超重报警系统的设计与实现
}
/**
} else { }
}
Flag_ERROR = 0;
Weight_Shiwu = 0; Flag_ERROR = 1;
//负重报警
* @brief 事件处理函数,循环调用 */
void even_process(void) {
char lcd_char[20]; Get_Maopi();
//称毛皮重量
/* 配置USART1 */
USART1_Config(); /* 配置USART2 */ USART2_Config(); /* 初始化系统定时器 */ SysTick_Init();
LCD_DispEnCh(60,10,\远程超重报警\
//检测模块响应是否正常
while(sim900a_cmd(\ { }
LCD_DispEnCh(10,50,\通过了模块响应测试 开始检测 若超重2秒后开始报警
第 28 页 共 41 页
智能超重报警系统的设计与实现
\
/* USART1 config 115200 8-N-1 */
while(1) {
Get_Weight(); //显示当前重量
USART1_Config();
//3??
if( Flag_ERROR == 1) { } else { }
第 29 页 共 41 页
Lcd_GramScan( 1 );
LCD_DispChar(20+10,180,Weight_Shiwu/1000 + 0X30,BLUE); LCD_DispChar(20+20,180,Weight_Shiwu00/100 + 0X30,BLUE); LCD_DispChar(20+30,180,Weight_Shiwu0/10 + 0X30,BLUE); LCD_DispChar(20+40,180,Weight_Shiwu + 0X30,BLUE); LCD_DispEnCh(20+50,180,\
printf(\
Lcd_GramScan( 1 );
LCD_DispChar(20+10,180,Weight_Shiwu/1000 + 0X30,BLUE); LCD_DispChar(20+20,180,Weight_Shiwu00/100 + 0X30,BLUE); LCD_DispChar(20+30,180,Weight_Shiwu0/10 + 0X30,BLUE); LCD_DispChar(20+40,180,Weight_Shiwu + 0X30,BLUE); LCD_DispEnCh(20+50,180,\
printf(\
智能超重报警系统的设计与实现
4.2 GSM部分主要程序
if(Weight_Shiwu>150) {
SIM900A_DELAY(500); //拨打电话
sim900a_call(\ rebuff = sim900a_waitask(0);
令
{
if(strstr(rebuff,\!= NULL) //响应OK表示模块正常接收到命
Lcd_GramScan( 1 );
LCD_Clear(10, 220, 300, 100,YELLOW); LCD_DispEnCh(10,200,\正在呼叫\
SIM900A_CLEAN_RX(); //清除接收缓冲区
第 30 页 共 41 页