标题:
51单片机+ds18b20+TFT+三极管PWM驱动温控风扇
[打印本页]
作者:
7845123
时间:
2020-4-14 09:41
标题:
51单片机+ds18b20+TFT+三极管PWM驱动温控风扇
一个小设计,使用51单片机,DS18B20实时采集温度,温度显示+温控调节PWM驱动风扇。
屏幕忘记型号了,是宝上买的小屏,其他可以直接用,没有问题。
单片机源程序如下:
#include "main.h"
#include "TFT.h"
#include "wenkong.h"
extern js;
extern shang;
extern xia;
extern wen_du;
extern flag;
void Font_Test(void)
{
dsp_single_colour(WHITE);
Fast_DrawFont_GBK16(16,50,BLUE,YELLOW, "目前温度为");
Fast_DrawFont_GBK16(50,70,RED,WHITE, "度");
Fast_DrawFont_GBK16(16,90,BLUE,WHITE, "上限");
Fast_DrawFont_GBK16(66,92,RED,WHITE, "度");
Fast_DrawFont_GBK16(16,110,BLUE,WHITE, "下限");
Fast_DrawFont_GBK16(66,110,RED,WHITE, "度");
}
void shuaxin(void)
{
uint one,two;
one=wen_du/10%10;
two=wen_du/1%10;
OLED_ShowNum(32,72,one,RED,WHITE);
OLED_ShowNum(40,72,two,RED,WHITE);//目前温度值
}
void shang_xia(void)
{
uint three,four,five,six;
three=shang/10%10;
four=shang/1%10;
five=xia/10%10;
six=xia/1%10;
OLED_ShowNum(52,92,three,RED,WHITE);
OLED_ShowNum(60,92,four,RED,WHITE);//上限
OLED_ShowNum(52,110,five,RED,WHITE);
OLED_ShowNum(60,110,six,RED,WHITE);//下限
}
void main()
{
uchar j;
// uchar lanya;
uint a,b;
lcd_initial();
dj=0; //电机
shang=30;
xia=20; //初始上下限值
flag=0;
init_eeprom(); //开始初始化保存的数据
for(j=0;j<80;j++) //先读取温度值,防止开机显示85
ReadTemperature();
init();
Font_Test();
bl=1;
while(1) //进入while循环
{
while(flag==0xFFFF)
{
dj=0;
a=shang;
b=xia;
zi_keyscan();//按键扫描函数
if(a!=shang||b!=xia)
{shang_xia();}
}
// if(RI==1) // 是否有数据到来
// {
// RI = 0;
// lanya = SBUF; // 暂存接收到的数据
// if(lanya==1)//如果数据为1
// dj=0;
// else if(lanya==2)//如果数据为2
// dj=1;
shuaxin();
shang_xia();
if(js>=50) //当js在定时器里加到50次时(js加一次是20ms,加到50次就是1000ms,也就是1秒读取一次温度)
{
ReadTemperature(); //读取温度值
js=0; //定时读取温度的变量js清零,重新计时下次读取温度
}
zi_dong();//判断当前需要哪一个档位
}
}
复制代码
所有资料51hei提供下载:
51+tft+pwm.7z
(52.51 KB, 下载次数: 50)
2020-4-14 09:40 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2020-4-14 18:50
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
jemery1030
时间:
2020-10-1 22:43
2.4吋可用,但閃爍很厲害,需要修改。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1