C8051f020ADC差分格式的稳定性性差,

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
优秀毕业论文(设计):基于C单片机的加热炉温度测控系统的研发.doc 51页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
毕业设计(论文)
基于C单片机的加热炉温度测控系统的研发
摘要本课题对工业对象中主要的被控参数电阻炉炉温进行研究设计了硬件电路软件程序。硬件电路C单片机ADC0809、HD7279a和max232等芯片构成。以单片机为主体构成一个能进行较复杂的数据处理和复杂控制功能的智能控制器单片机根据输入的各种命令进行智能得到控制值,输出脉冲触发信号,电路双向可控硅,从而电阻炉。软件程序采用两重中断嵌套方式。提出了一种常规控制的方法,即调节三个参数,来实现控制。电阻炉炉温为阶惯性纯滞后系统,最后利用算法通过MATLAB进行计算机仿真,得到了理想的控制效果。
关键词单片机温度控制调节matlab仿真 The Research of C SCM Based on The Heating Furnace Control System Development
Author:Li Wei
Tutor:Jin Wei
This subject mainly for industrial object of resistance furnace temperature control parameters were studied, and the design of hardware circuit and software program and PC software program. The hardware circuit consists mainly of C SCM as the core and ADC: max232, etc. To C SCM chip as the main body, can form a complex data processing and complex function of intelligent controller. According to the input of various orders chip, intelligent calculated, the output pulse triggering signal components, after protecting circuit control bidirectional thyristor conduction angles, which controls the heating time resistance furnace. Software interrupt nested manner by two, higher efficiency. Because of limited memory chip is proposed, i.e. normal control method of Kp mohan, adjust Ki, three parameters Kd, come to control. The resistance furnace temperature change system for second inertia pure inertial system, finally lag big respectively using PID algorithm and fuzzy control by MATLAB simulation of temperature control, computer got better control effect. While using the serial communication with the PC, written by vc computer interface, PC as PC for complex algorithm of choice and control.
Keywords: SCM, temperature control, PID, matlab simulation
研究背景和研究意义 1
所要解决的主要问题 1
研究方法和创新之处 2
电加热炉的国内外发展现状 2
定值开关控温法 3
PID线性控温法 4
智能温度控制法 4
系统总体设计方案 5
系统性能要求及特点 5
系统硬件方案分析 6
正在加载中,请稍后...源码开发语言/平台
当前位置:
& 查看源码
cadc0.c:源码内容
//输入通道可采用(1)单端输入(2)差分输入。可在初始化程序中完成
//输入通道跟踪方式采用(1)低功耗方式,即启动信号发出后,固定的3个SAR&CLK的跟踪时间。这样便于随时换道,软件不用延时
//&&&&&&&&&&&&&&&&&&&&(2)一直跟踪方式,启动信号发出后,直接转换。所以换道后,软件需延时一段时间之后,再发出启动信号
//AD采集子程序的时间:跟踪时间(3个SAR&CLK或固定的软件延时)+16个SAR&CLK的转换时间+运算时间
//AD采集的精度与SAR&CLK(由system&clk分频得到)的关系不大,但SAR&CLK过高,会影响采集精度
//AD采集的温度稳定性(零点漂移)不好。处理方法:加CMOS开关减零点漂移
//ADC的建立时间:要注意信号的内阻,参考技术手册
//ADC可以有多种启动方式:手动、定时、外部信号/
//ADC电路本身有增益调节,但如果结合DAC电路,可得到更大范围的增益控制
#include&wywcomm.h&
#include&c.h&
//IO口定义
//此模块调用其它模块的外部变量和函数的声明(此程序无)
//此模块的宏定义(常数等)
//此模块必要的库函数包含(include)
//全局变量(静态或一般)的定义(此程序无)
//以下为函数定义
//--------------------------------------------------------------------------------------
void&&v_IniCADC0_f(void)
&&&&&&&&&&&&&&&&& //运行时间:
//功能:&&c的ADC0的初始化,功能查看下面程序和芯片技术资料
AMX0CF=0x00;//全部单端输入
AMX0SL=0x00;//开始在通道0
ADC0CF=0xf8;//转换时钟分频系数为32(最大),增益为1
ADC0CN=0xc0;//b &&低功耗模式(3个SAR&clk的跟踪时间);启动模式:写1到AD0BUSY;数据右对齐
REF0CN=0x03;//b&ADC0电压基准取自VREF0引脚,ADC1电压基准取自VREF1引脚,内部电压基准VREF输出使能,温度传感器关闭
温度传感器关闭
//--------------------------------------------------------------------------------------
int16&&s16_DataCADC0_f(uint8&chanel)
//功能:chanel为通道地址,范围0-8&&
返回值:通道对应的16位有符号采集值(实际12位)
//运行时间:至少19个SAR&CLK,绝对时间与晶振和分频系数有关(2MHZ且分频系数为32(最大)时,时间约为304us)
AD0BUSY=1;
while(AD0INT==0);
shuju=ADC0;
CopyRight &
verySource.Com All Rights reserved.  京公网安备:88  摘要:随着经济全球化的发展,带动着全球科技的不断进步,与此同时科技的进步也正在促进着经济的不断发展,现在市场上出现大量" />
免费阅读期刊
论文发表、论文指导
周一至周五
9:00&22:00
CC51单片机的异同点
  摘要:随着经济全球化的发展,带动着全球科技的不断进步,与此同时科技的进步也正在促进着经济的不断发展,现在市场上出现大量单片机的加工和制造厂商,这些生产厂商都希望能在市场经济中占据一席市场地位,想要占取市场首先就要有自己的研发团队,并掌握核心的科技,根据市场的供需情况生产大众消费所需要的单片机,目前在众多的单片机中80C51单片机的使用最为广泛,但是由于80C51单片机存在一些弊端,因此美国的Cygnsal公司在80C51单片机的基础上推出0C单片机,这种单片机的性能要更好一些。本文分析80C51单片机和0C单片机的相关特性,并着重研究80C51单片机与80C51单片机的相同之处和不同之处。 中国论文网 http://www.xzbu.com/1/view-6624571.htm  关键词:80C51单片机;80C51单片机;异同点   前言   现阶段,市场经济的发展正在带动着单片机的不断发展,在单片机中,人们较为熟悉80C51单片机,因为80C51单片机的使用比较广阔。这些80C51单片机被应用在多媒体教学当中和其他社会通信网络之中。但是在80C51单片机在使用中,能耗较大,且速度较慢,这些存在的问题导致80C51单片机难以跟随时代发展的步伐,在此基础上0C单片机应运而生,0C单片机是80C51单片机升级版本,但是80C51单片机与0C单片机又存在着相同点和不同点,这些相同点和不同点注定两者在使用中的存在的自身独特性质而又具有相似的属性和功能。   1.0C单片机与80C51单片机的相同之处   C单片机与80C51单片机在系统指令上存在一定的相同之处,习惯于用80C51单片机的用户也可使用C单片机,C单片机是在80C51单片机基础上研发而成的,是80C51单片机在技术上的改良,因此两者在相应的应用技术上还是存在这一定的相同之处。   2.0C单片机与80C51单片机的不同之处   2.1 C单片机与80C51单片机在运行速度上存在不同之处   一般来说C单片机是80C51单片机技术更新的产物,C单片机是科技进步的体现,因此C单片机在运行速度上要比80C51单片机的运行速度快,有的甚至快10多倍。C单片机的CIP-51是处于一种流水线的结构,因此没有机器周期时序的限制,在一般情况下指令只需要传送一个周期起或者两个周期就能完成任务,且时钟频率范围只有0-25MHz,CIP-51工作中最大的系统时钟频率可以达到25MHz而其峰值速度就可以达到25MI/s[1]。而80C51单片机的机器周期时序较长,具有少量的时钟源可编程,始终范围较大,在使用技能上不抵C单片机,其功效也不如C单片机。   2.2 C单片机与80C51单片机在I/O的配置方式上存在不同之处   C单片机的I/O端口要比80C51单片机的端口要多,在使用属性上降低与外部件的连接,并可以有效的减少期间的大范围的扩展,这样的端口有利于增强其抗干扰能力,并且增加其使用的可靠性能,在C单片机I/O端口的使用中位于第四个位置的I/O端口可以作为普通的万能I/O端口,与此同时还可以作为其他功能,模块的传输引脚,这些引脚具有控制选择第四I/O端口的交叉开关配置寄存器XBR0/XBR1/XBR2,在控制译码选择开关的电路时将片内的定时器、串线总线等数字信号配置展现在I/O端口上。这样可方便用户进行选择和使用[2]。相应的80C51单片机在这些上却存在着一定的缺失,在I/O端口使用中还是存在着一片空白。   2.3 C单片机与80C51单片机的存在一定的内部差异   C内部和80C51单片机的内部存在着较大的差异,C单片机具有ADC和DAC两种功能,这些功能都是以数据采集为前提,在ADC中具有一个12位逼近型ADC,12位逼近型ADC可以转变转换效率,可通过多通道选择器配置为单端输入或差分输入,具有放大可编程增益放大器PGA信号的功能,以便于提高A/D的转变精准度,在ADC中还有一种就是8位ADC,8位ADC可实现最快编程转换工作的效率,最高情况下可达到500kS/s。但是相对于80C51单片机,却缺少这些程序性ADC,这些ADC可以帮助数字量转化成为电压量,最后产生连续变化的波形,促使两路信号同步输出。   2.4 C单片机与80C51单片机的外部接口不同   80C51单片机在外设上不存在串行口,不能同时与外界相互联系,而且在SMBus上难以与I2C串行扩展总线进行联系,80C51单片机不能以JTAG接口为基础并且不具备较强的调试功能[3]。而在C单片机上,C单片机可与I2C串行扩展总线相互兼容,并通过片内的调试电路实现与JTAG接口的连接,在这样的情况下可促进C系统的快速和方便的运行。   3.结论   综上所述,80C51单片机与0C单片机存在着较大的不同之处,两者在使用中有各自的使用特点,都在各自使用领域中扮演着重要的角色。但是在使用过程中0C单片机和80C51单片机的指令系统中两个又完全的相互兼容,这些单片机在科研领域、教育领域上都占据重要的地位。想要保证对80C51单片机与0C单片机研发工作的进一步加深,首先要对比两者之间的共同处和非共同处,研究两者的结构和属性,才能更好的对0C单片机和80C51单片机开发利用,为单片机的发展做出贡献,并不断的促进我国科技的进步和市场经济的发展。   参考文献:   [1]赵不贿,孙立香,刘星桥. CC51单片机的异同点[J]. 国外电子元器件,-35.   [2]叶丽娜. C8051F与80C51系列单片机的不同初始化[J]. 国外电子元器件,-12.   [3]孙立香. Cygnal_CC51单片机的区别[J]. 企业技术开发,+64.
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。关于C中ADC的使用问题 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
关于C中ADC的使用问题
21:20:00  
& & 在下最近刚学习C单片机,对其中的ADC使用有点小疑问,望好心人指点迷津。
& & 在下想问,C8051340中的ADC在启动之后即开始AD转换,但每次转换可有触发方式?例如有些单片机是可以靠定时器的每溢出一次就触发转换一次的,C8051F可以么?还是配置转换速率后,启动ADC之后就自己不停的转换了呢?
& & 不知本人描述的是否清晰,若有觉得本人描述不清楚的,可留言,本人改正。多谢!~
助理工程师
09:33:43  
这个完全可以人为控制。如:AD0EN = 1;意思是ADC开始工作,同理AD0EN = 0;就是停止了。
当然这里还需要注意一下这些标志位,原理与中断等是类似的。
AD0BUSY = 1;& && && && && && && && & // 开始转换
while(!AD0INT);& && && && && & // 等待转换完成
AD0INT = 0;& && && && && && && &// 清除中断标志
/************************************************************************************/
// 引用外部头文件
/************************************************************************************/
#include &ADC.h&
/************************************************************************************/
// 常量及全局变量定义
/************************************************************************************/
#define AIN1 0x04
#define AIN2 0x05
#define GND& && && &0x1f
#define TEMP 0x1E
#define ADC_CLK 1600000
#define T_US 20
#define sysclk
/*************************************************************************************/
//
//& && && && && && && && && && && && && && && && & ADC硬件驱动程序函数定义
//
/*************************************************************************************/
/***********************************************************************************
* Function: ADC_I
*
* Description: ADC初始化函数;
*& && && && &&&
* Input:&&
*
* Output:
*
* Return:
*
* Note:& &
************************************************************************************/
void ADC_Init (void)
{
& && &&&//REF0CN = 0x07;//使用ref电压基准
& && &&&AMX0P = TEMP;//选择TempSensor
& && &&&AMX0N = GND;//选择GND
& && &&&ADC0CF=(sysclk/ADC_CLK)&&3;//ADC转换时钟
& && &&&ADC0CN = 0x00;
/***********************************************************************************
* Function: ADC_E
*
* Description: ADC使能函数, ADC开始工作;
*& && && && &&&
* Input:&&
*
* Output:
*
* Return:
*
* Note:& &
************************************************************************************/
void ADC_Enable(void)
{
& && &&&AD0EN = 1;
}
/***********************************************************************************
* Function: ADC_D
*
* Description: ADC关闭函数, ADC停止工作;
*& && && && &&&
* Input:&&
*
* Output:
*
* Return:
*
* Note:& &
************************************************************************************/
void ADC_Disable(void)
{
& && &&&AD0EN = 0;
}
/***********************************************************************************
* Function: ADC_R
*
* Description: 读取ADC转换数据函数;
*& && && && &&&
* Input:&&
*
* Output: *p, 通道1采样值; *(p+1),通道1采样值; *(p+2),温度通道采样值;
*
* Return:
*
* Note:& &
************************************************************************************/
void ADC_Read(int *p)
{
& && &&&AD0INT = 0;& &&&// 清除中断标志
& && && && && &
& && && && && & AMX0P = AIN1;& && &&&//改变AD通道
& && && && && & Delay_us(T_US);
& && && && && & AD0BUSY = 1;& && &&&//开始转换
& && && && &while(!AD0INT); // 等待转换完成
& && && && && & AD0INT = 0;& &&&// 清除中断标志
& && && && && & *p++ = (unsigned int)ADC0H*256 + ADC0L; // 读取并计算AD值
& && && && && && && && && && && &
& && && && && & AMX0P = AIN2;& && &&&//改变AD通道
& && && && && & Delay_us(T_US);
& && && && && & AD0BUSY = 1;& && &&&//开始转换
& && && && &while(!AD0INT); // 等待转换完成
& && && && && & AD0INT = 0;& &&&// 清除中断标志
& && && && && & *p++ = (unsigned int)ADC0H*256 + ADC0L; // 读取并计算AD值
& && && && && &
& && && && && & AMX0P = TEMP;& && &&&//改变AD通道
& && && && && & Delay_us(T_US);
& && && && && & AD0BUSY = 1;& && &&&//开始转换
& && && && &while(!AD0INT); // 等待转换完成
& && && && && & AD0INT = 0;& &&&// 清除中断标志
& && && && && & *p = (unsigned int)ADC0H*256 + ADC0L; // 读取并计算AD值
}
/***********************************************************************************
* Function: ADC_ISR;
*
* Description: 中断服务响应,完成ADC采样数据存储及通道切换;
*& && && && &&&
* Input:&&
*
* Output:
*
* Return:
*
* Note:& &
************************************************************************************/
void ADC_ISR (void) interrupt 10 using 3 //执行时间: 8uS
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
复制代码
18:30:34  
真的很抱歉,最近一直忙弄其他事情了,没有及时看到您的回复。
我想请问一下,您粘贴的这段代码是自己写的吗?因为我在学习C8051F系列单片机时很想找到一份程序库,我看到您的程序中也有调用头文件的这个过程,想请问一下您用的头文件程序库可否分享一份,或是指点一下哪里可以找得到?我是初学者,自己写的程序会很不规范,很想借鉴一下。如有冒犯之处,敬请原谅。
18:32:04  
这个完全可以人为控制。如:AD0EN = 1;意思是ADC开始工作,同理AD0EN = 0;就是停止了。
当然这里还需要注意 ...
真的很抱歉,最近一直忙弄其他事情了,没有及时看到您的回复。
我想请问一下,您粘贴的这段代码是自己写的吗?因为我在学习C8051F系列单片机时很想找到一份程序库,我看到您的程序中也有调用头文件的这个过程,想请问一下您用的头文件程序库可否分享一份,或是指点一下哪里可以找得到?我是初学者,自己写的程序会很不规范,很想借鉴一下。如有冒犯之处,敬请原谅。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司}

我要回帖

更多关于 差分方程的稳定性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信