• 大小: 9.73MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-10
  • 语言: 其他
  • 标签: 毕业设计  单片机  

资源简介

本项目采用主要芯片: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


评论

共有 条评论