找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2320|回复: 0
打印 上一主题 下一主题
收起左侧

温控LED的制作方法与程序

[复制链接]
跳转到指定楼层
楼主
ID:203853 发表于 2017-6-20 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#include<intrins.h>                        
#define uchar unsigned char
#define uint unsigned int              
sbit L=P3^2;
sbit N=P3^3;
sbit DQ=P2^2;
sbit key1=P3^5;
sbit key2=P3^6;
sbit key3=P3^7;
sbit w1=P2^4;
sbit w2=P2^5;
sbit w3=P2^6;
sbit w4=P2^7;           
uchar table[22]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,
0x40,0x38,0x76,0x00,0xff,0x37};
uint wen_du;   
uint shang,xia;
uchar dang;
uchar flag;
uchar d1,d2,d3;
void delay(uint ms)      
{
        uchar x;
        for(ms;ms>0;ms--)
                for(x=10;x>0;x--);
}
         
void delay_18B20(uint i)
{
        while(i--);
}
         
void Init_DS18B20()
{
         uchar x=0;
         DQ=1;         
         delay_18B20(8);           DQ=0;                   delay_18B20(80);
         DQ=1;        
         delay_18B20(14);
         x=DQ;         
         delay_18B20(20);
}
     
uchar ReadOneChar()
{
        uchar i=0;
        uchar dat=0;
        for (i=8;i>0;i--)
         {
                  DQ=0;
                  dat>>=1;
                  DQ=1;
                  if(DQ)
                  dat|=0x80;
                  delay_18B20(4);
         }
        return(dat);
}
       void WriteOneChar(uchar dat)
{
        uchar i=0;
        for (i=8;i>0;i--)
        {
                  DQ=0;
                DQ=dat&0x01;
            delay_18B20(5);
                DQ=1;
            dat>>=1;
        }
}
           void ReadTemperature()
{
        uchar a=0;
        uchar b=0;
        uchar t=0;
        Init_DS18B20();
        WriteOneChar(0xCC);         
        WriteOneChar(0x44);        
        delay_18B20(100);      
        Init_DS18B20();
        WriteOneChar(0xCC);         
        WriteOneChar(0xBE);      
        delay_18B20(100);
        a=ReadOneChar();         
        b=ReadOneChar();               
        wen_du=((b*256+a)>>4);   
}
void display()
{
        w1=0;P0=table[d1];delay(10);
        P0=0x00;w1=1;delay(1);
         
        w2=0;P0=table[16];delay(10);
        P0=0x00;w2=1;delay(1);
        w3=0;P0=table[d2]; delay(10);
        P1=0x00;w3=1;delay(1);
        w4=0;P0=table[d3];delay(10)
        P0=0x00;w4=1;delay(1);
}
void zi_keyscan()
{
        if(key1==0)                                                         
        {
                delay(1000);                                                  
                if(key1==0)flag=1;                                 
                while(key1==0);            
        }
        while(flag==1)                                                
        {
                d1=18;d2=shang/10;d3=shang%10;         
                display();                                             
                if(key1==0)                                             
                {
                        delay(1000);                                          
                        if(key1==0)flag=2;                       
                        while(key1==0);
                }
                if(key2==0)                                             
                {
                        delay(1000);                                          
                        if(key2==0)                                    
                        {
                                shang+=1;                              
                                if(shang>=40)shang=40;
                        }while(key2==0);
                }
                if(key3==0)                                                
                {
                        delay(1000);                                          
                        if(key3==0)                                       
                        {
                                shang-=1;                           
                                if(shang<=20)shang=20;         
                        }while(key3==0);
                }               
        }
        while(flag==2)                                               
        {
                d1=17;d2=xia/10;d3=xia%10;              
                display();                                            
                if(key1==0)
                {
                        delay(1000);
                        if(key1==0)flag=0;
                        while(key1==0);
                }
                if(key2==0)
                {
                        delay(1000);
                        if(key2==0)
                        {
                                xia+=1;
                                if(xia>=35)xia=35;        
                        }while(key2==0);
                }
                if(key3==0)
                {
                        delay(1000);
                        if(key3==0)
                        {
                                xia-=1;
                                if(xia<=10)xia=10;        
                        }while(key3==0);
                }               
        }
}
void zi_dong()
{
        uchar i;
        d1=dang;d2=wen_du/10;d3=wen_du%10;            
        zi_keyscan();
        display();      
        if(wen_du<=xia){N=1;L=0;dang=0;}
        if((wen_du>xia)&&(wen_du<shang))
        {
                dang=1;                                                                                       
                N=1;
                             L=1;
                        /*        for(i=0;i<1;i++){N=0;display();zi_keyscan();}     ½
                for(i=0;i<2;i++){N=1;display();zi_keyscan();}
                                for(i=0;i<1;i++){L=0;display();zi_keyscan();}        
                for(i=0;i<2;i++){L=1;display();zi_keyscan();} */
               
        }                          
        if(wen_du>=shang){L=1;N=0;dang=2;}
}·····//余码请下载源程序//


温控LED原理图.docx

34.09 KB, 下载次数: 11, 下载积分: 黑币 -5

温控LED源程序.docx

12.78 KB, 下载次数: 9, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表