12下一页
返回列表 发新帖本帖赏金 0.10元(功能说明)

[51单片机] 送给爱制作,爱捣鼓的朋友们

[复制链接]
5068|50
 楼主 | 2018-4-13 18:27 | 显示全部楼层 |阅读模式
本帖最后由 一路向北lm 于 2018-6-30 13:54 编辑


喜欢制作的朋友们,一大波福利正在来临。


1.  热电偶温度控制装置 仪   
http://bbs.21ic.com/icview-2498530-1-1.html
2.   12单片机12864单片机简易示波器 http://bbs.21ic.com/icview-2521294-1-1.html
3.  基于 51单片机0-30V 4A数控稳压电源  http://bbs.21ic.com/icview-2521514-1-1.html
4.  基于单片机加点阵屏的滚动显示  http://bbs.21ic.com/icview-2521920-1-1.html
5.基于AVR单片机的数控频率计http://bbs.21ic.com/icview-2522734-1-1.html
6.制作多功能编程器 http://bbs.21ic.com/icview-2525080-1-1.html

持续更新中.......


















打赏榜单

山东电子小菜鸟 打赏了 0.10 元 2018-04-13
理由:干净漂亮

 楼主 | 2018-4-13 18:29 | 显示全部楼层
本帖最后由 一路向北lm 于 2018-5-3 15:51 编辑

  51单片机+LCD1602+热电偶+MAX6675 温度控制装置(加了PWM输出,通过LED显示PWM输出的力度)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-4-13 18:42 | 显示全部楼层
放代码了(2.max6675热电偶温度控制器)(详细代码工程见附件)
演示视频链接:

#include "reg52.h"
#include "lcd.h"
#include "key.h"
#include "max6675.h"

//PWM 状态指示灯
sbit LED1=P1^4;      
sbit LED2=P1^5;      
sbit LED3=P1^6;      
sbit LED4=P1^7;

//继电器控制端
sbit RELAY=P3^2;      

uint temp,save=30,save_D=30;
bit temp_flag,LED_flag,wait_flag,wait;
uchar mode,k1_value,k2_value,k3_value,i,k;


