?? flas.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 + -