1、 (4) 熟悉TMS320F2812的硬件资源和使用方法2 总体方案介绍2.1 设计任务 (1)熟悉MC1403芯片的应用 (2)设计由MC1403和热门电阻组成的温度采集电路 (3)将温度采集电路中热敏电阻的阻值变化转变为输入端的变化,根据电压温度转换公式,检测温度变化 (4)完成程序流程图的设计 (5)完成软件设计方面的A/D转换和LCD显示程序 (6)软硬件联合调试 (7)最终结果在液晶显示屏上显示相应的文字及温度 2.2 设计思路 首先设计由MC1403和热敏电阻组成的温度采集电路,利用热敏电阻输出电压值与温度间的函数关系,检测温度的变化;然后将采集到的温度送入TMS320F2812中
2、的A/D转换模块,将电压转换为数字信号;最后通过编写LCD显示函数来控制相应的温度及文字的变化。系统设计原理框图如下图:TMS320F2812本设计是基于TMS320F2812的水温控制系统,使用TMS320F2812的片上A/D。它功能强大,运行速度快,是专门为电动机控制应用优化的控制芯片,在本设计中,它主要完成各种模拟、数字信号的采样及转换。使用的元件如下:(1)TMS320F2812主控芯片。它是一种特殊用途的单片机,其结构如下图所示:TMS320F2812芯片的内核概述TMS320F2812DSP内核采Harvard结构体系,即相互独立的数据总线,提供了片内程序存储器和数据存储器 、运
3、算单元、一个32位算术逻辑单元 、一个32位累加器、一个16位乘法器和一个16位桶形移位器组成,体系采取串行结构,运用流水线技术加快程序的运行 ,可在一个处理周期内完成乘法加法和移位计算,其内核计算速度为 20MIPs(一个指令周期为 50 ns)。外设有 AD转换大容量存储器,l6位和32位的定时器比较单元、捕获单元、PWM波形发生器、高速异同步串行口和独立可编程复用IO等组成,其中通过三个通用定时器和九个比较器的结合产生多达l2路的PWM输出结合灵活的波形发生逻辑和死区发生单元能生成对称、不对称以及带有死区时间的空间矢量 PWM波形DSP芯片中集成的这些功能大大简化了整个控制系统。此外,该
4、DSP还具有快速的中断处理能力,及硬件寻址控制、数据指针逆序寻址等多种特有的功能,将有利于TMS320F2812A在电机控制中的作用。(2)MC1403芯片(图2) 图2MC1403是低压基准芯片,为模数转换模块提供基准电压。因为MC1403的输出是固定的,所以只需要用到Vin,Vout,GND三个引脚。MC1403芯片为模数转换提供基准电压,利用热敏电阻进行温度采集,采集后的输出电压与DSP的引脚相连。将采集到的电压送入A/D转换模块,编程序实现A/D转换,转换结果是放在结果寄存器的高12位上,编写函数获取A/D转换结果,将处理后的温度值的各个位对应显示带LCD上。为了确保A/D转换精度,这
5、里采用多次取值求平均。(3)热敏电阻LM35适当阻值的热敏电阻感应一定范围内的温度变化,提供相对精确的值。3 硬件设计3.1 最小系统设计最小系统设计:TMS320F2812芯片包含33个电源引脚,时钟模块,分别有电源复位,复位引脚/RS,软件复位,非法地址,看门狗定时器溢出,欠电压复位这6种信号使DSP控制器复位。在设计中采用了由PCRESET引脚PCRESET电源复位的方式。为了可靠复位,高电平的有效时间至少保持6个时钟周期。DSP平最小系统指的是由F2812芯片组成的电源模块,复位电路和晶振电路组成的无外围设备的系统。最小系统如图1: 图1 DSP最小系统图3.2 温度采集电路由MC14
6、03和热敏电阻组成温度采集电路。MC1403的Vin端接入一个5V左右的模拟电压值,并在此端(1脚)接入电容滤除其它频率分量;在Vout端(2脚)输出一个稳定的电压值,接、TMS320F2812的23引脚;GND端(3脚)直接接地,接TMS320F2812的33引脚。原理图如图3: 图3 温度采集电路原理图 3.3 A/D模数转换模块 当模/数转换完成后,读取结果寄存器前,最好先读取模/数转换控制寄存器ADCTRL2的ADCFIFO1或ADCFIFO2,以确定当前结果寄存器的状态,保证读取的结果是正确的。并且12位的转换结果放在结果寄存器的高12位上,该12位数据与外部模拟输入电压的关系为:
7、12位数字结果=4095*(输入电压/基准电压)3.4 LCD液晶显示模块 DSP需要对读写周期较慢的液晶显示模块进行访问,这样就存在DSP与慢速设备之间的输入/输出时序匹配问题。直接访问方式是将DSP的读写信号线与慢速设备口控制板引出的读写信号线直接相连,时序由DSP内部读写逻辑控制。由于慢速外设的读写周期相对DSP较慢,要使两者的时序匹配,还必须进行一些时序方面的控制处理,一种处理方法是软件编程等待状态发生器,将外部总线周期扩展到数个机器周期。由于受硬件条件的限制,这种扩展通常也是有限的。另一种处理方法是利用DSP的READY(外部设备准备就绪)引脚,通过硬件扩展实现外部状态自动等待,从而
8、使DSP与慢速设备之间的时序匹配。虽然可以将总线周期扩展到任意个机器周期,但是需要进行硬件扩展,增加了系统设计的复杂度。间接访问是用DSP的数字I/O间接控制慢速设备通过软件控制DSP的I/O口来实现与慢速设备的时序匹配。此种方式无需硬件扩展即可实现与任意时序慢速设备之间的时序匹配。本设计采用间接访问方式来实现DSP与LCD之间的时序匹配,即在程序中加入大量延时语句。由于DSP为3.3V设备,而液晶显示模块属于+5V设备,所以在连接控制线、数据线时需要加电平隔离和转换设备。液晶模块如下图:4 软件设计4.1 软件系统分析 首先要初始化A/D转换模块,然后等待中断,当产生中断后对采集到的模拟信号
9、进行处理,为了确保转换精度应多次取值求平均,将其转换结果放在结果寄存器的高12位上,最后将处理后的温度值送到LCD上显示。系统设计原理框图如图4: 图4 系统设计原理框图 4.2软件系统流程图5 系统调试 MC1403 芯片Vin 端输入一个+5V的模拟电压值;在输入端接一个电容滤除其它频率分量;在 Vout 端输出了一个稳定的电压值;GND端直接接模拟地;给试验箱供电,打开 Setup CCS2(C2000), 在弹出的对话框中选择ICETEK-5100 USB Emulator for TMS320F2812 导入,进行配置设置然后进入 CCS2(C2000),打开工程文件进行编译生成 .
10、out 文件下载到硬盘中然后调试,观察液晶显示屏,第一行显示“温度”,第二行显示“显示”,第三行显示“35.91”,当用手触摸时,温度显示不断变化,实现了温度的采集与显示。6 设计总结这次的课程设计,我们小组的设计题目是:温度采集与显示。通过这段时间的学习使我对C语言编程方法有了更深入的了解,从中学到了很多编程思想,并且进一步了解了DSP芯片的机制,经过这次课程设计,我不仅对以前所学的知识有了较深刻的理解,而且动手能力、独立解决问题的能力有所提高。这个课程设计对于以后搞科研项目很有帮助通过我们组成员的共同努力,我们终于完成了设计要求。主要是通过使用MC1403芯片、电容、热敏电阻等元器件,设计
11、并制作一个硬件电路,通过软件编程得到电压关于温度的函数,经过A/D转换电路把模拟电压信号转换成数字信号,再利用公式,在LCD液晶显示屏上显示出转换后对应的温度变化数值。 在这次课程设计中,我主要负责的是软件编程及调试。在这里我遇到了很大的困难,虽然有书籍和网络上查找的辅导资料,但是由于软件设计是意见灵活的东西,它不仅需要有过硬的编程知识,还必须有灵活的应用,因此在这方面的调试时花费了大量的时间。首先,我把编程想的过于简单,以为只是把每个模块的子程序编写成功便可以,却忽视了模块与模块之间的相关性和衔接性,因此总出现参数定义不准确和函数声明不相符的错误。其次,由于自已的粗心不严谨,导致出现大小写不
12、符,缺少分号或大括号的低级错误。但是,在这一过程中主要感谢老师的耐心指导和组员的帮助,顺利的完成了任务,实现了软硬件的调试,最终在LCD显示屏幕上显示相应的文字和温度。通过课程设计,不仅锻炼了我们动手动脑的能力,而且提高了我们分析问题、解决问题的能力,更重要的是提高了我们的团队合作的能力,遇到问题时不要慌张,冷静思考,实在解决不了时应向老师和同学寻求帮助。最后感谢宋老师在课程设计中给我们的指导。通过本次设计试验对C语言编程和仿真有了更深一步的了解,为以后的工作打好了基础,也为将来毕业设计报告的完成做一次实战演习。7 参考文献1 吴冬梅,张玉杰 DSP技术及应用 北京大学出版社,2007 2 万
13、山明 TMS320F281x DSP 原理及应用实例 北京航空航天大学出版社,20073 郑红,王鹏,董云凤,吴冠, DSP应用系统设计实践 北京航空航天大学出版社,20064 徐科军,张瀚,陈智渊 TMS320F281xDSP 原理与应用 北京航空航天大学出版社,20068 附件 8.1元件清单(1)TMS320F2812芯片。(2)热敏电阻LM35(3)TPS73HD318(4)SN74LS08(5)MC1403(6)1602液晶.(7)晶振,电容,电阻等等。8.2原理图 8.3源程序(1)等待ADC中断程序#define ADC_usDELAY 8000L#define ADC_usDE
14、LAY2 20Linterrupt void adc_isr(void);Uint16 LoopCount;Uint16 ConversionCount;Uint16 Voltage11024;Uint16 Voltage21024;float temp;Uint16 i,j;void InitAdc(void);interrupt void adc_isr(void) Voltage1ConversionCount = AdcRegs.ADCRESULT0 4; Voltage2ConversionCount = AdcRegs.ADCRESULT1 / If 40 conversions have been logged, start over if(ConversionCount = 200) ConversionCount = 0; else ConversionCount+; if(ConversionCount=0) temp=0; for(i=0;i200;i+) temp=temp+Voltage1i; temp=temp/200.0; temp=temp*3.0/4095.0; / Reinitialize for next ADC sequence Adc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1