数字调节器设计智能仪表综合训练设计说明书


    摘
    数字调节器数字技术微电子技术实现闭环控制调节器称数字调节仪表接受生产程测量信号部数字电路微处理机作数字处理定调节规律产生输出数字信号模拟信号驱动执行器完成生产程闭环控制
    次智仪表课程设计目设计种数字PID调节器PID控制算法历史悠久生命力强种控制算法迄止通控制方法提供种反馈控制通积分作消稳态误差通微分作预测未设计PID数字调节器采 STC89C52RC单片机作控单元采ADC0832作AD转换器具数字滤波等功通PID算法实现调节功调节器设定值参数通四独立键设置采LED数字显示通AD420模块电路输出模拟信号

    关键词 数字调节器 PID控制算法LED显示AD转换器










    目 录
    摘 2
    第1章 前 言 5
    11调节器原理作 5
    12 PID控制算法简介 5
    121 模拟PID算法 5
    122 数字PID算法 6
    第2章 总体方案设计 7
    第3章 硬件选择电路设计 8
    31单片机选择 8
    32 系统设计 9
    321 时钟电路 9
    322 复位电路 9
    33 AD转换器ADC0832简介电路设计 10
    34 LED数码显示方式电路设计 11
    341 静态显示动态显示 11
    342 LED显示硬件接线图设计 11
    35 键电路设计 11
    36 DA转换电路设计 12
    361 AD420简介 12
    362 DA转换电路设计 13
    第4章 软件设计 14
    41调节器程序设计 14
    42输入输出模块程序设计 14
    421 输入模块程序设计 14
    422 输出模块程序设计 15
    43键程序设计 16
    44 PID程序设计 17
    45 LED程序设计 17
    第5章 软硬件调试 19
    51硬件调试 19
    52软件调试 19
    第6章 总结 20
    参考文献 21
    l 附录A 22
    l 附录B 23














    第1章 前 言
    11 调节器原理作
    调节器动控制系统中作——测量输入信号值PV定值SV进行较出偏差e然根预先设定控制规律偏差e进行运算相应控制值通输出口4~20mADC电流(1~5VDC电压)传输执行器实际调节器均具定数量输入端口输出端口外调节器般测量值输出值定值显示功极方便仪表调整系统监控操作
    12 PID控制算法简介
    121 模拟PID算法
    例积分微分控制规律(PID)输入输出关系列公式表示:
    (11)
    式见PID控制作输出分例积分微分三种控制作输出叠加输入偏差e幅值A阶跃信号时实际PID控制器输出特性图11示P1D控制器调整参数KCTITD适选取三参数数值获较控制质量
    式(1)进行拉氏变换PID控制规律传递函数:
    (12)
    图11 PID控制器输出特性 图12 PID控制规律Bode图
    PID控制规律综合例积分微分三种控制规律优点具较控制性应范围更广温度成分控制系统中更广泛应
    122 数字PID算法
    智调节器运数字PID模拟PID理想控制规律:
    (13)
    离散化数字PID理想控制规律:
    (14)
    增量型PID算法:根式难第(k1)采样周期控制量
    (15)
    式(14)式(15)相减第k采样时刻控制量增量
    (16) 式中例增益积分系数微分系数


    式(16)中应第k采样时刻阀门位置增量称式(16)增量型算式第k采样时刻实际控制量
    (17)
    编写程序方便式(16)改写
    (18)
    式中
    见利需 三历史数


    第2章 总体方案设计

    智调节器单片机程输入输出通道机接口电路通信接口电路等部分组成结构原理图图21示
    图21 智调节器整体设计方框图

    中单片机STC89C52RCCPU存储器(ROMEPROMRAM)定时计数器IO接口等组成智调节器核心实现仪表数运算处理组成部分间理程输入通道完成模拟信号采样转换形成计算机处理数字信号程输出通道计算机系列处理数字信号转换成模拟信号输出显示键盘属机接口部分键盘输入参数等控制信息LED显示测量信息定信息机接口部件般操作钮显示部件组成实现调节器员间种信息交流通信接口电路智调节器控制设备间数通信采串级传输方式





    第3章 硬件选择电路设计

    31单片机选择
    STC89C52RC美国Atmel公司生产低电压高性CMOS 8位单片机片含8KB反复檫写程序存储器12B机存取数存储器(RAM)器件采Atmel公司高密度非易失性存储技术生产兼容标准MCS51指令系统片配置通8位中央处理器(CPU)Flash存储单元功强STC89C52RC单片机灵活应种控制领域STC89C52RC单片机属STC89C51RC单片机增强型Intel公司80XC52引脚排列硬件组成工作特点指令系统等方面兼容脚图图31

    图31 STC89C52RC脚图

     ST89C52RC40 脚双列直插封装8 位通微处理器采工业标准C51核部功脚排布通89XC52 相会聚调整时功控制功包括会聚IC 部寄存器数RAM外部接口等功部件初始化会聚调整控制会聚测试图控制红外遥控信号IR接收解码板CPU通信等脚:XTAL1(19 脚)XTAL2(18 脚)振荡器输入输出端口外接12MHz 晶振RSTVpd(9 脚)复位输入端口外接电阻电容组成复位电路VCC(40 脚)VSS(20 脚)供电端口分接+5V电源正负端P0~P3 编程通IO 脚功途软件定义设计中P0 端口(32~39 脚)定义N1 功控制端口分N1相应功脚相连接13 脚定义IR输入端10 脚11脚定义I2C总线控制端口分连接N1SDAS(18脚)SCLS(19脚)端口12 脚27 脚28 脚定义握手信号功端口连接板CPU 相应功端前制式检测会聚调整状态进入控制功
    32 系统设计
    时钟电路复位电路单片机工作基电路单片机加两部分
    电路构成单片机系统单片机系统工作
    321 时钟电路
    STC89C52RC然部振荡电路形成时钟必须外部附加电路STC89C52RC单片机时钟产生方法两种部时钟方式外部时钟方式设计采部时钟方式利芯片部振荡电路XTAL1XTAL2引脚外接定时元件部振荡电路便产生激振荡设计采常部时钟方式外接晶体电容组成联谐振回路设计原理图32


    图32 STC89C52RC时钟产生电路

    322 复位电路
    复位电路通常采电动复位钮复位两种方式
    简单电动复位电路中电动复位通外部复位电路电容充电实现图33(a)电复位外时需键手动复位设计键手动复位键手动复位电方式脉方式两种中电复位通RST端电阻电源Vcc接通实现设计图33(b)

    (a) (b)
    图33 动复位电路

    33 AD转换器ADC0832简介电路设计
      ADC0832 美国国家半导体公司生产种8 位分辨率双通道AD转换芯片体积兼容性性价高深受单片机爱者企业欢迎目前已高普率
    ADC0832 8位分辨率AD转换芯片高分辨达256级适应般模拟量转换求部电源输入参考电压复芯片模拟电压输入0~5V间芯片转换时间仅32μS双数输出作数校验减少数误差转换速度快稳定性强独立芯片输入器件挂接处理器控制变更加方便通DI 数输入端轻易实现通道功选择原理分析设计器电路图图35

    图35 AD转换器硬件电路

    34 LED数码显示方式电路设计
    341 静态显示动态显示
    LED显示器工作方式两种:静态显示方式动态显示方式静态显示特点数码必须接8位锁存器锁存显示字形码送入次字形码显示字形直保持直送入新字形码止种方法优点占CPU时间少显示便监测控制缺点硬件电路较复杂成较高
    动态显示特点位数码段选线联起位选线控制位数码效样没必位数码配锁存器简化硬件电路选亮数码采动态扫描显示谓动态扫描显示轮流位数码送出字形码相应位选利发光余辉眼视觉暂留作感觉位数码时显示动态显示亮度静态显示差选择限流电阻时应略静态显示电路中

    342 LED显示硬件接线图设计
    分析静态显示需接口较选择动态显示原理图图36

    图36数码接线图

    35 键电路设计 
    常键矩阵键盘独立键键数量较时减少IO口占通常键排列成矩阵形式图37示矩阵式键盘中条水线垂直线交叉处直接连通通键加连接样端口(P1口)构成4*416键直接端口线键盘出倍线数越区越明显
    加条线构成20键键盘直接端口线出键(9键)见需键数较时采矩阵法做键盘合理 矩阵式结构键盘显然直接法复杂识复杂图中列线通电阻接正电源行线接单片机IO口作输出端列线接IO口作输入样键没时输入端高电代表键行线输出低电旦键输入线会拉低样通读入输入线状态知否键



    图37矩阵键盘接线图
    然场合键较少矩阵键盘显浪费独立键原理图简单适合键较少场合设计键较少济简单角度考虑采独立键设设计图图38

    图38 独立键

    36 DA转换电路设计
    361 AD420简介
    AD420具灵活串行数字接口(速率达33 Mbs)方便性价高抑制干扰力强非常适合高精度远程控制系统AD420单片机接口方式2种:3线制异步制单片机系统通AD420实现连续模拟量输出特点:
    l 宽泛电源电压范围12 V—32 V输出电压范围0V—25 V
    l 带3线模式SPIMicrowire接口采集连续模拟输入信号采异步模式时仅需少量信号线
    l 数输出引脚AD420器件连接成菊链型
    l 电初始化时输出值0 mA4 mAO V
    l 具异步清零引脚输出复位值(0mA4 mA0V)
    l BOOST引脚连接外部晶体吸收回路电流降低功耗
    l 需外接少量外部器件达较高精度

    362 DA转换电路设计
    原理分析电路设计图图39

    图39 DA转换电路










    第4章 软件设计

    41调节器程序设计
    设计务分析硬件求设计调节器程序流程图图41

    图41 程序流程图

    42 输入输出模块程序设计
    421 输入模块程序设计
    ADC0832未工作时CS输入端应高电时芯片禁进行AD转换时须先CS端置低电保持低电直转换完全结束时芯片开始转换工作时处理器芯片时钟输入端CLK输入时钟脉DODI端DI端输入通道功选择数信号第1时钟脉沉前DI端必须高电表示启始信号第23脉沉前DI端应输入2位数选择通道功2位数10时CH0进行单通道转换2位数11时CH1进行单通道转换2位数00时CH0作正输入端IN+CH1作负输入端IN进行输入2位数01时CH0作负输入端INCH1作正输入端IN+进行输入
    工作原理设计程序流程图图42

    图41 ADC0832程序流程图

    422 输出模块程序设计
    AD420输出级置放值低l V驱动值时信号会产生障输出端跳转限制达求前保持变较输出放反馈网络进行输出精度通开环增益保持稳定障检测输出变效前没输出误差3数字接口包括数输入CLOCKLATCH果户想质安全应电路具少流电隔离器数目AD420配置异步模式工作种模式LATCH通限流电阻连接Vcc实现数值通O1进行组合构造信息触发LATCH信号驱动程序流程图图42

    图43 AD420程序流程图

    43键程序设计
    键盘实际组键开关集合中键开关量输入装置键闭合否取决机械弹性开关通断状态反应电压呈现出高电低电高电表示断开低电表明键闭合通电状态(高低)检测便确定相应键否已键程序包括键值判断滤波防抖等程序流程图44

    图44 键程序流程图
    44 PID程序设计
    PID算法工业中广泛应算法形式前言已出通较设计采增量式算法位置式算法次输出整状态关计算式中偏差累加值容易产生较积累误差增量式需计算增量存计算误差精度足时控制量计算影响较流程图图45


    图45增量式PID流程图

    45 LED程序设计
    静态显示特点数码必须接8位锁存器锁存显示字形码送入次字形码显示字形直保持直送入新字形码止种方法优点占CPU时间少显示便监测控制缺点硬件电路较复杂成较高程序包括位码段码控制流程图图46


    图46 LED显示控制流程图










    第5章 软硬件调试
    进行方案证软硬件设计做出成品进行系统调试测试调试中产生问题加解决改进章介绍软硬件调试
    51硬件调试
    系统硬件调试排查PCB连接问题硬件调试中产生工艺性设计性两类错误缺陷调试方法:首先检查电路板元器件焊接情况虚焊漏焊者连焊然万表检查电源芯片IO口短路接着加芯片接通电源检查焊点电压否正常接芯片接通电源观测工作电流否
    52软件调试
    软件调试程序调试排查错误程序错误语法错误逻辑错误功错误系统软件调试KEIL软件进行程序调试编程器 软件调试中出现错误解决方法:
    1时会出现程序点错误没正常运行现象发现程序中指令书写规范导致例RET返回指令定正确格式书写两行指令间留空行
    2编程程中注意加注释分割线否程序长时容易变乱便查找更改
    3程序结构设计合理避免乱调现象样会程序更加清晰化







    第6章 总结
    通次PID数字控制器设计控制系统总体方案设计硬件设计软件设计编程调试整体详解数字PID控制技术更加深刻认识
    整设计程中硬件部分专业老师提供处理器选芯片STC89C52RCAD转换部分选芯片ADC0832AD接收模拟信号电位器05V模拟量转换成0255数字量PID算法采增量型算式数字形式差分方程代连续系统微分方程LED显示模块四独立键实现调节器参数设定功
    次设计组单位进行五组负责部分组长带领讨子程序模块子程序调方式组合起软件编程调试终成功程序调试程中深刻认识团队合作精神重性团队合作力量穷融入集体身价值化进推动社会更更快发展











    参考文献
    [1] 李忠虎程参数检测技术仪表[M]北京:中国计量出版社2009
    [2] 李文涛程控制[M]北京:科学出版社 2012
    [3] 潘新民微型计算机控制技术北京:电子工业出版社 1988年
    03月第二版
    [4] 王凌强基数字PID控制器仿真[J]科技信息(学术版) 200604
    [5] 王燕芳潘新民微型计算机控制技术北京:电子工业出版社
    20061
    [6] 姚永STC89C51RC+系列单片机器件手册宏晶科技2007年11月
    [7] 董永祥智仪器设计发展山西电子技术2006年第1期
    [8] 郝长胜C语言程序设计蒙古学出版社2005年12月 第版
    [9] 赵茂泰智仪器原理应北京:电子工业出版社2004年7 月
    [10] 潘永雄新编单片机原理应西安电子科技学出版社2007年02月 第二版
    [12] 雷力鸣单片机数字调节器中应西南动化研究兵工动化1997年 第3期
    [13] 蔡杏山Protel 99 SE 电路设计北京:民邮电出版社2007年07月
    [14] 俞云奎编程序调节器控制器原理应1997年05月










    l 附录A

    l 附录B
    #include
    #include
    #include
    #define uchar unsigned char
    #define uint unsigned int
    #define N 12
    sbit LED_CLKP1^1 LED时钟线
    sbit LED_DATP1^0 LED数线
    sbit k1P1^4
    sbit k2P1^5
    sbit k3P1^6
    sbit k4P1^7
    sbit DATA P2^0
    sbit CLOCK P2^1
    sbit LATCH P2^2
    sbit ADCS P2^0 ADC0832 chip seclect
    sbit ADDI P3^7 ADC0832 data in
    sbit ADDO P3^7 ADC0832 data out
    sbit ADCLK P3^6 ADC0832 clock signal
    typedef unsigned char uint8
    typedef unsigned int uint16
    typedef unsigned long int uint32
    uchar code LED_FONT[22]{ 数字'1''2''3'七段码字库
    0xfc0x600xDA 0xF2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 09
    0xEE0x3E0x9C0x7A0x9E0x8E AbCdEF
    0x70 J 16
    0xCE P 17
    0x02 18
    0x00 null 19
    0x0C L 20
    0xBC G 21
    }
    uchar getdatahctiaobuf[8]{00000000}
    void InitTimer0(void) 初始化
    {
    TMOD 0x01
    TH0 0xDC 10ms
    TL0 0x00
    EA 1
    ET0 1
    TR0 1
    tiao0
    P10xff
    }
    typedef struct PIDValue
    {
    uint32 Ek_Uint32[3] 差值保存定反馈差值
    uint8 EkFlag_Uint8[3] 符号1应负数0应正数
    uint8 KP
    uint8 KI
    uint8 KD
    uint16 Uk 时刻控制电压
    uint16 RK 设定值
    uint16 CK 实际值
    }PIDValueStr
    PIDValueStr PID
    uint8 out 加热输出
    uint8 count 输出时间单位计数器
    *PIDUk+KP*[E(k)E(k1)]+KI*E(k)+KD*[E(k)2E(k1)+E(k2)](增量型PID算式)*
    void PIDOperation (void)
    {
    uint32 Temp[3] 中间时变量
    uint32 PostSum 正数
    uint32 NegSum 负数
    Temp[0] 0
    Temp[1] 0
    Temp[2] 0
    PostSum 0
    NegSum 0
    if( PIDRK > PIDCK ) 设定值实际值否?
    {
    if( PIDRK PIDCK >10 ) 偏差10否?
    {
    PIDUk 100 } 偏差10限幅值输出
    else
    {
    Temp[0] PIDRK PIDCK 偏差<10计算E(k)
    PIDEkFlag_Uint8[1]0 E(k)正数
    数值移位
    PIDEk_Uint32[2] PIDEk_Uint32[1]
    PIDEk_Uint32[1] PIDEk_Uint32[0]
    PIDEk_Uint32[0] Temp[0]
    ****************************************
    if( PIDEk_Uint32[0] >PIDEk_Uint32[1] ) E(k)>E(k1)否?
    {
    Temp[0]PIDEk_Uint32[0] PIDEk_Uint32[1] E(k)>E(k1)
    PIDEkFlag_Uint8[0]0 } E(k)E(k1)正数
    else
    {
    Temp[0]PIDEk_Uint32[0] PIDEk_Uint32[1] E(k) PIDEkFlag_Uint8[0]1 } E(k)E(k1)负数
    ****************************************
    Temp[2]PIDEk_Uint32[1]*2 2E(k1)
    if( (PIDEk_Uint32[0]+ PIDEk_Uint32[2])>Temp[2] ) E(k2)+E(k)>2E(k1)否?
    {
    Temp[2](PIDEk_Uint32[0]+ PIDEk_Uint32[2])Temp[2] E(k2)+E(k)>2E(k1)
    PIDEkFlag_Uint8[2]0 } E(k2)+E(k)2E(k1)正数
    else
    {
    Temp[2]Temp[2](PIDEk_Uint32[0]+ PIDEk_Uint32[2]) E(k2)+E(k)<2E(k1)
    PIDEkFlag_Uint8[2]1 } E(k2)+E(k)2E(k1)负数
    ****************************************
    Temp[0] (uint32)PIDKP * Temp[0] KP*[E(k)E(k1)]
    Temp[1] (uint32)PIDKI * PIDEk_Uint32[0] KI*E(k)
    Temp[2] (uint32)PIDKD * Temp[2] KD*[E(k2)+E(k)2E(k1)]

    *部分代码讲正数项叠加负数项叠加*
    **********KP*[E(k)E(k1)]**********
    if(PIDEkFlag_Uint8[0]0)
    PostSum + Temp[0] 正数
    else
    NegSum + Temp[0] 负数
    ********* KI*E(k)****************
    if(PIDEkFlag_Uint8[1]0)
    PostSum + Temp[1] 正数
    else
    空操作E(K)>0
    ****KD*[E(k2)+E(k)2E(k1)]****
    if(PIDEkFlag_Uint8[2]0)
    PostSum + Temp[2] 正数
    else
    NegSum + Temp[2] 负数
    ***************U(K)***************
    PostSum + (uint32)PIDUk

    if(PostSum > NegSum ) 否控制量正数
    { Temp[0] PostSum NegSum
    if( Temp[0] < 100 ) 限幅值计算值输出
    PIDUk (uint16)Temp[0]
    else
    PIDUk 100 否限幅值输出
    }
    else 控制量输出负数输出0(限幅值输出)
    PIDUk 0
    }
    }
    else
    { PIDUk 0 }
    }
    *****************LED显示函数*********************
    void display_char(char ch) 显示ch字符
    {
    char imask0x01huanLED_FONT[ch]
    for(i0i<8i++)
    {
    LED_CLK0
    LED_DAT(huan & mask)
    maskmask<<1
    LED_CLK1 升移位
    }
    }
    void display_clear() 清屏
    {
    char ij
    for(i0i<7i++)
    {
    for(j0j<7j++)
    {
    LED_CLK0
    LED_DAT0
    LED_CLK1
    }
    }
    }
    void Delay_1ms(uchar i)10ms延时
    {
    uchar xjk
    for(k0k for(j0j<10j++)
    for(x0x<148x++)
    }
    void xs()
    { uchar i
    for(i0i<8i++)
    display_char(buf[i])
    }
    ******************键处理函数****************
    void keyw()
    { Delay_1ms(1)
    if(k10)
    {tiao1
    k11
    if(tiao1)
    { hcPIDRK
    while(tiao1)
    { if(tiao1)break
    buf[1]21
    buf[2]0xd
    buf[0]buf[3]buf[4]19
    buf[7]hc10
    buf[6](hc10)10
    buf[5]hc100
    Delay_1ms(25)
    xs()
    if(k20)
    { Delay_1ms(1)
    if(k20){
    hc++
    if(hc110)hc0
    k21}
    }
    if(k30)
    { Delay_1ms(1)
    if(k30){
    if(hc0)hc110
    hc
    k31}
    }
    if(k10)
    { Delay_1ms(1)
    if(k10) {tiao2PIDRKhc k11 }
    }
    if(k40)
    { Delay_1ms(1)
    if(k40){ PIDRKhcbreak } }
    }
    }
    if(tiao2)
    { hcPIDKP
    while(tiao2)
    { if(tiao2)break
    buf[1]19
    buf[2]17
    buf[0]buf[3]buf[4]19
    buf[7]hc10
    buf[6](hc10)10
    buf[5]hc100
    Delay_1ms(25)
    xs()
    if(k20)
    { Delay_1ms(1)
    if(k20){
    hc++
    k21}
    }
    if(k30)
    { Delay_1ms(1)
    if(k30){
    if(hc0)hc255
    hc
    k31}
    }
    if(k10)
    { Delay_1ms(1)
    if(k10) {tiao3PIDKPhc k11 }
    }
    if(k40)
    { Delay_1ms(1)
    if(k40) { PIDKPhcbreak } }
    }
    }
    if(tiao3)
    { hcPIDKI
    while(tiao3)
    { if(tiao3)break
    buf[1]19
    buf[2]20
    buf[0]buf[3]buf[4]19
    buf[7]hc10
    buf[6](hc10)10
    buf[5]hc100
    Delay_1ms(25)
    xs()
    if(k20)
    { Delay_1ms(1)
    if(k20){
    hc++
    k21}
    }
    if(k30)
    { Delay_1ms(1)
    if(k30){
    if(hc0)hc255
    hc
    k31}
    }
    if(k10)
    { Delay_1ms(1)
    if(k10) {tiao4PIDKIhc k11 }
    }
    if(k40)
    { Delay_1ms(1)
    if(k40) { PIDKIhcbreak } }
    }
    }
    if(tiao4)
    { hcPIDKD
    while(tiao4)
    { if(tiao4)break
    buf[1]19
    buf[2]0XD
    buf[0]buf[3]buf[4]19
    buf[7]hc10
    buf[6](hc10)10
    buf[5]hc100
    Delay_1ms(25)
    xs()
    if(k20)
    { Delay_1ms(1)
    if(k20){
    hc++
    k21}
    }
    if(k30)
    { Delay_1ms(1)
    if(k30){
    if(hc0)hc255
    hc
    k31}
    }
    if(k10)
    { Delay_1ms(1)
    if(k10)
    {tiao5PIDKDhcDelay_1ms(25)k11}
    }
    if(k40)
    { Delay_1ms(1)
    if(k40){ PIDKDhcbreak } }
    }
    }
    }
    }
    ******************adc0832****************************
    unsigned int Adc0832(unsigned char channel)
    {
    uchar i0 j ndat0
    uint dat0
    if(channel0)channel2 通道选择
    if(channel1)channel3
    ADDI1
    _nop_()_nop_()
    ADCS0 拉低CS端
    _nop_()_nop_()
    ADCLK1 拉高CLK端
    _nop_()_nop_()
    ADCLK0 拉低CLK端形成降1
    _nop_()_nop_()
    ADCLK1 拉高CLK端
    ADDIchannel&0x1
    _nop_()_nop_()
    ADCLK0 拉低CLK端形成降2
    _nop_()_nop_()
    ADCLK1 拉高CLK端
    ADDI(channel>>1)&0x1
    _nop_()_nop_()
    ADCLK0 拉低CLK端形成降3
    ADDI1 控制命令结束
    _nop_()_nop_()
    dat0
    for(i0i<8i++)
    {
    dat|ADDO 收数
    ADCLK1
    _nop_()_nop_()
    ADCLK0 形成次时钟脉
    _nop_()_nop_()
    dat<<1
    if(i7)dat|ADDO
    }
    for(i0i<8i++)
    {
    j0
    jj|ADDO 收数
    ADCLK1
    _nop_()_nop_()
    ADCLK0 形成次时钟脉
    _nop_()_nop_()
    jj<<7
    ndatndat|j
    if(i<7)ndat>>1
    }
    ADCS1 拉低CS端
    ADCLK0 拉低CLK端
    ADDO1 拉高数端回初始状态
    dat<<8
    dat|ndat
    return(dat) 返回值
    }
    *************采样滤波**********排序采泡法***************8*
    char filter() 采样滤波
    {
    char count1ijtemp
    char value_buf[N]
    int sum0
    for (count10count1 {
    value_buf[count1] Adc0832(0)
    Delay_1ms(1)
    }

    for (j0j {
    for (i0i {
    if ( value_buf[i]>value_buf[i+1] )
    {
    temp value_buf[i] 实现排列
    value_buf[i] value_buf[i+1]
    value_buf[i+1] temp
    }
    }
    }
    for(count11count1 sum + value_buf[count1]

    return (char)(sum(N2))
    }
    ******************DA转换输出****************************************
    void send(unsigned int bye) 两锁存脉间发送16位时钟数
    {
    unsigned char i
    _nop_()_nop_()_nop_()
    LATCH0
    DATA0
    for(i0i<16i++)
    {
    CLOCK0
    _nop_()_nop_()_nop_()
    if(bye&0x8000)
    {
    DATA1
    }
    else
    {
    DATA0
    }
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    CLOCK1
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    byebye*2
    }
    LATCH1
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    _nop_()_nop_()_nop_()
    }
    void main()
    { int m
    uchar n
    InitTimer0()
    PIDKP1
    PIDKI0
    PIDKD0
    PIDRK18 设定值
    PIDCK16 实际值
    PIDOperation ()
    buf[0] 21
    buf[4]0xc
    buf[1]PIDRK100
    buf[2]PIDRK1010
    buf[3]PIDRK10
    buf[5] PIDUk100
    buf[6] PIDUk1010
    buf[7] PIDUk10
    xs()
    while(1)
    {
    nfilter() 51 *20
    m n*20 51
    getdatam
    Delay_1ms(50)

    PIDCKgetdata
    PIDOperation ()
    buf[0] 21
    buf[1]PIDRK100
    buf[2]PIDRK1010
    buf[3]PIDRK10
    buf[4]0xc
    buf[5] PIDCK100
    buf[6] PIDCK1010
    buf[7] PIDCK10
    send(PIDUk*655)
    xs()
    }
    }
    void Timer0Interrupt(void) interrupt 1
    {
    TL0 | 0x00
    TH0 0xDC
    count
    if(k10)keyw()
    }

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 8 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    PID数字调节器的设计(LCD显示)课程设计

    智能仪表综合训练设计说明书题 目:PID数字调节器的设计(LCD显示)学生姓名:学 号:专 业:测控技术与仪器班 级:2009指导教师:(教授)摘 要 目前,在过...

    2年前   
    331    0

    数字系统设计-秒表设计

     深 圳 大 学 实 验 报 告 课程名称: 数字系统设计 实...

    5年前   
    1233    0

    模拟PID调节器的设计课程设计

    模拟PID调节器的设计第一章 引言PID是Proportional-Integral-Derivational的缩写,分别指比例、积分、微分。在工业过程控制的发展史上,PID控制是历史上最悠...

    1年前   
    297    0

    EDA与数字系统课程设计

     课 程 设 计 任 务 书(2011 ~2012 第三学期)设 计 题 目: EDA与数字系统课程设计 学 院 名 称: 电气与自动化工程学院 专 业(班 级...

    3年前   
    560    0

    2023数字油画课程设计

     拓展性课程“智乐点课坊” 课程类型 课程名称: 数字油画 适用年级: 四、五年级 总 课 时: 16 ...

    1年前   
    436    1

    数字钟课程设计心得

    数字钟课程设计心得  一、设计目的   数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。...

    12年前   
    612    0

    设计说明书

                          目     第一章    设计总说明………………………01 第二章    设计指导思想及设计原则………02 第三章    总平面设计说明…...

    5年前   
    3151    0

    数字信号处理课程设计FIR数字滤波器设计及MATLAB的实现

    数 字 信 号 处 理课程设计题目: FIR数字滤波器设计及MATLAB的实现学院: 专业: 班级: 学号: 姓名: 指导教师: 摘要...

    7个月前   
    229    0

    数字电路课程设计报告数字电子钟逻辑电路设计

     数字电路课程设计报告设计课题: 数字电子钟逻辑电路设计 班 级:电子科学与技术 姓 名: 学 号: ...

    1年前   
    254    0

    防洪综合工程设计说明书

      黄草镇富滩村塘坵组防洪综合工程设计说明书 1、      概况 塘坵组为东江库区后靠移民组,全组61户201人。由于东江水库的形成,一些好的坪地被淹没,剩下的大多为坡度较陡的山地,因...

    11年前   
    10005    0

    基于单片机的数字温度计设计课程设计

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需...

    3年前   
    935    0

    数字信号的处理与滤波设计课程设计

    — — 装 订 线 — —数字信号的处理与滤波 摘要: 数字信号处理是利用计算机或专用处理设备,以数值计算的方法,对信号进行采集、滤波、增强、压缩、估值和识别等加工处理,...

    3年前   
    469    0

    智能数字万用表电子设计大赛设计报告

    电子设计大赛设计报告 课题名称: 智能数字万用表 指导教师:学生班级: 电子 学生姓名:学 号:学生院系: 管理技术学院计科系 20...

    1年前   
    277    0

    基于原理图的数字跑表设计课程设计

    XX大学设计报告课程名称: 基于FPGA的现代数字系统设计 设计名称: 基于原理图的数字跑表设计 姓 名: 学 号: ...

    11个月前   
    316    0

    数字电子钟电路设计电子课程设计报告

     (电子技术课程) 设计说明书 数字电子钟电路设计 起止日期: 2016 年 11月14日 至 2016年 11月 18 日 学...

    5年前   
    1498    0

    博物馆数字化展示设计中的互动创意设计

    博物馆数字化展示设计中的互动创意设计摘要博物馆是文物保护与文化研究的产物,是一个地区甚至国家文明发展程度的重要标志,随着信息技术的迅速发展,人类社会进入了一个数字时代,这对博物馆的发展是一次深...

    3年前   
    677    0

    数字式电容测量仪的设计毕业设计

    数字式电容测量仪的设计摘要本设计是基于555定时器,连接构成多谐振荡器以及单稳态触发器而测量电容的。单稳态触发器中所涉及的电容,即是被测量的电容。其脉冲输入信号是555定时器构成的多谐振荡器所...

    3年前   
    584    0

    基于51单片机数字温度计设计课程设计

    课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: ...

    3年前   
    976    0

    PARWANCPU状态机设计基于FPGA的数字系统设计

     基于FPGA的数字系统设计 大作业 学号: 姓名: 班级: 题目一:设计Pa...

    11个月前   
    302    0

    基于MATLAB的IIR数字滤波器的设计与仿真毕业设计

     本科毕业设计论文 题 目 基于MATLAB的IIR数字滤波器的设计与仿真 专业名称 电子信息工程 学生姓名 ...

    5年前   
    1526    0

    文档贡献者

    文***享

    贡献于2022-09-14

    下载需要 8 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档