新能源汽车档位控制器软件功能定义及其策略

                   **新能源汽车档位控制器软件功能定义及其策略**

整车档位定义及控制策略(P、R、N、D)
1档位定义
1.1 停车档(P档)
当换挡手柄在P时,P档锁止,使驱动轮不能转动,防止汽车移动。P档系统主要由P档电机控制器总成、P档电机、P档端盖、P档执行器组成,驱动电机控制器、档位控制器、ESC、BCM向P档系统发送相关控制信号,仪表显示P档系统故障。
1.1.1 P档电机控制器:主要功能为控制P档电机正/反向旋转从而实现解锁/闭锁功能,同时包括CAN通讯、故障处理、在线CAN烧写以及自检等功能。
1.1.2 P档电机:根据P档电机控制器驱动信号进行旋转,带动P档执行机构动作,并反馈霍尔位置信号;
1.1.3 P档执行机构:与P档电机直联,解锁/锁止变速箱;
1.1.4 P档端盖:固定P档电机。
1.1.5 P档系统组成框图

P当系统组成框图
系统功能策略包含
P档闭锁原理
P档解锁原理
倒车档(R档)
空挡(N档)
系统策略原理图
在这里插入图片描述

具体功能策略设计内容详见:https://download.csdn.net/download/weixin_43569398/15142057

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是基于AT89C52和DAC0808的按键控制多档数字调压器的汇编语言示例程序: ``` ; AT89C52和DAC0808按键控制的多档数字调压器设计 ; 程序实现:按键K1/K2控制输出电压,在液晶屏上显示当前电压值 ; 定义I/O端口 PORT_A equ P1 PORT_B equ P2 PORT_C equ P0 ; 定义液晶显示的I/O口 LCD_DATA_PORT equ PORT_A LCD_CTL_PORT equ PORT_B ; 定义DAC0808的控制字节 DAC_CS equ 01h ;DAC芯片选择位,P3.0 DAC_CLK equ 02h ;DAC时钟输入,P3.1 DAC_DIN equ 04h ;DAC数据输入,P3.2 DAC_LDAC equ 08h ;DAC加载输入,P3.3 ; 定义按键的I/O口 K1 equ P0.0 K2 equ P0.1 ; 定义变量 VOUT equ 20h ;DAC0808的输出电压值 VREF equ 80h ;DAC0808的参考电压值 VMAX equ 0FFh ;DAC0808的最大输出电压值 VMIN equ 00h ;DAC0808的最小输出电压值 VSTEP equ 08h ;DAC0808的输出电压步长 VLEVEL equ 08h ;每步增加的电压值 ; 定义初始化过程 INIT: MOV PORT_C, #00h ;P0端口初始化为0 MOV PORT_B, #00h ;P2端口初始化为0 MOV PORT_A, #00h ;P1端口初始化为0 MOV TMOD, #01h ;定时器0模式1,16位计数器 MOV TH0, #4Ch ;设定定时器初值 MOV TL0, #00h ;设定定时器初值 SETB TR0 ;启动定时器0 SETB DAC_CS ;DAC芯片选择位置高 SETB DAC_CLK ;DAC时钟输入置高 SETB DAC_DIN ;DAC数据输入置高 CLR DAC_LDAC ;DAC加载输入置低 RET ; 定义读取ADC0809的子程序 READ_ADC0809: SETB P3.5 ;启动ADC0809转换 WAIT_ADC0809: JB P3.6, WAIT_ADC0809 ;等待ADC0809转换完成 MOV A, P1 ;读取ADC0809输出值 CLR P3.5 ;停止ADC0809转换 RET ; 定义DAC0808输出子程序 DAC_OUTPUT: MOV A, VOUT ;将输出电压值VOUT赋给累加器A DIV AB, VREF ;将A:B除以VREF,商存入A,余数存入B MOV A, B ;将余数存入A MUL AB, VMAX ;将A:B乘以VMAX,积存入A:B DIV AB, 256 ;将A:B除以256,商存入A,余数存入B MOV A, B ;将余数存入A ADD A, VMIN ;将A加上VMIN,得到最终输出电压值 MOV VOUT, A ;将最终输出电压值存入VOUT MOV A, #0FFh ;将A设为0FFh SUBB A, VOUT ;将0FFh减去VOUT,得到DAC的控制字节 MOV P3, A ;将控制字节输出到P3端口 SETB DAC_CLK ;DAC时钟输入置高 CLR DAC_CLK ;DAC时钟输入置低 SETB DAC_LDAC ;DAC加载输入置高 CLR DAC_LDAC ;DAC加载输入置低 RET ; 定义主程序 MAIN: CALL INIT ;调用初始化过程 LOOP: CALL READ_ADC0809 ;读取ADC0809的输出电压值 CALL DAC_OUTPUT ;根据输出电压值计算DAC控制字节并输出 MOV A, VOUT ;将输出电压值赋给累加器A MOV LCD_DATA_PORT, A ;将输出电压值输出到液晶屏 ACALL DELAY ;调用延时过程 CJNE K1, #0, K1_CHANGE ;如果按键K1被按下,则跳转到K1_CHANGE处理 CJNE K2, #0, K2_CHANGE ;如果按键K2被按下,则跳转到K2_CHANGE处理 JMP LOOP ;如果没有按键被按下,则继续循环 K1_CHANGE: ADD A, VLEVEL ;将输出电压值加上VLEVEL CJNE A, #VMAX, NO_OVERFLOW ;如果加上VLEVEL后没有溢出,则跳转到NO_OVERFLOW处理 MOV A, #VMAX ;如果加上VLEVEL后溢出了,则将输出电压值设为VMAX SJMP CHANGE_DONE ;跳转到CHANGE_DONE处理 NO_OVERFLOW: MOV VOUT, A ;将新的输出电压值存入VOUT JMP CHANGE_DONE ;跳转到CHANGE_DONE处理 K2_CHANGE: SUBB A, VLEVEL ;将输出电压值减去VLEVEL CJNE A, #VMIN, NO_UNDERFLOW ;如果减去VLEVEL后没有下溢,则跳转到NO_UNDERFLOW处理 MOV A, #VMIN ;如果减去VLEVEL后下溢了,则将输出电压值设为VMIN SJMP CHANGE_DONE ;跳转到CHANGE_DONE处理 NO_UNDERFLOW: MOV VOUT, A ;将新的输出电压值存入VOUT CHANGE_DONE: MOV LCD_DATA_PORT, A ;将新的输出电压值输出到液晶屏 ACALL DELAY ;调用延时过程 JMP LOOP ;跳转回LOOP处理 ; 定义延时过程 DELAY: MOV R7, #20h ;设定延时时间 DELAY_LOOP: DJNZ R7, DELAY_LOOP ;循环延时 RET END ``` 该程序实现了按键K1/K2控制输出电压,在液晶屏上显示当前电压值。程序通过DAC0808芯片将数字信号转换为模拟信号,实现输出电压的控制。同时,程序通过ADC0809芯片读取输出电压值,通过液晶屏显示当前电压值。程序中还定义了一个延时过程,用于控制按键响应的时间间隔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电动汽车控制与安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值