资源简介

这笔​者​的​一​个​课​程​设​计​,​该​作​品​是​基​于​5​1​单​片​机​的​P​I​D​调​温​系​统​,​使​用​热​得​快​作​为​加​热​器​,​采​用​防​水​1​8​B​2​0​作​为​水​温​检​测​器​,​移​植​了​P​I​D​算​法​。压缩包是完整的工程,包括源代码、论文、原理图(AD14)。

资源截图

代码片段和文件信息

#include“lcd.h“
/*******************************************************************************
* 函数名         : Delay1us
* 函数功能    : 延时函数,延时1us
* 输入           : a
* 输出           : 无
*******************************************************************************/
float realtmp=0;

void Delay1us(unsigned int a)
{
unsigned int bc;
for(c=a;c>0;c--)
for(b=110;b>0;b--);
}
/*******************************************************************************
* 函数名         : LcdWriteCom
* 函数功能    : 向LCD写入一个字节的命令
* 输入           : com
* 输出           : 无
*******************************************************************************/

void LcdWriteCom(unsigned char com)   //写入命令
{
RS=0;
RW=0;
GPIO_LCD=com;
Delay1us(10);
LCDE=1;
Delay1us(10);
LCDE=0;
}
/*******************************************************************************
* 函数名         : LcdWriteData
* 函数功能    : 向LCD写入一个字节的数据
* 输入           : dat
* 输出           : 无
*******************************************************************************/    
   
void LcdWriteData(unsigned char dat) //写入数据
{
RS=1;
RW=0;
GPIO_LCD=dat;
Delay1us(10);
LCDE=1;
Delay1us(10);
LCDE=0;
}
/*******************************************************************************
* 函数名         : LcdInit()
* 函数功能    : 初始化LCD屏
* 输入           : 无
* 输出           : 无
*******************************************************************************/    

void LcdInit()   //LCD初始化子程序
{
  LcdWriteCom(0x38);  //开显示
LcdWriteCom(0x0c);  //开显示不显示光标
LcdWriteCom(0x06);  //写一个指针加1
LcdWriteCom(0x01);  //清屏
LcdWriteCom(0x80);  //设置数据指针起点
}

void LcdDisplay(int temp)   //lcd显示
{
    
  unsigned char datas[] = {0 0 0 0 0}; //定义数组
float tp;
 //初始化LCD
if(temp< 0) //当温度值为负数
  {
   LcdWriteCom(0x80); //写地址 80表示初始地址
    LcdWriteData(‘-‘);   //显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算加上0.5,还是在小数点后面。
 
  }
  else
  {
   LcdWriteCom(0x80); //写地址 80表示初始地址
    LcdWriteData(‘+‘);  //显示正
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
//算加上0.5,还是在小数点后面。
realtmp=(float)temp/100;
  }
datas[0] = temp / 10000;
  datas[1] = temp % 10000 / 1000;
  datas[2] = temp % 1000 / 100;
  datas[3] = temp % 100 / 10;
  datas[4] = temp % 10;
 
LcdWriteCom(0x82);   //写地址 80表示初始地址
  LcdWriteData(‘0‘+datas[0]); //百位 


  LcdWriteCom(0x83);  //写地址 80表示初始地址
  LcdWriteData(‘0‘+datas[1]); //十位

LcdWriteCom(0x84); //写地址 80表示初始地址
  LcdWriteData(‘0‘+datas[2]); //个位 

LcdWriteCom(0x85); //写地址 80表示初始地址
  LcdWriteData(‘.‘);  //显示 ‘.’

LcdWriteCom(0x86);  //写地址 80表示初始地址
  LcdWriteData(‘0‘+datas[3]); //显示小数点  


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        402  2016-01-07 02:30  pid-temper\code\header\lcd.h

     文件        687  2016-01-07 02:13  pid-temper\code\header\PID.H

     文件        314  2016-01-06 23:24  pid-temper\code\header\temp.h

     文件      11458  2016-01-07 02:41  pid-temper\code\output\lcd.obj

     文件       9204  2016-01-07 02:41  pid-temper\code\output\main.obj

     文件      10786  2016-01-07 02:41  pid-temper\code\output\pid.obj

     文件      33876  2016-01-07 02:41  pid-temper\code\output\pro

     文件      11866  2016-01-07 02:41  pid-temper\code\output\pro.hex

     文件        155  2016-01-07 02:41  pid-temper\code\output\pro.lnp

     文件        185  2016-01-08 12:00  pid-temper\code\output\pro.plg

     文件        789  2016-01-07 02:41  pid-temper\code\output\STARTUP.obj

     文件       5751  2016-01-07 02:41  pid-temper\code\output\temp.obj

     文件       6027  2016-01-07 02:31  pid-temper\code\prj\lcd.c

     文件      11430  2016-01-07 02:41  pid-temper\code\prj\lcd.LST

     文件      11422  2016-01-07 02:41  pid-temper\code\prj\lcd.OBJ

     文件       3130  2016-01-08 02:43  pid-temper\code\prj\main.c

     文件       7488  2016-01-07 02:41  pid-temper\code\prj\main.LST

     文件       9167  2016-01-07 02:41  pid-temper\code\prj\main.OBJ

     文件       2870  2016-01-07 02:39  pid-temper\code\prj\pid.c

     文件       5975  2016-01-07 02:41  pid-temper\code\prj\pid.LST

     文件      10750  2016-01-07 02:41  pid-temper\code\prj\pid.OBJ

     文件      33610  2016-01-07 02:41  pid-temper\code\prj\pro

     文件      11866  2016-01-07 02:41  pid-temper\code\prj\pro.hex

     文件         77  2016-01-07 02:41  pid-temper\code\prj\pro.lnp

     文件      32607  2016-01-07 02:41  pid-temper\code\prj\pro.M51

     文件        917  2016-01-07 02:44  pid-temper\code\prj\pro.plg

     文件      72899  2016-01-06 02:45  pid-temper\code\prj\pro.uvgui.Administrator

     文件      72899  2016-01-06 02:00  pid-temper\code\prj\pro.uvgui_Administrator.bak

    .......     58714  2016-01-08 12:04  pid-temper\code\prj\pro.uvopt

    .......     13893  2016-01-07 02:44  pid-temper\code\prj\pro.uvproj

............此处省略46个文件信息

评论

共有 条评论