⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zl-600_28.c

📁 我做的按摸椅RS001的键盘部分的C51程序
💻 C
字号:
#pragma src
#include <reg52.h>
#include<intrins.h>


sbit MAX =P1^0;
sbit MID =P0^1;
sbit MIN =P0^2;
sbit CS  =P0^3;
sbit CLK =P0^4;
sbit DATA=P0^5;
sbit WARN=P0^6;
sbit ZERO=P0^7;//过零检测脚
/*键盘扫描端口*/
sbit LINE0 =P3^0;//行扫描线
sbit D1 =P3^1;
sbit D2 =P3^2;
sbit D3 =P3^3;
sbit D4 =P3^4;
sbit CS0=P3^5;//列扫描线
sbit CS1=P3^6;
sbit CS2=P3^7;
/*检测/控制端口*/
sbit REL_UPDW=P2^0;
sbit REL_C   =P2^1;
sbit P_UPDW  =P2^2;
sbit TRI_C   =P2^3;
sbit WDI     =P2^4;
sbit Q_DW    =P2^5;
sbit Q_UP    =P2^6;
sbit T_UPDW  =P2^7;

sbit  PD     =P0^0;
sbit  PC     =P0^1;
sbit  PB     =P0^2;
sbit  PA     =P0^3;
sbit  XXC    =P0^4;
sbit  SXC    =P0^5;
sbit  TT1    =P0^6;
sbit  TT2    =P0^7;
unsigned char key;
#define NOP _NOP_()
                                                                                                                                                                                                                                                                                          
void processknock();
void whith();
void top();
void vibrasion();
void roll();
void mode();
void fixposition();
void bottom();
void strength();
void speed();
void power();
void timer();
void fullautomatic();
void rising();
void descent();
void(*pfunction)();     //------------函数指针
void(*code tab[])()={  processknock, whith, top, vibrasion, roll,
                       mode, fixposition,bottom,strength,  speed,
					   power,timer,fullautomatic, rising, descent
					    };//------------函数数组
/*----------Key Scan  Procedure-----------------------*/
 int keyscan()
{
  unsigned char keydown;
  unsigned char i;
  char scancode,keycode,keynumber;
  P3=0xff;					  //初始化
  scancode=0xdf;		      //置扫描码
  while(scancode!=0xff)
    {
	   P3 =scancode;          //输入扫描码 ,扫描CS0列
	   keycode =P3;		      //读键值
	   if(keycode&0x1f!=0x1f)
	   for(i=10;i>0;i--);
	   if(keycode&0x1f!=0x1f) //去抖
	   { keynumber=keycode;
	     break;
	   }			      //扫描到按下的键,退出扫描           
	   scancode=(keycode<<1)|0x1f;	//更新扫描码,左移一位
	 }
   keynumber=~keynumber;     //键值取反,获取简明的最终键码值
   switch(keynumber)
    {
	  case 21 :
	            return (key=0x01);	 //揉捏/敲打
				break;
	  case 22 :
	            return(key=0x02);	 //宽度调节
				break;
	  case 24 :
	            return(key=0x03);    //上
				break;
	  case 28 :
	            return(key=0x04);	 //捶击开关
				break;
	  case 30 :
	            return(key=0x05);	 //滚压
				break;
	  case 41 :
	            return(key=0x06);	 //模式
				break;
	  case 42 :
	            return(key=0x07);    //定位
				break;
	  case 44 :
	            return(key=0x08);	 //下
				break;
	  case 48 :
		        return(key=0x09);	 //强度
				break;
	  case 50 :
	            return(key=0x0a);	 //速度
				break;
	  case 81 :
	            return(key=0x0b);	 //总开关
				break;
	  case 82 :
	       
	            return(key=0x0c);	 //定时
				break;

	  case 84 :
	            return(key=0x0d);	 //全自动
				break;
	  case 88 :
	            return(key=0x0e);	 //上升
				break;
	      
      case 90:
	            return(key=0x0f);    //下降
				break;
	  default:
	            break;
	 }
}
void main()
{ 

  keyscan();
  pfunction=tab[key];      //取函数地址
  (*pfunction)();
}


			  








































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -