教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

单片机的智能温控风扇的设计(5)

来源:网络收集 时间:2026-09-04
导读: 附录一 数字温度传感器模块和显示子模块程序: #include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #i

附录一

数字温度传感器模块和显示子模块程序:

#include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义

变量范围0~255

#define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include \

//数码管段选定义 0 1 2 3 4 5 6 7 8 9

uchar code smg_du[]={0x28,0xee,0x42,0x52,0xe5,0xa8,0x41,0xe7,0x20,0xa0,

0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //断码

//数码管位选定义

uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};

uchar dis_smg[8] = {0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8}; uchar smg_i = 3; //显示数码管的个位数 sbit dq = P2^4; //18b20 IO口的定义

bit flag_lj_en;

//按键连加使能

bit flag_lj_3_en; //按键连3次连加后使能 加的数就越大了 uchar key_time,key_value; //用做连加的中间变量 bit key_500ms ; sbit pwm = P2^3; uchar f_pwm_l ;

uint temperature ; // bit flag_300ms ;

uchar menu_1; //菜单设计的变量

//越小越暗

21

uint t_high = 300,t_low = 100; //温度上下限报警值

/***********************1ms延时函数*****************************/ void delay_1ms(uint q) {

uint i,j; for(i=0;i

/***********************小延时函数*****************************/ void delay_uint(uint q) {

while(q--); }

/***********************数码显示函数*****************************/ void display() {

static uchar i; i++;

if(i >= smg_i)

i = 0;

//消隐

//位选

for(j=0;j<120;j++);

P1 = 0xff;

P3 = smg_we[i]; P1 = dis_smg[i];

//段选

22

}

/******************把数据保存到单片机内部eepom中******************/ void write_eeprom() {

SectorErase(0x2000);

byte_write(0x2000, t_high % 256); byte_write(0x2001, t_high / 256); byte_write(0x2002, t_low % 256); byte_write(0x2003, t_low / 256); byte_write(0x2055, a_a); }

/******************把数据从单片机内部eepom中读出来*****************/ void read_eeprom() {

t_high = byte_read(0x2001); t_high <<= 8;

t_high |= byte_read(0x2000); t_low = byte_read(0x2003); t_low <<= 8;

t_low |= byte_read(0x2002); a_a = byte_read(0x2055); }

/**************开机初始化保存的数据*****************/

23

void init_eeprom() {

read_eeprom(); if(a_a != 22) {

t_high = 320; t_low = 280; a_a = 22;

write_eeprom(); //保存数据

//先读

//新的单片机初始单片机内问eeprom

} }

/***********************18b20初始化函数*****************************/ void init_18b20() { bit q; dq = 1;

//把总线拿高

delay_uint(1); dq = 0;

//15us

//给复位脉冲 //750us

//把总线拿高 等待 //110us

//读取18b20初始化信号 //200us

//把总线拿高 释放总线

delay_uint(80); dq = 1;

delay_uint(10); q = dq;

delay_uint(20); dq = 1; }

24

/*************写18b20内的数据***************/ void write_18b20(uchar dat) { uchar i; for(i=0;i<8;i++) {

//写数据是低位开始

//把总线拿低写时间隙开始

dq = 0;

dq = dat & 0x01; //向18b20总线写数据了 delay_uint(5); dq = 1;

// 60us //释放总线

dat >>= 1;

} }

/*************读取18b20内的数据***************/ uchar read_18b20() {

uchar i,value; for(i=0;i<8;i++) {

dq = 0;

//把总线拿低读时间隙开始

value >>= 1; //读数据是低位开始 dq = 1;

//释放总线 //开始读写数据

if(dq == 1)

value |= 0x80;

//60us

读一个时间隙最少要保持60us的时间

delay_uint(5);

25

…… 此处隐藏:634字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机的智能温控风扇的设计(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436025.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)