单片机的智能温控风扇的设计(5)
附录一
数字温度传感器模块和显示子模块程序:
#include
变量范围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
相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




