• 大小: 72KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: 其他
  • 标签:

资源简介

精确测量0~10k电阻阻值,使用一颗精确电阻校准后,测量的阻值精确到福禄克级别

资源截图

代码片段和文件信息

#include 


// 设置KEY IO口
sbit KEY_IN_1 = P2^4;
sbit KEY_IN_2 = P2^5;
sbit KEY_IN_3 = P2^6;
sbit KEY_IN_4 = P2^7;

sbit KEY_OUT_1 = P2^3;
sbit KEY_OUT_2 = P2^2;
sbit KEY_OUT_3 = P2^1;
sbit KEY_OUT_4 = P2^0;


u8 xdata g_KeySta[4][4]; // 按键两个状态:松开0 按下1

const u8 code g_KeyCodeMap[4][4] = {
{ ‘1‘  ‘2‘  ‘3‘ 0x26 } //数字键1、数字键2、数字键3、退格键
  { ‘4‘  ‘5‘  ‘6‘ 0x25 } //数字键4、数字键5、数字键6、重置键
  { ‘7‘  ‘8‘  ‘9‘ 0x28 } //数字键7、数字键8、数字键9、转换键
  { ‘0‘ 0x1B  0xC 0x27 } //数字键0、未定义、 未定义、 回车键
  };

extern u8 g_Mode_Type;
extern u16 g_Set_Res_Val;
extern u8 g_Enter_Flag;

// 按键动作实现
void Key_Action(u8 keycode)
{
u8 buff[20];
u16 val = 0;

switch (g_Mode_Type)
{
// 一般模式
case GENERAL_MODE:
switch (keycode)
{
case 0x28:
// 输入转换键
LcdWriteCmd(0x01);
g_Set_Res_Val = 0;
g_Enter_Flag = 0;
g_Mode_Type = COMP_MODE;
LcdShowStr(0 0 “0“);
break;
}
break;
case  COMP_MODE:
switch (keycode)
{
case ‘1‘:
  case ‘2‘:
case ‘3‘:
case ‘4‘:
case ‘5‘:
case ‘6‘:
case ‘7‘:
case ‘8‘:
case ‘9‘:
case ‘0‘:
   // 按下回车
   if (g_Enter_Flag == 0) {

    // 输入1~9后的动作
val = g_Set_Res_Val;
val *= 10;
val += keycode - ‘0‘; // 保存测试值
// 值超出
if (val > 10000L) {
LcdShowStr(0 1 “VAL ERROR!“);
}
else {
g_Set_Res_Val = val;
sprintf(&buff[0] “%d“ g_Set_Res_Val);
if (g_Set_Res_Val) LcdShowStr(0 0 &buff[0]);
else LcdShowChar(0 0 ‘0‘);
}

   }
break;
// 退格键
case 0x26:
// 按下退格
if (g_Enter_Flag == 0) {
g_Set_Res_Val /= 10;
sprintf(buff “%d“ g_Set_Res_Val);
LcdWriteCmd(0x01);
if (g_Set_Res_Val) LcdShowStr(0 0 buff);
else LcdShowStr(0 0 ‘0‘);
}
break;
// 重置键
case 0x25:
LcdWriteCmd(0x01);
LcdShowStr(0 0 ‘0‘);
g_Set_Res_Val = 0;
g_Enter_Flag = 0;
break;
// 转换键
case 0x28:
LcdWriteCmd(0x01);
g_Set_Res_Val = 0;
g_Enter_Flag = 0;
g_Mode_Type = GENERAL_MODE;
break;
// 回车键
case 0x27:
g_Enter_Flag = 1;
break;
}
break;
// 其他模式
default: break;
}
}

// 按键执行函数
void Key_Handle(void)
{
u8 i j;
static u8 xdata s_bkKey[4][4];

for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (s_bkKey[i][j] != g_KeySta[i][j]) {
if (g_KeySta[i][j] == KEY_DOWN)
{
// 按下执行的操作
Key_Action(g_KeyCodeMap[i][j]);
}
s_bkKey[i][j] = g_KeySta[i][j];
}
}
}

}
// 按键扫描
void Key_Scan(void)
{
static u8 s_ikey_out = 0 i =0;
static u8 xdata s_KeyBuff[4][4];

// 获取按键并消抖
s_KeyBuff[s_ikey_out][0] = ((s_KeyBuff[s_ikey_out][0] << 1) | KEY_IN_1) & KEY_DELAY_MARK;
s_KeyBuff[s_ikey_out][1] = ((s_KeyBuff[s_ikey_out][1] << 1) | KEY_IN_2) & KEY_DELAY_MARK;
s_KeyBuff[s_ikey_out][2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        513  2017-11-09 21:27  copy\HARDWARE\inr\config.h

     文件        214  2017-11-09 20:57  copy\HARDWARE\inr\key.h

     文件        259  2017-11-09 21:34  copy\HARDWARE\inr\lcd1602.h

     文件        253  2017-11-09 20:52  copy\HARDWARE\inr\timer.h

     文件        145  2017-11-09 21:00  copy\HARDWARE\inr\tlc2543.h

     文件       3949  2017-11-09 21:38  copy\HARDWARE\src\key.c

     文件       1256  2017-11-09 22:14  copy\HARDWARE\src\lcd1602.c

     文件        912  2017-11-09 20:56  copy\HARDWARE\src\timer.c

     文件        651  2017-11-09 22:41  copy\HARDWARE\src\tlc2543.c

     文件      45340  2017-11-10 07:39  copy\OBJ\copy

     文件      13590  2017-11-10 07:39  copy\OBJ\copy.hex

     文件        183  2017-11-10 07:39  copy\OBJ\copy.lnp

     文件       2712  2017-11-10 07:46  copy\OBJ\copy.plg

     文件      11924  2017-11-10 07:39  copy\OBJ\key.obj

     文件       8070  2017-11-10 07:39  copy\OBJ\lcd1602.obj

     文件      13711  2017-11-10 07:39  copy\OBJ\main.obj

     文件        783  2017-11-10 07:39  copy\OBJ\STARTUP.obj

     文件       8102  2017-11-10 07:39  copy\OBJ\timer.obj

     文件       6721  2017-11-10 07:39  copy\OBJ\tlc2543.obj

     文件      39492  2017-11-10 07:39  copy\PROJECT\copy.m51

     文件      20428  2017-11-09 21:29  copy\PROJECT\copy.plg

    .......     60695  2017-11-10 07:12  copy\PROJECT\copy.uvopt

    .......     14381  2017-11-09 21:38  copy\PROJECT\copy.uvproj

    .......     60692  2017-11-09 21:38  copy\PROJECT\copy_uvopt.bak

    .......         0  2017-11-09 16:24  copy\PROJECT\copy_uvproj.bak

     文件      11377  2017-11-10 07:39  copy\PROJECT\key.lst

     文件       3686  2017-11-10 07:39  copy\PROJECT\lcd1602.lst

     文件       8181  2017-11-10 07:39  copy\PROJECT\main.lst

     文件       6376  2009-05-07 14:37  copy\PROJECT\STARTUP.A51

     文件      14088  2017-11-10 07:39  copy\PROJECT\STARTUP.LST

............此处省略14个文件信息

评论

共有 条评论

相关资源