接触电流测试仪设计毕业设计(编辑修改稿)内容摘要:
序中有一个计数器,每产生200次中断,有一个1秒计数。 按键扫描采用单个按键的扫描,有相应的按键处理子程序,程序中包括按键去抖动,按键的键后处理,去抖动采用延时去抖法。 显示子程序在主程序中被调用对时间进行实时显示。 ,主要完成系统的初始化,按键扫描,显示程序及其他子程序调用等功能。 void main ( void ){ INT8U i。 Init_devices()。 Initial()。 while(1) { WDR()。 /*外部按键响应*/ if( ExtKey_Pressed ) {ExtKey_Pressed = FALSE。 ExtKey_DealWith()。 } /*按键响应*/ if( Key_Pressed ) { Key_Pressed = FALSE。 if (AutoPress) { AutoPress。 Key_Valu = AutoKeyVal。 if (AutoPress){Key_Pressed = TRUE。 } }if (KeySound){Buzzer_ON(3)。 } Key_DealWith()。 } /*菜单显示*/ if ((!AutoPress)amp。 amp。 (State==STOP)){MenuDisp()。 } /*读取时间*/ if (tRead8563=40){tRead8563 = 0。 GetPCF8563()。 } // 200ms /*运行测试*/ if ( State == RUN ) { Control()。 // 输出控制 DispInit()。 StateInfo()。 TestingFace()。 // 显示测试界面 DispAll()。 BackLight()。 // 背光 } else if ( State == PAUSE ) { DispInit()。 StateInfo()。 TestingFace()。 // 显示测试界面 DispAll()。 BackLight()。 // 背光 } else { BitMove = 0。 CtrlPort = 0。 OutPort = 0。 CurChanel = 0。 Step = STEP_clr。 memset(StartTime,0xff,sizeof(StartTime))。 memset(StopTime ,0xff,sizeof(StopTime ))。 /*测试完成后,检验测试结果是否合格?*/ if (Pass==TRUE) { Buzzer_ON(1000)。 // 1S Message(600,5)。 // 合格 3S } else if (Pass==FALSE) { Buzzer_ON(2000)。 // 2S Message(600,6)。 // 不合格 3S } Pass = 0xff。 } /* 接收处理* if ( UART_State == TX_Make ){TX_Pack( UART_Cmd )。 } // 形成发送数据 else if ( UART_State == RX_Done ){RX_Unpack()。 } // 接收结束后处理接收数据并准备发送内容 else if ( UART_State == RX ) { if ( UART_Tx_Reqamp。 IO_Ctrl ) // 切换通道 { UART_Tx_Req amp。 = ~IO_Ctrl。 UART_Cmd = 39。 J39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 AD_Clear )// 询问接触电流采集值 { UART_Tx_Req amp。 = ~AD_Clear。 UART_Cmd = 39。 Z39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 AD_Quer ) // 询问接触电流采集值 { UART_Tx_Req amp。 = ~AD_Quer。 UART_Cmd = 39。 Q39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 CK_Vset ) // 设定程控电源输出电压 { UART_Tx_Req amp。 = ~CK_Vset。 UART_Cmd = 39。 v39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 CK_Vquer ) // 询问程控电源电压 { UART_Tx_Req amp。 = ~CK_Vquer。 UART_Cmd = 39。 V39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 CK_Aquer ) // 询问程控电源电流 { UART_Tx_Req amp。 = ~CK_Aquer。 UART_Cmd = 39。 A39。 UART_State = TX_Make。 } else if ( UART_Tx_Reqamp。 CK_Vout ) // 打开程控电源输出 { UART_Tx_Req amp。 = ~CK_Vout。 UART_Cmd = 39。 O39。 UART_State = TX_Make。 } } /*更改时钟*/ if ( Modify8563 ) { for ( i=0。 i8。 i++ ){SetClock[i]=GetClock[i]。 } Modify8563 = FALSE。 } /*写8563*/ if ( Write8563 ){SetPCF8563()。 Write8563 = FALSE。 } /*保存数据*/ if( SignSave ){Save()。 } }}一般的情况下是在上电的时候初始化,还有就是程序跑飞和出现异常时也要初始化,初始化的目的就是把所有用到的标志位、变量回到设定的初始值,以及引脚的分配,配置寄存器写入需要的值,像时钟的选择(内部、外部)一般在上电时就做好,以后不是特殊需要是不改动的,引脚功能的分配也是一上来就设置好,之后如果可以就不改动,如果经常性的改可能会引发异常。 接通电源之后进入初始化,初始化中有外部设备初始化和变量初始化,其中外部设备初始化包括IO口初始化,定时器TO,T1的初始化,TWI初始化。 变量初始化即初始化函数定义。 初始化中还包括初始化界面的显示开始时显示启动中即信息提示,此程序在整个过程中很重要,通过此程序可以判断测试进入哪个阶段。 在初始化部分中根据程序设计可以知道接通电源之后进行初始化的工作基本步骤可以通过接下来的Proteus仿真来验证此部分设计的正确性。 如果正确首先显示的是“启动中”,一秒钟之后会显示版本信息,版本信息显示时间为三秒钟。 一步一步按程序设置显示相应的信息。 对于一个由单片机为核心构成的系统而言。 输入通道是相当重要的。 可以看到几乎每一样基于单片机的产品都有人机交互的部分。 而此设计也不例外可以实现人机交互。 进行初始化之后就判断是否有外部按键响应或内部按键响应。 如有外部按键就进行测试,如有内部按键相应及进行设置其程序对应如下程序4和程序5。 由于篇幅限制按键处理程序在附件里。 按键功能的设计说明:此设计中包括上,下,左,右,确定和放弃六个键,接通电源之后可以通过按确定键进入系统设置,在系统设置的各种可选项中同样可以通过确定键进入下一级的设置,确认设置结果按确定键。 在同一级的菜单中可以通过上下键来选择。 同时通过确认键进入数值设置。 在进行数值设置时可以按左右来设置,左键是减,右键是加。 如果想退出当前状态可以选择放弃键。 程序4:判断是否有外部按键及处理程序如下 if( ExtKey_Pressed ) { ExtKey_Pressed = FALSE。 ExtKey_DealWith()。 }程序5:判断是否有内部按键响应程序如下 if( Key_Pressed ) { Key_Pressed = FALSE。 if (AutoPress) { AutoPress。 Key_Valu = AutoKeyVal。 if (AutoPress){Key_Pressed = TRUE。 } } if (KeySound){Buzzer_ON(3)。 } Key_DealWith()。 } 菜单的基本作用:提供人机对话,以便让使用者选择应用系统的各种功能,管理应用系统,控制各种功能模块的运行。 :启动中,设定电压,当前电压,工作电流,设备类型,端口设定,参数设定,系统设定,关闭系统,是第一级菜单,接下来是设备类型中第二级菜单,如设备类型有两个选择一类和二类。 其他设置依此类推。 菜单显示需要测量过程及结果的输入,通过调用汉字字模表进行显示,其对应程序如下。 INT8U *TestFace[3]={ 测试中,当前端口, 接触电流}。 INT8U *Power[3]={ 设定电压, 当前电压, 工作电流}。 启动中当前电压,工作电流第一级菜单显示第二级菜单 INT8U *MenuRoot[5]={ 一设备类型,二端口设定, 三参数设置,四系统设定, 五关闭系统}。 INT8U MenuRootID[5]={EUTtype,PortSet,Paramete,SystemSet,ShutOff}。 INT8U *MenuEutTpye[4] ={ 壹类, 贰类,接地,不接地}。 INT8U MenuPortID[9] ={Port0,Port1,Port2,Port3,Port4,Port5,Port6,Port7,Port8}。 INT8U *MenuParam[4] ={电源电压,测试时间, 间隔时间,外部采样}。 INT8U MenuParamID[4] ={Voltage,Testtime,Spacetime,Exterior}。 INT8U *MenuSystem[3] ={时间设定,背光设定,键音设定}。 INT8U MenuSystemID[3] ={Time,Backlight,Buzzer}。 INT8U *MenuBackLight[2] ={绿光, 红光 }。 INT8U MenuBackLightID[2] ={Green,Red}。 INT8U *Adjust[1]={校正因子}。 INT8U*Msg[7] = {启动中…,关机中…,已保存。 ,电源电压不稳,请稍等。 ,合格, 不合格。 } A/D转换说明Atmega32自带一个10位的逐次逼近型ADC。 ADC与一个8通道的模拟多路复用器连接,能对来自端口A 的8 路单端输入电压进行采样。 芯片还支持16 路差分电压输入组合。 两路差分输入(ADCADC0 与ADC。接触电流测试仪设计毕业设计(编辑修改稿)
相关推荐
设备的协同运行能力、系 统投资的长期效应以及系统功能不断扩展的需求,要求系统具有开放性和标准性。 ⑤ 可靠性和稳定性: 系统必须保持每天 24 小时工作,总系统故障不能影响子系统正常运行;子系统故障不能影响其他子系统正常运行,也不能影响总系统中除该系统之外的其他功能正常运行。 关键的系统部件应考虑容错和备份。 ⑥ 安全性和保密性:在系统的设计中,既要考虑信息资源的充分共享
大学土木建筑工程学院毕业设计 8 框架柱截面估算 中柱截面尺寸确定 (边柱,角柱考虑偏心的作用,相应在偏心方向上增加 50mm)。 截面尺寸按如下公式估算: AC≥.cfN 式中 AC—— 柱截面的有效面积; fc—— 混凝土抗压强度设计值,本 工程柱的混凝土为 C30, fc=; —— 轴压比,取 ; N—— 底层柱的轴力,按下式近似计算 N=( ~ ) VN VN —— 柱支承 的楼
.................................................................... 35 6 系统测试与维护 .....................................................................................................................
)bn nna x x x x x x dx h t t t t n hdt 由于 n 为偶数,不妨设 2nk , k 为正整数,则 0,2tk ,于是 200( 1 ) ( 2) ( ) ( 1 ) ( ) ( 1 ) ( 2 1 ) ( 2 )nkt t t t n hd t t t t k t k t k t k dt
的布阵方式不再局限于圆阵结构,收发天线阵分布更加灵活,可以为线阵、圆阵、面阵。 MIMO 雷达的搭载平台多种多样,可以是地基、机载或星载等平台。 MIMO雷达尚处 于理论研究和实验验证阶段,还没有一个严格统一的定义表述。 然而, MIMO雷达基本概念已被大家所认同,其形成可以认为是在 2020年和 2020年的一些学术会议上,会议设专题讨论 MIMO 雷达的相关理论问题。 根据会议文献中的
世界上最早使用 IC 卡的国家应属法国,其应用主要在交通管理、高速公路管理以及地铁上。 兰州理工大学毕业设计 (论文 ) 3 另外,韩国、新加坡、日本和美国等其他一些国家 IC卡应用也发展快速,并应用日常生活的各个领域。 作为金卡工程的代表, IC 卡技术无疑是当今世界最优秀的应用技术。 我国政府提出的以“金卡工程”为代表的信息化应用工程,加速了我国向全球经济一体化迈进的步伐。 IC