資源簡介
本項目采用主要芯片:STC12C5A60S2、LCD1602、MLX90614;
本資料是我今年做的項目,已經完美交貨,現在把全部設計資料共享給大家
壓縮包里包含該項目的完整原理圖、PCB圖、程序、實物圖等。
硬件設計部分使用Protel99 SE或Altium Designer Release 10完成,軟件設計部分采用Keil 4完成。
可供需要的人參考。
一、畢業設計(論文)的內容
運用所學的數字邏輯電路、模擬電子電路、單片機、測控電路等的基本知識,設計并制作一個非接觸式紅外線測溫儀。該系統以單片機為核心,外接其他外圍電路組成。
二、畢業設計(論文)的要求與數據(與上述文字空1~行)
要求所設計的系統具有下面功能:
1. 非接觸式溫度測量,溫度測量范圍至少包括-20℃---150℃
2. 溫度顯示,分辨率0.1℃
3. 可干電池供電,電量低時可顯示或報警提示
4.可擴展(如精確測量目標距離等)。

代碼片段和文件信息
#include“12C5A60S2.h“?
#include“intrins.h“ //?需要用_nop_()函數來延時?
#include?“global.h“
#include?“U.h“
//************************************?
#define??uint??unsigned?int?
#define??uchar?unsigned?char?
#define??Nack_counter??10?
#define?BYTE?unsigned?char? ?//宏定義
#define?WORD?unsigned?int
//**************端口定義**************?
//LCD控制線接口?
uchar?flag1;
uchar?code?tab1[]?=?{“Temp?is:??????“}; //?11?
uchar?code?tab2[]?=?{“Low?battery???“}; //?11
uchar?num;
uint??temph?templ;
uint??T;
sbit?BUSY?=?ACC^7; //?忙標志位(非管腳)
sbit??LCDRS=P1^1;?
sbit??LCDRW=P1^2;?
sbit??LCDE=P1^3;?
sbit??speak?=?P2^2;
//mlx90614端口定義?
sbit??SCL=P2^0;//時鐘線?
sbit??SDA=P2^1;//數據線?
//************數據定義****************?
bdata?uchar?flag;???????????????????//可位尋址數據?
sbit??bit_out=flag^7;?
sbit??bit_in=flag^0;?
uchar?DataHDataLPecreg;?
//************函數聲明*****************************************?
void???start_bit();?????????????????//MLX90614發起始位子程序?
void???stop_bit();??????????????????//MLX90614發結束位子程序?
uchar??rx_byte(void);???????????????//MLX90614接收字節子程序?
void???send_bit(void);??????????????//MLX90614發送位子程序?
void???tx_byte(uchar?dat_byte);?????//MLX90614接收字節子程序?
void???receive_bit(void);???????????//MLX90614接收位子程序?
void???delay(uint?N);???????????????//延時程序?
uint???memread(void);???????????????//讀溫度數據?
void???LCMInit(void);??????????????//LCD?初始化子程序?
BYTE?Wait();??????????//LCD判斷忙子程序?
void?WriteLCD(BYTE?BYTE);??? ???//LCD寫命令子程序?
void???dis_dat_wrt(uchar?dat);??????//LCD寫數據子程序?
void???display(uint?Tem);???????????//顯示子程序?
void???displaytitle(); //顯示標題
void???displaylow();
void???Warn(); //判斷是否需要報警
void???Delayms(uint?z); ???? //延時若干ms
//*************主函數*******************************************?
void?main()?
{?
uint?Tem;
temph?=?3700; //?最高溫度
speak?=?1; //?蜂鳴器?0叫?1?不叫
//初始化MLX90614?
SCL=1;SDA=1;_nop_();?
_nop_();_nop_();_nop_();?
SCL=1;?
delay(1000);?
SCL=1;?
//初始化液晶?
LCMInit();?
//顯示文字?
U_Init();?
while(1)?
{?
U();?//?測10000次AD?取平均值
// WriteLCD(0?0xc5);
// WriteLCD(1?adc_cita?%?10000?/?1000?+?0x30);
// WriteLCD(1?adc_cita?%?1000?/?100?+?0x30);
// WriteLCD(1?adc_cita?%?100?/?10?+?0x30);
// WriteLCD(1?adc_cita?%?10?+?0x30);
if?(adc_cita?550)
{
displaytitle();
Tem=memread(); //?讀取溫度
display(Tem); //?顯示溫度
Warn(); //?判斷是否需要報警
}
else?if?(adc_cita?580)?
{
displaylow();
}
Delayms(200);? //?延時200mS
}?
}?
//*********輸入轉換并顯示*********?
void?display(uint?Tem)?
{??
uchar?temp[6]?i;
T=Tem*2;???
if(T>=27315)? //?顯示正溫度
{?
/*
由于傳感器采用17位AD?
所以可以精確到0.01°C
詳見中文資料?P?2
*/
T=T-27315; //?溫度轉換?開爾文?->?攝氏度?中文資料?P26?
T+=50;
temp[0]?=?T?/?10000?+?0x30; //?溫度百位
if?(temp[0]?==?0x30) temp[0]?=?0x20; //?如果百位為0?不顯示百位
temp[1]?=?T?%?10000?/?1000?+?0x30; //?溫度十位
temp[2]?=?T?%?10000?%?1000?/?100?+?0x30;//?溫度個位
temp[3]?=?0x2e; //?小數點
temp[4]?=?T?%?10000?%?1000?%?100?/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????3050222??2013-05-22?16:10??非接觸式數字體溫計的設計\IMG_0526.JPG
?????文件????2037337??2013-05-22?16:11??非接觸式數字體溫計的設計\IMG_0527.JPG
?????文件????2592986??2013-05-22?16:11??非接觸式數字體溫計的設計\IMG_0528.JPG
?????文件????2433434??2013-05-22?16:11??非接觸式數字體溫計的設計\IMG_0529.JPG
?????文件?????376832??2013-05-21?10:13??非接觸式數字體溫計的設計\PCB\非接觸式數字體溫計.Ddb
?????文件??????17439??2011-04-21?07:56??非接觸式數字體溫計的設計\Program\12C5A60S2.H
?????文件???????1602??2013-05-22?12:39??非接觸式數字體溫計的設計\Program\ADC.H
?????文件????????940??2012-03-15?20:30??非接觸式數字體溫計的設計\Program\global.h
?????文件????????702??2013-05-22?12:53??非接觸式數字體溫計的設計\Program\U.h
?????文件??????20694??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計
?????文件???????8244??2013-06-01?10:06??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.c
?????文件???????5090??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.hex
?????文件?????????68??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.lnp
?????文件??????16983??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.LST
?????文件??????25829??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.M51
?????文件??????24279??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.OBJ
?????文件????????664??2013-06-01?10:07??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.plg
?????文件??????57954??2013-05-28?11:28??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.uvopt
?????文件??????13306??2013-05-22?16:38??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計.uvproj
?????文件??????57021??2013-05-22?16:38??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計_uvopt.bak
?????文件??????????0??2013-05-22?15:37??非接觸式數字體溫計的設計\Program\非接觸式數字體溫計_uvproj.bak
?????文件??????51712??2013-08-18?21:49??非接觸式數字體溫計的設計\非接觸式紅外線測溫儀.doc
?????目錄??????????0??2013-08-18?21:44??非接觸式數字體溫計的設計\PCB
?????目錄??????????0??2013-08-18?21:44??非接觸式數字體溫計的設計\Program
?????目錄??????????0??2013-05-21?10:27??非接觸式數字體溫計的設計\相關資料
?????目錄??????????0??2013-08-18?22:04??非接觸式數字體溫計的設計
-----------?---------??----------?-----??----
?????????????10793338????????????????????26
- 上一篇:易語言六種遠控源碼
- 下一篇:東北大學操作系統復習題
評論
共有 條評論