标题: 单片机+1602液晶温控风扇档位可调的设计思路 无代码 [打印本页]
作者: 梁光阳 时间: 2019-4-18 20:20
标题: 单片机+1602液晶温控风扇档位可调的设计思路 无代码
内容:本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机89c51为中心器件来设计简易温控风扇系统,实现了能根据设置的上下限温度,来启动风扇的工作与停止,低于设置的下限温度,风扇不工作,在上限与下限之间风扇以50%的转速工作,温度高于上限,风扇全速工作。
实施方案:
(1) 设计电路布局图
(2) 准备好所需的材料
(3) 按照电路图焊接好元件
(4) 编写单片机程序
(5) 对单片机进行调试
预期目标:在每个温度区间保证风扇按要求运行、
部分程序:
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>
#include "0832.h"
#define uchar unsigned char
#define uint unsigned int
//定义LCD1602端口
sbit E=P2^6; //1602使能引脚
sbit RS=P2^7; //1602数据/命令选择引脚
sbit RW=P2^5;
sbit LED_RED=P2^2;
sbit LED_YELLOW=P2^1;
sbit LED_GREEN=P2^0;
sbit SET_KEY=P3^4;
sbit ADD_KEY=P3^5;
sbit SUB_KEY=P3^6;
sbit BUZZ=P3^7;
sbit jdq=P2^4;
int WARNING=250;
uint DA;
bit FlagStartRH=0;
bit flag_BJ=0;
bit set=0;
void L1602_string(uchar hang,uchar lie,uchar *p);
//定时器0初始化
void Timer0_Init()
{
ET0 = 1; //允许定时器0中断
TMOD = 0x11; //定时器工作方式选择
TL0 = 0xb0;
TH0 = 0x3c; //定时器赋予初值
TR0 = 1; //启动定时器
TL1 = 0xb0;
TH1 = 0x3c; //定时器赋予初值
ET1=1;
TR1=1;
}
//定时器0中断
void Timer0_ISR (void) interrupt 1 using 0
{
uchar RHCounter;
TL0 = 0xb0;
TH0 = 0x3c; //定时器赋予初值
RHCounter++;
//每2秒钟启动一次温湿度转换
if (RHCounter >= 20)
{
FlagStartRH = 1;
RHCounter = 0;
}
}
//定时器1中断
void Timer1_ISR (void) interrupt 3
{
uchar RHCounter1;
TL1 = 0xb0;
TH1 = 0x3c; //定时器赋予初值
RHCounter1++;
if(RHCounter1>=10)
{
RHCounter1=0;
if(flag_BJ==1)
BUZZ=!BUZZ;
else
BUZZ=1;
}
}
/********************************************************************
* 文件名 : 液晶1602显示.c
* 描述 : 该程序实现了对液晶1602的控制。
***********************************************************************/
/********************************************************************
* 名称 : delay()
* 功能 : 延时,延时时间大概为140US。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay()
{
int i,j;
for(i=0; i<=10; i++)
for(j=0; j<=2; j++);
}
void delay_ms(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
作者: 陈炜豪 时间: 2019-6-3 15:53
可以很强!!!
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |