349 基于单片机压力传感器、热电偶检测系统设计【毕设课设】

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1V2qSieymT4937UdFhVZfmA?pwd=8888

部分代码展示

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char

sbit RS = P2^0;
sbit RW = P2^1;
sbit E  = P2^2;

sbit AD0832_CS   = P2^3	;   //片选信号
sbit AD0832_CLK  = P2^4;    //时钟接口
sbit AD0832_DI   = P2^5;    //数据接口
sbit distance_check = P2^6; //热释电模拟接口
sbit BELL = P3^7;           //无源蜂鸣器控制IO

sbit LED = P2^7;            //定时器指示灯

uchar num=0,Miao=0,Fen=0,Check_falge=0;

uchar Display_Buffer[] = "0.00V";
uchar code Line1[] = "PRE:";
uchar Line2[] = "T: 00:00";
uchar Line3[] = "   0.00V";

void DelayMS(uint ms)
{
 	uchar i;
	while(ms--)
	{
	 	for(i=0;i<120;i++);
	}
}

void  delay4us()
{
  _nop_();
	_nop_();
	_nop_();
	_nop_();
}

bit LCD_Busy_Check()
{
 	bit result;
	RS = 0;
	RW = 1;
	E  = 1;
  delay4us();
	result = (bit)(P0&0x80);
	E  = 0;
	return result;
}

void LCD_Write_Command(uchar cmd)
{
 	while(LCD_Busy_Check());
	RS = 0;
	RW = 0;
	E  = 0;
	_nop_();
	_nop_();
	P0 = cmd;
	delay4us();	
	E = 1;
	delay4us();
	E = 0;
}

void Set_Disp_Pos(uchar pos)
{
 	LCD_Write_Command(pos | 0x80);
}

void LCD_Write_Data(uchar dat)
{
 	while(LCD_Busy_Check());
	RS = 1;
	RW = 0;
	E  = 0;
	P0 = dat;
	delay4us();
	E = 1;
	delay4us();
	E = 0;
}

void LCD_Initialise()
{
	LCD_Write_Command(0x38); DelayMS(1);
	LCD_Write_Command(0x0c); DelayMS(1);
	LCD_Write_Command(0x06); DelayMS(1);
	LCD_Write_Command(0x01); DelayMS(1);
}

uchar GetAD0832(bit Channel)
{
  	uchar  i=0 , Data1 =0 , Data2 = 0 ;
  	AD0832_CLK = 0 ;         //时钟置低平//时钟12Mhz, 整个转换时间为224us  //使用芯片准备(参考PDF时序图) 
  	AD0832_DI  = 1 ;         //开始信号为高电平
  	AD0832_CS  = 0 ;         //片选信号置低,启动AD转换芯片        
  	AD0832_CLK = 1 ;         //输入开始信号(构成一个正脉冲),时钟上升沿,输入开始信号
  	AD0832_CLK = 0 ;         //时钟下降沿
  	//模拟信号输入模式选择(1:单模信号,0:双模差分信号)
  	AD0832_DI  = 1 ; 
  	AD0832_CLK = 1 ;         //时钟上升沿,输入开始信号
  	AD0832_CLK = 0 ;         //时钟下降沿
  	//模拟信号输入通道选择(1:通道CH1,0:通道CH0)
  	AD0832_DI  = Channel ;          //选择通道0
  	AD0832_CLK = 1 ;         //时钟上升沿,输入开始信号
  	AD0832_CLK = 0 ;         //时钟下降沿
  
  	AD0832_DI  = 1 ;     //数据线置高,准备接收数据
	for(i=0;i<8;i++)	 //从高位移入数据
 	{
    	AD0832_CLK = 1 ;      
    	AD0832_CLK = 0 ;        //时钟下降沿,AD0832输出数据,高位(MSB)先
       	Data1 = Data1<<1;				//数据左移位,补0
  		if(AD0832_DI ==1) 
	    {Data1 = Data1 | 0x01;}	           //如果数据为"1",移入1,
 	}     				          //如果数据为"0",移入0,
    for(i=0;i<8;i++)	          //从低位移入数据
	{  
	   Data2 = Data2>>1;	      //数据左移位,补0
	   if(AD0832_DI ==1) 
	   {Data2 = Data2 | 0x80;}	  //如果数据为"1",移入1如果数据为"0",移入0,
       AD0832_CLK = 1 ;      
	   AD0832_CLK = 0 ;           //时钟下降沿,AD0832输出数据,高位(MSB)先
	}
 	//数据线置高,释放总线,完成一次转换
  	AD0832_CLK = 1 ;        
  	AD0832_DI  = 1 ;         
  	AD0832_CS  = 1 ;       
     	  
 	if(Data1==Data2)     //输出
 	{  
	   return Data2;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值