(本文需要3分钟时间阅读)1.采用一元硬币专用投币器或自制投币器;2、头一枚硬币数码管计数一次;3、一枚硬币计时充电20分钟,采用倒计时显示 4、用两位数码管显示(投币数和倒计时均用这两位数码管);5、当按下确认健时,硬币不能投入,数码管不计数;6、充电电压为5v,采用多种接口以下是我的程序#include <STC12C5A60S2.h>#define coin_maxnum 20 //设置投币数最多为20#define time_1 5 //设置一枚硬币可充电时间为5分钟void delay_ms(unsigned char x) //时延函数{inti,j;for(i=0;i<x;i )for(j=0;j<125;j );}void Time_Init(void); //定时器初始化函数{TMOD = 0x01; //选择工作方式1TH0 = 0x3C; //设置初始值,定时50MSTL0 = 0xB0;EA = 1; //打开总中断ET0 = 1; //打开定时器0中断TR0 = 1; //启动定时器0}void display(int date); //数码管显示函数char time_second_test_1; //第一路计时char time_second_1;char time_minute_1;char coin_num_1;char flagyes_1;char flagcoin_1;sbit CE_1=P3^6; //控制CN3052使能端sbit key1=P2^0; //按键1投币sbit key2=P2^1; //按键2确认unsigned charreg[]={0xFA,0x82,0xB9,0xAB,0xC3,0x6B,0x7B,0xA2,0xFB,0xEB}; //0-9void main(void){char i,j,flagcoin_1, flagyes_1, coin_num_1;intshow, display_1; //显示i=0;j=0;flagcoin_1=0; //投币标记flagyes_1 =0; //确认标记Time_Init(); //定时器初始化函数CE_1=0;P2=0xff; //数码管全部关断P0=0x00;key1=1;while(1){if((key1==0)&&(flagyes_1==0)) //key1被按下且未确认开始充电{delay_ms(100); //延时去抖if(key1==0){ coin_num_1 ; //投币数增加if(coin_num_1==coin_maxnum 1) //限制投币数{coin_num_1 =1;}while(key1==0); //等待按键松开}flagcoin_1=1; //投币标记display_1=coin_num_1;//显示投币数P0=0x00;}if((key2==0)&&(flagcoin_1==1)) //已投币且key2确认键被按下{ flagyes_1=1;}if(flagyes_1==1){ TR1 = 1; //启动T1定时器CE_1 =1; //开始充电if(time_second_test_1==20) //定时1s{ P0 =0x00; //消隐time_second_1 ;time_second_test_1=0;if(time_second_1==60){ time_second_1=0;time_minute_1 ;if(time_minute_1==time_1*coin_num_1) //充电时间结束{time_minute_1=0;CE_1=0; //使CN3052充电使能端置低TR1=0; //关闭定时器flagyes_1=0; //确认标记取消coin_num_1=0; //投币标记取消display_1=0; //显示清空}}}if((time_1*coin_num_1-time_minute_1)==1){display_1=60-time_second_1;} //时间剩最后一分钟时显示秒else{display_1=time_1*coin_num_1-time_minute_1;//显示分钟}}show=display_1;display(show); //数码管显示}},今天小编就来说说关于大功率pfc充电器电路原理?下面更多详细答案一起来看看吧!

大功率pfc充电器电路原理(投币式多功能充电器控制电路的设计)

大功率pfc充电器电路原理

投币式多功能充电器控制电路的设计来来来

(本文需要3分钟时间阅读)

1.采用一元硬币专用投币器或自制投币器;2、头一枚硬币数码管计数一次;3、一枚硬币计时充电20分钟,采用倒计时显示 4、用两位数码管显示(投币数和倒计时均用这两位数码管);5、当按下确认健时,硬币不能投入,数码管不计数;6、充电电压为5v,采用多种接口。以下是我的程序#include <STC12C5A60S2.h>#define coin_maxnum 20 //设置投币数最多为20#define time_1 5 //设置一枚硬币可充电时间为5分钟void delay_ms(unsigned char x) //时延函数{inti,j;for(i=0;i<x;i )for(j=0;j<125;j );}void Time_Init(void); //定时器初始化函数{TMOD = 0x01; //选择工作方式1TH0 = 0x3C; //设置初始值,定时50MSTL0 = 0xB0;EA = 1; //打开总中断ET0 = 1; //打开定时器0中断TR0 = 1; //启动定时器0}void display(int date); //数码管显示函数char time_second_test_1; //第一路计时char time_second_1;char time_minute_1;char coin_num_1;char flagyes_1;char flagcoin_1;sbit CE_1=P3^6; //控制CN3052使能端sbit key1=P2^0; //按键1投币sbit key2=P2^1; //按键2确认unsigned charreg[]={0xFA,0x82,0xB9,0xAB,0xC3,0x6B,0x7B,0xA2,0xFB,0xEB}; //0-9void main(void){char i,j,flagcoin_1, flagyes_1, coin_num_1;intshow, display_1; //显示i=0;j=0;flagcoin_1=0; //投币标记flagyes_1 =0; //确认标记Time_Init(); //定时器初始化函数CE_1=0;P2=0xff; //数码管全部关断P0=0x00;key1=1;while(1){if((key1==0)&&(flagyes_1==0)) //key1被按下且未确认开始充电{delay_ms(100); //延时去抖if(key1==0){ coin_num_1 ; //投币数增加if(coin_num_1==coin_maxnum 1) //限制投币数{coin_num_1 =1;}while(key1==0); //等待按键松开}flagcoin_1=1; //投币标记display_1=coin_num_1;//显示投币数P0=0x00;}if((key2==0)&&(flagcoin_1==1)) //已投币且key2确认键被按下{ flagyes_1=1;}if(flagyes_1==1){ TR1 = 1; //启动T1定时器CE_1 =1; //开始充电if(time_second_test_1==20) //定时1s{ P0 =0x00; //消隐time_second_1 ;time_second_test_1=0;if(time_second_1==60){ time_second_1=0;time_minute_1 ;if(time_minute_1==time_1*coin_num_1) //充电时间结束{time_minute_1=0;CE_1=0; //使CN3052充电使能端置低TR1=0; //关闭定时器flagyes_1=0; //确认标记取消coin_num_1=0; //投币标记取消display_1=0; //显示清空}}}if((time_1*coin_num_1-time_minute_1)==1){display_1=60-time_second_1;} //时间剩最后一分钟时显示秒else{display_1=time_1*coin_num_1-time_minute_1;//显示分钟}}show=display_1;display(show); //数码管显示}}

,