|
基于單片機(jī)的問(wèn)的波形顯示程序
0.png (49.55 KB, 下載次數(shù): 24)
下載附件
2018-4-9 23:51 上傳
單片機(jī)源程序如下:
- //==================================================================================================
- // 工程功能:
- // 工程等級(jí):工程級(jí)/驅(qū)動(dòng)級(jí)
- // 工程硬件:STC12C5A60S2
- // 工程軟件:Keil C51 uVision4
- // 工程作者:智心科技(ZhiXinKeJi)
- // 工程創(chuàng)建:10-31
- // 工程版次:1
- // 工程修改:10-31
- // 修改內(nèi)容:
- //==================================================================================================
- //==============================包含的頭文件========================================================
- #include"STC12C5A60S2.H"
- #include"TFT(ILI9328).H" // 包含外設(shè)頭文件,TFT-液晶顯示屏
- #include"DS18B20.H" // 包含外設(shè)頭文件,DS18B20-溫度傳感器
- #include"DELAY.H" // 包含應(yīng)用頭文件,DELAY-延時(shí)
- //==============================定義全局變量=======================================================
- #define PI 3.1415 // 宏定義數(shù)學(xué)中π值
- int Current_Temperature=0; // 當(dāng)前溫度
- int Frist_Temperature=0;
- unsigned int xdata Temperature_Record[200]=0;
- unsigned char Count=0; // 溫度采集次數(shù)
- //==================================================================================================
- // 實(shí)現(xiàn)功能:主函數(shù)
- // 函數(shù)說(shuō)明:
- // 函數(shù)備注:
- //==================================================================================================
- void main(void)
- {
- unsigned char i;
-
- // TIME_Cnfg(); // 配置 TIME-定時(shí)器
-
- TFT_Init(); // 初始化 TFT-液晶顯示屏
- DS18B20_Init(); // 初始化 DS18B20-溫度傳感器
- TFT_ShowArea(0,0,240,320,TFT_White); // 清屏操作
-
- // 繪制坐標(biāo)系統(tǒng)
- TFT_DrawLine(39,40,39,300,TFT_Black); // 中間起點(diǎn)坐標(biāo)(40,170)
- // 數(shù)字顯示溫度
- // 顯示內(nèi)容"溫度:+XX.X℃"
- TFT_ShowStrg_16x16(72,10,"溫度:+XX.X℃",TFT_Black,TFT_White);
- // DS18B20 第一次采集溫度,后面波形以該第一次為基礎(chǔ)點(diǎn)
- DS18B20_Gets();
- Frist_Temperature=DS18B20_INFO.DS18B20_Temp*10;
-
- while(1)
- {
- // DS18B20 采集溫度
- DS18B20_Gets();
- Current_Temperature=DS18B20_INFO.DS18B20_Temp*10;
-
- // 數(shù)字顯示溫度
- 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); // 顯示個(gè)位
- TFT_ShowChar_08x16(144,10,Current_Temperature/1 %10+0x30,TFT_Black,TFT_White); // 顯示分位
- // 記錄溫度數(shù)據(jù)
- Temperature_Record[Count]=Current_Temperature;
-
- // 繪制波形
- for(i=1;i<199;i++)
- {
- // 如果該點(diǎn)數(shù)據(jù)沒(méi)有,則不執(zhí)行以下
- 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++)
- {
- // 如果該點(diǎn)數(shù)據(jù)沒(méi)有,則不執(zhí)行以下
- 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);
- }
- }
- // 計(jì)數(shù)
- Count++;
- if(Count>199)
- {
- Count=199;
- // 波形移動(dòng) ,相當(dāng)于延遲
- for(i=0;i<199;i++)
- {
- Temperature_Record[i]=Temperature_Record[i+1];
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
2016-09-25 溫度波形顯示.rar
(91.24 KB, 下載次數(shù): 32)
2018-4-9 19:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|