提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、该题目如下
- 二、使用步骤
- 1.矩阵键盘实现
- 2.温度传感器ds18b20的实现
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、该题目如下
分析题目,具体框架是矩阵键盘伴随着数值的输出,当数值满足条件时,去加加,然后执行对应的函数即可完成题目。具体的一些模块代码如下供参考。
二、使用步骤
1.矩阵键盘实现
矩阵键盘必须要求J5中的端口插在BIN上,且当555分频器在用时矩阵键盘P3^4引脚被占用,本人就上一个实验做得频率检测导致这个bug卡了好几次
代码如下(示例):
void Scaner_key_value()
{
R1=R2=R3=R4=1;L1=L2=L3=L4=0;
if((P3&0x0f)!=0x0f)
{
if(R1==0) key_value=7;
else if(R2==0) key_value=6;
else if(R3==0) key_value=5;
else if(R4==0) key_value=4;
R1=R2=R3=R4=0;L1=L2=L3=L4=1;
if(L1==0) {key_value=key_value+0;while(L1==0);}
else if(L2==0) {key_value=key_value+4;while(L2==0);}
else if(L3==0) {key_value=key_value+8;while(L3==0);}
else if(L4==0) {key_value=key_value+12;while(L4==0);}
}
if(key_value==12)
{
cnt++;
key_value=0;
mnt=0;
dis_t_c=0;
if(cnt==3) cnt=0;
}
if(key_value==13)
{
mnt++;
key_value=0;
if(mnt==2) mnt=0;
}
}
开始保证的左引脚置1,右引脚置0,然后检测行,然后再进行按键判断再给列数赋值。随后给予右引脚置1,左引脚置0,判断列,给予行对应的加数判断即可,此方法代码量少,但是逻辑有点复杂且防抖功能不好添加。
另外一种矩阵键盘如下,一个一个的检测代码如下:
L1=0;
L2=L3=L4=1;
R1=R2=R3=R4=1;
if(R1==0)
{
while(R1==0)
{
key=7;
}
}
if(R2==0)
{
while(R2==0)
{
key=6;
}
}
if(R3==0)
{
while(R3==0)
{
key=5;
}
}
if(R4==0)
{
while(R4==0)
{
key=4;
}
}
L2=0;
L1=L3=L4=1;
R1=R2=R3=R4=1;
if(R1==0)
{
while(R1==0)
{
key=11;
}
}
if(R2==0)
{
while(R2==0)
{
key=10;
}
}
if(R3==0)
{
while(R3==0)
{
key=9;
}
}
if(R4==0)
{
while(R4==0)
{
key=8;
}
}
L3=0;
L2=L1=L4=1;
R1=R2=R3=R4=1;
if(R1==0)
{
while(R1==0)
{
key=15;
}
}
if(R2==0)
{
while(R2==0)
{
key=14;
}
}
if(R3==0)
{
while(R3==0)
{
key=13;
}
}
if(R4==0)
{
while(R4==0)
{
key=12;
}
}
L4=0;
L2=L3=L1=1;
R1=R2=R3=R4=1;
if(R1==0)
{
while(R1==0)
{
key=19;
}
}
if(R2==0)
{
while(R2==0)
{
key=18;
}
}
if(R3==0)
{
while(R3==0)
{
key=17;
}
}
if(R4==0)
{
while(R4==0)
{
key=16;
}
}
}
2.温度传感器ds18b20的实现
一下这些牢记
/*温度传感器要点
1.注意temp赋值前要进行初始化为0x0000。
2.注意给温度传感器Ds18b20给予初始化时,一个0xcc跳过ROM(就是跳过存储设备),一个0x44转化数据
中间给予一个延时,最好把数码管刷新放进去,然后再次初始化Ds18b20继续一个0xcc跳过存储设备,0xbc代表
着读取ds18b20中的数据。
3.最关键的一步ds18b20中的头文件onewire.h必须要将延时扩大10倍。
4.ds18b20芯片得到的数据是两个字节,从地位字节开始再到高字节介绍,且数据和位的关系如下,按下表进行转换即可
*/
分析次表的到后四位是小数部分且为0.0625的整倍数,高四位代表的正负,所以想到得到对应的温度,必须将第四位合理的去除,数字合理的放大,保留一位小数放大十倍即可。
代码如下(示例):
void Dis_DS18B20()
{
unsigned char Hse=0,Lse=0;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
Tm_delay(80);//这个延时必须加
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
Lse=Read_DS18B20();
Hse=Read_DS18B20();
/* temp=0x0000;
temp=Hse;
temp=(temp<<8)|Lse;
temp=temp>>4;
temp=10*temp;
temp=temp+(Lse&0x0f)*0.625;*/
temp=0x0000;//一定要初始化不然报错
temp=(Lse>>4)*10+Hse*160+(Lse&0x0f)*0.625;
/*temp=Hse;
temp=(temp<<8)|Lse;
temp=temp>>4;
temp=10*temp;
temp=temp+(Lse&0x0f)*0.625;*/
}
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。