Author Topic: PADAUK_MINI_C_Touch Keys_pfc161+tm1651_programming  (Read 988 times)

0 Members and 1 Guest are viewing this topic.

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
PADAUK_MINI_C_Touch Keys_pfc161+tm1651_programming
« on: June 11, 2021, 04:27:59 am »
/*****************pfc161+tm1651********************/
/******************20210608************************/
/****************qq:774145445**********************/
/****************快手:共同学习stm8*****************/
/**************************************************/
//               _______    ______
//          dio-|1 pb7  \_/  pb010|-clk
//              |2 vdd       gnd 9|
//        cs-||-|3 pa7       pa0 8|-hong
//          tk8-|4 pa6       pa4 7|-lv
//          tk9-|5_pa5_______pa3_6|-lan
//       5v
//  pb0--clk
//  pb7--dio
//       gnd
/**************************************************/
#include   "extern.h"
tm1651_clk      bit      pb.0;
tm1651_dio      bit      pb.7;
/**************************************************/
byte      tm1651_a1;
/**************************************************/
void      tm1651_yanshi();      //延时
void      tm1651_start();         //起始信号
void      tm1651_data();         //数据
void      tm1651_ack();         //应答
void      tm1651_stop();         //结束
/**************************************************/
void   FPPA0 (void)
{
.ADJUST_IC   SYSCLK=IHRC/4      //   SYSCLK=IHRC/4
$      tm1651_clk      out,high;      //输出,高
$      tm1651_dio      out,high;
/**************************************************/


tm1651_yanshi();
while (1)
{
tm1651_start();
tm1651_a1   =0b0100_0000;   tm1651_data();      //写数据到显示寄存器,自动地址增加
tm1651_stop();
tm1651_start();
tm1651_a1   =0b1100_0000;   tm1651_data();      //设置地址00H
tm1651_a1   =0b1111_1111;   tm1651_data();
tm1651_a1   =0b0000_0000;   tm1651_data();
tm1651_a1   =0b0000_1111;   tm1651_data();
tm1651_a1   =0b1111_0000;   tm1651_data();
tm1651_stop();
tm1651_start();
tm1651_a1   =0b1000_1011;   tm1651_data();      //显示开,10/16
tm1651_stop();

//while(1){}
}
}

/**************************************************/
void      tm1651_yanshi()      //延时
{
.delay 100;
}
/**************************************************/
void      tm1651_start()         //起始信号
{
tm1651_clk   =1;   tm1651_dio   =1;   tm1651_yanshi();
tm1651_clk   =1;   tm1651_dio   =0;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_data()         //数据
{

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.0){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.1){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.2){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.3){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.4){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.5){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.6){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a1.7){tm1651_dio   =1;}   else{tm1651_dio   =0;}
tm1651_clk      =1;tm1651_yanshi();



tm1651_ack();

}

/**************************************************/
void      tm1651_ack()      //应答
{
$      tm1651_dio      in,pull;
tm1651_clk      =0;   tm1651_yanshi();      //第八个时钟的下降沿
while(tm1651_dio){nop;}
tm1651_clk      =1;   tm1651_yanshi();
$      tm1651_dio      out,low;



}
/**************************************************/
void      tm1651_stop()         //结束
{
tm1651_clk      =0;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =1;   tm1651_yanshi();

}
/**************************************************/
/**************************************************/
/**************************************************/[/img][/img]
« Last Edit: June 22, 2021, 04:13:47 pm by suzhiming »
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C
« Reply #1 on: June 13, 2021, 09:34:16 am »
/*****************pfc161+tm1651********************/
/******************20210608************************/
/****************qq:774145445**********************/
/****************快手:共同学习stm8*****************/
/**************************************************/
//               _______    ______
//          dio-|1 pb7  \_/  pb010|-clk
//              |2 vdd       gnd 9|
//        cs-||-|3 pa7       pa0 8|-hong
//          tk8-|4 pa6       pa4 7|-lv
//          tk9-|5_pa5_______pa3_6|-lan
//       5v
//  pb0--clk
//  pb7--dio
//       gnd
/**************************************************/
#include   "extern.h"
tm1651_clk      bit      pb.0;
tm1651_dio      bit      pb.7;
/**************************************************/
byte      tm1651_a0;
byte      tm1651_a1;
byte      tm1651_a2;
byte      tm1651_a3;
byte      tm1651_a4;
/**************************************************/
void      tm1651_yanshi();      //延时
void      tm1651_start();         //起始信号
void      tm1651_data();         //数据
void      tm1651_ack();         //应答
void      tm1651_stop();         //结束
void      tm1651_xianshi();      //显示
/**************************************************/
void      yanshi()
{
.delay 1000000;
}
void   FPPA0 (void)
{
.ADJUST_IC   SYSCLK=IHRC/4      //   SYSCLK=IHRC/4
$      tm1651_clk      out,high;      //输出,高
$      tm1651_dio      out,high;
/**************************************************/
//0x7e;0x30;0x6d;0x79;0x33;0x5b;0x5f;0x70;0x7f;0x7b;0x77;0x1f;0x4e;0x3d;0x4f;0x47;


while (1)
{
tm1651_a1      =0x7e;
tm1651_a2      =0x30;
tm1651_a3      =0x6d;
tm1651_a4      =0x79;
tm1651_xianshi();
yanshi();

tm1651_a1      =0x33;
tm1651_a2      =0x5b;
tm1651_a3      =0x5f;
tm1651_a4      =0x70;
tm1651_xianshi();
yanshi();

tm1651_a1      =0x7f;
tm1651_a2      =0x7b;
tm1651_a3      =0x77;
tm1651_a4      =0x1f;
tm1651_xianshi();
yanshi();

tm1651_a1      =0x4e;
tm1651_a2      =0x3d;
tm1651_a3      =0x4f;
tm1651_a4      =0x47;
tm1651_xianshi();
yanshi();
}
}

