杨木柳木区别,杨柳木和杨柳木能婚配(单片机学习第四课——行列式键盘)
关于【杨木柳木区别】,杨柳木和杨柳木能婚配,今天犇犇小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、单片机学习第四课——行列式键盘
- 2、杨木柳木区别
1、单片机学习第四课——行列式键盘
矩阵可以用做按键较多的案例。比如,计算器的编写
独立按键用来实现一些用到按键比较少的案例。
矩阵键盘
PCB板
二,键盘的工作原理
键盘中的一个按键开关的两端分别连接在行线和列线上,列线接地,行线通过电阻接到+5v上。当开关的机械触点断开,闭合,其行线的电压输出波形如下图(图二)
电压输出波形图
在第二张图中,我们可以看到,t1和t3分别为按键的闭合与断开过程中的抖动时间段,而且呈现一看连串的负脉冲,我们注意到这个抖动时间的长短与开关的机械特性有关,一般在我们按下按键后年,一般为5-10ms的样子。t2为一个稳定的闭合时间段。注意:在设计时,应该考虑到消抖(软件和硬件)
三,按键的识别高电平(低电平有效)
按键是否能够闭合,这与行线的输出电压有关系,其实就是反应在行线的输出电压的高电平还是低电平,单片机通过对行线电平的高低状态的检测,就可以确认按键是否按下与松开,为了确保单片机对一次按键发生的动作只确认一次按键有效,那么必须要消除抖动期的t1与t2的影响。
四,消除按键机械带来的抖动
我们一般都是采用两种方案:
- 软件消抖
主要的一个思想还是:当检测到有按键按下时,对该键对应的行线为低电平,且执行一段延时函数,大约为10ms的延时,确认该行线电平是否为低电平,如果仍为低电平,那么我们就确认确实有按键按下了。当按键被松开时,行线的低电平变为高电平,执行一短延时10ms的程序后,检测该行线为高电平,说明按键确实已经松开。
2.采用专用的键盘/显示器接口芯片。处理电路中的抖动。
五,键盘扫描瑜工作原理
pcb原理图
具体原理说明:
六,行列式键盘实战
1.简单的操作
①、通过仿真电路中的行列式键盘输入任意6个按键,要求识别按键后实现在6位数码管上显示按键编号;
②、数码管显示利用动态扫描方法;
③、在按键检测处理程序中增加软件消抖部分。
2.仿真电路图
如何建立工程与仿真
慧净开发板的键盘展示
3.源代码
#include<reg51.h>#include<intrish.h>#define uchar unsigned char#define schar signed charsbit DUAN=P2^6;sbit WEI=P2^7;sbit L1=P1^0;sbit L2=P1^1;sbit L3=P1^2;sbit L4=P1^3;uchar data password[6] ;uchar data led[6]={16,16,16,16,16,16};uchar data ledwei[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};uchar data displaytab[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; uchar n=0; void delay() { uchar x,y; for(x=2;x>0;x--) for(y=250;y>0;y--); } void delay10ms() { uchar x,y; for(x=20;x>0;x--) for(y=250;y>0;y--); } void display() { uchar i; for(i=0;i<6;i++) { P0=displaytab[led[i]]; DUAN=1; DUAN=0; P0=ledwei[i]; WEI=1; WEI=0; delay(); P0=0xff; WEI=1; WEI=0; } } void keyscan() { uchar temp,m; P1=0xef; for(m=0;m<=3;m++) { if(L1==0) { delay10ms(); if(L1==0) { password[n]= m*4+0; n++; while(!L1); delay10ms(); while(!L1); } } if(L2==0) { delay10ms(); if(L2==0) { password[n]=m*4+1; n++; while(!L2); delay10ms(); while(!L2); } } if(L3==0) {delay10ms(); if(L3==0) { password[n]=m*4+2; n++; while(!L3); delay10ms(); while(!L3); } } if(L4==0) {delay10ms(); if(L4==0) { password[n]=m*4+3; n++; while(!L4); delay10ms(); while(!L4); } } temp=P1; temp=temp|0x0f; temp=temp<<1; temp=temp|0x0f; P1=temp; } }void main(){uchar j;while(1){display();keyscan();if(n==6){n=0;for(j=0;j<=5;j++){led[j]=password[j]; } } }}
4.运行程序后,随意按下键盘上的六个键,数码管上会显示相应的数值。
附上计算器的源代码(大家可以试试)
①原理图
②代码(注释乱码,其他正常)
main程序
#include <reg52.h> #include "key.h"#include "smg.h"#include "timer.h"int main(void){u8 ret = 0;Show_Number(0);while(1){Smg_Dymainc( );Jz_Key_Scan( );}}
按键 key.c
#include "key.h"u8 code KeyCode[16] = { 0x31, 0x32, 0x33, 0x26, 0x34, 0x35, 0x36, 0x25, 0x37, 0x38, 0x39, 0x28, 0x30, 0x1B, 0x0D, 0x27}; void Key_Delay(u16 n){u16 x, y;for(x = 0; x < n; x++){for(y = 0; y < 110; y++);}}u8 buf[5][3];u8 Key_Scan(void){static u8 key_sta = 0;static char i = 0;if((KEY1 == 0 || KEY2 == 0 || KEY3 == 0 || KEY4 == 0) && (key_sta == 0)){Key_Delay(10);if((KEY1 == 0 || KEY2 == 0 || KEY3 == 0 || KEY4 == 0) && (key_sta == 0)){if(KEY1 == 0){key_sta = 1;TR0 = !TR0;}else if(KEY2 == 0){key_sta = 1;buf[i][0] = msec;buf[i][1] = sec;buf[i][2] = min;i++;//1 2 if(i >= 5)i = 0;}else if(KEY3 == 0){key_sta = 1;i--;if(i < 0)i = 0;msec = buf[i][0];sec = buf[i][1];min = buf[i][2];}else if(KEY4 == 0){key_sta = 1;msec = 0;sec = 0;min = 0;}}}else if(KEY1 == 1 && KEY2 == 1 && KEY3 == 1 && KEY4 == 1)//û°´¼ü°´ÏÂ{key_sta = 0;}return 0;}u8 Jz_Key_Scan(void){u8 temp = 0xff; static u8 flag = 0;P1 = 0x0f;if((P1 != 0x0f) && (flag == 0)){Key_Delay(10);if((P1 != 0x0f) && (flag == 0)){flag = 1;switch(P1){case 0x07: temp = 0; break;case 0x0b: temp = 1; break;case 0x0d: temp = 2; break;case 0x0e: temp = 3; break;}P1 = 0xf0;switch(P1){case 0x70: temp += 0; break;case 0xb0: temp += 4; break;case 0xd0: temp += 8; break;case 0xe0: temp += 12; break;}Data_Control(KeyCode[temp]);}}else if(P1 == 0x0f){flag = 0;}return temp;}
数码管显示
#include "smg.h"u8 leddata[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, 0x40, 0x00};u8 buff[8] = {0};void Smg_Delay(u16 n){u16 x, y;for(x = 0; x < n; x++){for(y = 0; y < 110; y++);}}void Smg_Static(u8 number){P0 = leddata[number];}void Smg_Dymainc(void){u8 i;for(i = 0; i < 8; i++){P0 = 0x00;switch(i){case 0: LA = 0; LB = 0; LC = 0; break;case 1: LA = 1; LB = 0; LC = 0; break;case 2: LA = 0; LB = 1; LC = 0; break;case 3: LA = 1; LB = 1; LC = 0; break;case 4: LA = 0; LB = 0; LC = 1; break;case 5: LA = 1; LB = 0; LC = 1; break;case 6: LA = 0; LB = 1; LC = 1; break;case 7: LA = 1; LB = 1; LC = 1; break;}Smg_Static(buff[i]);Smg_Delay(1);}}void Show_Number(u16 dis)//12{u8 bf[8] = {0};char i = 0;for(i = 0; i < 8; i++){bf[i] = dis % 10;//bf[0] = 2 bf[1] = 1 bf[2] -- bf[7] = 0dis = dis / 10;}for(i = 7; i >= 1; i--)//b[2] - bf[7]{if(bf[i] == 0){buff[i] = 17;}else{break;//1}}for(; i >= 0; i--){buff[i] = bf[i];}}void Data_Control(u8 dat)//12 5{static u16 temp = 0;static u16 result = 0;static bit add_flag = 0; //¼Ó·¨±ê־λstatic bit sub_flag = 0; //¼õ·¨±ê־λstatic bit mul_flag = 0; //³Ë·¨±ê־λstatic bit div_flag = 0; //³ý·¨±ê־λif(dat >= 0x30 && dat <= 0x39)//°´¼ü°´ÏµÄÊÇÊý×Ö{temp = temp * 10 + dat - '0'; //12Show_Number(temp);//ÏÔʾÊý×Ö}else if(dat == 0x26) // +ºÅ{result += temp;temp = 0;add_flag = 1;Show_Number(result);//ÏÔʾÊý×Ö}else if(dat == 0x25) // -ºÅ{if(result == 0 && temp != 0){result = temp;}else{result -= temp;}sub_flag = 1;temp = 0;Show_Number(result);//ÏÔʾÊý×Ö}else if(dat == 0x28) // *ºÅ{if(result == 0 && temp != 0){result = temp;}else if(result != 0 && temp == 0){result = result;}else{result *= temp;}mul_flag = 1;temp = 0;Show_Number(result);//ÏÔʾÊý×Ö}else if(dat == 0x27) // /ºÅ{if(result == 0 && temp != 0){result = temp;}else if(result != 0 && temp == 0){result = result;}else{result /= temp;}div_flag = 1;temp = 0;Show_Number(result);//ÏÔʾÊý×Ö}else if(dat == 0x0D) // =ºÅ{if(add_flag == 1)//ÇóºÍ{add_flag = 0;result += temp;}else if(sub_flag == 1)//Çó²î{sub_flag = 0;result -= temp;}else if(mul_flag == 1)//Çó»ý{mul_flag = 0;result *= temp;}else if(div_flag == 1)//ÇóÉÌ{div_flag = 0;result /= temp;}temp = 0;Show_Number(result);//ÏÔʾÊý×Ö}else if(dat == 0x1b) // ÇåÁã{result = 0;temp = 0;Show_Number(result);//ÏÔʾÊý×Ö}}
timer.c
#include "timer.h"//º¯Êý¹¦ÄÜ£º¶¨Ê±Æ÷³õʼ»¯//º¯ÊýÐβΣºÎÞ//·µ»ØÖµ£ºÎÞvoid Timer_Init(void){TMOD &= 0xf0;// XXXX XXXX // 1111 0000// XXXX 0000TMOD |= 0x01;// XXXX 0000// 0000 0001// XXXX 0001TH0 = (65536 - 1000) / 256;TL0 = (65536 - 1000) % 256;ET0 = 1;EA = 1;}u8 msec;u8 min;u8 sec;void Timer_interrupt(void) interrupt 1 //1ms{static u16 cnt = 0;TH0 = (65536 - 1000) / 256;TL0 = (65536 - 1000) % 256;cnt++;if(cnt >= 10){cnt = 0;msec++;if(msec >= 100){msec = 0;sec++;if(sec >= 60){sec = 0;min++;if(min >= 60)min = 0;}}}
2、杨木柳木区别
杨木柳木区别?
一、杨树和柳树的科属区别1、杨树:杨树为植物界、种子植物门、被子植物亚门、双子叶植物纲、五桠果亚纲、杨柳目、杨柳科、杨属落叶乔木。 2、柳树:柳树为植物界、种子植物门、被子植物亚门、双子叶植物纲、五桠果亚纲、杨柳目、杨柳科、柳属落叶灌木。
二、杨树和柳树的形态区别1、杨树:杨树小枝具顶芽与芽鳞2枚以上。
单叶互生,卵形或近圆形,在落叶前叶子变黄。柔荑花序,雌雄异株,不具花瓣,有环状花盘及苞片。苞片顶端分裂,雄蕊多数。
种子小,具冠毛。2、柳树:柳树枝圆柱形,髓心近圆形。无顶芽,侧芽通常紧贴枝上,芽鳞单一。
叶互生,稀对生,通常狭而长,多为披针形,羽状脉,有锯齿或全缘。葇荑花序直立或斜展,先叶开放,或与叶同时开放,稀后叶开放。蒴果2瓣裂,种子小,多暗褐色。
三、杨树和柳树的产地区别1、杨树:杨树是世界上分布最广、适应性最强的树种,主要分布北半球温带、寒温带森林树种,北纬22~70°,从低海拔到4800米。在中国分布范围跨北纬25~53°,东经76~134°,遍及东北、西北、华北和西南等地。2、柳树:柳树的适于各种不同的生态环境,不论高山、平原、沙丘、极地都有柳树生长。
主要分布于北半球温带地区。旱柳产中国华北、东北、西北地区的平原。垂柳遍及中国各地,欧洲、亚洲、美洲许多国家有引种。四、杨树和柳树的作用区别1、杨树:大径级杨木主要用于生产胶合板、单板层积材、家具,小径级杨木用于生产纤维板、刨花板、造纸和火柴,可广泛用于生态防护林、三北防护林、农林防护林和工业用材林。
做为道路绿化、园林景观用也是一个非常优秀的树种,其特点是高大雄伟、整齐标志、迅速成林、能防风沙、吸收废气。2、柳树:柳树树形优美,放叶、开花早,早春满树嫩绿,是北温带公园中主要树种之一。树皮可作器具和造纸原料,柳絮可填塞椅垫和枕头,枝和须根能祛风除湿,柳枝皮的纤维可作纺织及绳索原料,枝条可编织提篮、抬筐、柳条箱及安全帽等,木材可作小农具、小器具与烧制木炭用。
从杨木家具的优缺点分析杨木家具到底好不好
杨木家具好。杨木家具的优点:1、杨木家具木质坚韧强度高,承受力高的特点,在制作家具中,适于雕刻,而且十分美观。
黄杨木木性较其它杨木性质更为坚韧,力学强度更高,耐腐蚀性强,硬度与强度适中,适合雕刻,一般透雕浮雕均能适应。
2、杨木木质心材与边材性质分明,心材与边材显示明显,边材呈暗黄色,心材呈现暗紫灰色。黄杨木纹理通达清晰,刨面光滑,弦面花纹美丽,木材经整形、雕磨髹漆、可制作精美的雕漆工艺品。3、杨木木材纹理通达,纹理清晰明朗,美观性强,适合摆放观赏度高有很高收藏价值,造型简单流畅大方。中国的黄杨木家具以明式款为主,造型简练,线条流畅,风格典雅大方.明式家具装饰适度,繁简相宜,局部装饰恰如其分。
杨木家具的缺点:1、黄杨木有新老之分,易变形、爱长虫、收缩严重是新黄杨木家具的缺点;而老黄杨木的缺点是有些地方会有老虫眼、老开裂、老榫头眼等。2、在干燥房严格干燥的黄杨木家具是不易开裂的,但是黄杨木不易干,现在市场上有很多黄杨木板材出于成本或设备上存在的诸多问题,木材的烘干不到位,所以制作出来的黄杨木家具很容易出现开裂和变形。3、由于黄杨木材质较高,所以家具价格比其他实木家具价格都要贵。
如果是有很高收藏价值的老黄杨木家具,价格更是贵上加贵。相比而言,新黄杨木家具和相思木家具价格相对来说要一些。另外,杨木家具的木质较为细软,性稳,比桦木轻软,而且杨木有种的味道,有些闻起来可能会不适应。
清洁与保养木制家具离不开日常清洁和保养,错误的方法只会使其使用寿命大大减少,接下来就简单介绍下杨木家具的清洁与保养方法:1、避免阳光直射,长时间暴晒容易局部褪色,木质过于干燥,容易出现裂缝。要保持环境的干燥,保持通风。2、要定期清洁除灰,细小缝隙中容易积灰影响美观,同时灰尘会影响木制家具的使用寿命。
3、要经常注意防止杨木家具碰伤碰裂,如果在使用或搬动时,发现着力处出现脱榫,一定要重新胶合密封后再使用。4、适当的打蜡,通常情况下2-3个月使用一次即可,在比较干燥的环境中可以适当缩短保养间隔时间,一个月左右保养一次。
杨木书桌好吗
好的。1、杨木木质坚韧强度高,承受力高的特点,在制作家具中,适于雕刻,而且十分美观。
黄杨木木性较其它杨木性质更为坚韧,力学强度更高,耐腐蚀性强,硬度与强度适中。
2、杨木木质心材与边材性质分明,心材与边材显示明显,边材呈暗黄色,心材呈现暗紫灰色。黄杨木纹理通达清晰,刨面光滑,弦面花纹美丽,木材经整形。
本文关键词:杨柳木与杨柳木,杨柳木配杨柳木,杨木柳木区别在哪,柳木和杨木板的区别,杨柳木和杨柳木能婚配。这就是关于《杨木柳木区别,杨柳木和杨柳木能婚配(单片机学习第四课——行列式键盘)》的所有内容,希望对您能有所帮助!更多的知识请继续关注《犇涌向乾》百科知识网站:http://www.029ztxx.com!
版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。