当前位置: 首页 > news >正文

十大免费不用收费的网站东莞网站的关键字推广

十大免费不用收费的网站,东莞网站的关键字推广,dede 后门暴网站,wordpress 附件上传插件目录 目录 目的 一#xff0c;STC单片机模块 二#xff0c;矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…目录 目录 目的 一STC单片机模块 二矩阵按键模块 2.1 针脚定义 ​编辑  2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程序代码如下 三创建Keil项目 四代码  五代码编译、下载到51单片机 六效果 ​​编辑 目的 按下矩阵按键数码管显示按下的键值 一STC单片机模块 二矩阵按键模块 2.1 针脚定义 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 初学者按键按下后就到通针脚导通就是高电平我最开始是这么理解的。这种理解不是不正确只是没结合实际电路分析 我们按照初学者的逻辑来分析下 假如S1按下 P17和P13 此时是相同的电平。那么他们是同时处于高电平还是低电平呢我们在程序中怎么去判定呢是S1按下的呢这里要明白  系统上电后针脚P10-P17都是低电平。那么P13和P17及时接通了也还是都处于低电平。 2.3.2 错误理解2 既然要有电位差那直接先给P17-P14都给高电平然后判定P10-P13上的电平。或者先给P10-P14高电平然后判断P17-P14 的电平。我们看电路图 我们来判定P17 上的电平。如果是高电平S1按下 P17是高电平S2按下P17也是高电平S3按下P17也是高电平S4按下P17还是高电平。实际上我们不能确定按下的那个按键。 2.3.3 正确判定按下的是那个按键的逻辑 我们只能依次给P10-P13纵排或者P17-P14(横排)高电平为什么要依次给高电平不能同时给高电平上面两个错误理解已经说了。 假如按键按下了S10我们来分析。 我们先给P10 高电平如下图然后分别检测P17-P14的电平状态。发现P17-P14全是低电平。 在把P10设置为低电平P11设置为高电平如下图。然后分别检测P17-P14的电平状态。发现P17-P14任然全是低电平。 在把P11设置为低电平P12设置为高电平如下图。然后分别检测P17-P14的电平状态。发现P15是高电平P14、P16、P17是低电平。 再把P12设置为低电平P13设置为高电平如下图。然后分别检测P17-P14的电平状态。发现P17-P14任然全是低电平。 所以这里只能依次扫描 2.3.4 判定按键按下的依次扫描程序代码如下 unsigned char MatrixKey() {unsigned char KeyNumber0;P10xFF;P1_30;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber1;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber5;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber9;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber13;}P10xFF;P1_20;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber2;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber6;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber10;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber14;}P10xFF;P1_10;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber3;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber7;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber11;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber15;}P10xFF;P1_00;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber4;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber8;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber12;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber16;}return KeyNumber; } 三创建Keil项目 详细参考51单片机STC89C52RC——创建Keil项目-CSDN博客 四代码  main.c #include REGX52.H #include ShuMaGuan.h #include Delay.h #include MatrixKey.h /*** 函 数主函数* 参 数无* 返 回 值无*/ void main() {unsigned int KeyNum0,ShowKeyNum0;while(1){KeyNumMatrixKey(); //获取按下的键if(KeyNum){ShowKeyNumKeyNum; //将按下的键赋值给显示值}ShuMaGuan_ShowNumber(ShowKeyNum);//数码管显示} } ShuMaGuan.c #include REGX52.H #include Delay.h /*数码管可显示值*/ unsigned int ShuMaGuan_EnableDisplayValue[]{0,1,2,3,4,5,6,7,8,9,A,C,E,F,H,J,L,P,q,U,.,b,d,u,-}; /*数码管显示值对应的HEX*/ unsigned int ShuMaGuan_EnableDisplayHEX[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x39,0x79,0x71,0x76,0x1E,0x38,0x73,0x67,0x3E,0x80,0x7C,0x5E,0x1C,0x40}; /*** 函 数获取可显值对应的HEX* 参 数数码管显示的值* 返 回 值数码管显示时对应的HEX*/ unsigned int ShuMaGuan_GetEnableDisplayValueOfHEX(unsigned int Value) {unsigned int index0;for(index0;index24;index)//遍历显示值的数组{if(ShuMaGuan_EnableDisplayValue[index]Value)//找到对应值的索引{break;}}return ShuMaGuan_EnableDisplayHEX[index]; } /*** 函 数设置数码管要显示的值* 参 数显示值* 返 回 值无*/ void ShuMaGuan_SetDisplayValue(unsigned int Value) {/*将要显示的值 复制给P0*/P0ShuMaGuan_GetEnableDisplayValueOfHEX(Value); } /*** 函 数设置要显示的数码管 位置* 参 数位置左起1-8* 返 回 值无*/ void ShuMaGuan_SetDisplayLocation(unsigned int Location) {switch(Location) //位码输出{case 1:P2_41;P2_31;P2_21;break;case 2:P2_41;P2_31;P2_20;break;case 3:P2_41;P2_30;P2_21;break;case 4:P2_41;P2_30;P2_20;break;case 5:P2_40;P2_31;P2_21;break;case 6:P2_40;P2_31;P2_20;break;case 7:P2_40;P2_30;P2_21;break;case 8:P2_40;P2_30;P2_20;break;} } /*** 函 数数码管展示* 参 数Location 显示的位置Value 显示的值* 返 回 值无*/ void ShuMaGuan_Display(unsigned int Location,unsigned int Value) {/*显示位置*/ShuMaGuan_SetDisplayLocation(Location);/*显示值*/ShuMaGuan_SetDisplayValue(Value);/*等待显示稳定*/Delay_10us(10);/*消除阴影*/P00x00; } /*** 函 数显示一个数字 * 参 数整形数字 -32767到32767* 返 回 值无*/ void ShuMaGuan_ShowNumber(int Num) {int Location8,Temp,Flag1;if(Num0){Num-Num;//再将负数转为正数Flag-1;//表示需要显示‘负号-’}TempNum%10;while(Location0Num0){ShuMaGuan_Display(Location,Temp); Location--;NumNum/10;TempNum%10;} if(Flag-1Location0){ShuMaGuan_Display(Location,-);//负数显示负号 } } ShuMaGuan.h #ifndef __SHUMAGUAN_H_ #defind __SHUMAGUAN_H_ void ShuMaGuan_Display(unsigned int Location,unsigned int Value); void ShuMaGuan_ShowNumber(int Num); #endifDelay.c /*** 函 数延时函数 毫秒* 参 数ms 延时多少毫秒* 返 回 值无*/ void Delay_ms(int ms) //12.000MHz {unsigned char data i, j;while(ms--){ i 2;j 239;do{while (--j);} while (--i);} } /*** 函 数延时函数 毫秒* 参 数ms 延时多少毫秒* 返 回 值无*/ void Delay_us(int ms) //12.000MHz {unsigned char data i, j;while(ms--){ i 2;j 239;do{while (--j);} while (--i);} } /*** 函 数延时函数 10微秒* 参 数无* 返 回 值无*/ void Delay_10us(int _10us) //11.0592MHz {unsigned char data i;while(_10us--){i 2;while (--i);} } Delay.h #ifndef __DELAY_H_ #defind __DELAY_H_ void Delay_ms(int ms); void Delay_10us(int _10us); #endifMatrixKey.c #include REGX52.H #include Delay.h/*** 函 数矩阵键盘读取按键键码* 参 数无* 返 回 值KeyNumber 按下按键的键码值如果按键按下不放程序会停留在此函数松手的一瞬间返回按键键码没有按键按下时返回0*/ unsigned char MatrixKey() {unsigned char KeyNumber0;P10xFF;P1_30;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber1;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber5;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber9;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber13;}P10xFF;P1_20;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber2;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber6;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber10;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber14;}P10xFF;P1_10;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber3;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber7;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber11;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber15;}P10xFF;P1_00;if(P1_70){Delay_ms(20);while(P1_70);Delay_ms(20);KeyNumber4;}if(P1_60){Delay_ms(20);while(P1_60);Delay_ms(20);KeyNumber8;}if(P1_50){Delay_ms(20);while(P1_50);Delay_ms(20);KeyNumber12;}if(P1_40){Delay_ms(20);while(P1_40);Delay_ms(20);KeyNumber16;}return KeyNumber; }MatrixKey.h #ifndef __MATRIXKEY_H__ #define __MATRIXKEY_H__unsigned char MatrixKey();#endif五代码编译、下载到51单片机 代码编译请参考 《51单片机STC89C52RC——代码编译-CSDN博客》 代码下载请参考 《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》 六效果 ​
http://www.w-s-a.com/news/452849/

