2个按键修改DAC输出

c展开代码#include <reg52.h>
#include <I2C.H>
sbit LS138A = P2 ^ 2;
sbit LS138B = P2 ^ 3;
sbit LS138C = P2 ^ 4;
const unsigned char  Disp_Tab[10] ={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
unsigned char AD_CHANNEL;
unsigned char LedOut[8];
sbit key_01 = P3 ^ 0;
sbit key_02 = P3 ^ 1;
sbit key_03 = P3 ^ 2;
sbit key_04 = P3 ^ 3;
/* 延时函数 */
void delay_ms_key( unsigned char t ) /* 延时xms */
{
 unsigned char ttt;
 while ( t-- )
 {
  for ( ttt = 0; ttt < 125; ttt++ )
   ;
 }
}
/*
 * 四个按键的检测函数
 * 按键则返回1 2 3 4
 * 无按键则返回0xff
 */
unsigned char KeySscan( void )
{
 unsigned char keyvaluee = 0xff;
 if ( key_01 == 0 )
 {
  delay_ms_key( 10 );
  if ( key_01 == 0 )
  {
   while ( key_01 == 0 )
    ;
   return(1);
  }
 }
 if ( key_02 == 0 )
 {
  delay_ms_key( 10 );
  if ( key_02 == 0 )
  {
   while ( key_02 == 0 )
    ;
   return(2);
  }
 }
 if ( key_03 == 0 )
 {
  delay_ms_key( 10 );
  if ( key_03 == 0 )
  {
   while ( key_03 == 0 )
    ;
   return(3);
  }
 }
 if ( key_04 == 0 )
 {
  delay_ms_key( 10 );
  if ( key_04 == 0 )
  {
   while ( key_04 == 0 )
    ;
   return(4);
  }
 }
 return(0xff);
}
/* ****************************************************************** / */
void main()
{
 int  adadadad = 0;    /* 电压值 占位数 */
 unsigned char ad_value = 32;   /* 电压值   扩大十倍 按键修改 */
 unsigned char anjianzhi = 0xff;
 TMOD = 0x11;
 EA = 1;
 TH0 = (65536 - 3000) / 256;
 TL0 = (65536 - 3000) % 256;
 ET0 = 1;
 TR0 = 1;
 LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80;
 LedOut[0] = Disp_Tab[ad_value % 10];
 adadadad = (int) (ad_value * 5.1);              /* 用于发给DA数据 */
 DACconversion( PCF8591, 0x40, adadadad );       /* DAC   数模转换 */
 while ( 1 )
 {
  anjianzhi = KeySscan();
  if ( anjianzhi != 0xff )
  {
   if ( anjianzhi == 1 )
   {
    ad_value++;
    adadadad = (int) (ad_value * 5.1);              /* 用于发给DA数据 */
    DACconversion( PCF8591, 0x40, adadadad );       /* DAC   数模转换 */
   } else if ( anjianzhi == 2 )
   {
    ad_value--;
    adadadad = (int) (ad_value * 5.1);              /* 用于发给DA数据 */
    DACconversion( PCF8591, 0x40, adadadad );       /* DAC   数模转换 */
   }
   LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80;
   LedOut[0] = Disp_Tab[ad_value % 10];
  }
 }
}


本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!