void main()
{
  LED1=1;LED2=1;LED3=1;LED4=1;          //PWM LED指示灯初始化
        RELAY=1;                        //继电器初始化
        wait_flag=1;
        LcdInit();                      //LCD1602初始化
        TMOD|=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        ET0=1;
        TR0=1;
        EA=1;
                                  //LCD1602液晶初始化
        LcdWriteCom(0x80);  
        LcdWriteData('W');
        LcdWriteCom(0x81);
        LcdWriteData('E');
        LcdWriteCom(0x82);
        LcdWriteData('L');
        LcdWriteCom(0x83);
        LcdWriteData('C');
        LcdWriteCom(0x84);
        LcdWriteData('O');
        LcdWriteCom(0x85);
        LcdWriteData('M');
        LcdWriteCom(0x86);
        LcdWriteData('E');
        LcdWriteCom(0x87);
        LcdWriteData(':');
        
        LcdWriteCom(0x89);
        LcdWriteData('S');
        LcdWriteCom(0x80+10);
        LcdWriteData('Y');
        LcdWriteCom(0x80+11);
        LcdWriteData('S');
        LcdWriteCom(0x80+12);
        LcdWriteData('T');
        LcdWriteCom(0x80+13);
        LcdWriteData('E');
        LcdWriteCom(0x80+14);
        LcdWriteData('M');

        while(1)
        {
                keysan();
               
                switch(mode)            //模式切换
                        {
                                                                                                                        //显示模式
                                case 0:
                                                                if(temp_flag==1)
                                                {
                                                        temp_flag=0;
                                                        temp=MAX6675_ReadReg();
                                                        temp= temp<<1;
                                                        temp= temp>>4;
                                                        temp= temp/4;
                                                }
                                                                                                                                                                //温度
                                                LcdWriteCom(0x80+0x40);   
                                                LcdWriteData('t');
                                                LcdWriteCom(0x80+0x40+1);
                                                LcdWriteData('e');
                                                LcdWriteCom(0x80+0x40+2);
                                                LcdWriteData('m');
                                                LcdWriteCom(0x80+0x40+3);
                                                LcdWriteData('p');
                                                LcdWriteCom(0x80+0x40+4);
                                                LcdWriteData(':');
                                       
                                                LcdWriteCom(0x80+0x40+5);
                                                LcdWriteData(temp/1000+0x30);
                                                LcdWriteCom(0x80+0x40+6);
                                                LcdWriteData(temp%1000/100+0x30);
                                                LcdWriteCom(0x80+0x40+7);
                                                LcdWriteData(temp%100/10+0x30);
                                                LcdWriteCom(0x80+0x40+8);
                                                LcdWriteData(temp%10+0x30);
                                                LcdWriteCom(0x80+0x40+9);
                                                LcdWriteData('c');                                
                                        break;
                                                                                                                        //设置模式
                                case 1:
                                       
                                          if(k1_value==1)
                                                {
                                                  k1_value=0;
                                                        save_D+=1;
                                                        if(save_D==10000)
                                                        {
                                                         save_D=0;
                                                        }
                                                }
                                                else if(k2_value==1)
                                                {
                                                  k2_value=0;
                                                        save_D-=1;
                                                        if(save_D==0)
                                                        {
                                                         save_D=9999;
                                                        }
                                                }
                                                
                                                if(k3_value==1)
                                                {
                                                   k3_value=0;
                                                         save=save_D;
                                                }
                        
                                                LcdWriteCom(0x80+0x40);   
                                                LcdWriteData('t');
                                                LcdWriteCom(0x80+0x40+1);
                                                LcdWriteData('e');
                                                LcdWriteCom(0x80+0x40+2);
                                                LcdWriteData('m');
                                                LcdWriteCom(0x80+0x40+3);
                                                LcdWriteData('p');
                                
                                                LcdWriteCom(0x80+0x40+4);
                                                LcdWriteData('H');
                                                LcdWriteCom(0x80+0x40+5);
                                                LcdWriteData(':');
                                       
                                                LcdWriteCom(0x80+0x40+6);
                                                LcdWriteData(save_D/1000+0x30);
                                                LcdWriteCom(0x80+0x40+7);
                                                LcdWriteData(save_D%1000/100+0x30);
                                                LcdWriteCom(0x80+0x40+8);
                                                LcdWriteData(save_D%100/10+0x30);
                                                LcdWriteCom(0x80+0x40+9);
                                                LcdWriteData(save_D%10+0x30);
                                                LcdWriteCom(0x80+0x40+10);
                                                LcdWriteData('c');               
                                        break;
                        }
                        if(wait==1)   //跳过上电不稳定区
                        {
                                                        if(temp<=save)      //温度不够  PWM控制输出
                                                        {
                                                                 RELAY=0;
                                                                 if(temp+20<save)     //温差大 PWM最大输出
                                                                 {
                                                                         if(LED_flag==1)
                                                                                {
                                                                                         LED_flag=0;
                                                                                         k++;
                                                                                        if(k>=5)k=0;
                                                                                        switch(k)
                                                                                        {
                                                                                                case 1:   LED1=0; break;
                                                                                                case 2:   LED2=0; break;
                                                                                                case 3:   LED3=0; break;
                                                                                                case 4:   LED4=0; break;
                                                                                        }
                                                                                       
                                                                                 }
                                                                                else if(LED_flag==0)
                                                                                {
                                                                                         LED1=1;LED2=1;LED3=1;LED4=1;
                                                                                }

                                                                }
                                                                 else if(temp+15<save)
                                                                 {
                                                                                if(LED_flag==1)
                                                                                {
                                                                                         LED_flag=0;
                                                                                         k++;
                                                                                        if(k>=4)k=0;
                                                                                        switch(k)
                                                                                        {
                                                                                                case 1:   LED1=0; break;
                                                                                                case 2:   LED2=0; break;
                                                                                                case 3:   LED3=0; break;
                                                                                        }
                                                                                       
                                                                                 }
                                                                                else if(LED_flag==0)
                                                                                {
                                                                                         LED1=1;LED2=1;LED3=1;
                                                                                }
                                                                 }
                                                                 else if(temp+10<save)
                                                                 {
                                                                         if(LED_flag==1)
                                                                                {
                                                                                         LED_flag=0;
                                                                                         k++;
                                                                                        if(k>=3)k=0;
                                                                                        switch(k)
                                                                                        {
                                                                                                case 1:   LED1=0; break;
                                                                                                case 2:   LED2=0; break;
                                                                                        }
                                                                                       
                                                                                 }
                                                                                else if(LED_flag==0)
                                                                                {
                                                                                         LED1=1;LED2=1;
                                                                                }
                                                                 }
                                                                 else if((temp+5<save)|(temp<=save))
                                                                 {
                                                                                if(LED_flag==1)
                                                                                {
                                                                                         LED_flag=0;
                                                                                         LED1=0;
                                                                                }
                                                                                else if(LED_flag==0)
                                                                                {
                                                                                         LED1=1;
                                                                                }
                                                                 }
                                                        }
                                                        else                //温度够  PWM控停止输出
                                                        {
                                                                 RELAY=1; LED1=1;LED2=1;LED3=1;LED4=1;
                                                        }
                                                        
                                                
                        }
                        else if(wait==0)
      {
                           RELAY=1; LED1=1;LED2=1;LED3=1;;LED4=1;
                        }
                        
         
        }
}


