很不错的资料,通行世界的标准。据说适用于国内大多数BMS厂家的协议文件。果断下载吧!机不可失,失不再来。
上传时间: 2017-05-26
上传用户:dehuaz
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定义 sfr WDT_CONTR = 0xe1;//stc2051的看门狗?????? /**********全局常量************/ //写卡的命令 #define write_command0 0//写密码 #define write_command1 1//写配置字 #define write_command2 2//密码写数据 #define write_command3 3//唤醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //读卡的时间参数us #define ts_min 250//270*11.0592/12=249//取近似的整数 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10调整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI总线 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//测试绿灯 sbit led_light1 = P1^5;//测试红灯 sbit led_light_ok = P1^1;//读卡成功标志 sbit fengmingqi = P1^5; /***********全局变量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存储卡上用户数据(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram uchar command; //第一个命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //缓存定时值,因用同一个定时器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //缓存定时值,因用同一个定时器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函数原型*****************/ //读写操作 void f_readcard(void);//全部读出1~7 AOR唤醒 void f_writecard(uchar x);//根据命令写不同的内容和操作 void f_clearpassword(void);//清除密码 void f_changepassword(void);//修改密码 //功能子函数 void write_password(uchar data *data p);//写初始密码或数据 void write_block(uchar x,uchar data *data p);//不能用通用指针 void write_bit(bit x);//写位 /*子函数区*****************************************************/ void delay_2(uint x) //延时,时间x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能频繁的复位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允许接收 //SCON =0x50; //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1, //REN=1允许接收 TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位) TCON = 0x40; //设定时器1 允许开始计时(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //启动定时器 WDT_CONTR = 0x3c;//使能看门狗 p_U2270B_Standby = 0;//单电源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//读卡 { EA = 0;//全关,防止影响跳变的定时器计时 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用唤醒功能来防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作码读0页 write_bit(0); write_password(&bankdata[24]);//密码block7 p_U2270B_CFE =1 ;// delay_2(516);//编程及确认时间5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断? while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定时器晚启动10个周期 //同步头 if((324 < a.W) && (a.W < 353)) ;//检测同步信号1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //读0~7块的数据 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8个位 { //等待下降沿的到来 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再赋值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//读卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//写卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//写密码:初始化密码 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 for(i = 0;i < 35;i++) { write_bit(1);//写数据位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//测试使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密码存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡参数:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_bit(0);//写锁定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密码写数据 { uchar data*data p; p = &bankdata[24]; write_bit(1);//写操作码1:10 write_bit(0);//写操作码0 write_password(p);//发口令 write_bit(0);//写锁定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//写数据 } else if(x == write_command3)//aor //唤醒 { //cominceptbuff[1]操作码10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密码 p_U2270B_CFE = 1;//此时数据不停的循环传出 } else //停止操作码 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密码 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密码 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作码10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//写新配置参数:pwd=0 //密码无效:即清除密码 DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密码 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密码 DATA = 0x80;//操作码10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//发原密码 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//锁定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//写新密码 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密码存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作码00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函数***********************************/ void write_bit(bit x)//写一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延时448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26写0 } } /*******************写一个block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0数据 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //读卡 f_writecard(command1); //写卡 f_clearpassword(); //清除密码 f_changepassword(); //修改密码 } }
标签: 12345
上传时间: 2017-10-20
上传用户:my_lcs
Lithium–sulfur batteries are a promising energy-storage technology due to their relatively low cost and high theoretical energy density. However, one of their major technical problems is the shuttling of soluble polysulfides between electrodes, resulting in rapid capacity fading. Here, we present a metal–organic framework (MOF)-based battery separator to mitigate the shuttling problem. We show that the MOF-based separator acts as an ionic sieve in lithium–sulfur batteries, which selectively sieves Li+ ions while e ciently suppressing undesired polysulfides migrating to the anode side. When a sulfur-containing mesoporous carbon material (approximately 70 wt% sulfur content) is used as a cathode composite without elaborate synthesis or surface modification, a lithium–sulfur battery with a MOF-based separator exhibits a low capacity decay rate (0.019% per cycle over 1,500 cycles). Moreover, there is almost no capacity fading after the initial 100 cycles. Our approach demonstrates the potential for MOF-based materials as separators for energy-storage applications.
上传时间: 2017-11-23
上传用户:653357637
Lithium–sulfur (Li–S) batteries with high energy density and long cycle life are considered to be one of the most promising next-generation energy-storage systems beyond routine lithium-ion batteries. Various approaches have been proposed to break down technical barriers in Li–S battery systems. The use of nanostructured metal oxides and sulfides for high sulfur utilization and long life span of Li–S batteries is reviewed here. The relationships between the intrinsic properties of metal oxide/sulfide hosts and electrochemical performances of Li–S batteries are discussed. Nanostructured metal oxides/ sulfides hosts used in solid sulfur cathodes, separators/interlayers, lithium- metal-anode protection, and lithium polysulfides batteries are discussed respectively. Prospects for the future developments of Li–S batteries with nanostructured metal oxides/sulfides are also discussed.
上传时间: 2017-11-23
上传用户:653357637
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } } 【程序3】 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。 public class lianxi03 { public static void main(String[] args) { int b1, b2, b3;
上传时间: 2017-12-24
上传用户:Ariza
PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器。PW4054 适合给 USB 电源以及适配器电源供电。基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测电阻和隔离二极管。当外部环境温度过高或者在大功率应用时,热反馈可以调节充电电流以降低芯片温度。充电电压固定在 4.2V,而充电电流则可以通过一个电阻器进行外部设置。当充电电流在达到最终浮充电压之后降至设定值的 1/10,芯片将终止充电循环。当输入电压断开时, PW4054 进入睡眠状态,电池漏电流将降到 1uA 以下。 PW4054 还可以被设置于停机模式,此时芯片静态电流降至 25uA。PW4054 还包括其他特性:欠压锁定,自动再充电和充电状态标志。PW4054 采用 SOT23-5L 封装配合较少的外围原件使其非常适用于便携式产品
标签: pw4054
上传时间: 2022-02-11
上传用户:jason_vip1
1、编制背景介绍发展新能源汽车是迈向汽车强国的必由之路电动汽车是我国战略性新兴产业,对提高我国能源安全应对气候变化、改善环境保护起着重要作用。近年来,党中央国务院不断加大对电动汽车及充电基础设施的政策支持,从顶层设计、政策支持等方面进行规划部署,电动汽车及充电基础设施正迎来快速发展的时期。电动汽车传导充电接口及通信协议标准是保证电动汽车和充电基础设施互联互通的基础性标准。本次发布的五项标准是:GB/T184871-2015《电动车辆传导充电系统一般要求》GB/T202341-2015《电动汽车传导充电用连接装置通用要求》GB/T20234.2-2015《电动汽车传导充电用连接装置交流充电接口》GB/T2023432015《电动汽车传导充电用连接装置直流充电接口》GB/T27930-2015《电动汽车非车载传导式充电机与电池管理系统之间的通信协议》针对充电接口温度监控可能涉及的专利问题,中国电力企业联合会专门征求国家知识产权局意见,认真分析原专利权诉求,探讨知识产权解决办法·针对直流充电机械锁加装电子锁专题,起草组先后召开多次会议,就电子锁加装位置、实现方式、技术实现方案等问题进行多次讨论,经多次修改
上传时间: 2022-03-29
上传用户:kent
电动汽车交流充电桩是电动汽车充电设备中最常见的基础设施之一,也是电动汽车实现产业化与市场化的重要前提。电动汽车交流充电桩是利用标准的充电接口,采用传导式充电方式为车载式充电机提供电源的装置,一般具有电能计量、计费、通信、控制等功能。电动汽车交流充电桩具有一定的安全防护等级,主要安装于停车场以及住宅小区等区域,是电动汽车进行常规充电的主要设备。本文论述了一种基于专用电能计量芯片开发的交流充电桩,给出了交流充电桩软硬件设计方案。本文在硬件设计方面给出了主电路结构,包括MCU电路、系统电源电路、电压电流信号调理电路、用于与后台管理系统通信的CAN总线接口电路以及外围人机交互接口电路。其中,人机交互接口电路包括打印机接口、POS机接口、触摸屏显示器接口、语音提示接口电路。针对本文设计的硬件电路以及专用电能计量芯片的特点,对交流充电桩应用软件也进行了设计交流充电桩通常以充电站的工作形式管理,这就需要与之配套的后台管理系统用于对交流充电桩充电过程中的各种数据进行收发、分析、管理、存储与监控。本文设的台小NW哪化发并印C主几和行数据库操作。该充电站的后台管理系统过CAN总线与各充电桩进行通信。本文参考车载BMS电池管理系统与充电桩之间的通信协议,实现了交流充电桩与后台管理系统之间的CAN总线通信细节。本文也对电能计量原理基础知识进行了介绍,并对电能计量芯片的电能计量原理进行了阐述。最后对本交流充电桩智能充电方法进行了介绍本文设计开发的交流充电桩功能完善、操作简单、运行可靠,并且已经通过了北京电力科学研究院型式试验,在充电设施建设中具有广阔的应用前景和市场潜力,对电动汽车的普及有一定推动作用。
上传时间: 2022-03-31
上传用户:
近年来,便携式设备如掌上电脑、个人通信设备等电子消费产品得到了飞速发展,这些电子产品均采用锂电池供电。锂离子电池的电压随着充放电状态的改变会发生很大变化,使得电池电压可能高于、也可能低于系统所需电源电压,需要升压/降压DCDC转换器将变化的电池电压转换为稳定的直流电压,实现升压模式与降压模式之间的平滑过渡和提高过渡模式的效率是升压/降压DC-DC转换器研究的热点和难点。本文首先介绍了H桥升压降压转换器的工作原理与存在的问题。系统在升压和降压转换过程中,会发生跳周期现象,产生较大输出纹波,因此本文提出在该转换模式下,增加H桥非反相工作模式作为过渡模式,以减小系统的输出纹波。在过渡模式下为了得到高的转换效率,因此本文改进H桥非反相工作模式,来提高系统的转换效率。其次,本文推导出H桥升压/降压转换器的三种工作模式包括升压模式、过渡模式、降压模式的小信号模型,用 sisotool工具搭建系统频域模型,确定系统的补偿方案,再用 simulink搭建整个H桥升压降压转換器系统,在三种工作模式下验证补偿方案。最后,本论文采用035 um TSMCCMOS工艺设计H桥升压/降压DCDC转换器,可输入电压范围是2.7-52V,VFB为1.2V,开关频率范围为300KHz-2MHz,输出最大电流为600mA。提取电路网表,在开关频率为1MH条件下,Hspice仿真与分析,从仿真结果上看,当输出电阻分别为R=5.59和R=339重载情况下下,系统在升压模式的转换效率为91%和94%、在升压降压模式的转换效率为75%和83%、在降压模式下转换效为73%和79%,过渡模式下的纹波为30mV:当输出电阻R=509轻载条件下,输入电压分别为2.7V、3.3V、4.2V,系统的转换效率分别为79%、65%、73%以上结果表明本文所实现的DC电路达到高效、纹波小的要求
标签: DC-DC转换器
上传时间: 2022-04-08
上传用户:kingwide
APC340是高度集成低功耗双工无线数据传输模块,其嵌入高速低功耗单片机和高性能扩频射频芯片SX1276/8,同时采用高效的循环交织纠检错编码,抗干扰和灵敏度均处于行业最领先水平,APC340提供了多个频道选择,可在线修改串口速率,收发频率,发射功率,射频速率等各种参数。APC340工作电压为2.1-3.6V,可定制3.5-5.5V工作电压,在接收状态下仅消耗13mA,APC340有四种工作模式,各模式之间可任意切换,在1SEC周期轮询唤醒省电模式(Polling mode)F,接收仅仅消耗几+uA,一节3.6V/3.6AH时的锂亚电池可工作数年,非常适合电池供电的系统。应用:无线水气热表抄表极远距离数据通讯无线传感器网络无线自动化数据采集野外数据遥控、遥测各种变送器,流量计智能仪表楼宇小区自动化与安防矿山石油设备控制通讯环境、节能、温度监测电气电力设备
上传时间: 2022-06-19
上传用户: