基于單片機的問的波形顯示程序
0.png (49.55 KB, 下載次數: 24)
下載附件
2018-4-9 23:51 上傳
單片機源程序如下:
- //==================================================================================================
- // 工程功能:
- // 工程等級:工程級/驅動級
- // 工程硬件: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)
2018-4-9 19:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|