找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1877|回复: 0
打印 上一主题 下一主题
收起左侧

温度检测TFT(ILI9328)波形显示单片机源码

[复制链接]
跳转到指定楼层
楼主
基于单片机的问的波形显示程序

单片机源程序如下:
  1. //==================================================================================================
  2. //  工程功能:
  3. //  工程等级:工程级/驱动级
  4. //  工程硬件:STC12C5A60S2
  5. //  工程软件:Keil C51 uVision4
  6. //  工程作者:智心科技(ZhiXinKeJi)
  7. //  工程创建:10-31
  8. //  工程版次:1
  9. //  工程修改:10-31
  10. //  修改内容:
  11. //==================================================================================================

  12. //==============================包含的头文件========================================================
  13. #include"STC12C5A60S2.H"
  14. #include"TFT(ILI9328).H"                    // 包含外设头文件,TFT-液晶显示屏
  15. #include"DS18B20.H"                         // 包含外设头文件,DS18B20-温度传感器
  16. #include"DELAY.H"                           // 包含应用头文件,DELAY-延时

  17. //==============================定义全局变量=======================================================
  18. #define PI   3.1415                                                        // 宏定义数学中π值

  19. int Current_Temperature=0;                                        // 当前温度
  20. int Frist_Temperature=0;
  21. unsigned int xdata Temperature_Record[200]=0;

  22. unsigned char Count=0;                                                // 温度采集次数


  23. //==================================================================================================
  24. //  实现功能:主函数
  25. //  函数说明:
  26. //  函数备注:
  27. //==================================================================================================
  28. void main(void)
  29. {        
  30.         unsigned char i;
  31.        
  32. //        TIME_Cnfg();                                                        // 配置 TIME-定时器
  33.        
  34.         TFT_Init();                                                                // 初始化 TFT-液晶显示屏
  35.         DS18B20_Init();                                                        // 初始化 DS18B20-温度传感器

  36.         TFT_ShowArea(0,0,240,320,TFT_White);         // 清屏操作
  37.        
  38.         // 绘制坐标系统
  39.         TFT_DrawLine(39,40,39,300,TFT_Black);        // 中间起点坐标(40,170)

  40.         // 数字显示温度
  41.         // 显示内容"温度:+XX.X℃"
  42.         TFT_ShowStrg_16x16(72,10,"温度:+XX.X℃",TFT_Black,TFT_White);

  43.         // DS18B20 第一次采集温度,后面波形以该第一次为基础点
  44.         DS18B20_Gets();
  45.         Frist_Temperature=DS18B20_INFO.DS18B20_Temp*10;
  46.                                        
  47.         while(1)
  48.         {       
  49.                 // DS18B20 采集温度
  50.                 DS18B20_Gets();
  51.                 Current_Temperature=DS18B20_INFO.DS18B20_Temp*10;
  52.                
  53.                 // 数字显示温度
  54.                 TFT_ShowChar_08x16(120,10,Current_Temperature/100%10+0x30,TFT_Black,TFT_White);        // 显示十位
  55.                 TFT_ShowChar_08x16(128,10,Current_Temperature/10 %10+0x30,TFT_Black,TFT_White);        // 显示个位
  56.                 TFT_ShowChar_08x16(144,10,Current_Temperature/1  %10+0x30,TFT_Black,TFT_White);        // 显示分位

  57.                 // 记录温度数据
  58.                 Temperature_Record[Count]=Current_Temperature;
  59.        


  60.                 // 绘制波形
  61.                 for(i=1;i<199;i++)
  62.                 {
  63.                         // 如果该点数据没有,则不执行以下
  64.                         if(Temperature_Record[i]!=0)
  65.                         {
  66.                                 // 高温 红色
  67.                                 if(Temperature_Record[i]>Frist_Temperature)
  68.                                 {
  69.                                         TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
  70.                                                      40+i  ,170+(Frist_Temperature-Temperature_Record[i  ])*2,
  71.                                                                  TFT_Red);
  72.                                 }
  73.                                 // 低温 绿色
  74.                                 else
  75.                                 {
  76.                                         TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
  77.                                                      40+i  ,170+(Frist_Temperature-Temperature_Record[i  ])*2,
  78.                                                                  TFT_Green);
  79.                                 }
  80.                         }       

  81.                 }

  82.                 DELAY_nMS(500);

  83.                 // 清除波形
  84.                 for(i=1;i<199;i++)
  85.                 {
  86.                         // 如果该点数据没有,则不执行以下
  87.                         if(Temperature_Record[i]!=0)
  88.                         {
  89.                         TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
  90.                                      40+i  ,170+(Frist_Temperature-Temperature_Record[i  ])*2,
  91.                                                  TFT_White);
  92.                         }       

  93.                 }

  94.                 // 计数
  95.                 Count++;
  96.                 if(Count>199)
  97.                 {
  98.                         Count=199;
  99.                         // 波形移动        ,相当于延迟
  100.                         for(i=0;i<199;i++)
  101.                         {
  102.                                 Temperature_Record[i]=Temperature_Record[i+1];
  103.                         }
  104.                 }




  105.         }
  106. }
复制代码

所有资料51hei提供下载:
2016-09-25 温度波形显示.rar (91.24 KB, 下载次数: 32)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表