Technology sharing

51 microcontroller evolutionis infixa: 5. Button, matrix conjunctionis operationis et simulationis protues

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


提示

I Puga introductio

1.1 Key types

Clavis est globulum vel transitum ad nexum et disiunctionem instrumenti electronici seu circuitionis refrenans. Solent duas habere civitates: apertas et clausas. Sequens est introductio ad aliquas bullarum commutationes communes:

  1. Ventilabis Button Switch: Haec est Bulla simplex quae gyrum coniungit cum presso et rumpit ambitum dimissum. Solent saepe regere machinam in/off switch vel felis munus specificum.
  2. Toggle Switch: A toggle switch is a switch with the fix position that be switched manually. Solent habere duas vel plures positiones fixas (ut apertas et clausas), et permutatio positio transiti coniungit vel disiungit ambitum.
  3. Slide Switch: A slide switch is a switch that changes state by labens a button. Solent autem duas positiones habere, et ambitus iungitur vel disiungitur per lapsus ab uno loco ad alterum.
  4. Toggle Switch: A toggle switch est virga quae mutatur statum mutando puga. Solent habere mediam positionem et duas extremas positiones, cum ambitu connexo vel disiungitur, ab uno loco ad alium locum globulum flipping.
  5. Button SWITCH: A pulsus globulus switch pulsus similis est, sed plerumque mechanismum vernum habet, quod automatice ad suum statum pristinum redit, cum ipsum emittitur. Saepe adhibentur in applicationibus ubi puga pyga ut nexum tenere debeas et emittere puga pyga ut ambitum frangas.
  6. Electronic SWITCH: Commutatio electronic est virga quae utitur componentibus electronicis (ut transistores vel dispositos) ad nexum et disiunctio circuli coercendum.Possunt regere mutandi statum per electrica significationibus vel aliis CT modis

1.2 Puga application missiones

Quaedam applicationes missionum bullarum mechanicarum;

  1. Claviaturae computatrae: Claviaturae mechanicae late in campo computatorio utuntur. Quia claves mechanicae melius tactum sentiunt et clavem peregrinationem praebent, typing et ludum experientia magis commodus et subtilis est.
  2. Apparatus lusus: Claves mechanicae late adhibentur in lusu solatur, ludi moderatoris et claviaturae mechanicae lusus. Responsio tangendi et ieiuna responsionis tempus bullarum mechanicarum adiuvant meliores lusus imperium peractum.
  3. Industriae armorum moderatio: Bullae mechanicae validam firmitatem habent et aptae sunt missionibus quae crebras operationes in apparatu ditionis industriae requirunt, ut tabulae mechanicas, robot solatur, etc.
  4. Instrumentum communicationis: Bullae mechanicae in instrumento communicationis adhiberi possunt ut telephonicas, telephonicas, et ambulationes utilia ad melius tactum et constantiam conjunctionem praebendam.
  5. Instrumentum audio: Claves mechanicae late in instrumento audio adhibentur, ut mixtores, tabulae audio imperium, claviaturae musicae, etc.
  6. Apparatus medicinalis: Bullae mechanicae in instrumento medicorum communiter adhibentur, ut instrumenta medica, tabulae potestates tabulae operativae, etc. Firmitas et commendatio bullarum mechanicarum pendet ad operationem normalem instrumenti medici.
  7. Instrumenta autocineta et aviation: Mechanica globulis uti possunt in tabulis automotivis potestate, instrumento aircraft et in aliis missionibus quae altam fidem et vetustatem requirunt.
    Diuturnitatem, sentire et firmitatem clavium mechanicarum eas faciunt in multis locis anteponendam electionem. Utrum ad efficientiam operis emendandam vel experientiam meliorem user usus praebeat, globuli mechanicae in multis missionibus applicatione late adhibentur.

2 button circuit

Schematicum schematicum clavem circuli in tabula progressionis talis est. J11 moderari adhibetur sive 0/4/8/ bullae in claviaturis matricis sive clavibus independentibus.

Insert imaginem descriptionis hic

Bullae actuales tabulae evolutionis ostensae sunt in figura
Insert imaginem descriptionis hic

Insert imaginem descriptionis hic

III Puga pyga design

3.1 Puga pyga implementation