相关文章:

  • 网站国内空间价格销售技巧
  • 广安建设企业网站qq互联网站备案号
  • 京东网站建设的要求vs2010做的网站
  • wordpress 新闻杂志主题佛山企业网站排名优化
  • 选服务好的网站建设金华市开发区人才网
  • 广州建站商城南阳高质量建设大城市网站
  • 网站建设合同封面模板做代炼的网站
  • 外贸网站建站要多少钱南昌优化排名推广
  • 做公司网站的尺寸一般是多大企业管理网站
  • 苏州网站设计公司兴田德润i简介做签证宾馆订单用啥网站
  • 网站页面设计工具做网站租空间
  • 做智能网站系统百度提交入口
  • 网站建设代理商电话网站规划和建设方案
  • 双桥区网站制作seo 首页
  • 电子商务网站建设前期准备wordpress域名指向二级目录
  • 汕头建站网站模板淮北做网站电话
  • 手机做logo用什么网站服务器安全防护
  • 课程分销的网站怎么做北京企业网站建设方案
  • 吴兴区建设局网站湖北企业网站建设
  • 网页与网站的区别是什么2023年8月份新冠
  • 唐山网站建设外包公司安卓手机怎么搭建网页
  • 国内做网站最大的公司计量检测网站平台建设方案
  • 重庆沛宣网站建设网页制作初学者
  • php网站漂浮广告代码网络营销跟网站推广有啥区别
  • wordpress调用图片优化型网站建设的基本要求
  • 郑州模板网站建设策划公司做网站怎么赚钱滑县电
  • 东昌府聊城网站优化秦皇岛市妇幼保健院
  • 做网站能赚钱吗网页升级访问通知天天更新
  • 做网站使用什么软件的免费招聘网
  • 宁波网站建设公司推荐哪家淄博网站制作公司服务