百度seo价格查询系统,查询的每个词价格,全部经过系统精密计算!优化网站需要长期,后期维护要坚持。
文件:/f/--(访问密码:)
-------------------------------------------分割线---------------------------------------------
老周马马虎虎地介绍TM的数码管驱动,这个模块除了驱动LED数码管,还有一个功能:按键扫描。记得前面的水文中老周写过一个16个按键的模块。那个是我们自己写代码去完成键扫描的。但是,缺点是很明显的,它会占用我们应用的许多运行时间,尤其是在微控制器开发板上,资源就更紧张了。所以,有一个专门的芯片来做这些事情,可以大大地降低代码的执行时间开销。
复制代码internalenumTMCommand:byte{//读按钮扫描ReadKeyScanData=0b__,//自动增加地址AutoIncreaseAddress=0b__,//固定地址FixAddress=0b__,//选择要读写的寄存器地址SetDisplayAddress=0b__,//显示控制设置DisplayControl=0b__}复制代码上回咱们已经写了WriteByte方法,现在,为了读按键数据,还要实现一个ReadByte方法。
复制代码byteReadByte(){//切换为输入模式_gpio.SetPinMode(DIOPin,PinMode.Input);//从低位读起bytetmp=0;for(inti=0;i>=1;//拉低clk线_gpio.Write(CLKPin,0);//读电平if((bool)_gpio.Read(DIOPin)){tmp|=0x80;}//拉高clk线_gpio.Write(CLKPin,1);}//还原为输出模式_gpio.SetPinMode(DIOPin,PinMode.Output);returntmp;}复制代码由于TM的大部分操作都是输出,只有读按键是输入操作,因此,在ReadByte方法中,先将DIO引脚改为输入模式,读完后改回输出模式。不过呢,因为这个模块只有这个命令是要读数据,其他命令都是写数据,而且这按键信息是一次性读四个字节,要是每读一个字节都切换一次输入输出,有点浪费性能,咱们把上面的代码去掉切换输入输出的代码。
复制代码byteReadByte(){//从低位读起bytetmp=0;for(inti=0;i<8;i ){……//拉高clk线_gpio.Write(CLKPin,1);}returntmp;}复制代码然后把输入输出切换的代码移到ReadKey方法中。
复制代码publicintReadKey(){//拉低STB_gpio.Write(STBPin,0);//发送读按键命令WriteByte((byte)TMCommand.ReadKeyScanData);//切换为输入模式_gpio.SetPinMode(DIOPin,PinMode.Input);//读四个字节varkeydata=newbyte[4];for(inti=0;i<4;i ){keydata[i]=ReadByte();}//拉高STB_gpio.Write(STBPin,1);//还原为输出模式_gpio.SetPinMode(DIOPin,PinMode.Output);//分析按键intkeycode=-1;if(keydata[0]==0x01)keycode=0;//按键1elseif(keydata[1]==0x01)keycode=1;//按键2elseif(keydata[2]==0x01)keycode=2;//按键3elseif(keydata[3]==0x01)keycode=3;//按键4elseif(keydata[0]==0x10)keycode=4;//按键5elseif(keydata[1]==0x10)keycode=5;//按键6elseif(keydata[2]==0x10)keycode=6;//按键7elseif(keydata[3]==0x10)keycode=7;//按键8returnkeycode;}
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。