发新帖本帖赏金 0.10元(功能说明)我要提问
12下一页
返回列表
打印
[51单片机]

送给爱制作,爱捣鼓的朋友们

[复制链接]
7772|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一路向北lm|  楼主 | 2018-4-13 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 一路向北lm 于 2018-6-30 13:54 编辑


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


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

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


















打赏榜单

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

相关帖子

来自 2楼
一路向北lm|  楼主 | 2018-4-13 18:29 | 只看该作者
本帖最后由 一路向北lm 于 2018-5-3 15:51 编辑

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

使用特权

评论回复
来自 3楼
一路向北lm|  楼主 | 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;        
        }
}


01.程序源码(带注释).rar

46.54 KB

使用特权

评论回复
地板
一路向北lm|  楼主 | 2018-4-13 18:33 | 只看该作者
看下自己的临时工作台(是不是有点狼狈)



使用特权

评论回复
评论
lihui567 2018-7-19 17:24 回复TA
这是搞啥呢,搞生产啊 
5
dirtwillfly| | 2018-4-13 21:21 | 只看该作者
感谢分享,很多毕业设计都是这些套路

使用特权

评论回复
评论
一路向北lm 2018-4-15 07:59 回复TA
哈哈,是的。 
6
caijie001| | 2018-4-16 12:44 | 只看该作者
66666666666666666

使用特权

评论回复
7
一路向北lm|  楼主 | 2018-4-16 13:12 | 只看该作者

闲得慌

使用特权

评论回复
8
gujiamao12345| | 2018-4-16 14:42 | 只看该作者
赚了多少生活费

使用特权

评论回复
9
second_chan| | 2018-4-16 16:19 | 只看该作者
感谢楼主分享。。。

使用特权

评论回复
10
ayb_ice| | 2018-4-16 17:06 | 只看该作者
打个包,写个显示字符串的API,整个程序会减少很多,可读性也强

使用特权

评论回复
11
qinxingtech| | 2018-4-17 08:39 | 只看该作者
点赞

使用特权

评论回复
12
小熊配齐| | 2018-4-17 10:41 | 只看该作者
一看就是学生时代啊

使用特权

评论回复
13
ta1ent| | 2018-4-17 10:47 | 只看该作者
让我想起自己的学生时代 哈哈

使用特权

评论回复
14
一路向北lm|  楼主 | 2018-4-17 11:03 | 只看该作者
哈哈,原来是大佬

使用特权

评论回复
15
wsnsyy| | 2018-4-17 13:43 | 只看该作者
做一下分层,模块化一点,不要全部都揉到一起

使用特权

评论回复
16
一路向北lm|  楼主 | 2018-4-17 16:04 | 只看该作者

整个学费吧

使用特权

评论回复
17
一路向北lm|  楼主 | 2018-4-17 16:04 | 只看该作者
second_chan 发表于 2018-4-16 16:19
感谢楼主分享。。。

不客气

使用特权

评论回复
18
一路向北lm|  楼主 | 2018-4-17 16:04 | 只看该作者
ayb_ice 发表于 2018-4-16 17:06
打个包,写个显示字符串的API,整个程序会减少很多,可读性也强

能用就行,懒得麻烦了

使用特权

评论回复
19
gujiamao12345| | 2018-4-17 16:18 | 只看该作者

那可以啦

使用特权

评论回复
20
考拉大巫| | 2018-4-17 17:49 | 只看该作者
大神,视频链接咋没了?大神,能不能顺便换成PID控制呀,热电偶的

使用特权

评论回复
评论
考拉大巫 2018-4-19 20:38 回复TA
@一路向北lm :大神,你方便写个程序吗?有偿的,我在你的程序底下,想改成我要的,改不成 
一路向北lm 2018-4-19 13:15 回复TA
太忙了,没时间往优酷传 
考拉大巫 2018-4-17 17:50 回复TA
大神 
发新帖 本帖赏金 0.10元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

257

主题

3641

帖子

73

粉丝