久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

“智能物料傳送系統(tǒng)”設(shè)計(jì)任務(wù)書——藍(lán)橋15年決賽

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:272080 發(fā)表于 2018-1-23 16:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
“智能物料傳送系統(tǒng)”設(shè)計(jì)任務(wù)書


選用材料為藍(lán)橋杯官方提供的開發(fā)板。

因?yàn)榇税暹x用了4塊74LS573芯片用于鎖存P0口信號(hào),這種設(shè)計(jì)可節(jié)約很多的i/0口,與市面上很多的開發(fā)板不一樣,所以如果要換到其他開發(fā)板上使用,需要改一下顯示代碼 和LED亮滅代碼,但是大致思路不變,只要改變一下那幾個(gè)比較特殊的使用到了573鎖存來編程的函數(shù)即可。

我也是一名菜雞  如果有那個(gè)大神有更好的編程思路的話 那就拜托大神賜教了。


功能簡(jiǎn)述
  
        
單片機(jī)
   
   
   
  
        
數(shù)據(jù)存儲(chǔ)
   
   
   
  
        
傳送控制
   
   
   
  
        
貨物類型監(jiān)測(cè)
   
   
   
  
        
數(shù)碼管顯示
   
   
   
  
        
按鍵輸入
   
   
   
file:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image001.giffile:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image002.gif
  
        
過載空載監(jiān)測(cè)
   
   
   
file:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image003.giffile:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image004.giffile:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image005.giffile:////Users/yefeng/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image006.gif    智能物料傳送系統(tǒng)能夠?qū)崿F(xiàn)貨物類型判斷、過載監(jiān)測(cè)、緊急停止和系統(tǒng)參數(shù)存儲(chǔ)記錄等功能。系統(tǒng)硬件部分主要由按鍵電路,顯示電路,數(shù)據(jù)存儲(chǔ)電路、傳感器檢測(cè)電路及單片機(jī)系統(tǒng)組成,系統(tǒng)框圖如圖一所示:
                                                                                    
圖一:系統(tǒng)框圖
I2C總線驅(qū)動(dòng)程序、CT107D單片機(jī)考試平臺(tái)電路原理圖以及本題所涉及到的芯片數(shù)據(jù)手冊(cè),可參考計(jì)算機(jī)上的電子文檔。原理圖文件、程序流程圖及相關(guān)工程文件請(qǐng)以考生號(hào)命名,并保存在計(jì)算機(jī)上的考生文件夾中(文件夾名為考生準(zhǔn)考證號(hào),文件夾位于Windows桌面上)。
設(shè)計(jì)任務(wù)及要求
1. 過載檢測(cè)與貨物類型識(shí)別
  1.1空載、過載檢測(cè)
     使用電位器RB2輸出電壓V0模擬壓力變送器輸出,設(shè)備實(shí)時(shí)采集電位器輸出電壓,完成貨物空載,過載檢測(cè)功能。
  1.1.1當(dāng)0<V0<1V時(shí),判斷為空載,L1點(diǎn)亮;
  1.1.2當(dāng)1<=V0<4V時(shí),判斷為非空載,貨物被填裝到傳送起始位,L2點(diǎn)亮;
  1.1.3當(dāng)V0>=4V時(shí),判斷為過載狀態(tài),L3以0.5秒為間隔閃爍提醒,蜂鳴器報(bào)警提示。
  說明:空載狀態(tài)下,所有數(shù)碼管熄滅。
  1.2 貨物類型判斷
貨物被填裝到傳送起始位置后,系統(tǒng)啟動(dòng)超聲波被測(cè)距功能,完成貨物類型判斷,數(shù)碼管顯示界面如圖2所示:
  1.2.1 當(dāng)超聲探頭與貨物之間的距離小于等于30cm時(shí)判斷為I類貨物;
  1.2.2 當(dāng)超聲探頭與貨物之間的距離大于30cm時(shí)判斷為II類貨物。
  
1
  
8
8
3
2
8
8
2
界面編號(hào)
熄滅
距離:32cm
熄滅
II類貨物
圖2:數(shù)碼管顯示界面1-貨物類型顯示
說明:1:貨物類型顯示格式:I類貨物-數(shù)字1、II類貨物-數(shù)字;
      2:A3草稿紙短邊接近30cm,可用于驗(yàn)證測(cè)距結(jié)果。
2. 貨物傳送
在非空載、非過載的前提下,通過按鍵控制繼電器吸合,啟動(dòng)貨物傳送過程,并通過數(shù)碼管實(shí)時(shí)顯示剩余的傳送時(shí)間,倒計(jì)時(shí)結(jié)束后,繼電器自動(dòng)斷開,完成本次傳送過程,數(shù)碼管顯示格式如圖3所示:
  
2
  
8
8
8
8
8
0
1
界面編號(hào)
熄滅
剩余傳送時(shí)間:1
圖3:數(shù)碼管顯示界面2-剩余傳送時(shí)間顯示
說明:繼電器吸合時(shí),指示燈L10點(diǎn)亮,斷開時(shí)L10熄滅。
3.按鍵功能描述
  3.1 按鍵S4定義為“啟動(dòng)傳送”按鍵,按鍵按下后,啟動(dòng)貨物傳送過程。
      說明:按鍵S4在空載、過載、傳送過程中無效。
  3.2 按鍵S5定義為“緊急停止”按鍵,按鍵按下后,繼電器立即斷開,指示燈L4以0.5秒為間隔閃爍,剩余傳送時(shí)間計(jì)時(shí)停止。再次按下S5,傳送過程恢復(fù),L4熄滅,恢復(fù)倒計(jì)時(shí)功能,繼電器吸合。知道本次傳送完成。
      說明:按鍵S5僅在傳送過程中有效。
  3.3 按鍵S6定義為“設(shè)置”按鍵,按下S6按鍵,調(diào)整I類貨物傳送時(shí)間,再次按下S6按鍵,調(diào)整II類貨物傳送時(shí)間,第三次按下S6,保存調(diào)整后的傳送時(shí)間到E2PROM,并關(guān)閉數(shù)碼管顯示。設(shè)置過程中數(shù)碼管顯示界面如圖4所示:
  
3
  
8
8
0
2
8
0
4
界面編號(hào)
熄滅
I類:傳送時(shí)間2秒
熄滅
II類:傳送時(shí)間為4秒
圖4:數(shù)碼管顯示界面3-傳送時(shí)間設(shè)置界面
說明:1:貨物傳送時(shí)間可設(shè)定范圍為1-10秒,通過按鍵S7調(diào)整;
      2:“設(shè)置”按鍵S6、“調(diào)整”按鍵S7僅在空載狀態(tài)下有效;
      3:通過按鍵S6切換選擇到不同貨物類型的傳送時(shí)間時(shí),顯示該類貨物傳送時(shí)間的數(shù)碼管閃爍。
4.數(shù)據(jù)存儲(chǔ)
I、II類型貨物的傳送時(shí)間在設(shè)置完成后需要保存到E2PROM中,設(shè)備重新上電后,能夠恢復(fù)最近一次的傳送時(shí)間配置信息。
5.上電初始化狀態(tài)與工作流程說明
5.1  I類設(shè)備默認(rèn)傳送時(shí)間為2秒,II類設(shè)備為4秒;
5.2  最終作品提交前,將RB2輸出電壓調(diào)整到最小值,確保設(shè)備處于空載狀態(tài);


代碼如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
#include"led_jdq.h"
#include"iic.h"
#include"hc.h"

sbit s4=P3^3;
sbit s5=P3^2;
sbit s6=P3^1;
sbit s7=P3^0;

uchar tab[]={   0xC0,/*0*/
                        0xF9,/*1*/
                        0xA4,/*2*/
                        0xB0,/*3*/
                        0x99,/*4*/
                        0x92,/*5*/
                        0x82,/*6*/
                        0xF8,/*7*/
                        0x80,/*8*/
                        0x90,/*9*/
                        0xBF,/*-*/
                                0xff
};
uchar dspbuf[]={11,11,11,11,11,11,11,11};
uchar DSP;

uchar hc_add;                   //定時(shí)刷新超聲波數(shù)據(jù)標(biāo)志位  
bit hc_add_flag;

uint led3_add;                   //定時(shí)刷新led3標(biāo)志位  
bit led3_add_flag;

uint sec_add;                   //秒標(biāo)志位
bit sec_flag;

bit s6_flag;

bit open_sec;                   //倒計(jì)時(shí)開始標(biāo)志位
uchar sz_flag;                   //設(shè)置標(biāo)志位

uchar vv;                      //電壓值
uint ss;                                //超聲波距離
uchar hw;                                   //貨物類型

char time1,time2;     //貨物1貨物2送貨時(shí)間倒計(jì)時(shí)
char time11,time22;   //送貨時(shí)間

uchar ms_flag;          //送貨前顯示模式標(biāo)志位
bit sh_flag;                         //送貨標(biāo)志位

void display();                         //顯示函數(shù)
void int_t();                         //初始化定時(shí)器

void vv_dat();                 //判斷電壓狀態(tài)

void moshi();                //顯示模式1  送貨狀態(tài)
void sh_moshi();
void sz_moshi();

void hwlx();                 //判斷貨物類型
void key4();                //s4按鍵功能
void key5();                //s5按鍵功能
void key6();
void key7();

void delay(uint time);

void main()
{
        time11=2;                                        //初始化傳送時(shí)間
        time22=4;
       


        int_t();                                          //初始化定時(shí)器       
        int_8591();                                        //初始化pcf8591

//        iic_w(0,time11);
//        delay(100);
//        iic_w(1,time22);
        delay(10);
        time11=iic_r(0);                                    //讀出24c02
        delay(10);
        time22=iic_r(1);                                    //讀出24c02

        time1=time11;                                //初始化送貨時(shí)間
        time2=time22;
        cls_jdq();                                        //關(guān)閉繼電器
        while(1)
        {
       

                if(hc_add_flag)                         //讀出距離
                {
                        ss=hc_red();

                        vv=red_8591();                     //讀出電壓
                        hc_add_flag=0;
                }

               

                vv_dat();                                  //判斷電壓值
                hwlx();                                          //貨物類型判斷

                if(sh_flag==0)
                {
                        if(sz_flag==0)
                        moshi();
                        else
                        sz_moshi();
                        cls_led10();
                }
                else
                {
                        sh_moshi();
                }

                key4();
                if(vv<10)
                {
                        key6();
                }

//                dspbuf[0]=ss/100;
//                dspbuf[1]=ss%100/10;
//                dspbuf[2]=ss%10;
//                dspbuf[3]=x%10;
//                dspbuf[4]=vv/10;
//                dspbuf[5]=vv%10;
        }
}

void t0 () interrupt 1
{
        TH0=(65535-1000)/256;
        TL0=(65535-1000)%256;
        hc_add++;
        led3_add++;
        if(hc_add==200)
        {
                hc_add=0;
                hc_add_flag=1;
        }

        if(led3_add==500)
        {
                led3_add_flag=~led3_add_flag;
                led3_add=0;
        }

        if(open_sec)
        {
                sec_add++;
                if(sec_add==1000)
                {       
                        sec_add=0;
                        if(hw==1)
                        {
                                time1--;
                                if(time1<0)
                                {
                                        time1=time11;
                                        sh_flag=0;
                                        open_sec=0;
                                }
                        }  else
                        {
                                time2--;
                                if(time2<0)
                                {
                                        time2=time22;
                                        sh_flag=0;
                                        open_sec=0;
                                }
                        }
                }
        }
        display();
}

void int_t()
{
        TMOD=0X11;
        ET0=1;
        TH0=(65535-1000)/256;
        TL0=(65535-1000)%256;

        TH1=0;
        TL1=0;
        TR0=1;
        EA=1;
}

void display()
{
        P2=(P2&0x1f)|0xe0;
        P0=0xff;
        P2&=0x1f;

        P2=(P2&0x1f)|0xc0;
        P0=1<<DSP;
        P2&=0x1f;

        P2=(P2&0x1f)|0xe0;
        P0=tab[dspbuf[DSP]];
        P2&=0x1f;

        DSP++;
        if(DSP==8)
        DSP=0;
}

void vv_dat()                                          //判斷電壓
{
       
                if(vv<10)
                {
                   open_led1();
//                   key6();
                   ms_flag=0;
                }               
                else
                {
                        if(vv<40)
                        {
                                open_led2();
                                ms_flag=1;
                        }
                        else
                        {
                                cls_led2();
                                if(led3_add_flag)
                                open_led3();
                                else
                                cls_led3();

                                ms_flag=0;
                        }

                        cls_led1();
                }
}

void delay(uint time)
{
        uint i;
        while(time--)
        {for(i=0;i<800;i++);}
}


void hwlx()
{
        if(ss<=30)
        hw=1;
        else
        hw=2;
}

void key4()
{
        if(ms_flag)
        {
                if(s4==0)
                {
                         delay(10);
                         if(s4==0)
                         {
                                 sh_flag=1;
                                open_sec=1;
                                open_jdq();
                                while(!s4);
                         }
                }
        }
}

void key5()
{
        if(s5==0)
        {
                delay(10);
                if(s5==0)
                {
                        open_sec=~open_sec;
                        while(!s5);       
                }
        }

}

void key6()
{
       
        if(s6==0)
        {
                delay(10);
                if(s6==0)
                {
                         sz_flag++;
                         if(sz_flag==3)
                         {
                                 sz_flag=0;
                                time1=time11;
                                time2=time22;
                                iic_w(0,time11);                                           //寫入24c02
                                delay(100);
                                iic_w(1,time22);                                           //寫入24c02
                         }
                         while(!s6);
                }
        }
}

void key7()
{
        if(s7==0)
        {
                delay(10);
                {
                        if(s7==0)
                        {
                                if(sz_flag==1)
                                {
                                        time11++;
                                        if(time11>10)
                                        {
                                                time11=1;
                                        }
                                }  else
                                {
                                        time22++;
                                        if(time22>10)
                                        {
                                                time22=1;
                                        }
                                }
                                while(!s7);
                        }
                }
        }
}

void moshi()
{
        switch(ms_flag)
        {
                case 0: dspbuf[0]=dspbuf[1]=dspbuf[2]=dspbuf[3]=dspbuf[4]=dspbuf[5]=dspbuf[6]=dspbuf[7]=11;
                                break;

                case 1: dspbuf[0]=1;
                                dspbuf[1]=11;
                                dspbuf[2]=11;
                                dspbuf[3]=ss%100/10;
                                dspbuf[4]=ss%10;;
                                dspbuf[5]=11;
                                dspbuf[6]=11;
                                dspbuf[7]=hw;
                                break;
        }
        cls_led10();
        cls_jdq();
}

void sh_moshi()
{
        open_jdq();
        open_led10();
        dspbuf[0]=2;
        dspbuf[1]=11;
        dspbuf[2]=11;
        dspbuf[3]=11;
        dspbuf[4]=11;
        dspbuf[5]=11;
        if(hw==1)
        {
                dspbuf[6]=time1/10;
                dspbuf[7]=time1%10;
        }else
        {
                dspbuf[6]=time2/10;
                dspbuf[7]=time2%10;
        }
        key5();
        if(open_sec==0&&sh_flag==1)
        {
                 if(led3_add_flag)
                 open_led4();
                 else
                 cls_led4();
        }        else  cls_led4();
}

void sz_moshi()
{
        dspbuf[0]=3;
        dspbuf[1]=11;
        dspbuf[2]=11;
        dspbuf[3]=time11/10;
        dspbuf[4]=time11%10;
        dspbuf[5]=11;
        dspbuf[6]=time22/10;
        dspbuf[7]=time22%10;
        key7();
}





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

使用道具 舉報(bào)

沙發(fā)
ID:272080 發(fā)表于 2018-1-23 16:53 | 只看該作者
忘記上傳文件了  怎么上傳文件啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合在 | 成人国产精品一级毛片视频毛片 | 久久久久国产一区二区三区 | 欧美精品在欧美一区二区 | 欧美一区二区成人 | 性一交一乱一透一a级 | 久草免费福利 | 国产农村妇女毛片精品久久麻豆 | 污污的网站在线观看 | 国产精品一级 | 男人天堂网址 | 精品国产成人 | av性色 | 日韩精品久久一区二区三区 | 永久免费av | 亚洲二区视频 | 国产精品三级 | 3p视频在线观看 | 在线视频亚洲 | 国产91丝袜在线18 | 国产午夜精品一区二区三区四区 | 国产一区二区三区久久久久久久久 | 黄色网一级片 | 激情欧美一区二区三区 | 999久久久国产精品 欧美成人h版在线观看 | 亚洲福利电影网 | 男人天堂99 | 一二三四在线视频观看社区 | 高清成人av| 在线免费看黄 | 精品国产乱码久久久久久丨区2区 | 国产 日韩 欧美 中文 在线播放 | 精品国产一区一区二区三亚瑟 | 在线观看毛片网站 | 激情五月综合 | 国产黄色大片在线免费观看 | 国产精品一区二区日韩 | 爱综合| 欧美在线观看一区 | 国产精品揄拍一区二区久久国内亚洲精 | 久久一二 |