单片机c51的按键0~f的代码

作者&投稿:庾范 (若有异议请与网页底部的电邮联系)
求GP2Y1010AU0F C51单片机代码~

电路原理图 图4.20.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (2. 把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3. 把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上; 汇编源程序SECOND EQU 30HMINITE EQU 31HHOUR EQU 32HHOURK BIT P0.0MINITEK BIT P0.1SECONDK BIT P0.2DISPBUF EQU 40HDISPBIT EQU 48HT2SCNTA EQU 49HT2SCNTB EQU 4AHTEMP EQU 4BHORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,#00HMOV MINITE,#00HMOV HOUR,#12MOV DISPBIT,#00HMOV T2SCNTA,#00HMOV T2SCNTB,#00HMOV TEMP,#0FEHLCALL DISPMOV TMOD,#01HMOV TH0,#(65536-2000) / 256MOV TL0,#(65536-2000) MOD 256SETB TR0SETB ET0SETB EAWT: JB SECONDK,NK1LCALL DELY10MSJB SECONDK,NK1INC SECONDMOV A,SECONDCJNE A,#60,NS60MOV SECOND,#00HNS60: LCALL DISPJNB SECONDK,$NK1: JB MINITEK,NK2LCALL DELY10MSJB MINITEK,NK2INC MINITEMOV A,MINITECJNE A,#60,NM60MOV MINITE,#00HNM60: LCALL DISPJNB MINITEK,$NK2: JB HOURK,NK3LCALL DELY10MSJB HOURK,NK3INC HOURMOV A,HOURCJNE A,#24,NH24MOV HOUR,#00HNH24: LCALL DISPJNB HOURK,$NK3: LJMP WTDELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETDISP:MOV A,#DISPBUFADD A,#8DEC AMOV R1,AMOV A,HOURMOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,MINITEMOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,SECONDMOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1RETINT_T0:MOV TH0,#(65536-2000) / 256MOV TL0,#(65536-2000) MOD 256MOV A,#DISPBUFADD A,DISPBITMOV R0,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P1,AMOV A,DISPBITMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,AINC DISPBITMOV A,DISPBITCJNE A,#08H,KNAMOV DISPBIT,#00HKNA: INC T2SCNTAMOV A,T2SCNTACJNE A,#100,DONEMOV T2SCNTA,#00HINC T2SCNTBMOV A,T2SCNTBCJNE A,#05H,DONEMOV T2SCNTB,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXTMOV SECOND,#00HINC MINITEMOV A,MINITECJNE A,#60,NEXTMOV MINITE,#00HINC HOURMOV A,HOURCJNE A,#24,NEXTMOV HOUR,#00HNEXT: LCALL DISPDONE: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40HTAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHEND%D%A

这种显示方式就和手机拨号时,按下号码的显示是一样,第一个数码先在右边显示,再按键,依此向左移动显示。要是6位数码管,就保留6位显示了,按键超过6位时,先按的自然丢掉了。

#include <reg52.h>

#include <intrins.h>


#define uchar unsigned char

#define uint  unsigned int



uchar  key;


unsigned char code disp_code[]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


unsigned char code key_code[]={

0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7, 

0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77 };


/**********************************************************


延时子函数


**********************************************************/

void delayms(uint ms) 

{

uchar t;

while(ms--)

for(t = 0; t < 120; t++);

}

}



/**********************************************************


键盘扫描子函数


**********************************************************/

uchar  keyscan()

