您现在所在的是:

人机界面

回帖:7个,阅读:658 [上一页] [1] [下一页]
713
604000337
文章数:10
年度积分:50
历史总积分:713
注册时间:2011/3/23
发站内信
发表于:2011/3/24 0:13:51
#0楼
我今年做的毕业设计题目是(基于单片机的触摸屏温度控制系统设计与实现),因为单片机是大四第一学期才学,学得知识有限,现在做这个题目感觉特别吃力,尤其是触摸屏这块不懂,单片机主芯片我选择AT89C51,温度传感器我选的是LM35,A/D转换我用的是ADC0809,大致工作图如下
附件
其中我觉得AT89C51与触摸屏的通信和用PID算法来控制温度设定参数这块比较麻烦具体请看我的任务书,而且我不知道选择哪种触摸屏合适,哪位有爱高手的帮忙解决解决啊,导师说这是她报的题目,但她并不是很懂单片机这块,我现在特别着急,眼看要到4月份了,求求大家指点指点,不胜感激!
附件:
[本地下载]
(任务书)
40348
tigermu 版主
文章数:14903
年度积分:1306
历史总积分:40348
注册时间:2004/8/12
发站内信
2018论坛优秀版主
2018春节活动(二)
2017论坛优秀版主
2017国庆活动(一)
2016论坛优秀版主
2016国庆活动(一)
2015论坛优秀版主
西门子logo体验(三)
英威腾PLC体验(三)
2015春节活动
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2010年度论坛贡献奖
发表于:2011/3/24 9:05:09
#1楼
这种题目实在没啥意思,改成plc加触摸屏加A/D模块加温度传感器得了,本来就是一个毕业课题。如果用单片机就不要用触摸屏了,没必要,直接用个便宜点液晶就好了。造价那么高。
如果想用触摸屏不如用mcgs的,单片机都省了。
清泉石上,明月松间。
713
604000337
文章数:10
年度积分:50
历史总积分:713
注册时间:2011/3/23
发站内信
发表于:2011/3/24 10:33:25
#2楼
谁说不是呢,但是老师给的就是这个题目,做学生的也改变不了什么啊
15079
风之力 版主
文章数:6443
年度积分:50
历史总积分:15079
注册时间:2005/6/20
发站内信
2015论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
发表于:2011/3/24 17:13:42
#3楼
导师说这是她报的题目,但她并不是很懂单片机这块。

那她还做什么导师呢?
Nothing is difficult in the world if you dare to climb.
Come on .Just work hard and enjoy yourself!
713
604000337
文章数:10
年度积分:50
历史总积分:713
注册时间:2011/3/23
发站内信
发表于:2011/3/24 19:10:54
#4楼
这么说吧,我上的是一个2本里面2流的学校,师资力量不咋地,虽然这么说我的母校不好,但这是事实,我是真心来请教的,不是来玩的,有高人能指点指点我最好,谈别的没意思!
6844
asd3971
文章数:1771
年度积分:97
历史总积分:6844
注册时间:2005/6/20
发站内信
发表于:2011/3/24 22:16:05
#5楼
温度传感器换用DS18B20。DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,支持3V~5.5V的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。DS18B20的2脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。
stop
6844
asd3971
文章数:1771
年度积分:97
历史总积分:6844
注册时间:2005/6/20
发站内信
发表于:2011/3/24 22:30:14
#6楼
仅供参考


/*==============================================================================  
在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。
由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,
运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,
根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。
这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。
==============================================================================*/

#include <string.h>
#include <stdio.h>


/*===============================================================================
PID Function        
The PID  function is used in mainly    
control applications. PID Calc performs one iteration of the PID    
algorithm.
While the PID function works, main is just a dummy program showing
a typical usage.

PID功能
在PID功能主要用于控制应用。 PID 计算器执行一个PID的迭代算法。虽然PID功能的工程,
主要只是一个虚拟程序显示一个典型的使用。
================================================================================*/
typedef struct PID {
       double  SetPoint;           //  设定目标 Desired Value
       double  Proportion;         //  比例常数 Proportional Const        
       double  Integral;           //  积分常数 Integral Const        
       double  Derivative;         //  微分常数 Derivative Const
       double  LastError;          //  Error[-1]        
       double  PrevError;          //  Error[-2]        
       double  SumError;           //  Sums of Errors
} PID;


/*================================  PID计算部分===============================*/
double PIDCalc( PID *pp, double NextPoint )
{    
               double  dError,            Error;
       
   Error = pp->SetPoint -  NextPoint;          // 偏差        
   pp->SumError += Error;                      // 积分        
   dError = pp->LastError - pp->PrevError;     // 当前微分        
   pp->PrevError = pp->LastError;        
   pp->LastError = Error;        
   return (pp->Proportion * Error              // 比例项          
                    +   pp->Integral * pp->SumError         // 积分项            
                    +   pp->Derivative * dError             // 微分项        
    );
}

/*=======================  初始化的PID结构  Initialize PID Structure===========================*/
void PIDInit (PID *pp)
{    
       memset ( pp,0,sizeof(PID));
}


/*=======================  主程序  Main Program=======================================*/
double sensor (void)                    // 虚拟传感器功能   Dummy Sensor Function{    return 100.0;}
void actuator(double rDelta)            // 虚拟驱动器功能   Dummy Actuator Function{}
void main(void)
{    
               PID         sPID;                   // PID控制结构   PID Control Structure    
               double      rOut;                   // PID响应(输出) PID Response (Output)    
               double      rIn;                    // PID反馈(输入) PID Feedback (Input)
   PIDInit ( &sPID );                  //  初始化结构  Initialize Structure    
   sPID.Proportion = 0.5;              //  设置PID系数  Set PID Coefficients    
   sPID.Integral   = 0.5;    
   sPID.Derivative = 0.0;    
   sPID.SetPoint   = 100.0;            // 设置PID设定  Set PID Setpoint
   for (;;)
   {                                   // 模拟最多的PID处理  Mock Up of PID Processing
       rIn = sensor ();                // 读取输入  Read Input        
       rOut = PIDCalc ( &sPID,rIn );   // 执行的PID迭代 Perform PID Interation        
       actuator ( rOut );              // 所需的更改的影响 Effect Needed Changes
stop
713
604000337
文章数:10
年度积分:50
历史总积分:713
注册时间:2011/3/23
发站内信
发表于:2011/3/25 22:38:41
#7楼
现在才看到  非常感谢您的解答!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005