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

📄 22.c

📁 这是基于4*4键盘
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>			    	// 引用标准库的头文件
#include <intrins.h>

#define  uchar  unsigned  char 
#define  uint   unsigned  int 
sbit RS  = P2^1;
sbit RW  = P2^4;
sbit E   = P2^5;

char bdata temp_ramaddr;
sbit BF = temp_ramaddr^7;

int  keycode,picture_data;
void KeyDisplay(void);
void LCD_write_picture(void);

int  i,j;
int  peak_data,peak_data,frequency_data,trace; 
char *ip1,*ip2,*ip3,*ip4;
uchar  numbit;  
char idata peak_digit[5][16]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
char idata frequency_digit[5][16]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};

char code picture1[256] = {
0x00,0x00,0x00,0x40,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFE,0xF8,0x20,0x10,0x40,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x0B,0xFE,0x10,0x40,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x08,0x00,0x07,0xFE,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x78,0x40,0x84,0x44,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x48,0x48,0x54,0x40,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x80,0x40,0x8C,0x54,0x40,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0xFC,0x41,0x78,0x17,0xF8,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x80,0xFB,0xD0,0x25,0x08,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,
0x10,0x80,0x48,0x20,0x24,0x90,0x30,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,
0x10,0x80,0x08,0x40,0xE4,0x90,0x30,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,
0x10,0x80,0x08,0x88,0x24,0x60,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,
0x10,0x80,0x09,0x04,0x28,0x60,0x30,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,
0xFF,0xFE,0x4B,0xFE,0x28,0x98,0x30,0x00,0x00,0x00,0x0C,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x29,0x04,0x31,0x0E,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x26,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};	  //正 弦 波

char code picture2[256]={
0x00,0x00,0x04,0x00,0x20,0x40,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xF8,0x10,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFC,0x04,0x10,0x10,0x40,0x00,0x00,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x08,0x20,0x07,0xFE,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xFC,0x84,0x44,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x30,0x84,0x54,0x40,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x50,0x84,0x54,0x40,0x00,0x00,0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
0x3F,0xF8,0x1F,0xFC,0x17,0xF8,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x84,0x25,0x08,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x84,0x24,0x90,0x30,0x00,0x00,0x00,0x40,0x02,0x00,0x00,0x00,0x00,
0x00,0x00,0x1F,0xFC,0xE4,0x90,0x30,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x84,0x24,0x60,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x84,0x28,0x60,0x30,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,
0x7F,0xFE,0x20,0x84,0x28,0x98,0x30,0x00,0x00,0x00,0x04,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x94,0x31,0x0E,0x00,0x00,0x00,0x00,0x02,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x40,0x88,0x26,0x04,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00};      //三 角 波

char code picture3[256]={
0x02,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x7F,0x81,0xFE,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x00,0x00,0x10,0x40,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFE,0x00,0x00,0x07,0xFE,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x84,0x44,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x00,0x00,0x54,0x40,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x03,0xF0,0x00,0x00,0x54,0x40,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x02,0x10,0x00,0x00,0x17,0xF8,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x04,0x10,0x00,0x00,0x25,0x08,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x04,0x10,0x00,0x00,0x24,0x90,0x30,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x08,0x10,0x00,0x00,0xE4,0x90,0x30,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x08,0x10,0x00,0x00,0x24,0x60,0x00,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x10,0x10,0x00,0x00,0x28,0x60,0x30,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0x20,0x90,0x00,0x00,0x28,0x98,0x30,0x00,0x40,0x81,0x02,0x00,0x00,0x00,0x00,0x00,
0xC0,0x60,0x00,0x00,0x31,0x0E,0x00,0x00,0x40,0xFF,0x03,0xFC,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x26,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};       //方 波

char code peak[128]={
0x20,0x80,0x20,0x80,0x10,0x40,0x00,0x00,
0x20,0xFC,0x20,0xFC,0x18,0x60,0x00,0x00,
0x20,0x88,0x20,0x88,0x17,0xFC,0x00,0x00,
0xA9,0x88,0xA9,0x88,0x10,0x40,0x00,0x00,
0xAA,0x50,0xAA,0x50,0x20,0x80,0x00,0x00,
0xAC,0x20,0xAC,0x20,0x33,0xF8,0x00,0x00,
0xA8,0xDC,0xA8,0xDC,0x62,0x08,0x00,0x00,
0xAB,0x48,0xAB,0x48,0xA3,0xF8,0x00,0x00,
0xA8,0x40,0xA8,0x40,0x22,0x08,0x00,0x00,
0xAB,0xFC,0xAB,0xFC,0x23,0xF8,0x30,0x00,
0xB8,0x40,0xB8,0x40,0x22,0x08,0x30,0x00,
0xEB,0xFC,0xEB,0xFC,0x23,0xF8,0x00,0x00,
0x80,0x40,0x80,0x40,0x22,0x08,0x30,0x00,
0x07,0xFE,0x07,0xFE,0x22,0x08,0x30,0x00,
0x00,0x40,0x00,0x40,0x2F,0xFE,0x00,0x00,
0x00,0x40,0x00,0x40,0x20,0x00,0x00,0x00};       //峰峰值

