《节点应用程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《节点应用程序设计ppt课件.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值第5章CAN节点应用程序设计资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值本章导读应用程序(eg.MCU=P89V51)CAN收发器eg.CTM8251CAN控制器eg.SJA1000CAN硬件驱动CAN应用层协议驱动功能电路Eg.LED/KEY功能电路驱动CAN节点结构第2章第3章第4章本 章本章以前面开发的CAN应用层协议驱动程序为基础,通过一个CAN节点应用程序设计的实例,来展示应用层协议
2、在CAN节点上的具体应用。资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值功能电路驱动蜂鸣器驱动电路按键输入电路LED灯显示电路蜂鸣器驱动按键驱动LED驱动资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值蜂鸣器驱动目的:驱动蜂鸣器发出声音。无源蜂鸣器:如何发声?方法:使无源蜂鸣器不断振荡发出声音。发声时间由发声频率决定T定时时间定时时间到,电平取反取反次数=发声时间发声频率程序实现程序实现:通过MCU的定时器中断来控制振荡频率。资金是运动的价值
3、,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值蜂鸣器驱动程序四个函数来实现:void buzzerInit(void)void buzzerQuiet(void)void ISR_Timer1(void)interrupt TF1_VECTORvoid buzzerSound(unsigned int uiFreq,unsigned int uiTime)/控制蜂鸣器不发声/Timer中断服务函数/Buzzer初始化/发出指定频率的声音资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分
4、资金就是原有资金的时间价值蜂鸣器驱动程序四个函数来实现:void buzzerQuiet(void)void ISR_Timer1(void)interrupt TF1_VECTORvoid buzzerInit(void)void buzzerSound(unsigned int uiFreq,unsigned int uiTime)/控制蜂鸣器不发声/Timer中断服务函数/Buzzer初始化/发出指定频率的声音void buzzerInit(void)BuzzCnt=0;TR1=0;/关闭定时器1TF1=0;/清除定时器1中断标志TMOD&=T0_MASK;/清除旧设置(#defineT
5、0_MASK0 x0F)TMOD|=0 x01;/设置新模式:16位定时模式BUZZ=1;/置高蜂鸣器控制引脚为高电平ET1=1;/使能定时器中断1EA=1;/设置中断允许/Buzzer初始化资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值蜂鸣器驱动程序四个函数来实现:void buzzerQuiet(void)TR1=0;/关闭定时器1TF1=0;/清除定时器中断标志BUZZ=1;/置高蜂鸣器的控制引脚电平/控制蜂鸣器不发声资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这
6、部分资金就是原有资金的时间价值蜂鸣器驱动程序四个函数来实现:void ISR_Timer1(void)interrupt TF1_VECTORif(BuzzCnt)/允许蜂鸣器发声TR1=0;/关闭定时器1TL1=TL1_Load;/设置定时器的计数值低8位TH1=TH1_Load;/设置定时器的计数值高8位TR1=1;/启动定时器BUZZ=!BUZZ;/蜂鸣器控制电平取反BuzzCnt-;/蜂鸣器响的次数减1elsebuzzerQuiet();/关闭定时器,在蜂鸣器震荡次数为0时/Timer中断服务函数资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值
7、的这部分资金就是原有资金的时间价值蜂鸣器驱动程序四个函数来实现:void buzzerSound(unsigned int uiFreq,unsigned int uiTime)if(uiFreq20000)uiFreq=20000;TL1_Load=LOW_BYTE(65536UL-CPUCLK/(uiFreq*2);TH1_Load=HIGH_BYTE(65536UL-CPUCLK/(uiFreq*2);BuzzCnt=uiFreq;BuzzCnt*=uiTime;BuzzCnt/=500;TL1=0 xF0;TH1=0 xFF;TR1=1;/发出指定频率的声音/限定频率范围在202000
8、0Hz之间20Hz20KHz次声次声 超声超声人耳能人耳能识别识别的范的范围围/计算Timer0装载值/根据发声时间设置取反次数/启动Timer发声时间由发声频率决定T T定时时间定时时间到,电平取反发声次数=发声时间发声频率取反次数=发声次数2=发声时间发声频率2=uiTime(ms)10-3uiFreq2发声频率发声时间资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值按键驱动目的:获取按键的状态。方法:读取与按键相连的MCU引脚的值。按键按下,P3.2=0;按键释放,P3.2=1资金是运动的价值,资金的价值是随时间
9、变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值按键驱动程序程序实现:#defineKEY1P3_2/定义按键和mcu的连接关系staticcharoldKey;voidkeyInit(void)oldKey=KEY1;/设置按键的初始检测电平charkeyGet(char*key)if(KEY1!=oldKey)/按键状态发生改变oldKey=KEY1;/设置oldKey的值if(KEY1)*key=0;/按键释放else*key=1;/按键按下return1;/按键有动作返回1return0;/按键没有动作/按键初始化/获取按键状态按键按下,P3.2
10、=0,*key设置为1按键释放,P3.2=1,*key设置为0资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值LED驱动目的:点亮或熄灭LED。方法:直接控制与LED相连的MCU引脚。P1.0=1,D1点亮P1.0=0,D1熄灭资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值LED驱动程序程序实现:#defineD1P1_0voidledInit(void)D1=0;/熄灭D1voidledSet(unsignedcharval)if(val)
11、D1=1;/点亮D1elseD1=0;/熄灭D1/LED初始化/LED灯控制函数,val是LED的控制参数资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值应用程序-设计思想目的:展示CAN应用层协议在CAN节点上的具体应用。方法:通过调用各个驱动程序来对不同外设进行控制完成各种需要的功能。初始化开始接收到CAN报文?处理CAN报文按键状态发生改变?发送CAN报文YNY流程图:字段描述ID.10ID.7发送CAN报文节点的地址(SrcAddr)ID.6ID.3接收CAN报文节点的地址(DstAddr)ID.2ID.0功能
12、码(FunCode),指明一帧数据的作用FunDataLen功能参数长度变量FunData功能参数数组,最多包含8字节表4.1自定义应用层协议说明N资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值应用程序-实现功能节点0节点1将两个CAN节点的地址设为互补按键按下发送CAN帧FunCode=0FunData=1接收CAN帧点亮LED发送CAN帧FunCode=1FunData=1接收CAN帧蜂鸣按键释放发送CAN帧FunCode=0FunData=0接收CAN帧熄灭LED发送CAN帧FunCode=1FunData=0接收CAN帧蜂鸣同样,节点2按键状态发生改变时,现象相同。功能码功能参数地址设为0地址设为1