{

uchar  scan1,scan2,keycode,j;


P3=0xf0;

scan1=P3;

if((scan1&0xf0)!=0xf0)           //判键是否按下

{

delayms(30);                   //延时30ms

scan1=P3;

if((scan1&0xf0)!=0xf0)         //二次判键是否按下

{

P3=0x0f;

scan2=P3;

keycode=scan1|scan2;         //组合成键编码


for(j=0;j<=15;j++)

{

if(keycode== key_code[j])  //查表得键值

{

key=j;

return(key);

}

}

}

else  P3=0xff;


return (16);

}


/**********************************************************


判键是否按下子函数


**********************************************************/

void  keydown()

{  

P3=0x0f;

if((P3&0x0f)!=0x0f)

{

keyscan();

P0=disp_code[key];

beep();

}


/**********************************************************


主函数


**********************************************************/

main()

{

P0 = 0xbf;

P2 = 0x7f;            //数码管显示"-" 

P3 = 0xff;

while(1)

{

keydown();     

}

}




74ls245如何使用
a. OE=0; b. 先将数据从单片机的口线上输出到Dn; c. 再将LE从0->1->0 d. 这时,你所需要输出的数据就锁存在On上了,输入的数据在变化也影响不到输 出的数据了;实际上,单片机现在在忙着干别的事情,串行通信、扫描键盘……单 片机的资源有限啊。 在单片机按照RAM方式进行并行数据的扩展时,使用movx ...

电脑开机后显示自动修复,你的电脑未正确启动是怎么回事?
电脑开机一直卡在未能正确启动主要是电脑的系统文件损坏了,导致电脑不能不正常启动,所以开机才会出现这个情况。 出现这个情况基本是有4个主要的情况导致的:1、电脑误删除或者是破坏了系统文件。 那么需要重新安装系统。2、可能是安装的软件或者是插件跟系统兼容性冲突导致的。 可以强制关机3次,然后重新...

c5191w相当于国内什么牌号
电脑连接器,手机连接器,高科技行业接插件,电子电气用弹簧,开关,电子产品的插槽、按键、电气连接件,引线框架,振动片及端子等磷青铜有更高的耐蚀性,耐磨损,冲击时不发生火花。用于中速、重载荷轴承,工作高温度250℃。具有自动调心,对偏斜不敏感,轴承受力均匀承载力高,可同时受径向载荷,自润滑无...

MC1489是干什么的?
a. OE=0; b. 先将数据从单片机的口线上输出到Dn; c. 再将LE从0->1->0 d. 这时,你所需要输出的数据就锁存在On上了,输入的数据在变化也影响不到输 出的数据了;实际上,单片机现在在忙着干别的事情,串行通信、扫描键盘……单 片机的资源有限啊。 在单片机按照RAM方式进行并行数据的扩展时,使用movx ...

我要在电话线上接一个变压器,是600欧:600欧,请问有谁知道有什么适合的型...
。但中断的产生将使87C51进入正常工作状态。这种工作方式是由特殊功能寄存器SFR的 PCON设定的。PCON的地址为87H,其中PCON.0位是等待方式位,当IDL为"1"时,进入等待 工作方式。PCON为不可位寻址的SFR,故采用字节的逻辑操作实现置位。如为了让单片机 进入等待工作方式,可用指令ORL PCON.0,B来实现。 本机被控...

滨海县19579401273: 单片机c51的按键0~f的代码 -
郜将培元:#include #include #define uchar unsigned char #define uint unsigned int uchar key; unsigned char code disp_code[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char code key_...

滨海县19579401273: 用51单片机,怎么让数码管显示一串矩阵键盘按下的键代表的数(0~f)? -
郜将培元: 这种显示方式就和手机拨号时,按下号码的显示是一样,第一个数码先在右边显示,再按键,依此向左移动显示.要是6位数码管,就保留6位显示了,按键超过6位时,先按的自然丢掉了.

滨海县19579401273: 用c51单片机按下4*4矩阵按键,数码管显示0 - F,能正常显示,只是0号和7号有时会出错,请高手帮忙, -
郜将培元: /************************************************************类型:矩阵键盘.现象:按下键盘后,数码管显示相应的数字0-F【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! ************************************************************/ #...

滨海县19579401273: 请教单片机 按键对应的编码 -
郜将培元: if(!(CheckValue&0x01)) 这个表示:如果P2.1按下(按下为低电平),则记录这个值到KEY(Key|=0x01),注意这里用的是: |=

滨海县19579401273: 51单片机C语言编程两个按键加减显示0 - 99的加减,求程序,自己编的有警告,不知道哪里错了 -
郜将培元: # include <reg52.h> # define uint unsigned int # define uchar unsigned char sbit K2 = P3^7; //按键 sbit K3 = P3^6; sbit W1 = P3^2; //位选 sbit W2 = P3^1; uint num, shi, ge; uchar code table[]={0xc0,0xf9,0xa4,0xb0, // 数码管 共阳0x99,0x92,0x...

滨海县19579401273: c51单片机按键 -
郜将培元: 1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态.2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入.设按键接单片机P01引脚,故可采用以下程序实现按键扫描 if(P01==0)//按下按键,进入下降沿 ...

滨海县19579401273: 单片机控制数码管1 按键控制开始、数码管循环显示0 - F.时间间隔为1s的程序及硬件图 -
郜将培元: P1口外接共阳极的8段数码显示器.P3.2外接一个按键,按下后,接地,用来起动. ORG 0000H JB P3.2, $MOV R2, #0 LOOP: INC R2 MOV A, R2 ANL A, #0FH MOV DPTR, #TAB MOVC A, @A+DPTR MOV P1, A LCALL DL500MS LCALL DL...

滨海县19579401273: 请问一下,这个是51单片机的按键程序吗?是的话按键都在哪几个脚上?怎么改?
郜将培元: 不一定是51单片机,但51单片机可用按键应该是接P2.0 ~ P2.3void keyscan(){ press=0; if((P2&amp;0x0f)!=0x0f) //扫描 { DelayMs(5); //去抖 if((P2&amp;0x0f)!=0x0f) //再扫描 { if((P2&amp;0x0f)==0x0e){press=2;} //P2.0功能处理 if((P2&amp;0x0f...

滨海县19579401273: 51单片机按键加减清零汇编语言编程 -
郜将培元: K2 BIT P1.4 //+ K3 BIT P1.5 //- K4 BIT P1.6 //CLR K_OLD EQU 30H K_NEW EQU 31H K_COUNT EQU 32H S_BUF EQU 33H DISSTART EQU 40H ;显示单元首地址 LED_DATA EQU P0 ;数码管数据口定义;-----------------------------------------------...

滨海县19579401273: 51单片机按键编程求救!! -
郜将培元: 补充 P2口和P3^0是输出,P0^0是输入跟你要的功能无关,P2口只有再读取键值的时候才作为输入的,读取完成后仍是输出所以不影响显示之类的.sbit com=P3^0;unsigned char temp;unsigned char...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网