/**************************************************/
void      tm1651_yanshi()      //延时
{
.delay 50;
}
/**************************************************/
void      tm1651_start()         //起始信号
{
tm1651_clk   =1;   tm1651_dio   =1;   tm1651_yanshi();
tm1651_clk   =1;   tm1651_dio   =0;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_data()         //数据
{

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.0){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;      //太快检测不到需要加延时
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.1){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.2){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.3){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.4){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.5){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.6){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.7){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();



tm1651_ack();

}

/**************************************************/
void      tm1651_ack()      //应答
{
byte      tm1651_ack_a1;
tm1651_ack_a1      =0;

$      tm1651_dio      in,pull;
tm1651_clk      =0;   tm1651_yanshi();      //第八个时钟的下降沿
while(tm1651_dio==1)      //检测低电平
   {
   tm1651_ack_a1      ++;
   if(tm1651_ack_a1>150)      //退出条件(死机)
      {
      $      tm1651_dio      out,low;
      return;
      }
   }
tm1651_clk      =1;   tm1651_yanshi();
$      tm1651_dio      out,low;



}
/**************************************************/
void      tm1651_stop()         //结束
{
tm1651_clk      =0;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =1;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_xianshi()      //显示
{
tm1651_start();
tm1651_a0   =0b0100_0000;   tm1651_data();      //写数据到显示寄存器,自动地址增加
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1100_0000;   tm1651_data();      //设置地址00H
tm1651_a0      =tm1651_a1;   tm1651_data();
tm1651_a0      =tm1651_a2;   tm1651_data();
tm1651_a0      =tm1651_a3;   tm1651_data();
tm1651_a0      =tm1651_a4;   tm1651_data();
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1000_1011;   tm1651_data();      //显示开,10/16
tm1651_stop();
}
/**************************************************/
/**************************************************/
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_pfc161+tm1651
« Reply #2 on: June 14, 2021, 04:28:49 am »
new*
/*****************pfc161+tm1651********************/
/******************20210608************************/
/****************qq:774145445**********************/
/****************快手:共同学习stm8*****************/
/**************************************************/
//               _______    ______
//          dio-|1 pb7  \_/  pb010|-clk
//              |2 vdd pfc161gnd 9|
//        cs-||-|3 pa7       pa0 8|-hong
//          tk8-|4 pa6       pa4 7|-lv
//          tk9-|5_pa5_______pa3_6|-lan
//
//            tm1651
//              | 5v
//          pb0-|-clk
//          pb7-|-dio
//              | gnd
/**************************************************/
#include   "extern.h"
tm1651_clk      bit      pb.0;
tm1651_dio      bit      pb.7;
led_hong      bit      pa.0;
led_lv         bit      pa.4;
led_lan         bit      pa.3;
/**************************************************/
/**************************************************/   //tm1651
byte      tm1651_a0;
byte      tm1651_a1;            //千位
byte      tm1651_a2;            //百位
byte      tm1651_a3;            //十位
byte      tm1651_a4;            //个位

void      tm1651_yanshi();      //延时
void      tm1651_start();         //起始信号
void      tm1651_data();         //数据
void      tm1651_ack();         //应答
void      tm1651_stop();         //结束
void      tm1651_xianshi();      //显示
/**************************************************/   //显示
byte      xianshi_a1;            //千位
byte      xianshi_a2;            //百位
byte      xianshi_a3;            //十位
byte      xianshi_a4;            //个位
byte      xianshi_qumo_a1;

void      xianshi();            //显示
void      xianshi_qumo();         //取模
/**************************************************/
void      yanshi();            //延时
/**************************************************/
byte   xianshi_c1;
byte   xianshi_c2;

void   FPPA0 (void)
{
.ADJUST_IC   SYSCLK=IHRC/4      //   SYSCLK=IHRC/4
$      tm1651_clk      out,high;      //输出,高
$      tm1651_dio      out,high;
$      led_hong      out,low;
$      led_lv         out,low;
$      led_lan         out,low;
/**************************************************/
//0x7e;0x30;0x6d;0x79;0x33;0x5b;0x5f;0x70;0x7f;0x7b;0x77;0x1f;0x4e;0x3d;0x4f;0x47;

xianshi_c1      =0x00;
xianshi_c2      =0xff;
while (1)
{

xianshi();
yanshi();
//if(led_hong){led_hong=0;}   else{led_hong=1;}
//if(led_lv){led_lv=0;}   else{led_lv=1;}
//if(led_lan){led_lan=0;}   else{led_lan=1;}
xianshi_c1++;
xianshi_c2--;
}
}

/**************************************************/
void      tm1651_yanshi()      //延时
{
.delay 50;
}
/**************************************************/
void      tm1651_start()         //起始信号
{
tm1651_clk   =1;   tm1651_dio   =1;   tm1651_yanshi();
tm1651_clk   =1;   tm1651_dio   =0;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_data()         //数据
{

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.0){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;      //太快检测不到需要加延时
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.1){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.2){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.3){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.4){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.5){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.6){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.7){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();



tm1651_ack();

}

/**************************************************/
void      tm1651_ack()      //应答
{
byte      tm1651_ack_a1;
tm1651_ack_a1      =0;

$      tm1651_dio      in,pull;
tm1651_clk      =0;   tm1651_yanshi();      //第八个时钟的下降沿
while(tm1651_dio==1)      //检测低电平
   {
   tm1651_ack_a1      ++;
   if(tm1651_ack_a1>150)      //退出条件(死机)
      {
      $      tm1651_dio      out,low;
      return;
      }
   }
tm1651_clk      =1;   tm1651_yanshi();
$      tm1651_dio      out,low;



}
/**************************************************/
void      tm1651_stop()         //结束
{
tm1651_clk      =0;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =1;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_xianshi()      //显示
{
tm1651_start();
tm1651_a0   =0b0100_0000;   tm1651_data();      //写数据到显示寄存器,自动地址增加
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1100_0000;   tm1651_data();      //设置地址00H
tm1651_a0      =tm1651_a1;   tm1651_data();
tm1651_a0      =tm1651_a2;   tm1651_data();
tm1651_a0      =tm1651_a3;   tm1651_data();
tm1651_a0      =tm1651_a4;   tm1651_data();
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1000_1011;   tm1651_data();      //显示开,10/16
tm1651_stop();
}
/**************************************************/
void      xianshi()      //显示
{
/*
xianshi_a1      =tkch   >>4;
xianshi_a2      =tkch   &0b0000_1111;
xianshi_a3      =tkcl   >>4;   
xianshi_a4      =tkcl   &0b0000_1111;
*/
xianshi_a1      =xianshi_c1   >>4;
xianshi_a2      =xianshi_c1   &0b0000_1111;
xianshi_a3      =xianshi_c2   >>4;   
xianshi_a4      =xianshi_c2   &0b0000_1111;


xianshi_qumo_a1      =xianshi_a1;
xianshi_qumo();
xianshi_a1         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a2;
xianshi_qumo();
xianshi_a2         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a3;
xianshi_qumo();
xianshi_a3         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a4;
xianshi_qumo();
xianshi_a4         =xianshi_qumo_a1;

tm1651_a1      =xianshi_a1;
tm1651_a2      =xianshi_a2;
tm1651_a3      =xianshi_a3;
tm1651_a4      =xianshi_a4;
tm1651_xianshi();

}
/**************************************************/
//0x7e;0x30;0x6d;0x79;
//0x33;0x5b;0x5f;0x70;
//0x7f;0x7b;0x77;0x1f;
//0x4e;0x3d;0x4f;0x47;
void      xianshi_qumo()         //取模
{
if(xianshi_qumo_a1   ==0x00){xianshi_qumo_a1   =0x7e; return;}   //0
if(xianshi_qumo_a1   ==0x01){xianshi_qumo_a1   =0x30; return;}   //1
if(xianshi_qumo_a1   ==0x02){xianshi_qumo_a1   =0x6d; return;}   //2
if(xianshi_qumo_a1   ==0x03){xianshi_qumo_a1   =0x79; return;}   //3
if(xianshi_qumo_a1   ==0x04){xianshi_qumo_a1   =0x33; return;}   //4
if(xianshi_qumo_a1   ==0x05){xianshi_qumo_a1   =0x5b; return;}   //5
if(xianshi_qumo_a1   ==0x06){xianshi_qumo_a1   =0x5f; return;}   //6
if(xianshi_qumo_a1   ==0x07){xianshi_qumo_a1   =0x70; return;}   //7

if(xianshi_qumo_a1   ==0x08){xianshi_qumo_a1   =0x7f; return;}   //8
if(xianshi_qumo_a1   ==0x09){xianshi_qumo_a1   =0x7b; return;}   //9
if(xianshi_qumo_a1   ==0x0a){xianshi_qumo_a1   =0x77; return;}   //a
if(xianshi_qumo_a1   ==0x0b){xianshi_qumo_a1   =0x1f; return;}   //b
if(xianshi_qumo_a1   ==0x0c){xianshi_qumo_a1   =0x4e; return;}   //c
if(xianshi_qumo_a1   ==0x0d){xianshi_qumo_a1   =0x3d; return;}   //d
if(xianshi_qumo_a1   ==0x0e){xianshi_qumo_a1   =0x4f; return;}   //e
if(xianshi_qumo_a1   ==0x0f){xianshi_qumo_a1   =0x47; return;}   //f
}
/**************************************************/
void      yanshi()            //延时
{
.delay 2000000;
}
/**************************************************/
/**************************************************/
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_pfc161+tm1651
« Reply #3 on: June 14, 2021, 04:44:08 am »
video:https://video.kuaishou.com/short-video/3xtkh23yf64tzk6?authorId=3xmydwifg7bk3yk&streamSource=profile&area=profilexxnull
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_pfc161+tm1651
« Reply #4 on: June 14, 2021, 03:30:22 pm »
Touch  key MCU pfc161
触摸单片机pfc161
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_pfc161+tm1651
« Reply #5 on: June 22, 2021, 12:04:53 pm »
mini-c
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_Touch Keys_pfc161+tm1651_programming
« Reply #6 on: June 22, 2021, 04:16:20 pm »
/*****************pfc161+tm1651********************/
/****************qq:774145445**********************/
/****************快手:共同学习stm8*****************/
/****************IDE:PADAUK-0.91*******************/
/************触摸按键IPHONE4解锁屏效果*************/
/******************20210621************************/
//               ________   ________
//          dio-|1 pb7   \_/   pb010|-clk
//              |2 vdd pfc161  gnd 9|
//    cs,47n-||-|3 pa7 essop10 pa0 8|-hong
//          tk8-|4 pa6         pa4 7|-tk6
//          tk9-|5_pa5_________pa3_6|-tk5

//touch   _____    _____    _____    _____
//        _____    _____    _____    _____
//          |        |        |        | 
//          |        |        |        | 
//         pa6      pa5      pa4      pa3

//               pfc161 | tm1651
//                      | 5v
//                  pb0-|-clk
//                  pb7-|-dio
//                      | gnd

//     __a__      __a__      __a__      __a__
//    |     |    |     |    |     |    |     |
//    f     b    f     b    f     b    f     b
//    |     |    |     |    |     |    |     |
//     --g--      --g--      --g--      --g--
//    |     |    |     |    |     |    |     |
//    e     c    e     c    e     c    e     c
//    |__d__|    |__d__|    |__d__|    |__d__|

// _______________________________________________________
//|_bit7_|_bit6_|_bit5_|_bit4_|_bit3_|_bit2_|_bit1_|_bit0_|
//|__空__|___a__|__b___|__c___|__d___|__e___|__f___|__g___|
/**************************************************/
#include   "extern.h"
#define      touch_1      $ tke2 pa.6
#define      touch_1x   tke2 =0
#define      touch_2      $ tke2 pa.5
#define      touch_3      $ tke1 pa.4
#define      touch_4      $ tke1 pa.3
#define      touch_4x   tke1 =0
#define      touch_run   $ tcc  tk_run
tm1651_clk      bit      pb.0;
tm1651_dio      bit      pb.7;
led_hong      bit      pa.0;
//led_lv         bit      pa.4;
//led_lan         bit      pa.3;
/**************************************************/
/**************************************************/   //tm1651
byte      tm1651_a0;
byte      tm1651_a1;            //千位
byte      tm1651_a2;            //百位
byte      tm1651_a3;            //十位
byte      tm1651_a4;            //个位

void      tm1651_yanshi();      //延时
void      tm1651_start();         //起始信号
void      tm1651_data();         //数据
void      tm1651_ack();         //应答
void      tm1651_stop();         //结束
void      tm1651_xianshi();      //显示
/**************************************************/   //显示
byte      xianshi_a1;            //千位
byte      xianshi_a2;            //百位
byte      xianshi_a3;            //十位
byte      xianshi_a4;            //个位
byte      xianshi_qumo_a1;

void      xianshi();            //显示
void      xianshi_qumo();         //取模

/**************************************************/   //按键效果
byte      anjian_xiaoguo_a1   =0;      //按键效果0,off 1,on 2开锁效果
byte      anjian_a1;               //按键低四位对应4个按键
byte      anjian_b1;

void      anjian();               //按键
/**************************************************/
void      yanshi();            //延时
/**************************************************/


void   FPPA0 (void)
{
.ADJUST_IC   SYSCLK=IHRC/4      //   SYSCLK=IHRC/4
$      tm1651_clk      out,high;      //输出,高
$      tm1651_dio      out,high;
$      led_hong      out,low;
//$      led_lv         out,low;
//$      led_lan         out,low;
/**************************************************/   //touch触摸
$      ts         ihrc/4,vcc_04,clk_128;
//$      tcc         tk_run;
//$      tke2      pa5;
//$      tke1
//tkch      //3-0
//tkcl      //7-0
$      tps2      type_b,always_on;
//cs_sel,pa.7,47n
/**************************************************/
while (1)
{
/*
xianshi_a1      =0;
xianshi_a2      =0;
xianshi_a3      =0;
xianshi_a4      =0;
touch_1;
touch_run;
.delay   2000;
xianshi_a1      =tkch &0b0000_1111;
xianshi_a2      =tkcl>>4;

touch_2;
touch_run;
.delay   2000;
xianshi_a3      =tkch &0b0000_1111;
xianshi_a4      =tkcl>>4;

if(led_hong){led_hong=0;}   else{led_hong=1;}
*/
anjian();
xianshi();
yanshi();
}
}

/**************************************************/
void      tm1651_yanshi()      //延时
{
.delay 50;
}
/**************************************************/
void      tm1651_start()         //起始信号
{
tm1651_clk   =1;   tm1651_dio   =1;   tm1651_yanshi();
tm1651_clk   =1;   tm1651_dio   =0;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_data()         //数据
{

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.0){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;      //太快检测不到需要加延时
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.1){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.2){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.3){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.4){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.5){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.6){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.7){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();



tm1651_ack();

}

/**************************************************/
void      tm1651_ack()      //应答
{
byte      tm1651_ack_a1;
tm1651_ack_a1      =0;

$      tm1651_dio      in,pull;
tm1651_clk      =0;   tm1651_yanshi();      //第八个时钟的下降沿
while(tm1651_dio==1)      //检测低电平
   {
   tm1651_ack_a1      ++;
   if(tm1651_ack_a1>150)      //退出条件(死机)
      {
      $      tm1651_dio      out,low;
      return;
      }
   }
tm1651_clk      =1;   tm1651_yanshi();
$      tm1651_dio      out,low;



}
/**************************************************/
void      tm1651_stop()         //结束
{
tm1651_clk      =0;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =1;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_xianshi()      //显示
{
tm1651_start();
tm1651_a0   =0b0100_0000;   tm1651_data();      //写数据到显示寄存器,自动地址增加
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1100_0000;   tm1651_data();      //设置地址00H
tm1651_a0      =tm1651_a1;   tm1651_data();
tm1651_a0      =tm1651_a2;   tm1651_data();
tm1651_a0      =tm1651_a3;   tm1651_data();
tm1651_a0      =tm1651_a4;   tm1651_data();
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1000_1011;   tm1651_data();      //显示开,10/16
tm1651_stop();
}
/**************************************************/
void      xianshi()      //显示
{
if(anjian_xiaoguo_a1   ==0)      //off
   {
   //xianshi_a1      =tkch;
   //xianshi_a2      =tkcl>>4;
   xianshi_a1      =0x18;
   xianshi_a2      =0x19;
   xianshi_a3      =0x1a;
   xianshi_a4      =0x1b;
   }
if(anjian_xiaoguo_a1   ==1)      //on
   {
   xianshi_a1      =0x14;
   xianshi_a2      =0x15;
   xianshi_a3      =0x16;
   xianshi_a4      =0x17;
   }
if(anjian_xiaoguo_a1   ==2)      //触摸效果
{
}

xianshi_qumo_a1      =xianshi_a1;
xianshi_qumo();
xianshi_a1         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a2;
xianshi_qumo();
xianshi_a2         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a3;
xianshi_qumo();
xianshi_a3         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a4;
xianshi_qumo();
xianshi_a4         =xianshi_qumo_a1;

tm1651_a1      =xianshi_a1;
tm1651_a2      =xianshi_a2;
tm1651_a3      =xianshi_a3;
tm1651_a4      =xianshi_a4;
tm1651_xianshi();

}
/**************************************************/
//0x7e;0x30;0x6d;0x79;
//0x33;0x5b;0x5f;0x70;
//0x7f;0x7b;0x77;0x1f;
//0x4e;0x3d;0x4f;0x47;
void      xianshi_qumo()         //取模
{
if(xianshi_qumo_a1   ==0x00){xianshi_qumo_a1   =0x7e; return;}   //0
if(xianshi_qumo_a1   ==0x01){xianshi_qumo_a1   =0x30; return;}   //1
if(xianshi_qumo_a1   ==0x02){xianshi_qumo_a1   =0x6d; return;}   //2
if(xianshi_qumo_a1   ==0x03){xianshi_qumo_a1   =0x79; return;}   //3
if(xianshi_qumo_a1   ==0x04){xianshi_qumo_a1   =0x33; return;}   //4
if(xianshi_qumo_a1   ==0x05){xianshi_qumo_a1   =0x5b; return;}   //5
if(xianshi_qumo_a1   ==0x06){xianshi_qumo_a1   =0x5f; return;}   //6
if(xianshi_qumo_a1   ==0x07){xianshi_qumo_a1   =0x70; return;}   //7

if(xianshi_qumo_a1   ==0x08){xianshi_qumo_a1   =0x7f; return;}   //8
if(xianshi_qumo_a1   ==0x09){xianshi_qumo_a1   =0x7b; return;}   //9
if(xianshi_qumo_a1   ==0x0a){xianshi_qumo_a1   =0x77; return;}   //a
if(xianshi_qumo_a1   ==0x0b){xianshi_qumo_a1   =0x1f; return;}   //b
if(xianshi_qumo_a1   ==0x0c){xianshi_qumo_a1   =0x4e; return;}   //c
if(xianshi_qumo_a1   ==0x0d){xianshi_qumo_a1   =0x3d; return;}   //d
if(xianshi_qumo_a1   ==0x0e){xianshi_qumo_a1   =0x4f; return;}   //e
if(xianshi_qumo_a1   ==0x0f){xianshi_qumo_a1   =0x47; return;}   //f

if(xianshi_qumo_a1   ==0x10){xianshi_qumo_a1   =0x4e; return;}   //|二
if(xianshi_qumo_a1   ==0x11){xianshi_qumo_a1   =0x48; return;}   // 二
if(xianshi_qumo_a1   ==0x12){xianshi_qumo_a1   =0x48; return;}   // 二
if(xianshi_qumo_a1   ==0x13){xianshi_qumo_a1   =0x78; return;}   // 二|

if(xianshi_qumo_a1   ==0x14){xianshi_qumo_a1   =0x00; return;}   //不显//on
if(xianshi_qumo_a1   ==0x15){xianshi_qumo_a1   =0x00; return;}   //不显
if(xianshi_qumo_a1   ==0x16){xianshi_qumo_a1   =0x1d; return;}   //o
if(xianshi_qumo_a1   ==0x17){xianshi_qumo_a1   =0x15; return;}   //n

if(xianshi_qumo_a1   ==0x18){xianshi_qumo_a1   =0x00; return;}   //不显//off
if(xianshi_qumo_a1   ==0x19){xianshi_qumo_a1   =0x1d; return;}   //o
if(xianshi_qumo_a1   ==0x1a){xianshi_qumo_a1   =0x47; return;}   //f
if(xianshi_qumo_a1   ==0x1b){xianshi_qumo_a1   =0x47; return;}   //f
else{xianshi_qumo_a1   =0x16;}   //n不会显示
}
/**************************************************/
void      yanshi()            //延时
{
.delay 2000000;
}
/**************************************************/
void      anjian()               //按键
{
//byte      anjian_b1;

if(anjian_xiaoguo_a1   ==0)
{
touch_1;
touch_run;
.delay   2000;

touch_1;
touch_run;
.delay   2000;
touch_1x;      //结束按键

anjian_b1      =tkch<<4;
anjian_b1      |=tkcl>>4;
if(anjian_b1<0x39)   //35 31
   {
   led_hong         =1;
   anjian_xiaoguo_a1   =1;      //显示on
   return;
   }
}

if(anjian_xiaoguo_a1   ==1)
{
touch_4;
touch_run;
.delay   2000;

touch_4;
touch_run;
.delay   2000;
touch_4x;      //结束按键

anjian_b1      =tkch<<4;
anjian_b1      |=tkcl>>4;
if(anjian_b1<0x39)
   {
   led_hong         =0;
   anjian_xiaoguo_a1   =0;      //显示off
   }
}

}
/**************************************************/
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
 

Offline suzhiming

  • Regular Contributor
  • *
  • Posts: 50
  • Country: cn
Re: PADAUK_MINI_C_Touch Keys_pfc161+tm1651_programming
« Reply #8 on: June 29, 2021, 06:10:21 am »
/*****************pfc161+tm1651********************/
/****************qq:774145445**********************/
/****************快手:共同学习stm8*****************/
/****************IDE:PADAUK-0.91*******************/
/************触摸按键IPHONE4解锁屏效果*************/
/******************20210621************************/
//               ________   ________
//          dio-|1 pb7   \_/   pb010|-clk
//              |2 vdd pfc161  gnd 9|
//    cs,47n-||-|3 pa7 essop10 pa0 8|-hong
//          tk8-|4 pa6         pa4 7|-tk6
//          tk9-|5_pa5_________pa3_6|-tk5

//touch   _____    _____    _____    _____
//        _____    _____    _____    _____
//          |        |        |        | 
//          |        |        |        | 
//         pa6      pa5      pa4      pa3

//               pfc161 | tm1651
//                      | 5v
//                  pb0-|-clk
//                  pb7-|-dio
//                      | gnd

//     __a__      __a__      __a__      __a__
//    |     |    |     |    |     |    |     |
//    f     b    f     b    f     b    f     b
//    |     |    |     |    |     |    |     |
//     --g--      --g--      --g--      --g--
//    |     |    |     |    |     |    |     |
//    e     c    e     c    e     c    e     c
//    |__d__|    |__d__|    |__d__|    |__d__|

// _______________________________________________________
//|_bit7_|_bit6_|_bit5_|_bit4_|_bit3_|_bit2_|_bit1_|_bit0_|
//|__空__|___a__|__b___|__c___|__d___|__e___|__f___|__g___|
/**************************************************/
#include   "extern.h"
#define      touch_1      $ tke2 pa.6
#define      touch_1x   tke2 =0
#define      touch_2      $ tke2 pa.5
#define      touch_2x   tke2 =0
#define      touch_3      $ tke1 pa.4
#define      touch_3x   tke1 =0
#define      touch_4      $ tke1 pa.3
#define      touch_4x   tke1 =0
#define      touch_run   $ tcc  tk_run
tm1651_clk      bit      pb.0;
tm1651_dio      bit      pb.7;
led_hong      bit      pa.0;
//led_lv         bit      pa.4;
//led_lan         bit      pa.3;
/**************************************************/
/**************************************************/   //tm1651
byte      tm1651_a0;
byte      tm1651_a1;            //千位
byte      tm1651_a2;            //百位
byte      tm1651_a3;            //十位
byte      tm1651_a4;            //个位

void      tm1651_yanshi();      //延时
void      tm1651_start();         //起始信号
void      tm1651_data();         //数据
void      tm1651_ack();         //应答
void      tm1651_stop();         //结束
void      tm1651_xianshi();      //显示
/**************************************************/   //显示
byte      xianshi_a1;            //千位
byte      xianshi_a2;            //百位
byte      xianshi_a3;            //十位
byte      xianshi_a4;            //个位
byte      xianshi_qumo_a1;

void      xianshi();            //显示
void      xianshi_qumo();         //取模

/**************************************************/   //按键效果
byte      anjian_xiaoguo_a1   =0;      //按键效果0,off 1,on 2开锁效果
byte      anjian_a1;               //按键4个
byte      anjian_a2;
byte      anjian_a3;
byte      anjian_a4;

//byte      anjian_b1;
//byte      anjian_b2;

void      anjian();               //按键
/**************************************************/
void      yanshi();            //延时
/**************************************************/


void   FPPA0 (void)
{
.ADJUST_IC   SYSCLK=IHRC/4      //   SYSCLK=IHRC/4
$      tm1651_clk      out,high;      //输出,高
$      tm1651_dio      out,high;
$      led_hong      out,low;
//$      led_lv         out,low;
//$      led_lan         out,low;
/**************************************************/   //touch触摸
$      ts         ihrc/4,vcc_04,clk_128;
//$      tcc         tk_run;
//$      tke2      pa5;
//$      tke1
//tkch      //3-0
//tkcl      //7-0
$      tps2      type_b,always_on;
//cs_sel,pa.7,47n
/**************************************************/
while (1)
{





anjian();
xianshi();
yanshi();
}
}

/**************************************************/
void      tm1651_yanshi()      //延时
{
.delay 50;
}
/**************************************************/
void      tm1651_start()         //起始信号
{
tm1651_clk   =1;   tm1651_dio   =1;   tm1651_yanshi();
tm1651_clk   =1;   tm1651_dio   =0;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_data()         //数据
{

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.0){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;      //太快检测不到需要加延时
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.1){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.2){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.3){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.4){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.5){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.6){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();

tm1651_clk      =0;   tm1651_yanshi();
if(tm1651_a0.7){tm1651_dio   =1;}   else{tm1651_dio   =0;}
nop;nop;nop;
tm1651_clk      =1;   tm1651_yanshi();



tm1651_ack();

}

/**************************************************/
void      tm1651_ack()      //应答
{
byte      tm1651_ack_a1;
tm1651_ack_a1      =0;

$      tm1651_dio      in,pull;
tm1651_clk      =0;   tm1651_yanshi();      //第八个时钟的下降沿
while(tm1651_dio==1)      //检测低电平
   {
   tm1651_ack_a1      ++;
   if(tm1651_ack_a1>150)      //退出条件(死机)
      {
      $      tm1651_dio      out,low;
      return;
      }
   }
tm1651_clk      =1;   tm1651_yanshi();
$      tm1651_dio      out,low;



}
/**************************************************/
void      tm1651_stop()         //结束
{
tm1651_clk      =0;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =0;   tm1651_yanshi();
tm1651_clk      =1;   tm1651_dio      =1;   tm1651_yanshi();

}
/**************************************************/
void      tm1651_xianshi()      //tm16511显示
{
tm1651_start();
tm1651_a0   =0b0100_0000;   tm1651_data();      //写数据到显示寄存器,自动地址增加
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1100_0000;   tm1651_data();      //设置地址00H
tm1651_a0      =tm1651_a1;   tm1651_data();
tm1651_a0      =tm1651_a2;   tm1651_data();
tm1651_a0      =tm1651_a3;   tm1651_data();
tm1651_a0      =tm1651_a4;   tm1651_data();
tm1651_stop();
tm1651_start();
tm1651_a0   =0b1000_1011;   tm1651_data();      //显示开,10/16
tm1651_stop();
}
/**************************************************/
void      xianshi()      //显示
{
if(anjian_xiaoguo_a1   ==0)      //off
   {
   //xianshi_a1      =tkch;
   //xianshi_a2      =tkcl>>4;
   xianshi_a1      =0x18;
   xianshi_a2      =0x19;
   xianshi_a3      =0x1a;
   xianshi_a4      =0x1b;
   }
if(anjian_xiaoguo_a1   ==1)      //on
   {
   xianshi_a1      =0x14;
   xianshi_a2      =0x15;
   xianshi_a3      =0x16;
   xianshi_a4      =0x17;
   }
if(anjian_xiaoguo_a1   ==2)      //触摸效果
   {
   if(anjian_a1   ==1){xianshi_a1   =0x10;}   else{xianshi_a1   =0x14;}      //|二
   if(anjian_a2   ==1){xianshi_a2   =0x11;}   else{xianshi_a2   =0x14;}      // 二
   if(anjian_a3   ==1){xianshi_a3   =0x12;}   else{xianshi_a3   =0x14;}      // 二
   if(anjian_a4   ==1){xianshi_a4   =0x13;}   else{xianshi_a4   =0x14;}      // 二|

   }

xianshi_qumo_a1      =xianshi_a1;
xianshi_qumo();
tm1651_a1         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a2;
xianshi_qumo();
tm1651_a2         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a3;
xianshi_qumo();
tm1651_a3         =xianshi_qumo_a1;

xianshi_qumo_a1      =xianshi_a4;
xianshi_qumo();
tm1651_a4         =xianshi_qumo_a1;



tm1651_xianshi();

}
/**************************************************/
//0x7e;0x30;0x6d;0x79;
//0x33;0x5b;0x5f;0x70;
//0x7f;0x7b;0x77;0x1f;
//0x4e;0x3d;0x4f;0x47;
void      xianshi_qumo()         //取模
{
if(xianshi_qumo_a1   ==0x00){xianshi_qumo_a1   =0x7e; return;}   //0
if(xianshi_qumo_a1   ==0x01){xianshi_qumo_a1   =0x30; return;}   //1
if(xianshi_qumo_a1   ==0x02){xianshi_qumo_a1   =0x6d; return;}   //2
if(xianshi_qumo_a1   ==0x03){xianshi_qumo_a1   =0x79; return;}   //3
if(xianshi_qumo_a1   ==0x04){xianshi_qumo_a1   =0x33; return;}   //4
if(xianshi_qumo_a1   ==0x05){xianshi_qumo_a1   =0x5b; return;}   //5
if(xianshi_qumo_a1   ==0x06){xianshi_qumo_a1   =0x5f; return;}   //6
if(xianshi_qumo_a1   ==0x07){xianshi_qumo_a1   =0x70; return;}   //7

if(xianshi_qumo_a1   ==0x08){xianshi_qumo_a1   =0x7f; return;}   //8
if(xianshi_qumo_a1   ==0x09){xianshi_qumo_a1   =0x7b; return;}   //9
if(xianshi_qumo_a1   ==0x0a){xianshi_qumo_a1   =0x77; return;}   //a
if(xianshi_qumo_a1   ==0x0b){xianshi_qumo_a1   =0x1f; return;}   //b
if(xianshi_qumo_a1   ==0x0c){xianshi_qumo_a1   =0x4e; return;}   //c
if(xianshi_qumo_a1   ==0x0d){xianshi_qumo_a1   =0x3d; return;}   //d
if(xianshi_qumo_a1   ==0x0e){xianshi_qumo_a1   =0x4f; return;}   //e
if(xianshi_qumo_a1   ==0x0f){xianshi_qumo_a1   =0x47; return;}   //f

if(xianshi_qumo_a1   ==0x10){xianshi_qumo_a1   =0x4e; return;}   //|二
if(xianshi_qumo_a1   ==0x11){xianshi_qumo_a1   =0x48; return;}   // 二
if(xianshi_qumo_a1   ==0x12){xianshi_qumo_a1   =0x48; return;}   // 二
if(xianshi_qumo_a1   ==0x13){xianshi_qumo_a1   =0x78; return;}   // 二|

if(xianshi_qumo_a1   ==0x14){xianshi_qumo_a1   =0x00; return;}   //不显//on
if(xianshi_qumo_a1   ==0x15){xianshi_qumo_a1   =0x00; return;}   //不显
if(xianshi_qumo_a1   ==0x16){xianshi_qumo_a1   =0x1d; return;}   //o
if(xianshi_qumo_a1   ==0x17){xianshi_qumo_a1   =0x15; return;}   //n

if(xianshi_qumo_a1   ==0x18){xianshi_qumo_a1   =0x00; return;}   //不显//off
if(xianshi_qumo_a1   ==0x19){xianshi_qumo_a1   =0x1d; return;}   //o
if(xianshi_qumo_a1   ==0x1a){xianshi_qumo_a1   =0x47; return;}   //f
if(xianshi_qumo_a1   ==0x1b){xianshi_qumo_a1   =0x47; return;}   //f
else{xianshi_qumo_a1   =0x16;}   //n不会显示
}
/**************************************************/
void      yanshi()            //延时
{
.delay 1000000;
}
/**************************************************/
void      anjian()               //按键
{
byte      anjian_b1;
byte      anjian_b2;

if(anjian_xiaoguo_a1   ==0)
   {
   touch_1;
   touch_run;
   .delay   2000;

   touch_1;      //打开1按键
   touch_run;
   .delay   2000;
   touch_1x;      //关闭1按键

   anjian_b1      =tkch<<4;
   anjian_b1      |=tkcl>>4;
   if(anjian_b1<0x39)   //35 31
      {
      anjian_a1      =0;         //清屏
      anjian_a2      =0;
      anjian_a3      =0;
      anjian_a4      =0;
xianshi();
yanshi();      //延时
xianshi();
yanshi();      //延时


      anjian_b2      =50;      //循环20次
      anjian_xiaoguo_a1   =2;      //显示滑块效果

      while(anjian_b2   --)
         {
         if(led_hong){led_hong=0;}else{led_hong=1;}
         anjian_a1      =1;      //第1位点亮
         xianshi();      //显示
         yanshi();      //延时


         touch_2;      //打开2按键
         touch_run;
         .delay   2000;
         touch_2x;

         anjian_b1      =tkch<<4;
         anjian_b1      |=tkcl>>4;
         if(anjian_b1<0x40)
            {
            anjian_b2      =20;      //循环20次
            anjian_a2      =1;         //第2位点亮
            }

         touch_3;      //打开3按键
         touch_run;
         .delay   2000;
         touch_3x;

         anjian_b1      =tkch<<4;
         anjian_b1      |=tkcl>>4;
         if(anjian_b1<0x40)
            {
            anjian_b2      =20;      //循环20次
            anjian_a3      =1;         //第3位点亮
            }


         touch_4;      //打开4按键
         touch_run;
         .delay   2000;
         touch_4x;

         anjian_b1      =tkch<<4;
         anjian_b1      |=tkcl>>4;
         if(anjian_b1<0x40)
            {
            anjian_b2      =3;         //循环3次
            anjian_a4      =1;         //第4位点亮
            }

         if(anjian_b2==0)      //退出条件
            {
            anjian_xiaoguo_a1      =1;      //显示开on
            led_hong            =1;
            }


         }





      return;
      }
   }

if(anjian_xiaoguo_a1   ==1)
{
touch_4;
touch_run;
.delay   2000;

touch_4;
touch_run;
.delay   2000;
touch_4x;      //结束按键

anjian_b1      =tkch<<4;
anjian_b1      |=tkcl>>4;
if(anjian_b1<0x39)
   {
   led_hong         =0;
   anjian_xiaoguo_a1   =0;      //显示off
   }
}

}
/**************************************************/
 



Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf