找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6713|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)豆?jié){機(jī)控制系統(tǒng)設(shè)計(jì)源碼加論文下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一個(gè)簡單的豆?jié){機(jī)控制系統(tǒng),有完整的程序源碼和設(shè)計(jì)論文。用51單片機(jī)做的下面是實(shí)物圖.


原理圖


豆?jié){機(jī)設(shè)計(jì)論文的目錄
前 言    1
第1章 緒論    1
第2章 設(shè)計(jì)方案    2
2.1 設(shè)計(jì)思路    2
2.2 設(shè)計(jì)原理    2
第3章 豆?jié){機(jī)的外部結(jié)構(gòu)設(shè)計(jì)    4
3.1 杯體    4
3.2 機(jī)頭    4
3.3 加熱管    4
3.4 防溢電極    5
3.5 溫度傳感器    5
3.6 防干燒電極    5
3.7 刀片    5
3.8 電機(jī)    5
第4章 系統(tǒng)硬件設(shè)計(jì)    6
4.1 單片機(jī)AT89C51簡介    6
4.1.1 主要特性    6
4.1.2 引腳圖    7
4.2 電源電路的設(shè)計(jì)    9
4.2.1 穩(wěn)壓器    10
4.2.2 整流器    11
4.3 溫度傳感器電路設(shè)計(jì)    11
4.3.1 溫度傳感器DS18B20測溫原理    11
4.3.2 溫度傳感器DS18B20引腳圖    13
4.3.3 溫度傳感器DS18B20電路設(shè)計(jì)    13
4.4 加熱和打漿電路設(shè)計(jì)    14
4.5 防干燒及防溢出電路的設(shè)計(jì)    15
4.6 報(bào)警電路設(shè)計(jì)    16
第5章 系統(tǒng)軟件設(shè)計(jì)    17
5.1 流程圖    17
5.2 溫度傳感器程序    18
5.3 加熱和打漿程序    23
5.4 防干燒防溢程序    25
5.5 報(bào)警電路程序    27
結(jié) 論    28
謝  辭    29
參考文獻(xiàn)    30
附 錄    31
外文資料翻譯    41

設(shè)計(jì)思路
由于以前的豆?jié){機(jī),磨漿要過濾豆渣,豆?jié){熬煮也要自己動(dòng)手,還要特別注意豆?jié){溢鍋的問題,程序繁瑣麻煩,給人們帶來不便,針對這些情況擬定開發(fā)家用豆?jié){機(jī)全自動(dòng)控制電路裝置。
家用豆?jié){機(jī)先是接通電源,按下“啟動(dòng)”鍵,加熱管進(jìn)行加熱,并有溫度傳感器進(jìn)行檢測,當(dāng)溫度達(dá)到80℃時(shí),控制電路會(huì)停止加熱,電機(jī)會(huì)帶動(dòng)刀片運(yùn)行,進(jìn)行對豆物的粉碎和磨漿。運(yùn)行一段時(shí)間后停止,然后再次運(yùn)行電機(jī),如此反復(fù)4至6次。再次對豆?jié){進(jìn)行加熱,當(dāng)達(dá)到一定溫度時(shí),豆?jié){上溢,進(jìn)入熬煮程序,最后進(jìn)行報(bào)警,豆?jié){加工完成。


由單片機(jī)、電源電路、溫度傳感器、放干燒電路電路、防溢電路、打漿電路、加熱電路、報(bào)警電路等組成。先將黃豆放入豆?jié){機(jī)內(nèi),攪拌壺內(nèi)倒入適量的水,裝好攪拌機(jī)。接上電源,指示燈LED亮,提示已接通電源,處于待命狀態(tài)。按下啟動(dòng)鍵,開始加熱,溫度達(dá)到80℃時(shí),停止加熱;攪拌馬達(dá)運(yùn)轉(zhuǎn),將黃豆粉碎,然后馬達(dá)停轉(zhuǎn),又開始加熱,直到豆?jié){沸騰煮熟,停止加熱,發(fā)出報(bào)警聲,提示豆?jié){已做好。

單片機(jī)源碼:
  1. ORG    0000H
  2. AJMP   MAIN
  3. ORG    0003H
  4. AJMP   FGS
  5. MAIN :SETB   IT0         ;選擇邊緣觸發(fā)方式
  6.     SETB   EX0          ;允許外部中斷0
  7.     SETB   EA            ;CPU允許中斷
  8. ;****功能選擇程序****                                                                                                
  9. GNXE:JNB   P2.0,GN1        ;富纖豆?jié){
  10. JNB   P2.1,GN2        ;濃香豆?jié){
  11. ;****富纖豆?jié){工作程序****
  12. GN1:  SETB     P1.0       ;啟動(dòng)加熱
  13.        CLR      P2.3
  14.        MOV    R1,#1EH    ;設(shè)置循環(huán)30次(延時(shí)30分鐘)
  15. ACALL  AA0        ; 調(diào)用
  16. ACALL  WENDU
  17.        MOV    B,TPL         ;從30H中取溫度值
  18.        MOV    A,#50H         ;設(shè)定溫度為80度
  19.        DIV     AB        ;比較A、B大小,商存于A中
  20. CJNE    A,#00H,DJ1        
  21. DJNZ    R1,GN1
  22. ;****打漿程序*****
  23. DJ1:  CLR   P1.0              ;停止加熱
  24.       MOV  R0,#6             ;循環(huán)六次
  25.       SETB  P1.1              ;啟動(dòng)打漿
  26. ACALL BB
  27. CLR   P1.1
  28. ACALL DD
  29. DJNZ  R0,DJ1
  30. ;****煮漿程序****
  31.     ZJ1:  SETB   P1.0              ;啟動(dòng)加熱
  32.           MOV   R1,#1EH     ;設(shè)置循環(huán)30次(延時(shí)30分鐘)
  33.           ACALL  AA0                   ;調(diào)用
  34. JNB    P3.2, FYYZ1
  35. DJNZ   R1,  ZJ1
  36. ;****防溢延煮程序***
  37. FYYZ1:   CLR     P1.0                 ;停止加熱
  38.           ACALL   AA0                  ;等待一分鐘
  39.           SETB    P1.0             ;啟動(dòng)加熱
  40.       MOV     R1,#8       ;設(shè)置循環(huán)8次(防溢延煮8分鐘)
  41.       ACALL   AA0                  ;調(diào)用
  42. JB       P3.2,FYYZ1
  43. DJNZ    R1,FYYZ1
  44. ACALL   BJ
  45. AJMP    MAIN
  46. ;*****濃香豆?jié){工作程序****
  47. GN2:  SETB    P1.0                ;啟動(dòng)加熱
  48.        CLR     P2.4
  49.        MOV    R1,#1EH      ;設(shè)置循環(huán)30次(延時(shí)30分鐘)
  50. ACALL  AA0                 ;調(diào)用
  51.        MOV    B,TPL               ;從30H中取溫度值
  52.        MOV    A,#50H              ;設(shè)定溫度為80度
  53.        DIV     AB            ;比較A、B大小,商存于A中
  54. CJNE    A,#00H,DJ2
  55. DJNZ    R1,GN2
  56. ;****打漿程序*****
  57. DJ2:  CLR     P1.0                 ;停止加熱
  58. MOV    R0,#4                ;循環(huán)四次
  59.        SETB   P1.1                  ;啟動(dòng)打漿
  60. ACALL   CC
  61. CLR      P1.1
  62. ACALL   DD
  63. DJNZ     R0,DJ2
  64. ;****煮漿程序****
  65. ZJ2:  SETB     P1.0                ;啟動(dòng)加熱
  66.       MOV     R1,#1EH        ;設(shè)置循環(huán)30次(延時(shí)30分鐘)
  67. ACALL   AA0                 ;調(diào)用
  68. JB    P3.2,FYYZ2
  69. DJNZ    R1,ZJ2
  70. ;****防溢延煮程序****
  71. FYYZ2:  CLR     P1.0                 ;停止加熱
  72.        ACALL  AA0                 ;等待一分鐘
  73.        SETB    P1.0                 ;啟動(dòng)加熱
  74.        MOV    R1,#8      ;設(shè)置循環(huán)8次(防溢延煮8分鐘)

  75. …………限于本文篇幅 余下代碼請從51黑電子下載附件…………
復(fù)制代碼




完整源碼及論文下載:
豆?jié){機(jī).zip (1.02 MB, 下載次數(shù): 195)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:410499 發(fā)表于 2018-10-16 14:37 | 只看該作者
樓主你這個(gè)是程序,能不能用的?
回復(fù)

使用道具 舉報(bào)

板凳
ID:369182 發(fā)表于 2019-12-20 15:44 | 只看該作者
有完整仿真圖嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:243394 發(fā)表于 2019-12-20 19:41 | 只看該作者
謝謝分亨
回復(fù)

使用道具 舉報(bào)

5#
ID:607530 發(fā)表于 2019-12-21 17:37 | 只看該作者
qq104542 發(fā)表于 2018-10-16 14:37
樓主你這個(gè)是程序,能不能用的?

這個(gè)是匯編
回復(fù)

使用道具 舉報(bào)

6#
ID:253767 發(fā)表于 2019-12-22 08:14 | 只看該作者
謝謝分享!!!
回復(fù)

使用道具 舉報(bào)

7#
ID:667331 發(fā)表于 2019-12-23 12:42 | 只看該作者
#include<reg51.h>
#include<intrins.h>
#define uchar  unsigned char
#define uint  unsigned int
sbit M0=P3^0;   //八路NPN達(dá)林頓連接晶體管連接6線步進(jìn)電機(jī)
sbit M1=P3^1;
sbit M2=P3^2;
sbit M3=P3^3;
sbit sw0=P3^6;   //K1開始
sbit sw1=P3^7;   //K2
sbit key0=P1^0;   //K3
sbit key1=P1^1;    //K4
sbit f=P3^4;       //蜂鳴器
uchar Speed=1;  //分
uchar m;
uchar t=0;
uchar n=0;
uchar Date=0;
uchar Ledplay[6];
uchar bn=0;
uchar code  SEG7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x38,0x77,0x40,0x00};
uchar code  Scan_bit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar data  Dis_buf[]={0,0,10,10,10,10};
uchar z;
void Delayxms(uint t)        //延時(shí)ms            
{
    unsigned char i,j,k;
   for(k=0;k<t;k++)
  {
           _nop_();
                   _nop_();
                _nop_();
           i = 11;
           j = 190;
      do
          {
                   while (--j);
           } while (--i);
   }               
}
void Delay1us(uchar t)        //延時(shí)1us            
{
    uchar i;
   for(i=0;i<t;i++)
  {
           _nop_();
           _nop_();
           _nop_();         
   }               
}
void display(void)                        //數(shù)碼管顯示時(shí)間
{                                                
      uchar i;              
     for(i=0;i<6;i++)
    {
         P2=0xff;               //全部數(shù)碼管位選失能
                 P0=SEG7[Dis_buf[i]];        //第i個(gè)數(shù)碼管顯示
                 P2= Scan_bit[i];
                 Delayxms(1);
    }                                       
}

void Timer0_init(void)  //計(jì)時(shí)器
{
    TMOD=0x51;
        TH0=(65535-50000)/256;
        TL0=(65535-50000)%256;
        EA=1;
        ET0=1;
        TR0= 1;
}
uchar cnt=100;        //秒
void Timer0_int(void) interrupt 1 using        1   //定時(shí)中斷
{
    t++;
        TH0=(65535-50000)/256;
        TL0=(65535-50000)%256;
        if(t==20)
        {
           t=0;
           Date=n;
           n=0;
           cnt--;
           if(cnt==0)
           {
             while(1)
                 {
                     f=0;
                         f=1;
                 }
                  
           }
        }
        if(key0==0)  //檢測K3按下
        {
           Delayxms(10);  //延時(shí)10ms
           if(key0==0)   
           {
              Speed++;
                  if(Speed>20)
                  {
                    Speed=20;
                  }
           }
           while(key0==0);
        }
        if(key1==0)    //檢測K4按下
        {
           Delayxms(10);
           if(key1==0)
          {
             Speed--;
                 if(Speed==0)
                 {
                    Speed=1;
                 }
          }
          while(key1==0);
        }
}        
void delay()                     
{  
    uchar i=5+Speed;
    while(--i!=0)
  {
     Dis_buf[0]=13;
         Dis_buf[1]=cnt%10;
         Dis_buf[2]=cnt/10;
         Dis_buf[3]=12;
     Dis_buf[4]=Speed%10;
         Dis_buf[5]=Speed/10;
         display();
  }                          
}
void R_rotation()
{
   M3=0;
   M0=1;
   delay();
   n++;
   M0=0;
   M1=1;
   delay();
   n++;
   M1=0;
   M2=1;
   delay();
   n++;
   M2=0;
   M3=1;
   delay();
   n++;
}
/*void F_rotation()
{
   M0=0;
   M3=1;
   delay();
   n++;
   M3=0;
   M2=1;
   delay();
   n++;
   M2=0;
   M1=1;
   delay();
   n++;
   M1=0;
   M0=1;
   delay();
   n++;
}*/
void main()
{  
   int flag = 0;
   Timer0_init();  //初始化
        while(1)
        {
                if(flag==1)
                        R_rotation();
                if(sw1==0)                //檢測K2是否按下               
                {
                        cnt=10;
                        flag=1;
                }
                if(sw0==0)                //檢測K1是否按下               
                {
                        cnt=20;
                        flag=1;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表