欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式软件设计及编程思想2-1...ppt

    • 资源ID:76352594       资源大小:584.50KB        全文页数:62页
    • 资源格式: PPT        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式软件设计及编程思想2-1...ppt

    单片机软件设计及编程思想李海全一个嵌入式设计系统一般包含一个嵌入式设计系统一般包含对外对外显示、指示灯、按键显示、指示灯、按键模拟量输入(高低压、交直流、多回路)模拟量输入(高低压、交直流、多回路)开关量输入开关量输入开关量输出开关量输出变送输出变送输出通信(通信(RS485DLT645ProfibusRS485DLT645Profibus)一个嵌入式设计系统一般包含一个嵌入式设计系统一般包含对内对内显示驱动显示驱动LED 595/IO/TM1629LED 595/IO/TM1629LCD 1621/1622LCD 1621/1622等等点阵、段式点阵、段式存储驱动存储驱动EEPROM/EEPROM/铁电铁电/FLASH/FLASH采样采样CPUCPU内部内部ADAD、ADAD芯片、测量芯片、测量SOCSOC控制控制+算法算法设计原则v1.可靠性v2.维护性(可读性)v3.移植性功能模块分类功能模块分类编程时分文件处理,一般一个驱动、一个功编程时分文件处理,一般一个驱动、一个功能模块一个文件能模块一个文件原则:原则:1.1.一个驱动芯片相应的操作封装到一个文件一个驱动芯片相应的操作封装到一个文件中中2.2.一个算法,详细描述计算公式,涉及优化一个算法,详细描述计算公式,涉及优化后的公式,标明原始和推导公式,做一个文件后的公式,标明原始和推导公式,做一个文件3.3.文件不适合过多,文件名应一目了然,根文件不适合过多,文件名应一目了然,根据文件名知其内容据文件名知其内容设计分类文件结构v遵循一模块一文件格式v注释 特别是设计更改需注明 更改日期、更改人、更改记录(头、行)文件头加注释说明功能文件结构程序版式(易读性)v以布局清晰为原则v不同函数体v不同功能(同一函数中、定义变量)v缩进缩进(不要使用空格、使用TAB(4格)程序版式(易读性)v推荐写法vif(condition)vv/program codevvelsevv/program codevv不推荐写法vif(condition)v/program codevvelse v/program codev v少用if(width 15)keyDownDLy=0;KEY_DATA=KEY_OLD;SAM+;elseif(keyDownDLy99)keyDownDLy=0;KEY_DATA=KEY_OLD;SAM+;else KEY_OLD=keypress;SAM=0;keypress=9;菜单设计菜单层数菜单设计菜单层数不得超过4 层(原则上采用4 层结构需要有4 行显示),宜采用3 层结构,不可采用一层(一层但多排显示)翻到底结构。第一层为系统(SYS)、输入(In)、通信(bUS)、报警(do)、变送(tr)、版本(Ver)等设置;第二层为第1 层下的子类细分,以报警为例,第2层可以是报警阈值、死区、延时、报警功能选择等;第三层为第2 层显示的具体数据。注:选择太多时可选择数字加字母组合到方式,例:报警信号选择0.UA 1.UB等菜单设计方法:1。函数指针,网上例程很多2。状态机菜单设计switch(Setup_Data)case 0:if(KEY_DATA=KEY_Menu)Setup_Data=1;DS_SETUP(0);break;else if(KEY_DATA=KEY_Left)Display_Page=Get_Display_Page(Display_Page,0);else if(KEY_DATA=KEY_Right)Display_Page=Get_Display_Page(Display_Page,1);else if(KEY_DATA=KEY_Enter)Display_Page=Get_Display_Page(Display_Page,2);elsebreak;Display_All_Page();return;菜单设计switch(Setup_Data)case 1:if(KEY_DATA=KEY_Menu)Setup_Data=0;Display_All_Page();else if(KEY_DATA=KEY_Enter)Setup_Data=2;tmp_PASSWORD=9999;DS_INT_DATA(2,0,tmp_PASSWORD);break;菜单设计switch(Setup_Data)case 2:if(KEY_DATA=KEY_Menu)Setup_Data=1;DS_SETUP(0);/PASSelse if(KEY_DATA=KEY_Enter)if(tmp_PASSWORD=PASSWORD.UWD|tmp_PASSWORD=8)Setup_Data=9;DS_SETUP(2);m1Keytmp=0;tmp_PASSWORD=PASSWORD.UWD;tmp_PT=PT.UWD;tmp_CT=CT.UWD;elsetmp_PASSWORD=Data_4IWD_Key_Do(tmp_PASSWORD,1,9999);DS_INT_DATA(2,0,tmp_PASSWORD);break;菜单设计switch(Setup_Data)case Setup_DO1:case Setup_DO2:case Setup_DO3:case Setup_DO4:if(KEY_DATA=KEY_Menu)Setup_Data=9;DS_SETUP(2+m1Keytmp);else if(KEY_DATA=KEY_Enter)cnt=Setup_Data-Setup_DO1;Setup_Data=cnt*SetupD_NN;Setup_Data+=SetupD_DO1+m2Keytmp;if(m2Keytmp=0)DS_SET_DAT(60+tmp_DOSelcnt);else if(m2Keytmp=1)DS_INT_DATA(2,0,tmp_DODlycnt);elseif(m2Keytmp=2)DS_INT_DATA(2,0,tmp_DOBandcnt);DsKeyDOSetPoint(tmp_DOSelcnt);else if(m2Keytmp=3)DS_INT_DATA(2,0,tmp_DOHDatcnt);DsKeyDOSetPoint(tmp_DOSelcnt);else if(m2Keytmp=4)DS_INT_DATA(2,0,tmp_DOLDatcnt);DsKeyDOSetPoint(tmp_DOSelcnt);elseDS_SET_DAT(50+tmp_DOZerocnt);elsem2Keytmp=Data_4IWD_Key_Do(m2Keytmp,0,5);DS_LINE(40+m2Keytmp);break;显示小数点菜单设计switch(Setup_Data)case SetupD_DO1:case SetupD_DO2:case SetupD_DO3:case SetupD_DO4:cnt=Setup_Data-SetupD_DO1;cnt/=SetupD_NN;tmp_DOSelcnt=Data_4IWD_Key_Do(tmp_DOSelcnt,0,31);DS_SET_DAT(60+tmp_DOSelcnt);break;case SetupD_DO1+1:case SetupD_DO2+1:case SetupD_DO3+1:case SetupD_DO4+1:cnt=Setup_Data-SetupD_DO1;cnt/=SetupD_NN;tmp_DODlycnt=Data_4IWD_Key_Do(tmp_DODlycnt,0,9999);DS_INT_DATA(2,0,tmp_DODlycnt);break;存储设计按操作方式IIC(FM24C04)SPI(X5045)地址数据总线总线(FLASH)中断中和主程序中不能均控制外设,尤其注意定时器和通信的处理存储设计按存储介质 我司常用的EEPROM铁电(存储电能)不推荐设计时使用芯片内部FLASH做存储存储设计IIC 外部有上拉电阻,需考虑CPU的IO口属性开漏输入输出普通IO做普通IO时,在时序不对时易产生大电流锁死CPU,程序应和常规不一样存储设计一存储设计二存储设计三注意事项:1.上电后,CPU开始运行后,不能立即读写外设2.一般延时3秒后操作,此时电源稳定3.一般上电操作 灭-显示版本-全亮-(读数据)-正常运行4.上电后推荐不进行写操作5.推荐存储数据分区间校验,可以做累加和,如设置数据一组、校准数据一组、电能数据一组等6.EEPROM上电默认一般为FFFF,铁电上电一般默认为07.有条件做双备份DI读取注意,设计时最好IO默认上拉(可以外部),考虑未安装时设计为断开状态,不能为不确定状态1.常开常闭点IO状态要么断开、要么闭合中断中读取,延时消抖2.有源湿节点无信号时才完全断开,有信号时时断时续DI读取1.常开常闭点if(READ2_DI1()if(DIDLY_On0DI_Read_TotalCnt)DIDLY_On0+;elseDI_DO_Status.DIDO.DI1=0;DIDLY_Of0=0;elseif(DIDLY_Of0800)if(DI_ON_DLY0400)Meas.T.DIStatus.Bits.Bit0=1;else Meas.T.DIStatus.Bits.Bit0=0;DI_OFF_DLY0=0;DI_ON_DLY0=0;DI读取3.注意事项通信和DI和DO排在一起时操作DO时,DI不应被更改MODBUS协议需要做02命令DO设置1.总线控制电平方式脉冲方式2.报警控制取各信号输入延时死区,不动作带高报警、低报警为零时是否报警DO设置1.电平方式中断中操作IOif(DI_DO_Status.DIDO.DO1)RELAY_SET_TDO1();elseRELAY_CLR_TDO1();2.脉冲方式毫秒级需要要中断中做,秒级主程序中做即可DO动作后,判断延时到了修改相应变量皆可 DI_DO_Status.DIDO.DO1通信v通信编程需采用收数据帧方式处理,不同波特率延时不同,收帧最短帧间隔时间应大于1.5个字符时间v以9600波特率为例,如果接收的2个字符间隔时间超过1.5毫秒则认为是2帧。发送数据帧时应有延时,从收到帧结束到发送帧开始最短间隔应大于3.5个字符时间。波特率超过9600可以以9600的时间为准。通信通信v设计时应按帧接收v例:可用1毫秒定时器做,检测是否有数据接收structunsigned short int INNUM,START;unsigned char R_ALL,S_Dly,S_Flag,R_Dly,R_Flag;unsigned char inbuff100;unsigned char outbuff270;unsigned short int OUTNUM;unsigned char*sbuff;UartUD1;通信v设计时应按帧接收v例:可用1毫秒定时器做,检测是否有数据接收void USART1_SendRec_Dly(void)if(UartUD1.S_Flag)if(UartUD1.S_Dly=0)UartUD1.S_Flag=0;USART_ITConfig(USART1,USART_IT_TXE,ENABLE);USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);if(UartUD1.OUTNUM!=0)UartUD1.OUTNUM-;USART_SendData(USART1,*UartUD1.sbuff);UartUD1.sbuff+;elseUartUD1.S_Dly-;else if(UartUD1.OUTNUM=0)USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);。通信v设计时应按帧接收v例:可用1毫秒定时器做,检测是否有数据接收void USART1_SendRec_Dly(void)。switch(Comm_Baud)case 3:if(UartUD1.R_Dly=4)UartUD1.R_Flag=1;if(UartUD1.START2)UartUD1.R_ALL=1;else UartUD1.R_Dly+;UartUD1.R_Flag=0;break;case 4:if(UartUD1.R_Dly=7)UartUD1.R_Flag=1;if(UartUD1.START2)UartUD1.R_ALL=1;else UartUD1.R_Dly+;UartUD1.R_Flag=0;break;case 5:if(UartUD1.R_Dly=14)UartUD1.R_Flag=1;if(UartUD1.START2)UartUD1.R_ALL=1;else UartUD1.R_Dly+;UartUD1.R_Flag=0;break;default:if(UartUD1.R_Dly=2)UartUD1.R_Flag=1;if(UartUD1.START2)UartUD1.R_ALL=1;else UartUD1.R_Dly+;UartUD1.R_Flag=0;break;通信v发送时设置延时v例:void USART1_Send_Ready(void)switch(Comm_Baud)case 5:UartUD1.S_Dly=19;break;case 4:UartUD1.S_Dly=8;break;case 3:UartUD1.S_Dly=4;break;default:UartUD1.S_Dly=1;break;UartUD1.S_Flag=1;UartUD1.INNUM=0;UartUD1.START=0;UartUD1.R_ALL=0;UartUD1.sbuff=UartUD1.outbuff;通信MODBUS通信v按GBZ19582.1-2004标准执行,以下需特别注意v地址范围1-247,波特率推荐1200-38400,奇偶校验位v 03H 命令读功能默认最少允许用户从地址0开始读125个数据,如只用到20个地址,其他地址宜默认填0。地址125以上超过设定的地址如果未默认为0,则需返回异常码,不推荐无通信。v10H 命令写功能写寄存器时对数据需要有范围判断,如超过范围需返回异常码,如设备地址范围为1-247,写248应为超范围,返回异常码,不存储。写多个寄存器时,如其中一个地址的数据超范围需认定整个命令帧无效,同时需给出异常码,禁止给其他符合范围的地址进行存储数据。已经遇到多个客户需要、645协议需要MODBUS通信vDI 通信读取v除设计任务书明确指定部分命令不做外(需返回异常码),带DI功能需02H和03H命令均可读开关量输入状态,未安装或选配功能的开关量输入对应的通信和显示应显示为0,断开状态。超过总个数可回复异常码(推荐保留一定的开关量数目)。v例如:仪表只有5个开关量输入,设计时可默认保留为8个,02H命令读第9个开关量输入应返回异常码。MODBUS通信vD0 通信控制v除设计任务书明确指定部分命令不做外(需返回异常码),带DO功能需01H、03H命令均可读,05H、10H命令均可写。未安装或选配功能的DO对应的通信和显示应显示为0,断开状态。超过总个数可回复异常码(可保留一定的开关量数目)。写操作时应注意,如果DO被设置为报警功能时,使用05命令操作DO需返回异常码,且DO不应变位,使用10H命令操作DO只能非报警功能的DO允许变位,设置为报警功能的DO不应变位,全为报警功能宜回复异常码。645通信vDLT-645 规约分97和07两个版本,编写时应按标准协议执行,以下需特别注意。前导字节在协议中规定了在发送数据帧时有时会先发送1-4个字节FEH,东软默认为FCH,因此程序设计时需考虑前导符,宜设计F8H以上均可作前导符一次量二次量带PC、CT变比的仪表,宜传输二次量已保证和标准协议的一致性,注意小数点、单位和符号。数据块应支持数据块和单个数据均可读取,例可同时读取三相电压,也可分别读取每相电压。变送输出1.DA输出2-3光耦隔离外加DA控制芯片2.PWM输出1光耦隔离外加RC电路根据公司目前硬件,宜采用100HZ。设计时软件分辨率不得小于千分之一,公司目前硬件有点非线性,宜作分段补偿或非线性补偿信号测量1.宜采用真有效值方式测量,扫描频率宜以50Hz的信号做设计,例测量某直流电平反映时间1秒,可以以3.2K的频率采集,采集1600个点后做运算2.有参考抬高,宜将参考接入AD通道,采样参考,扣除参考(N次累加后点均值)和校准的偏移后再做有效值

    注意事项

    本文(嵌入式软件设计及编程思想2-1...ppt)为本站会员(得****1)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开