基于ARM的嵌入式温度控制系统设计


    

    毕业设计说明书(文)


    作 者: 学 号:
    系 部: 通信工程学院
    专 业: 通信工程(计算机通信)
    题 目:基ARM嵌入式温度控制系统设计


    指导者: 副教授


    评阅者:



    2014 年 X 月






    温度测量控制工业生产中广泛应尤石油化工电力冶金等工业领域中温度测量监控非常重环节温度参数工业控制中项重指标
    文研究基ARM7架构嵌入式系统温度控制应基ARM7 核 LPC2124 DS1820采集温度信号 通RWB 温度变送器 AD 转换获实际温度值 时通 LCD 实时显示 温度控制系统应热电仪 实际应表明 系统稳定 满足热电仪温度控制求

    关键词:ARMProteus嵌入式系统温度控制系统








    Abstract


    Measurement and control of temperature is widely used in industrial production especially in the petroleum chemical electric power metallurgy and other industrial fields measurement and monitoring of the temperature is a very important link the temperature parameter is an important index in industrial control
    This paper mainly studies the ARM7 based embedded system for the application of temperature control based on ARM7 which based on the LPC2124 kernel the DS1820 collecting temperature signal to obtain the actual temperature value through the RWB temperature transmitter and AD conversion at the same time through the LCD real time display This paper introduces the principle the system implementation process gives some application circuits This temperature control system used in the power system the practical application shows that the system is stable and reliable meet the thermoelectric instrument temperature control requirements

    Key words: ARMProteusEmbedded systemTemperature control system


    目录
    第章 绪 1
    11 引言 1
    12 选题背景意义 1
    13 研究现状 2
    14 文研究容 3
    15 章节安排 3
    第二章 开发工具介绍 4
    21 Proteus功 4
    211 Proteus功简述 4
    212 资源丰富 5
    213电路仿真 5
    22 ADS12 6
    221 ADS种类 6
    222 软件组成 7
    第三章 软硬件介绍 8
    31 ARM 8
    311 ARM简介 8
    312 ARM7 8
    32LPC2124处理器 9
    321LPC2124简介 9
    322 特性 9
    323 结构 10
    324引脚描述 11
    33硬件系统整体结构 11
    331硬件系统设计原 11
    332系统硬件整体结构 12
    333 基硬件组成 12
    第四章 软件设计 17
    41系统软件整体结构 17
    421测控系统 18
    422显示数字功 19
    423 AD转换数采集程序功实现 21
    第五章 总结展 25
    51 全文总结 25
    52续工作展 25
    致谢 27
    参考文献 28
    附录 29

    第章 绪
    11 引言
    嵌入式系统年广泛应种工业领域线通信领域智仪表消费电子等领域离开微电子技术迅猛发展种嵌入式应计算机硬件软件相结合手段完成指定务功嵌入式系统系统分分系统级电路板级设备级系统级指种工业控计算机板级指CPU板OEM(原始设备制造商)产品常见设备单片微机嵌入式应越越广泛半导体厂商致力研发嵌入式微处理器出现许支撑嵌入式应嵌入式操作系统般某领域着特殊求嵌入式系统必须做出相应调整仅求产品体积够够实时掌握现场情况系统工作环境中出色完成务求产品具令满意成效益嵌入式系统发展选择特定应嵌入式处理器嵌入式操作系统该匹配十分重
    温度控制系统特点程控制 控制系统温度控制系统独特特性该系统机械机电象微分方程求解线性定长参数动态问题种情况样手段解决温度程中问题会较结果场容易产生较误差热传送形式 具备直观非线性时变性分布性时间滞特性果分析方法建模结果通常非常复杂模型进行简化中失重素 模型象难致温度系统建模 通常实证模型理分析实证研究文温度控制系统进行研究阐述优化PID控制算法利微处理器LPC2124具ARM7核通传感器DS1820温度信号采集整定实现实时控制系统效参数准确控制需温度系统电加热器控制器温度传感器变换器三部分组成形成闭环控制回路整定实现实时控制系统效参数准确控制需温度
    12 选题背景意义
    年生产生活中种应出现增加微电子技术嵌入式技术需时促进动控制理断发展尤工业控制象特定工业控制器测量控制系统设计进入新领域
    温度测量控制具重意义尤工业生产中石油化工冶金电力行业样重工业领域热处理炉熔融金属坩埚炉种反应器工业中非常普遍许行业需量加热装置温度关温度控制中成非常敏感参数类型目方式加热方法样石油提炼气体汽油发电厂发电方式等等控制系统断变化基属非实时性
    温度种熔炼生产中非常常见属重控制素关温度测量控制技术开发具备巨实际利价值应前景尤许工业场合中产品质量设备运行安全性济性直接受温度影响例电厂锅炉蒸汽温度进行控制整程需严格控制测量通常热器10℃低20℃环境中年限会减少严重影设备安全生产员造成非常潜危害太低热蒸汽温度会降低设备运转效率汽轮机级蒸汽湿度增加会造成汽轮机叶片磨损般情况汽温降低10℃循环热效率会降低约05%
    13 研究现状
    助越越先进互联网技术通年发展嵌入式系统迎第二次革新时代初低端应现种高端低端应时流行求较低嵌入式系统停发展年32位MCU出现新兴产品
    目前电流控制方案基传统PLC单片机控制满足数户需PLC数情况简单工程少重复工程缺点够灵活占空间代价较高想增加功需较额外组件单片机出现型设备控制中特控制专业电子设备优点花费少耗低运行速度快缺点诸程序初时装入未户修改外围设备控制力抗干扰力较低适应信息产业发展现代化发展新技术创新产业化文采32位ARM7嵌入式LPC2124 ATMEL微控制器实现温度控制具良扩展性性高精度高测量务实时调度控制响应速度快体积等优良特性实际应中已成户首选
    14 文研究容
    该文涉理基础嵌入式ARM温度控制系统硬件接口功C语言函数序包括方面:
    方面ARM7理基础系统组成分类应领域研究现状进行综述分析研究难点探讨学遇困难接着设计中ARM7接口功作介绍余接口适增加系统功设计更加完善
    方面设计完全proteus软件中进行仿真Proteus进行详介绍程序编辑编译ADS12ADS12种类软件组成作简单介绍
    全文成果加总结讨添加液晶显示屏系统具良机交互界面必进步研究展
    15 章节安排
    首先介绍课题研究背景实际生产生活意义第章总体介绍设计容第二章介绍ARM结构描述Proteus软件应介绍ADS12第三章专门分析硬件设计需注意问题选择什处理器温度传感器第四章阐述软件设计功实现应段程序代码第五章出综合测试结果发现问题进行讨提出解决办法出结课题未发展做出合理展

    第二章 开发工具介绍
    21 Proteus功
    Proteus软件英国实验室中心研发EDA软件工具(广州风标电子技术限公司代理该软件中国权)应丰富拥样软件功够单片机进行仿真模拟外接模块单片机教学试验中已成首选软件图21示
    图21 Proteus软件图
    211 Proteus功简述
    Proteus软件具备常EDA(:MULTISIM)功功:
    1.原理布图
    2.PCB动工布线
    3.SPICE电路仿真
    革命性特点
    1.互动电路仿真
    机存储寄存器读存储器键盘引擎LEDLCD模数转换数模转化SPI元件IIC元件模块 户实时采
    2.仿真处理器外围电路
    仿真流芯片51系列AVR单片机PIARM芯片等[1]直接基虚拟样机原理图设计加显示输出运行输入输出影响
    212 资源丰富
    1.Proteus仿真组件提供资源:数字模拟仿真ACDC成千万成分30元件库
    2.Proteus仿真组件包含许显示模块:示波器逻辑分析仪虚拟终端SPI调试器I2C调试器信号发生器模式发生器交直流电压表交直流电流表理相仪器电路中意调
    3.生产生活已应起Proteus格外增加显示图功够线路信号改变予实时显示示波器具功Proteus功更[1]仿真模块设置合格参数指标输入阻抗输出阻抗非常低量减少仪器质量测量结果影响
    4.Proteus具更加全面测试信号测试电路测试信号包含模拟数字信号
    213电路仿真
    PROTEUS搭建模型完成导入ADS12编辑编译成功目标程序:*HEX够PROTEUS中实物完全相运行效果
    PROTEUS 种先进单片机课堂教学助理
    PROTEUS够模拟单片机功更具形象化模拟单片机做实例前者相程度物理演示实验效果者效果难通实物演示实验达
    优点组件线路等原始单片机实验硬件兼容课程设计毕业设计完成学生理转化实践重环节成功业前提种种类繁组件般实验室完全拥PROTEUS拥元器件模块更具目方便修改电路设计着科技发展计算机仿真技术已成许设计部门重前期设计手段够灵活设计模块设计程中时查结果够设计时间缩短成化减少降低工程制造风险相信PROTEUS单片机开发应中会越越应
    目前新版Proteus80增加ARM cortex处理器710版中增加DSP系列(TMS320)
    22 ADS12

    221 ADS种类
    ADS包括三种调试器:
    1AXD(扩展调试器):ARM调试器
    2armsd(ARM符号调试器):ARM 符号调试器
    3ARM调试工具中常操作系统WindowsUnix版兼容ADWADU(Application Debugger WindowsUnix)

    222 软件组成
    1编译器:ADS具备种编译器处理ARMThumb指令
    Armcc属ARM C编译器
    Tcc属Thumb C编译器
    Armcpp属ARM C++编译器
    Tcpp属ThumbC++编译器
    Armasm属ARMThumb汇编器
    2链接器:armlinkARM链接器该命令够意数量目标文件进行编译意数量数库文件链接关系然执行文件众目标文件指目标文件局部[3]
    3符号调试器:armsdARMThumb符号调试器4fromELF:需输出文件转换特定格式时原始格式文件转换成相应格式支持文件包含Motorola 32位S格式映文件bin格式映文件Verilog十六进制文件Intel 32位格式映文件
    5armar:armar函数生成器存ARM库中收集系列ELF格式目标文件库函数形式户库传递方式链接器代ELF文件
    6CodeWarrior:CodeWarrior集成开发环境(IDE)简单图形户界面元化营发展项目提供巨方便户开发程序代码时
    7调试器:ADS中含3调试器:包含AXDARM独扩展调试器第二armsdARM符号调试器第三旧版操作系统ARM调试工具兼容
    8CC++库:ADS包含关ANSI C库函数C++库函数够编译CC++代码户添加C库应程序中部分目标相关功通代码实现


    第三章 软硬件介绍
    31 ARM
    311 ARM简介
    ARM知识产权(IP)供应商显著特点芯片制造销售公司仅仅转设计方案ARM公司利种双赢伙伴关系迅速成全球性RIRC微处理器标准缔造者种方法者带极利益原者熟悉种ARM核节开发工具原理相公司研发ARM核芯片
    前世界100家公司ARM公司达成商技术许协议中特尔IBMLGNECSONYNXPNS业企业开发软件系统合伙包括Microsoft升阳MRI等系列知名公司
    ARM架构处理器ARM公司类产品成低已成功商具性价高罕见高代码密度良实时中断响应低功耗芯片面积成首选嵌入式系统[4]ARM架构越越移动电话数字终端MP3MP4形态异娱乐电子产品2004年12亿片ARM处理器ARM公司合作伙伴生产出应种生活生产中
    312 ARM7
    ARM公司1995年设计研发首ARM7TDMI处理器核现世界广泛款核ARM7系列种类繁包括ARM7TDMI型号ARM7TDMIS型号拥高速缓存处理器宏单元ARM720T扩充JAZELLEARM7EJS该类型处理器集成Thumb 16位简易指令集基Embedded ICE JTAG软件调试方式许应SoC设计中显示出优越特性时ARM720T高速缓存处理宏单元进行强化仅增加8KB缓存读缓设置具高性存理处理器支持LinuxWindows CE等操作系统
    32LPC2124处理器
    321LPC2124简介
    LPC2124微控制器建立够实时仿真踪1632位ARM7TDMIS CPU高速片Flash存储器包含0KB128KB256KB三种加速结构存储器接口芯片拥128位宽度独特32位程序运行时钟速率16位Thumb模式够降低程序30程序严格求应代价损失非常性
    LPC2124拥64144脚封装两种型号类芯片中耗低配备4路10位ADC(64脚144脚封装)32位定时器9外部中断工业应医疗设备访问控制终端机中具广泛应[5]
    322 特性
    132位64144脚ARM7TDMIS微控制器
    216KB静态RAM
    3 片Flash程序存储器分0KB128KB256KB三种128位宽度接口加速器操作频率高达60MHz
    4外部81632位总线(144脚封装)
    5通外部存储器接口分配存4组组容量高位16MB
    6系统编程(ISP)应中编程(IAP)够片Boot转载程序实现1msFlash编程时间编程512字节400ms实现扇区擦整片擦
    7需Boot装载应程序装入设备RAM中时UART0进行装载时够RAM中运行
    8嵌入式踪宏单元(ETM)功够干扰高速实时踪进行中执行代码
    94路64脚封装8路144脚封装10位AD转换器转换时间低减少244ms
    10232位定时器分带4路捕获4路较通道PWM单元(6路输出)实时时钟门狗
    323 结构
    图31中示LPC2124图中ARM7TDMISCPU仿真功ARM总线存控制器接口片存储器控制器接口ARM7局部总线
    AHB外设设立2MB址空间分布4GBARM存址顶端16KB空间AHB外设具LPC2124外围功(中断控制器)全部VPB总线相连VPB总线AHB总线连接需AHBVPB桥连接起VPB外设拥2MB空间空间35GB址点开始分配[6]
    引脚连接模块控制连接片外设器件引脚软件够控制引脚连接模块引脚连接特定片外围设备


    图 31 LPC2124方框图
    324引脚描述
    LPC2124引脚分布图32示

    图32 LPC212464脚封装
    33硬件系统整体结构
    331硬件系统设计原
    硬件系统设计中必须遵循原:
    (1)稳定性性:数工业实施环境非常具挑战性模拟量参数处理坏系统技术指标直接影响必须环境予充分考虑采取效抗干扰措施正确组件类型参数避免串扰误差积累部分设计化硬件电路简单选择较高集成度组件系统具备良抗干扰性优越稳定性性
    (2)速度精度:误差允许极限值根相应规需部分误差系统设计程中根位数更高转换芯片提高转换精度选定终电路结构
    (3)功耗数存储:LPC2124显著特征身拥非常低耗VDDCORE工作电流仅30.4mA机模式工作电流仅3.1mA低速时钟操作模式软件功耗优化力两优点十分适应耗敏感场合采低功耗器件贴片封装元器件效降低功耗减PCB面积提高电路身抗干扰性考虑数存储安全保障系统采32MNandFlash作数程序存储区确保高容量数存储[7]
    332系统硬件整体结构
    系统整体结构图33示

    图33 系统硬件整体结构
    系统分模块:
    (1)CPU核心模块:通常CPU外围设备构成控制电路系统CPU采ATMEL公司研发设计ARM7够数进行处理存储通讯等系列操作
    (2)模拟电路:包含信号处理电路信号输出电路两模块信号处理电路完成模拟量输入信号放滤波获模数转换电路输入范围数值信号输出电路通算法修改数字量变应模拟信号进行导出完成控目标控制
    (3)存储模块:班NorFlashSDRAMNandFlash三部分构成中NorFlash启动程序系统核存储系统SDRAM作操作系统应程序工作空间NANDFlash保存采集数应程序
    333 基硬件组成
    1 时钟电路
    图34示LPC2124芯片振荡器器件反相放器XTAL1端输入XTAL2端输出电路时钟够部设备者外接设备产生XTAL1XTAL2引脚连接某定时器件置振荡电路产生相应激振荡该系统联谐振电路采石英晶体电容器电路晶振频率选择110592MHZ电容器C1C2电容均取值30pF电容频率进行微调


    图34 时钟电路
    2 键盘输入电路
    图35示系统中采独立式键盘键盘设定控制系统需值样系统实验值进行较计算误差系统误差第键功加1第二键功减1


    图35 键盘输入电路
    3 显示电路
    显示电路采LCD功组件(LM016L)显示温度测量值设定值显示电路图36示

    图36 显示电路
    4 温度控制电路
    系统中控制核心电路(控制加热丝加热电路)采零检测晶闸触发器件MOC3061组成触发电路次器件专门设计双晶闸触发器LED工作时发射红外线果时零电路检测输出端工作电压零光控双晶闸触发导通否断图37示MOC3061组成触发电路[8]


    图37 MOC3061组成触发电路
    5 传感器模
    设计采DS1820传感器图38示刚研发线器件特征更加巧种电压工作成更低DS1820DALLAS半导体公司研发数字化温度传感器全球首够线总线温度传感器线总线具特便宜特点户够方便快捷搭建传感器网络诞生新概念——测量系统构建 线总线开始发展温度传感技术DS1820卓越发展

    图38 DS1820结构框图

    DS1820够方便测测量温度精确连接器件方便需连接口线少然存需注意问题:
    (1) 硬件较开销决定软件必少复杂DS1820CPU传递信息串行方式读写入DS1820代码时尤确保读写时序正确否法读取测温结果设计系统程序时PLMC语言等高级语言汇编语言接硬件层面适合编写系统操作部分
    (2)介绍DS1820材料中没说单总线够挂少DS1820认够挂DS1820实际应中情况相径庭[9]
    (3)通常连接DS1820总线数量严格求实践中果选常信号电缆进行50米距离传输时读取错误测温数想般通讯距离增加150m双绞线加屏蔽电缆代总线电缆想进行更远距离正常通讯抗干扰力更强双绞线带屏蔽电缆种现象总线分布电容导致信号波形发生变形DS1820进行远距离测温时总线分布电容阻抗匹配问题必须予充分考虑
    (4)DS1820温度传感器时DS1820执行温度转换命令系统立开始等DS1820返回信号果DS1820接触良断线系统该DS1820时法读取返回信号程序法执行问题DS182进行0硬件连接程序设计时必须重视



























    第四章 软件设计
    41系统软件整体结构
    周期采集AD通道中模拟量重环节包含温度控制系统应程序设计程中计算机控制系统流程中通较采样值定量差值控制算法进行数处理处理数模变换数字信号变模拟控制信号输出执行机构实现控象控制图41显示计算机控制系统基框图[10]

    图41 计算机控制系统基框图
    前计算机控制系统中常见控制算法三种分模糊控制PID控制神网络算法等传统PID控制广泛应工业程控制调整PID控制器参数kKi‰取良效果适应种象年通模仿思维获长足发展模糊控制够复杂系统难建立数学模型系统现实简单效控制种神网络算法通模拟图直觉思维种算法具强适应性实现类型分类辨识非线性象方面功完善
    根计算机控制系统特点毕业设计温度控制系统实现功:
    (I)远程手动动模式转换功
    (2) 档ADDA数超限发出报警指示





    42功实现
    421测控系统
    程序流程图图42示
    模糊控制
    开始
    输出清零
    开始
    显示字符
    目标板初始化
    控制IO方
    引脚功配置

















    图42 程序流程图









    422显示数字功
    子程序流程图图43示







    i > 0
    开始
    i 5





    数转换取出低位
    掉低位
    i 1
    i 0
    数字转换成数组
    指定位置显示数字
    开始

















    图43 显示数字子程序流程图




    函数关键部分实现:[11]
    void ShowInt(uint8 addruint16 num) addr处显示数字num
    {num转化成5BCD码存放全局数组BCD[5]中
    uint8 i
    for(i5i>0i) NUM数转化成ASCII码521会转化00521
    {
    BCD[i1](uint8)(num10+0x30) 取出低位
    num10 掉低位
    }
    i0
    while(BCD[i] 0x30 && i<4) BCD[i++]' ' NUM转换成数组存放没加 数点
    BCD[5]'\0'
    DisText(addrBCD)
    }













    423 AD转换数采集程序功实现
    子程序流程图图44示
    开始



    AD模块设置


    延时



    读取AD转换结果


    设置通道1进行第次转换


    等转换结束


    次启动转换


    等转换结束



    读取AD转换结果


    提取AD转换值


    数值转换


    返回



    图44 AD转换子程序流程图
    函数关键部分实现:[12]
    uint32 AD_Convert(void)
    {
    uint32 data
    进行ADC模块设置中x< ADCR (1 << 0) | SEL 1 选择通道0
    ((Fpclk 1000000 1) << 8) | CLKDIV Fpclk 1000000 1 转换时钟1MHz
    (0 << 16) | BURST 0 软件控制转换操作
    (0 << 17) | CLKS 0 11clock转换
    (1 << 21) | PDN 1 正常工作模式(非掉电转换模式)
    (0 << 22) | TEST10 00 正常工作模式(非测试模式)
    (1 << 24) | START 1 直接启动ADC转换
    (0 << 27) EDGE 0 (CAPMAT引脚降触发ADC转换)
    delay(10)
    ADC_Data ADDR 读取ADC结果清DONE标志位
    while(1)
    {
    ADCR (ADCR&0x00FFFF00)|0x01|(1 << 24) 设置通道1进行第 次转换
    while( (ADDR&0x80000000)0 ) 等转换结束
    ADCR ADCR | (1 << 24) 次启运转换
    while( (ADDR&0x80000000)0 ) 等转换结束
    ADC_Data ADDR 读取ADC结果
    ADC_Data (ADC_Data>>6) & 0x3FF 提取AD转换值
    ADC_Data ADC_Data * 1001024 数值转换
    dataADC_Data
    return(data)
    }
    }
    43运行结果说明
    1系统刚开始设定温度26℃图45[13]

    图45 系统开始运行状态
















    2系统开启风扇降温时20℃图46示

    图46 系统工作状态图

    第五章 总结展
    51 全文总结
    设计务设计种温度控制系统究实质嵌入式系统应通温度控制系统中应方案现阶段工业领域国现状外嵌入式开发场合结构种嵌入式处理器性较终选择基ARM嵌入式控制系统ATMEL公司工业级32位高性处理器AT91RM9200融合ARM920T型ARM核频达180MHz配备16KB数缓存空间16KB指令缓存空间种耗低成性高微控制器文采嵌入式操作系统嵌入式处理器基础设计基ARM嵌入式温度控制系统硬件部分选AT91RM9200基础设计模拟电路模块存储模块通讯模块四部分模拟电路模块包括信号处理电路信号输出电路存储模块4MBNorFlash32MBSDRAM64MBNandFlash三部分组成软件部分main(程序)ad(AD数采集)da(DA数接收)组成完成采集AD通道数等务子程序异常退出者中途终止时程序时重启子进程测试程序基达需功程序运行安全[14]
    52续工作展
    设计中需完善方:
    1系统没机界面(HMI)采服务器客户端方式进行数间通讯完善系统需添加液晶显示界面构建视化菜单系统具良机交互界面方便操作员实时监视操作
    2程序编写方面传输性较局域网设计没针恶劣网络环境数传输进行改善工作中需针网络进行容错处理丢包处理确保数准确性针工艺流程完善远程手动动功确保工艺控制优化
    做出优秀设计方案需清楚认识户求方面根户求选择系统硬件外设编写相应程序精简程序软件够完成部分系统功助迅速发展信息产业嵌入式产品迎美发展前进机遇久越越产业越越复杂应需嵌入式设备嵌入式产品长足发展



















    致谢
    毕业设计导师XX导师精心指导悉心关怀完成学业设计指导工作中倾注着导师辛勤汗水心血导师严谨治学态度渊博知识私奉献精神深受启迪尊敬导师身仅学扎实宽广专业知识学做道理导师致衷心感谢深深敬意
    文撰写程中XX等提出宝贵意见建议表示深深感谢
    年学生活中许学院领导系领导老师热情关心帮助
    感谢父母亲学业中莫鼓励关爱支持
    关心帮助领导老师学朋友表示衷谢意
    衷心感谢百忙中评阅文参加答辩位老师




    XX
    2014年X月

    参考文献
    [1]周润景袁伟婷景晓松ProteusMCS51&ARM7系统中应百例[M].北京.电子工业出版社2006
    [2]周立功等.ARM嵌入式系统基础教程[M].北京.北京航空航天学出版社2008
    [3]孙秋野等.ARM嵌入式开发典型模块[M].北京.民邮电出版社.2007
    [4]田泽等.嵌入式系统开发应教程[M].北京北京航空航天学出版社2005
    [5]李伯成等.嵌入式系统性设计[M].北京.电子工业出版社2006.1
    [6]Texas Instrumentsincorporated[M].ADS7842Data Sheet.2002
    [7]金成植.编译程序构造原理实现技术[M].高等教育出版社.2000.7
    [8]马忠梅.ARM嵌入式处理器应基础[M].北京航空航天出版社2002
    [9]张绮文等.ARM嵌入式常模块综合系统设计精讲[M].北京.电子工业出版
    社.2006
    [10]李剑赵鹏程等.32位ARM嵌入式微处理器调试技术[M].电子技术应
    2001.23
    [11]姚放吾.嵌入式系统软件/硬件协设计.微计算机信[M]息2001.10
    [12]Jack Ganssle.In—Circuit Emulator.Embedded Systems Programming[M].2001.
    [13]ARMLimited.Real timedebugforSystem—On·ChipDevice[M].1998.8~24
    [14](美)QingLi等.嵌入式系统实时概念[M].北京.北京航空航天出版社2004







    附录
    源程序清单:
    ****************************************************************************
    * File mainc
    * 功:LCD输出计数值
    ****************************************************************************
    #include configh
    #define rs (1<<9)
    #define rw (1<<10)
    #define en (1<<11)
    #define busy (1<<7)
    #define ke 2
    #define kec 25


    uint8 eec
    fp32 ectemppreleveletemp
    uint8 temp0

    uint8 fuzzycode[21][11]
    {
    {55555543211}
    {55555542211}
    {55555542211}
    {55555542111}
    {55555542111}
    {55555542111}
    {55544432111}
    {55544432111}
    {55444322100}
    {55443211100}
    {44332111000}
    {33221110000}
    {22221110000}
    {22211000000}
    {22211000000}
    {11111000000}
    {11111000000}
    {11111000000}
    {11111000000}
    {11111000000}
    {11111000000}
    }


    uint8 BCD[7] 十位二进制显示码分千百十位显示
    uint32 ADC_Data

    void ShowInt(uint8 addruint16 num)
    void ShowByte(uint8 addruint16 num)
    uint32 AD_Convert(void)

    void fuzzy(void) 函数声明
    void PWM0(void)
    void PWM1(void)
    void PWM2(void)
    void PWM3(void)
    void PWM4(void)
    void PWM5(void)
    ****************************************************************************
    * File main()
    * 功:显示计数值
    ****************************************************************************
    int main(void)
    {
    PINSEL00x00020000
    PINSEL10x00000000
    IO0DIR0x00cfffff 设置输出
    IO0CLR0xeff
    TargetInit()

    ShowByte(0x800)
    ShowByte(0xc00)

    fuzzy()

    return(0)
    }



    ****************************************************************************
    * Filedelay()
    * 功:延时
    ****************************************************************************
    void delay(uint32 dly)
    { uint32 i

    for( dly>0 dly)
    for(i0 i<500 i++)
    }

    ****************************************************************************
    * Filetimer0_init
    * 功:定时器0初始化
    ****************************************************************************
    void timer0_init(void)
    {定时器计数器0设置晶振12M1秒运行1000000周期
    T0PR0 预分频寄存器
    T0MR0Fpclk20 匹配值
    T0MCR0x00000003 开放匹配0中断
    T0TCR0x00000003 T0PCT0TC复位
    T0TCR0x00000001 T0PCT0TC复位
    }
    void timer1_init(void)
    {定时器计数器0设置晶振12M1秒运行1000000周期
    T1PR0 预分频寄存器
    T1MR0Fpclk20 匹配值
    T1MCR0x00000003 开放匹配0中断
    T1TCR0x00000003 T0PCT0TC复位
    T1TCR0x00000001 T0PCT0TC复位
    }
    ****************************************************************************
    * FiletimerInt
    * 功:中断处理程序
    ****************************************************************************


    void __irq timer0Int(void) 定时器0中断处理程序
    { uint32 d
    dAD_Convert()
    ShowInt(0x86d)

    VICVectAddr0
    T0IR0x00000001
    }
    void __irq timer1Int(void) 定时器1中断处理程序
    {
    fuzzy()

    VICVectAddr0
    T0IR0x00000001
    }
    ****************************************************************************
    * Fileint_init()
    * 功:中断初始化
    ****************************************************************************
    void int_init(void)
    {
    VICIntSelect0x00000000
    VICIntEnable0x00000030
    VICVectCntl00x00000024
    VICVectAddr0(int)timer0Int
    VICVectCntl10x00000025
    VICVectAddr1(int)timer1Int


    }

    ****************************************************************************
    * 名称:ChkBusy()
    * 功:检查总线否忙
    ****************************************************************************
    void ChkBusy()
    {
    IO0DIR0xe00
    while(1)
    {
    IO0CLRrs
    IO0SETrw
    IO0SETen
    if((IO0PIN & busy))break
    IO0CLRen
    }
    IO0DIR0xeff
    }
    ****************************************************************************
    * 名称:WrOp()
    * 功:开显示函数
    ****************************************************************************
    void WrOp(uint8 dat)
    {
    ChkBusy()
    IO0CLRrs 全部清零
    IO0CLRrw
    IO0CLR0xff 先清零
    IO0SETdat 送数
    IO0SETen
    IO0CLRen
    }
    ****************************************************************************
    * 名称:WrDat()
    * 功:写数函数
    ****************************************************************************
    void WrDat(uint8 dat)
    {
    ChkBusy()
    IO0SETrs
    IO0CLRrw
    IO0CLR0xff 先清零
    IO0SETdat 送数
    IO0SETen
    IO0CLRen
    }
    ****************************************************************************
    * 名称:lcd_init()
    * 功:lcd初始化函数
    ****************************************************************************
    void lcd_init(void)
    {
    WrOp(0x38)
    WrOp(0x06) 光标加1
    WrOp(0x0c) 显示
    }
    ****************************************************************************
    * 名称:DisText()
    * 功:显示文函数
    ****************************************************************************
    void DisText(uint8 addruint8 *p)
    {
    WrOp(addr)
    while(*p '\0')WrDat(*(p++))
    }

    ****************************************************************************
    * 名称:DisInt()
    * 功:显示文函数
    ****************************************************************************

    void ShowInt(uint8 addruint16 num) addr处显示数字num
    {num转化成5BCD码存放全局数组BCD[5]中
    uint8 i

    for(i5i>0i) NUM数转化成ASCII码521会转化00521
    {
    BCD[i1](uint8)(num10+0x30) 取出低位
    num10 掉低位
    }
    i0
    while(BCD[i] 0x30 && i<4) BCD[i++]' ' NUM转换成数组存放没加数点
    BCD[5]'\0'


    DisText(addrBCD)
    }
    void ShowByte(uint8 addruint16 num) addr处显示数字num
    {num转化成5BCD码存放全局数组BCD[5]中

    uint8 str1[]MeasT
    uint8 str2[]SetT
    if (addr0x80){DisText(addrstr1)}
    if (addr0xc0){DisText(addrstr2)}

    }



    uint32 AD_Convert(void)
    {
    uint32 data


    进行ADC模块设置中x< ADCR (1 << 0) | SEL 1 选择通道0
    ((Fpclk 1000000 1) << 8) | CLKDIV Fpclk 1000000 1 转换时钟1MHz
    (0 << 16) | BURST 0 软件控制转换操作
    (0 << 17) | CLKS 0 11clock转换
    (1 << 21) | PDN 1 正常工作模式(非掉电转换模式)
    (0 << 22) | TEST10 00 正常工作模式(非测试模式)
    (1 << 24) | START 1 直接启动ADC转换
    (0 << 27) EDGE 0 (CAPMAT引脚降触发ADC转换)
    delay(10)
    ADC_Data ADDR 读取ADC结果清DONE标志位

    while(1)
    {
    ADCR (ADCR&0x00FFFF00)|0x01|(1 << 24) 设置通道1进行第次转换
    while( (ADDR&0x80000000)0 ) 等转换结束
    ADCR ADCR | (1 << 24) 次启运转换
    while( (ADDR&0x80000000)0 ) 等转换结束
    ADC_Data ADDR 读取ADC结果
    ADC_Data (ADC_Data>>6) & 0x3FF 提取AD转换值
    ADC_Data ADC_Data * 1001024 数值转换
    dataADC_Data

    return(data)
    }

    }

    void PWM0(void)
    { IO0DIR1<<23|1<<8
    IO0SET1<<23


    PWMMR0Fpclk25 设置PWM周期
    PWMMR40 设置PWM占空
    PWMLER0x11
    }
    void PWM1(void)
    { IO0DIR1<<23|1<<8
    IO0CLR1<<23
    PWMMR0Fpclk25 设置PWM周期
    PWMMR4Fpclk50 设置PWM占空
    PWMLER0x11
    }
    void PWM2(void)
    { IO0DIR1<<23|1<<8
    IO0CLR1<<23

    PWMMR0Fpclk25 设置PWM周期
    PWMMR4Fpclk10 设置PWM占空
    PWMLER0x11
    }
    void PWM3(void)
    { IO0DIR1<<23|1<<8
    IO0CLR1<<23

    PWMMR0Fpclk25 设置PWM周期
    PWMMR4Fpclk5 设置PWM占空
    PWMLER0x11
    }
    void PWM4(void)
    { IO0DIR1<<23|1<<8
    IO0CLR1<<23
    PWMMR0Fpclk25 设置PWM周期
    PWMMR4Fpclk33 设置PWM占空
    PWMLER0x11
    }
    void PWM5(void)
    { IO0DIR1<<23|1<<8
    IO0CLR1<<23
    PWMMR0Fpclk25 设置PWM周期
    PWMMR4Fpclk249 设置PWM占空
    PWMLER0x11
    }


    void fuzzy(void)
    {
    uint8 U

    uint8 setlevel
    fp32 nowlevelc
    IO0DIR1<<23
    while(1) 温度设定值
    { if((IO0PIN&0x00300000)0x00300000)
    delay(10)
    if((IO0PIN&0x00300000)0x00300000)
    {
    if((IO0PIN&0x00300000)0x00200000) 加计数
    temp++
    if((IO0PIN&0x00300000)0x00100000) 减计数
    temp
    while((IO0PIN&0x00300000)0x00300000)
    ShowInt(0xc6temp) 显示设定值
    }



    setleveltemp
    nowlevelcAD_Convert()
    etempnowlevelcsetlevel
    ectemp10*(nowlevelcprelevel)
    prelevelnowlevelc


    if(etemp>5){e5*ke+10 }
    else if(etemp<5){e5*ke+10}
    else {eetemp*ke+10}
    if(ectemp>2) {ec2*kec+5}
    else if(ectemp<2) {ec2*kec+5}
    else
    {
    if(ectemp<15){ec2*kec+5}
    else if(ectemp>15 && ectemp<05) {ec1*kec+5}
    else if(ectemp>05 && ectemp<05){ec5}
    else if(ectemp>05 && ectemp<15) {eckec+5}
    else {ec2*kec+5}
    }

    Ufuzzycode[e][ec] 输出占空控制

    if (U0){PWM0()}
    if (U1){PWM1()}
    if (U2){PWM2()}
    if (U3){PWM3()}
    if (U4){PWM4()}
    if (U5){PWM5()}

    }
    }



    文档香网(httpswwwxiangdangnet)户传

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

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

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

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

    下载文档

    相关文档

    基于PID的温度控制系统设计论文

     (20XX届) 毕业设计 题  目:   基于PID的温度控制系统设计  学  院:             专  业:     电气工程及其自动...

    5年前   
    1988    0

    基于单片机的空调温度控制系统设计毕业设计

     毕业设计  题 目 基于单片机的空调温度控制系统设计 学生姓名 学 号 学 院 计算机与信息工程系 专业班级 指导...

    5年前   
    2543    0

    基于单片机的温度控制系统设计毕业论文

    职业学院毕业论文 题目:单片机温度控制系统研制 系 院:工程技术学院 学生姓名: 学 号: 专 业:机电一体化 ...

    5年前   
    5858    0

    基于ARM的智能电子秤系统的设计与实现

    随着现代社会的发展,对称重技术提出了更高的要求。目前,台式电子秤在商业贸易中的使用已相当普遍,但是仍存在较大的局限性:体积大、成本高、需要工频交流电源供应、携带不便、应用场所受到制约。现有的便携...

    3年前   
    1152    0

    基于arm键盘课程设计

    基ARM课程设计 专 业:自动化学 号:姓 名: 在ARM嵌入式应用中,人机交互对话最通用的方法就是通过键盘和LCD显示进行的,本设计是通过键盘向系统发送各种指令或置入必要的数据信息。键盘模块...

    2年前   
    466    0

    ARM cotex A8嵌入式原理与系统设计习题答案

    ARM cotex A8嵌入式原理与系统设计习题答案第1章1.1 什么是嵌入式系统?嵌入式系统是以应用为中心、以计算机技术为基础、软/硬件可剪裁、适用于对系统功能、可靠性、成本、体积、功耗等有...

    3年前   
    661    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、...

    5年前   
    1847    0

    基于单片机的高精度温度检测与控制系统

    温度的检测与控制的系统渐渐在我们的日常生活中愈发重要,在我们的日常生活的领域还有各个国家和地方的都大量涉及单片机对温度的检测与其控制,比如温度计,酒店的紧急火灾报警温度感应器等等。

    3年前   
    847    0

    论文:基于单片机的温度控制系统

    本设计以AT89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。

    5年前   
    2398    0

    基于FPGA的温度检测系统设计

    XX学院信息工程学院数字系统与Verilog设计报告题 目: 基于FPGA的温度检测系统设计 姓 名: 学 号: ...

    3年前   
    606    0

    基于PLC的温室控制系统的设计

    基于PLC的温室控制系统的设计摘 要随着人们生活水平的提高,由温室大棚种植的反季节蔬菜成为人们越来越离不开的食物,所以温室大棚技术越来越重要,而温度控制是最为重要的一环。考虑到PLC具有灵活...

    3年前   
    824    0

    基于ARM的家用ECG检测设备的研究与设计

    本文设计实现了一种心电信号检测系统。硬件上该系统基于医用心电监测仪简化而来,利用心电电极片以及三输入屏蔽导线,通过标准导线收集人体心电信号,随后利用多级放大滤波电路模块对心电信号进行处理。软件上...

    3年前   
    463    0

    嵌入式ARM的贪吃蛇游戏课程设计

    成 绩 评 定 表学生姓名班级学号专 业测控课程设计题目基于ARM的贪吃蛇游戏设计评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程...

    1年前   
    309    0

    燃烧式工业窑炉温度比值控制系统课程设计

     课 程 设 计 说 明 书 学生姓名: 学 号: 学 院: 机械工程与自动化学院 专 业: 过程装...

    5年前   
    1273    0

    激光器电源温度控制系统硬件设计

    随着激光加工技术的发展,激光器也在不断向前发展,激光器已成为现代激光加工系统中必不可少的核心部分之一。激光器的正常运行需要有稳定的电源供应,即激光器电源,激光器电源系统是一种受控供电系统,决定着...

    3年前   
    615    0

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

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

    3年前   
    929    0

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

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

    3年前   
    972    0

    基于AT89C51单片机的鸡舍温度控制系统

    基于AT89C51单片机制作一个温度控制器,用于自动接通电加热或制冷设备,从而使鸡舍内温度达到设想温度的要求,并能实时显示室内温度。当室内温度低于设定下限温度时,控制器连通电加热设备,当室内温度...

    6年前   
    14641    0

    基于Multisim的声光控路灯控制系统设计与仿真课程设计

    信息工程学院课程设计报告书题目: 基于Multisim的声光控路灯控制系统设计与仿真 课 程:电子线路课程设计 专 业:电气工程及其自动化班 级: ...

    1年前   
    358    0

    毕业设计(论文)基于PLC的停车场车位控制系统设计

    基于PLC的停车场车位控制 系统设计 系 别:机电与自动化学院 专 业 班:电气工程及其自动化xx班 姓 名: 学 号:20xx113xx 指导教师: 201x年6月 基于...

    5年前   
    3079    0

    文档贡献者

    文***品

    贡献于2022-05-08

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

    该用户的其他文档