char code frequency[128]={
0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x08,0xFE,0x00,0x00,0x01,0x00,0x00,0x00,
0x4E,0x20,0x00,0x00,0x7F,0xFE,0x00,0x00,
0x48,0x40,0x00,0x00,0x41,0x00,0x00,0x00,
0x48,0xFC,0x00,0x00,0x22,0x28,0x00,0x00,
0xFE,0x84,0x00,0x00,0x17,0xD0,0x00,0x00,
0x00,0xA4,0x00,0x00,0x04,0x80,0x00,0x00,
0x08,0xA4,0x00,0x00,0x11,0x10,0x00,0x00,
0x4A,0xA4,0x00,0x00,0x22,0x48,0x00,0x00,
0x4A,0xA4,0x00,0x00,0x47,0xC4,0x30,0x00,
0x84,0xA4,0x00,0x00,0x01,0x20,0x30,0x00,
0x08,0x50,0x00,0x00,0xFF,0xFE,0x00,0x00,
0x10,0x48,0x00,0x00,0x01,0x00,0x30,0x00,
0x20,0x86,0x00,0x00,0x01,0x00,0x30,0x00,
0xC3,0x02,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00};        //频率 

//数字及小数点 

char code number[11][16]={
{0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",0*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},/*"2",1*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"3",2*/

{0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},/*"4",3*/

{0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"5",4*/

{0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",5*/

{0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},/*"7",6*/

{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",7*/

{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},/*"9",8*/

{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",9*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00}/*".",10*/ };

//单位

char code unit1[16]={0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x4E,0x48,0x50,0x68,0x48,0x44,0xEE,0x00,0x00};/*"k",0*/

char code unit2[16]={0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00};/*"H",1*/

char code unit3[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x44,0x08,0x10,0x10,0x22,0x7E,0x00,0x00};/*"z",2*/

char code unit4[16]={0x00,0x00,0x00,0xEE,0x6C,0x6C,0x6C,0x6C,0x54,0x54,0x54,0x54,0x54,0xD6,0x00,0x00};/*"M",3*/

char code unit5[16]={0x00,0x00,0x00,0xE7,0x42,0x42,0x44,0x24,0x24,0x28,0x28,0x18,0x10,0x10,0x00,0x00};/*"V",4*/

char code unit6[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x49,0x49,0x49,0x49,0x49,0xED,0x00,0x00};/*"m",5*/

char code blank[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//空字符 


//**** 延时155us ****
void delay_155us()
{
   int  i;
   for(i=0;i<10;i++){}   
}

//**** 延时8ms的整数倍 ****
void delay_8ms(int delay_8ms_time)
{
   int  i,j;
   for(i=0;i<delay_8ms_time;i++)
    {
      for(j=0;j<100;j++){}
    }
}
//**** 延时0.5s的整数倍 ****
void delay_half_1s(int delay_half_1s_time)
{
   int  i,j,k;

   for(i=0;i<delay_half_1s_time;i++)
    {
      for(j=0;j<255;j++)
       {
         for(k=0;k<255;k++){}
       }
    }   

}


//*********** 写数据子程序 *****
void LCD_write_data(char data_data)
{ 
   BF = 1;

   RS = 0;
   RW = 1;  
   while(BF)
    { 
      P1 = 0xFF;
      E = 1;
      temp_ramaddr = P1;
      E = 0;
    }

  RS = 1;
  RW = 0;
   P1 = data_data;
   E = 1;
   E = 0;    
}



//*********** 写指令子程序 *****
void  LCD_write_instruction(char data_instruction)
{
  BF = 1;

  RS = 0;
  RW = 1;  
   while(BF)
    { 
      P1 = 0xFF;
    E = 1;
      temp_ramaddr = P1;
     E = 0;
    }

   RW = 0;
   P1 = data_instruction;
  E = 1;
  E = 0;    
}


//************ LCD初始化 ********
void LCD_initial()
{

   delay_half_1s(1);

  LCD_write_instruction(0x01);
   delay_155us();

LCD_write_instruction(0x30);
   delay_155us();

  LCD_write_instruction(0x0E);
   delay_155us();

  LCD_write_instruction(0x01);
   delay_8ms(5);

 LCD_write_instruction(0x06);
   delay_155us();

}


/* 延时t毫秒 */
void delay(uint t)
{
	uint i;
	while(t--)
	{
		/* 对于12M时钟,约延时1ms */
		for (i=0;i<125;i++)
		{}
	}
}

void  keyscan(void) //键盘扫描子程序
{
  uchar  scancode, rowcode;
  P3=0xf0; //向行扫描输出口发全0,查询列信号
  if((P3&0xf0)!=0xf0)//若有键按下
	 {
	  delay(50);	 //延时消抖
	    if((P3&0xf0)!=0xf0)
		   {
		      scancode=0xfe;
			  while((scancode&0x10)!=0)	 //逐行扫描
			       {
				      P3=scancode;        //输出行扫描码
					  if((P3&0xf0)!=0xf0) //若本行有键按下
					    {
						  rowcode=(P3&0xf0)|0x0f;
						  keycode=((~scancode)+(~rowcode));
                          KeyDisplay();
                         }

		              else
		                { scancode=(scancode<<1)|0x01;}
					}
			}
			 
  }
		  				  
}


uchar  getkey(uchar keycode)     //获取键值子程序
{  
   int  kb;
 switch(keycode)
   {
	case 0x11:kb=4;break;
    case 0x21:kb=3;break;
    case 0x41:kb=2;break;
    case 0x81:kb=1;break;

⌨️ 快捷键说明

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