RT
_nop_();_nop_();_nop_();_nop_();
do{
finish=0X10; //0001 0000(b)
finish|=ADC_CONTER;
}while(finish); //等待AD转换完成
ADC_CONTER&=0XE7; //11100111,清ADC_FLAG和ADC_START,停止AD转换
adc_result=ADC_RES;
//*********************
if(adc_result>0x80)li_level=10; //R5549阻值在100K以上
else if(adc_result>0X71)li_level=9; //R5549阻值在80K~100K区间
else if(adc_result>0x60)li_level=8; //R5549阻值在60K~80K区间
else if(adc_result>0X49)li_level=7; //R5549阻值在40K~60K区间
else if(adc_result>0X2A)li_level=6; //R5549阻值在20K~40K区间
else if(adc_result>0X17)li_level=5; //R5549阻值在10K~20K区间
else li_level=4; //降到4级就好
}
void lightlev(uchar showing[32][4])
{
uchar key;
uchar save_row=LED_ROW,save_line=LED_LINE; //用来保存数码管数据
while(1)
{
key=getkey();
switch(key)
{
case key_esc : return;break; //退出
case key_crease : if(men_lig<10)men_lig++;break; //”数据+1“ 最大值为10
case key_decrease : if(men_lig>4) men_lig--;break; //”数据-1“最少值为4
default : break; //没按键匹配的,直接退出。虽然在这里不发生,但安全起见加上去
}
LED_ROW=0x00;LED_LINE=men_lig;
shu_ma_g();
dis_play(showing);
LED_ROW=save_row;LED_LINE=save_line;
}
}
////////////////////////////////////END///////////////////////////////////////////////////////////////////////////
////////////////////////////////////文件按键扫描.c//////////////////////////////////////////////////////////
#include"myself.h"
#include<reg52.h>
#include<intrins.h>
uchar getkey()
{
uchar key,finish,adc_result;
//*********************
//ADC_POWER_ON
ADC_CONTER|=0X80;
delay_us(1000); //1ms左右的延时
//*********************
//*********************
//选择模拟口(P1.0、P1.1),即断开上拉电阻形成开漏输出
P1ASF=0x03;
//*********************
//*********************
//选择P1.0作为ADC转换通道
ADC_CONTER&=0XF8; //低三位置零,同时即选择P1.0
_nop_();_nop_();_nop_();_nop_();//让ADC_CONTER的数据稳定
delay_us(20); //延时20us使电压稳定
//*********************
//*********************
//取AD转换结果,ADRJ上电复位默认为0,即取高8位数据
ADC_RES=0XFF; //初始化为0XFF;
ADC_CONTER|=0X08; //ADC_START
_nop_();_nop_();_nop_();_nop_();
do{
finish=0X10; //0001 0000(b)
finish=ADC_CONTER&finish;
}while(!finish);
ADC_CONTER&=0XE7; //11100111,请AD转换完成标志位,停止AD转换
adc_result=ADC_RES;
//*********************
if (adc_result<0xB3)//0xb3即3.5V,0XB3/0XFF*5=3.5
{
if(adc_result>0x99)key=7; //>3v
else if(adc_result>0X80)key=6; //>2.5v
else if(adc_result>0X66)key=5; //>2V
else if(ad