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

📄 flas.c

📁 我的一个工程
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>

#define a     0x01
#define b     0x02
#define c     0x04
#define d     0x08
#define e     0x10
#define f     0x20
#define g     0x40
#define dot   0x80
#define H   10
#define L   11
#define P   12
sbit sd=P2^7;
sbit sp=P3^5;
extern unsigned char AT24C02_Read_Byte(unsigned char Device,unsigned char Addr);
extern void AT24C02_Write_Byte(unsigned char Device,unsigned char Addr, unsigned char Data);
unsigned char set;
unsigned char 	KEY_Variable[3];
unsigned int tmep;
unsigned char code disp_code[] = {
         a+b+c+d+e+f,     // 0
         b+c,             // 1
         a+b+d+e+g,       // 2
         a+b+c+d+g,       // 3
         b+c+f+g,         // 4
         a+c+d+f+g,       // 5
         a+c+d+e+f+g,     // 6
         a+b+c,           // 7
         a+b+c+d+e+f+g,   // 8
         a+b+c+d+f+g,     // 9
         b+c+e+f+g,       //H
         d+e+f,           //L
         a+b+e+f+g,       //P
         b+c+g,            //+
          g,               //-
         };

 time1ms()    /* 1 ms delay with XTAL 11.0592MHz */
{
    int i;
    for (i = 0; i<50; i++) // the value shown in this line, 50 was calibrated for 1ms
    ;						// you may change it!
}

 void sendbyte(unsigned char yte)
{  P2=0;
	sd=1;
        P0=disp_code[yte];
        //sd=0;

}



void display(unsigned int i)
{ unsigned int k;
   unsigned char j,m,q;
	unsigned int s[6];
	s[0] = i/1000;
    k = i%1000;
	s[1] = k/100;
	k = k%100;
	s[2] = k/10;
	k = k%10;
	s[3] = k;
	//k = k%10;
	//s[4] = k;
	j=0x80;
	for(k = 0; s[k] == 0 && k<4; k++);
	if (k==4) k--; // if all bytes are '0', get back one position

	do
	{


         P2=j;

	P0=(disp_code[s[k++]]);
	j>>=1;
   }
	while (k<5);

}
#define KEY_SET   0x07//设置键
#define KEY_UP    0x0b//向上键
#define KEY_DOEN  0x0d//向下键
#define KEY_RUN  0x0e//运行键
#define KEY_P1  P1

/***************************************************************************************************
函数名称:KEY_JIEXI(unsigned int Variable)
函数入口:
		  unsigned int Variable	:采集到的键盘值,就是P2、P3口的数值。
函数出口:
功能描述:键盘解析,通过采样的数值分析出当前按下的是那个键。(包括复合键)并针对键进行相应的操作
关键点描述:无
****************************************************************************************************/
KEY_JIEXI(unsigned int Variable)
{
	sp=0;
	switch(Variable)
	{
		//单键。。。。
		case KEY_RUN:	//0x01运行键
             set=0;
             tmep=0;
		break;
		case KEY_DOEN:	//0x02向下键
			if(set)
				set--;
		  else
				 set=14;
	  break;
		case KEY_UP:	//0x04向上键
		     if(set<14)
			      { set++;

			      }
		    else
				     set=0;
	  break;
	  case KEY_SET:   //0x07设置键
		tmep=tmep+8;
	  break;
		default:
		break;
	}
	sp=1;
}
/***************************************************************************************************/
/***************************************************************************************************
函数名称:KEY()
函数入口:空
函数出口:空
功能描述:键盘消抖
设计思想:
			建立一个键盘值保存缓冲区KEY_Variable[3],能够连续保存最近的三次采样到的键盘值。当最后两次采
		样到的值相等并且和倒数第三次的值不相等时,说明有按键按下。进行确认。当三次的采样值都相等时,说
		明此按键已经确认过了,不进行确认。
****************************************************************************************************/
KEY()
{
unsigned char key_buf;
	KEY_Variable[2]=KEY_Variable[1];
	KEY_Variable[1]=KEY_Variable[0];
	EA = 0;
	key_buf=KEY_P1;
 KEY_Variable[0] =key_buf&0xc0;
	KEY_Variable[0] >>=4;
 KEY_Variable[0]|=(key_buf&0x03);

	if(KEY_Variable[0] == KEY_Variable[1])
	{
		if(KEY_Variable[1] == KEY_Variable[2])
		{
			return;
		}
		else
		{

			KEY_JIEXI(KEY_Variable[0]);   //分析按下的是什么键,并做相应的处理。
		}
	}
	return;
}
    sbit gh=P3^4;
sbit low=P3^3;

unsigned int Read_Temperature(void)
{       unsigned int vioud,tmp[4];
unsigned char m,n;

          gh=0;
          P0=0XFF;
	m=P0;
        m=~m;
	n=(m&0x0f);
	m>>=4;
	tmp[0]=m*100;
	tmp[1]=n*1000;
	gh=1;

	low=0;
          P0=0XFF;
	m=P0;
        m=~m;
	n=(m&0x0f);
	m>>=4;
	tmp[3]=m;
	tmp[2]=n*10;
	low=1;
	vioud=tmp[0];
	vioud+=tmp[1];
	vioud+=tmp[2];
	vioud+=tmp[3];
	return vioud;
}
sbit relay_dpst=P3^2;
sbit SPEAKER=P3^5;
 void main(void)
{
  SCON = 0x52; // 8-bit UART mode
  TMOD = 0x20; // timer 1 mode 2 auto reload
  TH1= 0xfd; // 9600 8n1
  TR1 = 1; // run timer1*/
 // void AT24C02_Init();

  P1=0xff;
  P0=0x00;
  P2=0xf0;

   //AT24C02_Write_Byte(0xA0, 0x02, 219);
  //AT24C02_Write_Byte(0xA1);

   //tmep=Read_Temperature(void)
  // AT24C02_Read_Byte(0xA0,0x02);
  while(1)
  {   //unsigned char TEMP;

          SPEAKER=0;
         tmep=Read_Temperature();
         relay_dpst=~relay_dpst;
         
         SPEAKER=0;
  	//KEY();
   //	sendbyte(set);
	 display(tmep);
}
  }

⌨️ 快捷键说明

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