这是我备考省赛的时候总结的错误点和创新点
那个时候是用来提醒自己的,现在分享给你们看^_^
一考点



二注意点
- 记得初始化Y4,Y5,Y6,Y7(所学)→STC15系列头文件概括
- 注意在主函数中,重新定义跟随模式(要不然乱七八糟)→初始化进化,锁存器开后关闭
- 注意初始化的内容,若多次使用,可变为一个函数
- 操作led,数码管,蜂鸣器时,要打开hc573锁存器使能端打开,才能控制,后注意关闭
- 操作矩阵键盘和NE555的时候记得注意跳线帽
- 延时函数只有在led和独立按键延时时使用
- 延时函数缺点:单独进行且死板(类似拖堂);定时器:定时与计数可以同时进行(类似下课),灵活
- 乘除取余注意:%10取数字最后一位数(一个0);/10取最后一个数字之前的数字(一个0)
- 软件模拟:魔法棒-DEBUG-左侧所有√打上-点击DEBUG-点击L1添加逻辑分析-运行
- 赛点资源包阅读:底层文件的引脚(运行代码,找到未定义的引脚)+原理图自己编写+头文件引用;头文件自己编写;新版onewire.h不需要自己再将t*12
- Ds1302的问题,write()和read()函数的存放位置
三历年考题本人错误点
- 数码管的数字要显示0,不需要再用三目运算符特意强调(ds1302实时时钟)
- 灯的点亮是0,所以写LED函数是的时候是temp&=~(0x01<<pos)
- 定时器时间太短,1ms最好
- Ds1302的数码管不用特别显示0
- Ds1302的read 写进要运行的代码即数码管显示上面
- 按键消抖时间小于十毫秒display_dly<10ms(放在开头)
- 数码管显示smg_dly<300,LED显示,数据采集,collect_dly<500
- 如果要用到定时器中断,就打开stc的选项,(比如测频率的就是定时器0计数不打开,定时器1计时打开)
- Ds18b20是温度传感器,需要加入时间750ms确保温度的正确读出,数值比较大,所以用int类型,先读低八位,再读高八位,后整合十六位,再确定小数点(几位数字)
- 用矩阵键盘的时候,注意大括号的else if(** && **)内容与一开始赋值1的对应
- Ds1302每次数值改变,记得重新写入
- 独立按键是BTN模式,矩阵键盘是KBD模式
- AT24C02中数值改变,每次都要重新读取
- Ds1302中,sbit的地址是连续的P21,P23,P17
- 矩阵键盘赋值,用数组进行存储,下标进行++
有函数名基本相同,需要改变自定义函数名
函数定义有一个参数,而使用的时候,未加
- 当用矩阵键盘输入数据(数组存放),在数码管显示出来,并要求数码管高位熄灭或者三目运算符
注意区间
- 温度测量 temp*0.0625 是23℃ temp*0.625是236℃
- 超声波测距离,可以直接先用SPI波特率计算,再加putchar()函数即可
- 若用按键决定发射串口,再按键位置置一个标志位,再collect()函数内printf(),注意printf发射数据的格式
- 串口通信,先确定TX和RX的引脚位置,再用延时函数确定12us的延时,再确定5个周期的发射超声波,在读取超声波函数内,先CMOD=0,定时初始值位0,在CR=1开始计时接收到的超声波时间while(!CF && RX);CR=0;
- 取模不可以是浮点数
- 若要PCF8591显示光敏电阻或者电位器的俩位小数(三位数),
就light/RB2=read(0x01/0x03)/51.0*100
- 编程的时候若出现一堆错误,查看第一行,是否是中文标点符号输入
- 若有界面的切换
不重复触发,说明上一个数值必须与其相反
新的时间,放到索引1
二维数组,转换每一个数组时间的位置
- 设定主界面与触发界面俩个有关联的定义maincode,maincode=0,主界面,maincode=1,触发界面
- 界面之间有防止重复触发的可能性,定义一个标志位workflag,在定时器里面
- 历史查询界面共有三个,采用二维数组,并且改变触发时间的位置,进行准换改变
1.用数组下标来决定索引值
2.时间不可能显示24小时,以此来决定二维数组的初始状态
3.以每一位二维数组的开头做标志位,Time_set[0,1,2][0]=0x24都未采集到数据
采集到数据,用循环来展现全部SMG[2,3,4,5,6,7]index与索引相对应
- PCF8591同时读取光敏和电位器电压,需将俩个地址互换即可
- 判断字符串是否相等 strcmp(BUF,“open”)==0字符串相等#include "string.h"
- 当一个界面有俩个参数需要按键进行改变,设置一个标志位,在按键控制函数里,进行编写