毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计

基于STM32的语音IC卡停车管理系统

  • 1、快速完成毕设的方法
  • 2、项目资料
    • 2.1 系统框架
    • 2.2 系统功能
  • 3、部分电路设计
    • 3.1 STC89C52单片机最小系统电路设计
    • 3.2 继电器控制电路设计
    • 3.3 DS18B20温度检测电路设计
    • 3.4 LCD1602液晶显示电路设计
  • 4、部分代码展示
    • 4.1 LCD1602液晶显示屏引脚初始化程序设计
    • 4.2 LCD1602显示字符串程序设计
    • 4.3 定时器初始化程序设计
  • 5. 项目编号

1、快速完成毕设的方法

  • 点击查看

2、项目资料

  • 点击获取资料

2.1 系统框架

本系统由STC89C52单片机电路+水流量传感器+DS18B20温度电路+继电器电路+LCD1602液晶显示电路+按键电路+蜂鸣器电路+电源电路组成。

2.2 系统功能

  • 1、水流量传感器采用椭圆齿轮传感器。
  • 2、通过液晶LCD1602液晶实时显示瞬时流量和累计流量、实时温度、设置的累计流量。
  • 3、通过按键设置累计流量阈值,如果累计流量超过设置阈值,蜂鸣器报警、继电器断开,否则不报警继电器闭合。
  • 4、继电器模拟水阀开关,如果当前累计流量低于设置流量,打开继电器的意思。

3、部分电路设计

3.1 STC89C52单片机最小系统电路设计

STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

STC89C52单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。

单片机最小系统原理图如下图所示:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第1张图片

实物图:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第2张图片

3.2 继电器控制电路设计

继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、

其具体电路原理图如下图所示:

毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第3张图片

  • 实物图
    毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第4张图片

3.3 DS18B20温度检测电路设计

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。

其具体电路原理图如下图所示:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第5张图片

实物图如下:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第6张图片

3.4 LCD1602液晶显示电路设计

LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。

其具体电路原理图如下图所示:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第7张图片
实物图如下:
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计_第8张图片

4、部分代码展示

4.1 LCD1602液晶显示屏引脚初始化程序设计

void LCD1602Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;   //声明结构体

	/********Data端口设置*************/
	RCC_APB2PeriphClockCmd(RCC_GPIO_DATA, ENABLE);  //打开端口B时钟 
	GPIO_InitStructure.GPIO_Pin  = GPIO_DATA_0_PIN|GPIO_DATA_1_PIN|GPIO_DATA_2_PIN|GPIO_DATA_3_PIN|GPIO_DATA_4_PIN|GPIO_DATA_5_PIN|GPIO_DATA_6_PIN|GPIO_DATA_7_PIN; //  DB8~DB15
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_DATA_0, &GPIO_InitStructure);      //初始化端口

	/********使能端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_EN, ENABLE);    	//打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_EN_PIN;     	// 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_EN, &GPIO_InitStructure);

	/********读/写端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_RW, ENABLE);    //打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_RW_PIN;     // 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //标准输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_RW, &GPIO_InitStructure);

	/********指令/数据端口设置**********/
	RCC_APB2PeriphClockCmd(RCC_GPIO_RS, ENABLE);    //打开端口时钟 
	GPIO_InitStructure.GPIO_Pin =  GPIO_RS_PIN;     // 使能端口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽复用输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
	GPIO_Init(GPIO_RS, &GPIO_InitStructure);
}

4.2 LCD1602显示字符串程序设计


void Lcd_Puts(unsigned char x,unsigned char y, unsigned char *string) //向1602写一个字符串 
{ 
	Lcd_SetXY(x,y); 
	while(*string) 
	{ 
		Lcd_Write_Data(*string); 
		string++; 
	} 
}

4.3 定时器初始化程序设计

void Init_Timer0(void)
{
	TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     
	TH0=(65536-20000)/256;		  //重新赋值 20ms
	TL0=(65536-20000)%256;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}

5. 项目编号

014

你可能感兴趣的:(单片机,51单片机,毕业设计,课程设计,lcd1602)