基于51单片机的节日彩灯控制器编写说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
//****************************************************
//主函数
//****************************************************
void main()
{
Init_LCD1602();//初始化LCD1602
{
}
else
{
LCD1602_write_data(Temp_Buffer%1000/100+0X30); //显示温度百位值
}
LCD1602_write_data(Temp_Buffer%100/10+0X30);//显示温度十位值
LCD1602_write_data('.');//显示小数点
LCD1602_write_data(Temp_Buffer%10+0X30);//显示温度个位值
#include "jianpan.h"
sbit Buzzer = P2^5;
//定义变量
unsigned int Temp_Buffer = 0;
unsigned int warning = 360;
bit flag = 0;
//****************************************************
{
unsigned char i, j;
for(j = 0; j < n; j++)
{
i = 17;//3是5us,17是10us
while (--i);
}
}
//****************************************************
//初始化DHT11
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void DHT11_delay_ms(unsigned int m)
{
unsigned int i;
unsigned long j;
for(i = 0; i < m; i++)
DHT11_10us(8);//DHT11响应总时间80us
DHT11_10us(9);//DHT11拉高信号80us
return Flag_DHT11;
}
//****************************************************
//读一个字节DHT11数据
//****************************************************
LCD1602_write_com(0x01);
while(1)
{
distmp();
distmp2();
if(KEY_Scan() == 15) flag = 1;
if(warning<=Temp_Buffer&&flag == 0)
{
Buzzer = 1;
}
}
}
4.2 LCD
#include "LCD1602.h"
for(j = 0; j < 123; j++);
}
//****************************************************
//延时函数
//****************************************************
void DHT11_10us( unsigned int n )
LCD1602_RS:P1^1;
LCD1602_RW:P1^2;
LCD1602_EN:P1^3;
2.功能:LCD1602作用是显示出两排 每排16个字符包括26个英文字母,10个数字和英文标点符号,在这里我们显示体温和状态
图2-3Lcd1602显示电路
2.
1.引脚连接:通信连P3.7口。
2.功能:可测量环境温度和湿度。其电路如图2-4所示。
LCD1602_EN = 1;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
//****************************************************
//连续写字符
//****************************************************
unsigned char HUMI_Buffer_Int_L = 0;
unsigned char TEM_Buffer_Int_H = 0;
unsigned char TEM_Buffer_Int_L = 0;
unsigned char CHECK_VALUE = 0;
//****************************************************
void LCD1602_write_word(unsigned char *s)
{
while(*s>0)
{
LCD1602_write_data(*s);
s++;
}
}
void Init_LCD1602()
{
LCD1602_EN = 0;
LCD1602_RW = 0;//设置为写状态
LCD1602_write_com(0x38);//显示模式设定
(2),LCD1602利用8位并行数据线进行控制
二、答辩
1.成绩:
2.成绩:
3.成绩:
4.成绩:
5.成绩:
三、成绩【期末设计总成绩50分=设计报告成绩15分+设计演示成绩15分+答辩成绩20分】
1.成绩分配
(1)设计报告成绩( );(2)设计作品成绩();(3)答辩成绩()
注意:若实验板无法正常工作或没有设计作品演示,则期末设计总成绩为0分。
LCD1602_write_word("C");//显示字符C
Delay_ms(10);
}
void distmp2()
{
LCD1602_write_com(0x80);//设置LCD1602指针到第二行第一列
LCD1602_write_word("WARNING : ");
LCD1602_write_data(warning%1000/100+0X30); //显示温度百位值
2.期末设计总成绩【 分】
指导教师签字:
年月日
1
1
图1-1系统整体设计工作框图
1
表1-1系统设计元器件清单
51单片机开发板
2
2
图2-1系统总电路原理图
2
1.引脚连接:与单片机的AD采集IO口相连
2.功能:采集AD值来判断哪个键被按下
图2-2AD键盘电路
2
1.引脚连接:数据口为单片机的P0口 通信口为
LCD1602_write_com(0x80);//指针设置到第一行第1列
Delay_ms(10ຫໍສະໝຸດ Baidu);
LCD1602_write_word("Welcome to use!");
Temp_Buffer = Get_temp();//读取DS18B20的值
Delay_ms(1000);//等待1s等待DS18B20数据稳定。否则可能会出现85℃。
LCD1602_write_data(warning%100/10+0X30);//显示温度十位值
LCD1602_write_data('.');//显示小数点
LCD1602_write_data(warning%10+0X30);//显示温度个位值
LCD1602_write_word("C");//显示字符C
void LCD1602_write_com(unsigned char com)
{
LCD1602_RS = 0;
LCD1602_delay_ms(1);
LCD1602_EN = 1;
LCD1602_PORT = com;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
//****************************************************
bit DHT11_Init()
{
bit Flag_DHT11 = 1;
DHT11_DQ = 0;//CPU发开始信号
DHT11_delay_ms(30);//延时>18ms
DHT11_DQ = 1;//CPU拉高信号,等待DHT11响应信号
DHT11_10us(3);//延时20~40us
Flag_DHT11 = DHT11_DQ;
//写数据
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
LCD1602_RS = 1;
LCD1602_delay_ms(1);
LCD1602_PORT = dat;
LCD1602_write_com(0x0c);//开关显示、光标有无设置、光标闪烁设置
LCD1602_write_com(0x06);//写一个字符后指针加一
LCD1602_write_com(0x01);//清屏指令
}
4.3
#include "DHT11.h"
//定义变量
unsigned char HUMI_Buffer_Int_H = 0;
图2-4DS18B20电路图
2.5 闪烁灯的设计
1.引脚连接:8个二极管分别于单片机的P2的8个口相连
图2-5 流水灯电路图
3
3.1 程序
图3-1程序主流程图
3.2
图3-2LCD显示程序流程图
4
4.1
#include "reg52.h"
#include "LCD1602.h"
#include "DS18B20.h"
for(j = 0; j < 123; j++);
}
//****************************************************
//显示函数
//****************************************************
void distmp()
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int m)
{
unsigned int i;
unsigned long j;
for(i = 0; i < m; i++)
{
unsigned int i,j;
for(i = 0; i < n; i++)
for(j = 0; j < 123; j++);
}
//****************************************************
//写指令
//****************************************************
{
Temp_Buffer = Get_temp();//读取DS18B20的值
LCD1602_write_com(0x80+0x40);//设置LCD1602指针到第二行第一列
LCD1602_write_word("TEMP = ");
if(flag_temper == 1)//根据温度标志位显示温度正负
unsigned char DHT11_Read_Byte()
{
unsigned char i, dat, j;
黑龙江科技大学
IEC计算机14级《单片机系统概论》
期末设计报告
设计题目
院 系
班级
姓名
学 号
2017年月日
一、设计任务和主要技术
1.设计任务(要完成哪些具体功能)
(1)实现温度采集
(2)温度湿度显示
(3)LED控制。
2.主要技术(要完成上面任务所使用的主要技术手段)
(1)温度利用单总线通信采集所需要的数据
{
LCD1602_write_data('-');
}
if( Temp_Buffer/1000 != 0 )//如果第一位为0,忽略显示
{
LCD1602_write_data(Temp_Buffer/1000+0X30);//显示温度百位值
}
if( Temp_Buffer/1000 == 0 && Temp_Buffer%1000/100 == 0 )//千位百位都为0,忽略显示
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void LCD1602_delay_ms(unsigned int n)
//****************************************************
//主函数
//****************************************************
void main()
{
Init_LCD1602();//初始化LCD1602
{
}
else
{
LCD1602_write_data(Temp_Buffer%1000/100+0X30); //显示温度百位值
}
LCD1602_write_data(Temp_Buffer%100/10+0X30);//显示温度十位值
LCD1602_write_data('.');//显示小数点
LCD1602_write_data(Temp_Buffer%10+0X30);//显示温度个位值
#include "jianpan.h"
sbit Buzzer = P2^5;
//定义变量
unsigned int Temp_Buffer = 0;
unsigned int warning = 360;
bit flag = 0;
//****************************************************
{
unsigned char i, j;
for(j = 0; j < n; j++)
{
i = 17;//3是5us,17是10us
while (--i);
}
}
//****************************************************
//初始化DHT11
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void DHT11_delay_ms(unsigned int m)
{
unsigned int i;
unsigned long j;
for(i = 0; i < m; i++)
DHT11_10us(8);//DHT11响应总时间80us
DHT11_10us(9);//DHT11拉高信号80us
return Flag_DHT11;
}
//****************************************************
//读一个字节DHT11数据
//****************************************************
LCD1602_write_com(0x01);
while(1)
{
distmp();
distmp2();
if(KEY_Scan() == 15) flag = 1;
if(warning<=Temp_Buffer&&flag == 0)
{
Buzzer = 1;
}
}
}
4.2 LCD
#include "LCD1602.h"
for(j = 0; j < 123; j++);
}
//****************************************************
//延时函数
//****************************************************
void DHT11_10us( unsigned int n )
LCD1602_RS:P1^1;
LCD1602_RW:P1^2;
LCD1602_EN:P1^3;
2.功能:LCD1602作用是显示出两排 每排16个字符包括26个英文字母,10个数字和英文标点符号,在这里我们显示体温和状态
图2-3Lcd1602显示电路
2.
1.引脚连接:通信连P3.7口。
2.功能:可测量环境温度和湿度。其电路如图2-4所示。
LCD1602_EN = 1;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
//****************************************************
//连续写字符
//****************************************************
unsigned char HUMI_Buffer_Int_L = 0;
unsigned char TEM_Buffer_Int_H = 0;
unsigned char TEM_Buffer_Int_L = 0;
unsigned char CHECK_VALUE = 0;
//****************************************************
void LCD1602_write_word(unsigned char *s)
{
while(*s>0)
{
LCD1602_write_data(*s);
s++;
}
}
void Init_LCD1602()
{
LCD1602_EN = 0;
LCD1602_RW = 0;//设置为写状态
LCD1602_write_com(0x38);//显示模式设定
(2),LCD1602利用8位并行数据线进行控制
二、答辩
1.成绩:
2.成绩:
3.成绩:
4.成绩:
5.成绩:
三、成绩【期末设计总成绩50分=设计报告成绩15分+设计演示成绩15分+答辩成绩20分】
1.成绩分配
(1)设计报告成绩( );(2)设计作品成绩();(3)答辩成绩()
注意:若实验板无法正常工作或没有设计作品演示,则期末设计总成绩为0分。
LCD1602_write_word("C");//显示字符C
Delay_ms(10);
}
void distmp2()
{
LCD1602_write_com(0x80);//设置LCD1602指针到第二行第一列
LCD1602_write_word("WARNING : ");
LCD1602_write_data(warning%1000/100+0X30); //显示温度百位值
2.期末设计总成绩【 分】
指导教师签字:
年月日
1
1
图1-1系统整体设计工作框图
1
表1-1系统设计元器件清单
51单片机开发板
2
2
图2-1系统总电路原理图
2
1.引脚连接:与单片机的AD采集IO口相连
2.功能:采集AD值来判断哪个键被按下
图2-2AD键盘电路
2
1.引脚连接:数据口为单片机的P0口 通信口为
LCD1602_write_com(0x80);//指针设置到第一行第1列
Delay_ms(10ຫໍສະໝຸດ Baidu);
LCD1602_write_word("Welcome to use!");
Temp_Buffer = Get_temp();//读取DS18B20的值
Delay_ms(1000);//等待1s等待DS18B20数据稳定。否则可能会出现85℃。
LCD1602_write_data(warning%100/10+0X30);//显示温度十位值
LCD1602_write_data('.');//显示小数点
LCD1602_write_data(warning%10+0X30);//显示温度个位值
LCD1602_write_word("C");//显示字符C
void LCD1602_write_com(unsigned char com)
{
LCD1602_RS = 0;
LCD1602_delay_ms(1);
LCD1602_EN = 1;
LCD1602_PORT = com;
LCD1602_delay_ms(1);
LCD1602_EN = 0;
}
//****************************************************
bit DHT11_Init()
{
bit Flag_DHT11 = 1;
DHT11_DQ = 0;//CPU发开始信号
DHT11_delay_ms(30);//延时>18ms
DHT11_DQ = 1;//CPU拉高信号,等待DHT11响应信号
DHT11_10us(3);//延时20~40us
Flag_DHT11 = DHT11_DQ;
//写数据
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
LCD1602_RS = 1;
LCD1602_delay_ms(1);
LCD1602_PORT = dat;
LCD1602_write_com(0x0c);//开关显示、光标有无设置、光标闪烁设置
LCD1602_write_com(0x06);//写一个字符后指针加一
LCD1602_write_com(0x01);//清屏指令
}
4.3
#include "DHT11.h"
//定义变量
unsigned char HUMI_Buffer_Int_H = 0;
图2-4DS18B20电路图
2.5 闪烁灯的设计
1.引脚连接:8个二极管分别于单片机的P2的8个口相连
图2-5 流水灯电路图
3
3.1 程序
图3-1程序主流程图
3.2
图3-2LCD显示程序流程图
4
4.1
#include "reg52.h"
#include "LCD1602.h"
#include "DS18B20.h"
for(j = 0; j < 123; j++);
}
//****************************************************
//显示函数
//****************************************************
void distmp()
//MS延时函数(12M晶振下测试)
//****************************************************
void Delay_ms(unsigned int m)
{
unsigned int i;
unsigned long j;
for(i = 0; i < m; i++)
{
unsigned int i,j;
for(i = 0; i < n; i++)
for(j = 0; j < 123; j++);
}
//****************************************************
//写指令
//****************************************************
{
Temp_Buffer = Get_temp();//读取DS18B20的值
LCD1602_write_com(0x80+0x40);//设置LCD1602指针到第二行第一列
LCD1602_write_word("TEMP = ");
if(flag_temper == 1)//根据温度标志位显示温度正负
unsigned char DHT11_Read_Byte()
{
unsigned char i, dat, j;
黑龙江科技大学
IEC计算机14级《单片机系统概论》
期末设计报告
设计题目
院 系
班级
姓名
学 号
2017年月日
一、设计任务和主要技术
1.设计任务(要完成哪些具体功能)
(1)实现温度采集
(2)温度湿度显示
(3)LED控制。
2.主要技术(要完成上面任务所使用的主要技术手段)
(1)温度利用单总线通信采集所需要的数据
{
LCD1602_write_data('-');
}
if( Temp_Buffer/1000 != 0 )//如果第一位为0,忽略显示
{
LCD1602_write_data(Temp_Buffer/1000+0X30);//显示温度百位值
}
if( Temp_Buffer/1000 == 0 && Temp_Buffer%1000/100 == 0 )//千位百位都为0,忽略显示
//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void LCD1602_delay_ms(unsigned int n)