IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于51单片机的温度显示报警系统课设论文 -> 正文阅读

[嵌入式]基于51单片机的温度显示报警系统课设论文

在这里插入图片描述
在这里插入图片描述

#include<reg52.h>		//头文件
#include<intrins.h>		//包含NOP空操作指令的头文件
sbit rs	= P2^6;			//数据命令选择端
sbit rw = P2^5;			//读写选择端(H/L?
sbit ep = P2^7;			//使能信号
sbit DQ = P3^7;			//温度数据信号
sbit HT_motor = P1^0;	//电机驱动变量
sbit LT_motor = P1^1;	//电机驱动变量
sbit H_alarm = P1^2;	//高温报警提示
sbit normal = P1^3;		//正常温度提示
sbit L_alarm = P1^4;	//低温报警提示
sbit key_add1 = P2^0;	//温度设置加1
sbit key_add10= P2^1;	//温度设置加10
sbit key_dec1 = P2^2;	//温度设置减1
sbit key_dec10= P2^3;	//温度设置减10
float temper;			//DS18B20温度数据
#define delay1us _nop_(); //1微秒延时
#define delay5us {_nop_();_nop_();_nop_();_nop_();_nop_();} //5微秒延时
#define delay15us {delay5us;delay5us;delay5us;}				//15微秒延时
#define delay45us {delay15us;delay15us;delay15us;}			//45微秒延时
#define delay60us {delay15us;delay15us;delay15us;delay15us;}//60微秒延时
#define delay480us {delay60us;delay60us;delay60us;delay60us;delay60us;delay60us;delay60us;delay60us;}//480微秒延时
unsigned char display1[10]={"0123456789"};	 //液晶字符显示
unsigned char display2[2]={'.','-'};		 //显示符号
unsigned char display3[20]={"Current_Wendu"};	 //显示符号
unsigned char display4[20]={"set_lowerwendu"};
unsigned char display5[20]={"set_upperwendu"};
unsigned int tempreture_nuber,tempreture_dot;//温度存放变量
unsigned char th_byte;						 //变量
unsigned char tl_byte;					 	 //变量
unsigned int tempreture_int;				 //变量
unsigned int upper_temperature=40;
unsigned int lower_temperature=10;
unsigned int set_flag = 0;

/**************************************************************
				[延时子程序delayms()]
***************************************************************/

void delay(unsigned int ms_count)
{
	unsigned int k;
	while(ms_count--)
	{
		for(k=0;k<250;k++)					//约一毫秒
		{
			_nop_();_nop_();_nop_();_nop_();
		}
	}
}
/****************************************************************
		           外部中断初始化子程序
*****************************************************************/
void waibuzhongduan_init()
{
	EA = 1;		//开总中断
	EX0=1;		//允许外部中断0中断
	IT0=1;		//下降沿触发中断
	PX0=1;		//外部中断0中断优先级高
}
/*********************LCD_1602的模块化程序*************************/
/*		液晶1602用来显示读取的温度值,设定的温度值,
				 rs	与 P2、6口连接;		
				 rw 与 P2、5口连接;
				 ep 与 P2、7口连接;                         	**/
/*******************LCD_1602的模块化程序**************************/
bit lcd1602_busytest()	//检查忙碌标志位是否忙碌
{
	bit result;
	rs = 0;			//rs为低电平,rw为高电平时,为读指令
	rw = 1;
	ep = 1;			//ep使能,高电平有效,开始读指令
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result=(P0&0x80);	//忙碌标志位在高位,也就是P0.7
	ep = 0;
	return result;
}
/**************************************************************
				液晶写数据地址操作命令子函数
***************************************************************/
void lcd1602_write_comdand(unsigned char write_data)
{
	while(lcd1602_busytest());
	rs = 0;				//rs与rw都为低电平时写入指令
	rw = 0;
	ep = 0;  			//写指令,使能是下降沿有效
	_nop_();
	_nop_();
	P0 = write_data;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;

}
/**************************************************************
				液晶写地址操作命令子函数
***************************************************************/

void lcd1602_write_address(unsigned char address_data)
{
	lcd1602_write_comdand(address_data|0x80); //数据显示的位置
}

/**************************************************************
			  写入数据显示到lcd的程序
***************************************************************/
void lcd1602_write_data(unsigned char display_data)   //写入数据显示到lcd的
{
	while(lcd1602_busytest());
	rs = 1;			//rs为高电平,rw为低电平时,写数据
	rw = 0;
	ep = 0;			//使能,下降沿有效
	P0 = display_data;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;
}

/**************************************************************
			  液晶的初始化程序
***************************************************************/
void lcd1602_init()
{
	delay(15);
	lcd1602_write_comdand(0x38);//显示模式设置;16*2显示,5*7点阵,8位数据接口
	delay(5);
	lcd1602_write_comdand(0x38);
	delay(5);
	lcd1602_write_comdand(0x38);
	delay(5);
	lcd1602_write_comdand(0x0c);//显示模式设置:显示开,有光标,光标闪烁
	delay(5);
	lcd1602_write_comdand(0x06);//显示模式设置:光标右移动,字符不移动
	delay(5);
	lcd1602_write_comdand(0x38);//清屏指令,将以前的指令全部清除
	delay(5);
}

链接:https://pan.baidu.com/s/1-NLch_3mhFdbYPBocw_XOw
提取码:om3g

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:27:52  更:2021-07-16 11:29:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/16 18:32:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码