Primum, globulis independens efficiendis adhibemus pileum laneum ad breve spatium J11 et 2.3, ita ut globuli 0/4/8/C independenter adhiberi possint.
1. Software engineering, duas tabulas novas creamus, c51_key.c et c51_key.h, applica includit.h in c51_key.c, includo c51_key.h in includit.h, et duas tabellas ad documentum sicut tabula indicat.

Insert imaginem descriptionis hic

Quia volumus valorem button ostendere, fronte digitalis tubo utimur ut notitias propono.
Munus ostensio infra ostenditur.

/********************************************************
函数名称:sys_keynum_ledon
函数功能:显示按键数值
入口参数:按键数值
出口参数:
修    改:
内    容:
********************************************************/
void sys_keynum_ledon(unsigned char num)
{
	//根据原理图,将P0口全部输出高电平,P2选择0号数码管
	P0=EL[num];//取显示数据,段码
	P2=0;  	//取位码
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

In c51_key.c, clavis deducendi deprehensio

bit key1=0;   //定义按键位置
bit key2=0;
bit key3=0;
bit key4=0;


/********************************************************
函数名称:sys_key_single
函数功能:按键检测
入口参数:
出口参数:按键数值
修    改:
内    容:
********************************************************/
static unsigned char key1_history = 0;//缓存上一次按键的结果
unsigned char sys_key_single(void)
{
	key1=P30;   //定义按键位置
	key2=P31;
	key3=P32;
	key4=P33;

	if(!key1)  //按下相应的按键,数码管显示相应的码值
	{
		key1_history = 1;
		return 1;
	}
	else if(!key2)
	{
		key1_history = 2;
		return 2;
	}
	else if(!key3)
	{
		key1_history = 3;
		return 3;
	}
	else if(!key4)
	{
		key1_history = 4;
		return 4;
	}
	else
	{
		return key1_history;
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

Propositum principale allegatum est:

#include "includes.h"



/*------------------------------------------------
                    延时子程序
------------------------------------------------*/
void delay(unsigned int cnt) 
{
 while(--cnt);
}

/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (void)
{
	//8个指示灯的操作
	sys_led();
	sys_led_test();
	sys_led_test1();
	
	sys_ledtube_on1();
	sys_ledtube_on2();
	
	//主循环中添加其他需要一直工作的程序
	while (1)
	{
		sys_keynum_ledon(sys_key_single());
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

3.2 Puga pyga modum eliquandi

/********************************************************
函数名称:sys_key_single
函数功能:按键检测,带有消抖策略
入口参数:
出口参数:按键数值
修    改:
内    容:
********************************************************/
static unsigned char key1_history = 0;//缓存上一次按键的结果
unsigned char sys_key_single(void)
{
	key1=P30;   //定义按键位置
	key2=P31;
	key3=P32;
	key4=P33;

	if(!key1)  //按下相应的按键,数码管显示相应的码值
	{
		delay(1000);
		if(!key1)
		{
			key1_history = 1;
			return 1;
		}
		else
		{
			return key1_history;
		}
	}
	else if(!key2)
	{
		delay(1000);
		if(!key2)
		{
			key1_history = 2;
			return 2;
		}
		else
		{
			return key1_history;
		}
	}
	else if(!key3)
	{
		delay(1000);
		if(!key3)
		{
			key1_history = 3;
			return 3;
		}
		else
		{
			return key1_history;
		}
	}
	else if(!key4)
	{
		delay(1000);
		if(!key4)
		{
			key1_history = 4;
			return 4;
		}
		else
		{
			return key1_history;
		}
	}
	else
	{
		return key1_history;
	}
	
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

3.3 Matrix button design

// Ostende segmentum notae valorem 01234567, qui spectari potest schismatici schematis respondens et clavum excelsum punctum planum configurationis status diversis graphicis respondentem ostende.

unsigned char const EL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
		                  	 0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F
  • 1
  • 2
unsigned char sys_key_board(void)
{
	unsigned char key = 0x00;
	unsigned char num = 0x00;
	key=keyscan();  //调用键盘扫描
	if(key == 0xFF)
	{
		num = key1_history;
	}
	else
	{
		switch(key)
		{
			case 0xee:num = 0x0;break;//0按下相应的键显示相对应的码值
			case 0xde:num = 0x1;break;//1 按下相应的键显示相对应的码值 
			case 0xbe:num = 0x2;break;//2
			case 0x7e:num = 0x3;break;//3
			case 0xed:num = 0x4;break;//4
			case 0xdd:num = 0x5;break;//5
			case 0xbd:num = 0x6;break;//6
			case 0x7d:num = 0x7;break;//7
			case 0xeb:num = 0x8;break;//8
			case 0xdb:num = 0x9;break;//9
			case 0xbb:num = 0xA;break;//a
			case 0x7b:num = 0xB;break;//b
			case 0xe7:num = 0xC;break;//c
			case 0xd7:num = 0xD;break;//d
			case 0xb7:num = 0xE;break;//e
			case 0x77:num = 0xF;break;//f
			default:num = key1_history; break;
		}
		
		key1_history = num;
	}
	return num;
}


/*------------------------------------------------
              键盘扫描程序
------------------------------------------------*/
unsigned char keyscan(void)  //键盘扫描函数,使用行列反转扫描法
{
	unsigned char cord_h,cord_l;//行列值中间变量
	P3=0x0f;            //行线输出全为0
	cord_h=P3&0x0f;     //读入列线值
	if(cord_h!=0x0f)    //先检测有无按键按下
	{
		delay(100);        //去抖
		if(cord_h!=0x0f)
		{
			cord_h=P3&0x0f;  //读入列线值
			P3=cord_h|0xf0;  //输出当前列线值
			cord_l=P3&0xf0;  //读入行线值
			return(cord_h+cord_l);//键盘最后组合码值
		}
	}
	return(0xff);     //返回该值
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

3.4 Button Protues simulation

Bulla independens ut exitum ostendat, switch SUMMERGO, unum finem conjunctionis ad terram coniungere

Insert imaginem descriptionis hic

Matrix clavis simulationis claviaturae:Insert imaginem descriptionis hic

4 Summarium de clavibus operationibus

In applicationibus microcontrollerorum, commendatio deprehensionis clavem designandi pendet ut ratio operandi initus et stabilis ratio recte provideatur. Hic sunt quaedam principia designativa ut emendare clavem deprehendendi constantiam;

  1. Eliminare key jitter: Clavis jitter significat brevem instabilem signum generatum cum globulum expressum vel dimissum est. Ad eliminationem jitter, hardware vel software jitter eliminationis modos adhiberi possunt. In latere ferramentario, capacitores externae vel RC reticulae ad e jitter eliquare possunt. Secundum programmatum, programmatum morae seu machinarum status ad stabilienda signa clavis adhiberi possunt.
  2. Utere resistoribus externis viverra-sursum/descendere: utendo resistor externo vel traho vel clavo adnexo, efficere potes ut clavis stabilis maneat si non urgeatur. Hoc facere vetat volitare signa cum claves non exprimuntur.
  3. Mora et algorithms debilitare: aptam moram exsequens et algorithms in programmatibus debilitare potest emendare fidem clavistri deprehensionis. Mora statum clavem stabilem efficere et falsum excitatum vitare potest. Algorithmus debilitare potest e clavibus jitterarum diurnariis eliquare ut tantum validae operationes diurnariae detegantur.
  4. Multiplex deprehensio et confirmatio: Ad meliorem fidem faciendam, multae machinae deprehensio et confirmatio adhiberi possunt. Exempli causa, programmatio timor vel interpellatio adhiberi potest ad interdum clavem status deprehendere, et plures confirmationes adhiberi possunt ad efficax excitato clavis.
  5. Input buffers et machinis publicis: initus buffers utere ad congregem keystroke input, et tunc utere machina publica ad processum initus. Machina status clavem status indagare potest et eventus clavis manu tractare ut rectitudinem et stabilitatem clavium operationum curet.
  6. Intercessiones solitudo potentiae copiae et filum humile: Ut impedire influxus potentiae impedimentum et filum humus in signum clavem remittere possint, opportuna mensurae solitariae sumi possunt. Exempli causa, potentia separata et planis tritae utuntur, vel filtra ad impedimentum reducendum.
  7. Mechanismi culpae tolerantiae pro ferramentis et programmatibus: Design culpa-tolerantiae machinationes ad tutelam inputationis clavis adhibendam cum errores vel conditiones abnormes occurrunt. Exempli gratia, redundantia deprehensio, deprehensio checksum, errorum tractatio et machinae recuperatio etc. adhiberi possunt.
    In genere, certa deprehensionis clavis consilio, varios factores in ferramentis ac programmatis comprehendere oportet, ac optimizationem aptam ac adaptationem secundum specifica applicatione missionum facere. Proprio consilio et exsecutione stabilitas, accuratio et firmitas clavium conservari possunt.