预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<reg52.h> #include<intrins.h> sbitBEEP=P3^7;//蜂鸣器驱动线 unsignedcharkey; unsignedcharcodedisp_code[]= { //显示码数组0,C,8,A,H,9,6,3,0,8,5,2,H,7,4,1 0x28,0xa9,0x20,0x30,0x34,0x60,0x21,0x62,0x28,0x20,0x61,0xa2,0x34,0x7a,0x74,0x7e }; unsignedcharcodekey_code[]= { //键编码数组 0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb, 0xb7,0x7e,0x7d,0x7b,0x77 }; charcodeSST516[3]_at_0x003b;//保留仿真器 /********************************************************** 延时子函数 **********************************************************/ voiddelayms(unsignedintms) { unsignedchart; while(ms--) { for(t=0;t<114;t++) ; } } /********************************************************** x*0.14MS延时子函数 **********************************************************/ voiddelayus(unsignedcharx) { unsignedchari; while(x--) { for(i=0;i<14;i++) { ; } } } /********************************************************** 蜂鸣器驱动子函数 **********************************************************/ voidbeep() { unsignedchari; for(i=0;i<250;i++) { delayus(6); BEEP=!BEEP;//BEEP取反 } BEEP=1;//关闭蜂鸣器 delayms(150);//延时 } /********************************************************** 键盘扫描子函数 **********************************************************/ unsignedcharkeyscan() { unsignedcharscan1,scan2,keycode,j; P3=0xf0; scan1=P3; if(scan1!=0xf0) //判键是否按下 { delayms(10);//延时10ms scan1=P3; if(scan1!=0xf0) //二次判键是否按下 { P3=0x0f; scan2=P3; keycode=scan1|scan2;//组合成键扫描编码 for(j=0;j<16;j++) { if(keycode==key_code[j]) //查表得键值 { key=j; return(key);//返回有效键值 } } } } else P3=0xff; return(key=16);//返回无效码 } /********************************************************** 主函数 **********************************************************/ voidmain(void) { P0=0xf7;//数码管初始显示"-" P2=0xfb;//数码管显示在第三位 P3=0xff; while(1) { keyscan(); if(key<16) //有效键值 { P0=disp_code[key];//显示键值 beep();//蜂鸣器响一声 } } } /*********************************************************/