void time() interrupt 1
{
        uint count1,count2,t;
  TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count1++;count2++;
        if(count1==20)
        {
         count1=0;
         temp_flag=1;
                if(wait_flag==1)
                {
                  t++;
      if(t==2)
           {
                         t=0;
             wait=1;
           }        
                }                  
        }
  if(count2==5)
        {
         count2=0;
         LED_flag=1;        
        }
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主 | 2018-4-13 18:33 | 显示全部楼层
看下自己的临时工作台(是不是有点狼狈)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评论

lihui567 2018-7-19 17:24 回复TA
这是搞啥呢,搞生产啊 
| 2018-4-13 21:21 | 显示全部楼层
感谢分享,很多毕业设计都是这些套路

评论

一路向北lm 2018-4-15 07:59 回复TA
哈哈,是的。 
| 2018-4-16 12:44 | 显示全部楼层
66666666666666666
 楼主 | 2018-4-16 13:12 | 显示全部楼层

闲得慌
| 2018-4-16 14:42 | 显示全部楼层
赚了多少生活费
| 2018-4-16 16:19 | 显示全部楼层
感谢楼主分享。。。
| 2018-4-16 17:06 | 显示全部楼层
打个包,写个显示字符串的API,整个程序会减少很多,可读性也强
| 2018-4-17 08:39 | 显示全部楼层
点赞
| 2018-4-17 10:41 | 显示全部楼层
一看就是学生时代啊
| 2018-4-17 10:47 | 显示全部楼层
让我想起自己的学生时代 哈哈
 楼主 | 2018-4-17 11:03 | 显示全部楼层
哈哈,原来是大佬
| 2018-4-17 13:43 | 显示全部楼层
做一下分层,模块化一点,不要全部都揉到一起
 楼主 | 2018-4-17 16:04 | 显示全部楼层

整个学费吧
 楼主 | 2018-4-17 16:04 | 显示全部楼层
second_chan 发表于 2018-4-16 16:19
感谢楼主分享。。。

不客气
 楼主 | 2018-4-17 16:04 | 显示全部楼层
ayb_ice 发表于 2018-4-16 17:06
打个包,写个显示字符串的API,整个程序会减少很多,可读性也强

能用就行,懒得麻烦了
| 2018-4-17 16:18 | 显示全部楼层

那可以啦
| 2018-4-17 17:49 | 显示全部楼层
大神,视频链接咋没了?大神,能不能顺便换成PID控制呀,热电偶的

评论

考拉大巫 2018-4-17 17:50 回复TA
大神 
一路向北lm 2018-4-19 13:15 回复TA
太忙了,没时间往优酷传 
考拉大巫 2018-4-19 20:38 回复TA
@一路向北lm :大神,你方便写个程序吗?有偿的,我在你的程序底下,想改成我要的,改不成 
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

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