单片机小项目总结

2019-04-15 18:56发布

项目没做完呢,就开始总结了,因为主要工程框架都已经完成了,就差两个函数就可以完成了,虽然还没有测试,现在只记录一下做了这个小项目目前为止的感悟吧。 第一:做一个工程之前,必须先写好工程描述文件,以及工程规划文!!!!!!!!!!!!!!这是我做这个小项目的最大的感触。 第二:写工程描述、规划文件时进行必要的白板讨论,通过讨论尽量将工程内容细化,便于分工。(我们没有进行此项,因为项目比较小,随便讨论了一下制作目标的功能,功能较少。但是仍然出现了巨大的问题,由于GPS模块和短信模块都需要一个串口通信,我们原来用的stc51,弄了半天模拟串口通信,恶心的要死,最后还是换了芯片STC12,导致工程延期,恶心) 第三:进行必要的管理,将每个人的工作结果发送到git(或其他的版本控制软件上),有利于技术经验的积累和分享。(这次我们没有进行代码管理,因为代码量比较小,只有几个主要的函数,只是写了一些笔记) *********************************************内容分割线****************************************************************** 下面将我们的小项目拿出来丢丢人大笑 我们做的一个是关于车辆定位的小东西: 直接复制的工程描述文件: 实际过程:
车辆停靠在某地后,硬件处于待机状态,当收到手机发送来的请求位置信息后,硬件向手机发送一个车辆位置短信。当车辆被移动时,硬件检测出位移,向手机发送车辆被移动的警告信息。手机端接收到警告信息后,可选择向硬件端发送监视短信,硬件进入监视状态,每隔一段时间向手机发送一次位置信息,当收到手机发送的监视停止信息时,返回到待机状态。如果硬件没有收到监视短信,则还是原来的待机状态。

硬件基本功能:
1.接收手机发送来的请求位置信息,硬件向手机发送一个车辆位置短信。

2.当车辆被移动时,硬件检测出位移,向手机发送车辆被移动的警告信息。

3.接收到监视短信后,硬件进入监视状态,每隔一段时间向手机发送一次位置信息。

4.当收到手机发送的监视停止信息时,返回到查询位移状态。

5.接收忽略短信后。硬件进入挂起状态,忽略此次位移警告,直到接收到请求位置短信,返回查询位移状态。

程序模块:

宏定义:
uchar FLAG:标识发送那种短信
uchar FUNC_PROC:标志进入哪个基本功能模块
uchar WATCH:监视状态标志

串口初始化函数


GPS初始化函数


SIM初始化函数


GPS位置接收函数


GPS位置移动监测函数


SIM短信发送函数


SIM模块接收函数


SIM短信处理函数


主函数

主函数逻辑描述:


1.初始化;
2.主循环:


switch func_proc

func_proc = 0:等待
func_proc = 1:接收定位,判断位移 :发生位移,发送警告短信,修改funct_Proc = 0
func_proc = 2:进入短信接收与识别模块  修改func_proc = 3 flag = x
func_proc = 3:switch flag
flag= 1:发送位置短信,修改func_proc = 1;
flag = 2:进入监视模块
flag = 3:停止监视,修改func_proc = 1;


短信串行接收中断:
修改func_proc = 2;

串行接收函数功能:
串口1.接收GPS位置信息
串口2.接收SIM短信模块返回内容,修改func_proc = 2;

主要的子函数设计:
串口初始化函数:void Serial_Init()
//初始化两个串口的波特率定时器等




GPS初始化函数:void GPS_Init()


SIM初始化函数: void SIM_Init()

GPS位置接收函数:void GPS_Pos()

GPS位置移动监测函数:void GPS_Move()

SIM短信发送函数:void SIM_Send(uchar *str)
//接收FLAG。
//str为定位位置内容指针,没有内容要发送时为NULL



SIM模块接收函数:void SIM_Get()
//向SIM模块发送指令,获取短信内容


SiM短信处理函数:void SIM_Proc()
//识别短信内容,修改FLAG标志

其他函数:。。。。。。。




主函数流程
图: