基于单片机的问的波形显示程序
单片机源程序如下:
- //==================================================================================================
- // 工程功能:
- // 工程等级:工程级/驱动级
- // 工程硬件:STC12C5A60S2
- // 工程软件:Keil C51 uVision4
- // 工程作者:智心科技(ZhiXinKeJi)
- // 工程创建:10-31
- // 工程版次:1
- // 工程修改:10-31
- // 修改内容:
- //==================================================================================================
- //==============================包含的头文件========================================================
- #include"STC12C5A60S2.H"
- #include"TFT(ILI9328).H" // 包含外设头文件,TFT-液晶显示屏
- #include"DS18B20.H" // 包含外设头文件,DS18B20-温度传感器
- #include"DELAY.H" // 包含应用头文件,DELAY-延时
- //==============================定义全局变量=======================================================
- #define PI 3.1415 // 宏定义数学中π值
- int Current_Temperature=0; // 当前温度
- int Frist_Temperature=0;
- unsigned int xdata Temperature_Record[200]=0;
- unsigned char Count=0; // 温度采集次数
- //==================================================================================================
- // 实现功能:主函数
- // 函数说明:
- // 函数备注:
- //==================================================================================================
- void main(void)
- {
- unsigned char i;
-
- // TIME_Cnfg(); // 配置 TIME-定时器
-
- TFT_Init(); // 初始化 TFT-液晶显示屏
- DS18B20_Init(); // 初始化 DS18B20-温度传感器
- TFT_ShowArea(0,0,240,320,TFT_White); // 清屏操作
-
- // 绘制坐标系统
- TFT_DrawLine(39,40,39,300,TFT_Black); // 中间起点坐标(40,170)
- // 数字显示温度
- // 显示内容"温度:+XX.X℃"
- TFT_ShowStrg_16x16(72,10,"温度:+XX.X℃",TFT_Black,TFT_White);
- // DS18B20 第一次采集温度,后面波形以该第一次为基础点
- DS18B20_Gets();
- Frist_Temperature=DS18B20_INFO.DS18B20_Temp*10;
-
- while(1)
- {
- // DS18B20 采集温度
- DS18B20_Gets();
- Current_Temperature=DS18B20_INFO.DS18B20_Temp*10;
-
- // 数字显示温度
- TFT_ShowChar_08x16(120,10,Current_Temperature/100%10+0x30,TFT_Black,TFT_White); // 显示十位
- TFT_ShowChar_08x16(128,10,Current_Temperature/10 %10+0x30,TFT_Black,TFT_White); // 显示个位
- TFT_ShowChar_08x16(144,10,Current_Temperature/1 %10+0x30,TFT_Black,TFT_White); // 显示分位
- // 记录温度数据
- Temperature_Record[Count]=Current_Temperature;
-
- // 绘制波形
- for(i=1;i<199;i++)
- {
- // 如果该点数据没有,则不执行以下
- if(Temperature_Record[i]!=0)
- {
- // 高温 红色
- if(Temperature_Record[i]>Frist_Temperature)
- {
- TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
- 40+i ,170+(Frist_Temperature-Temperature_Record[i ])*2,
- TFT_Red);
- }
- // 低温 绿色
- else
- {
- TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
- 40+i ,170+(Frist_Temperature-Temperature_Record[i ])*2,
- TFT_Green);
- }
- }
- }
- DELAY_nMS(500);
- // 清除波形
- for(i=1;i<199;i++)
- {
- // 如果该点数据没有,则不执行以下
- if(Temperature_Record[i]!=0)
- {
- TFT_DrawLine(40+i-1,170+(Frist_Temperature-Temperature_Record[i-1])*2,
- 40+i ,170+(Frist_Temperature-Temperature_Record[i ])*2,
- TFT_White);
- }
- }
- // 计数
- Count++;
- if(Count>199)
- {
- Count=199;
- // 波形移动 ,相当于延迟
- for(i=0;i<199;i++)
- {
- Temperature_Record[i]=Temperature_Record[i+1];
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
2016-09-25 温度波形显示.rar
(91.24 KB, 下载次数: 32)
|