国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>基本模型的建立

      直播推薦

      更多>

      企業(yè)動(dòng)態(tài)

      更多>

      推薦展會(huì)

      更多>

      基本模型的建立

      2010年04月21日 17:10:04人氣:882來(lái)源:西安譽(yù)通光電測(cè)控有限責(zé)任公司

       

      寫(xiě)給我的兄弟姐妹們十
      ―基本模型的建立(圖+程序)
      上學(xué)的時(shí)候我“理科”學(xué)的很不錯(cuò),其中很重要的原因之一就是我在學(xué)習(xí)的時(shí)候注重“基本模型”的建立,學(xué)習(xí)“嵌入式開(kāi)發(fā)”也不例外,我們知道“單片機(jī)和外圍功能器件構(gòu)成基本硬件系統(tǒng)”+輸入控制+輸出控制=“目的系統(tǒng)”,很多書(shū)上從多個(gè)方面闡述其工作機(jī)理,要了解個(gè)中究竟就去看書(shū)吧;我在此只按照自己的理解方式給大家劃分和講解,目的是整理出思路來(lái):不論鍵盤(pán)、鼠標(biāo)等等輸入,還是LCD、LED、CRT的顯示,繼電器、AD、DA等等,對(duì)于單片機(jī)來(lái)講只是“控制方式”不同,而控制方式一般可分為---總線方式和I/O模擬方式;
      那么首先要建立的模型是:
      1.       單片機(jī)+鍵盤(pán)+LED燈;
      這里的鍵盤(pán)是低電平有效,程序里用查詢方式,當(dāng)然你也可以高電平有效方式,把鍵盤(pán)和電阻的位置調(diào)換就可以了,同時(shí)可以用中斷方式,當(dāng)多個(gè)鍵盤(pán)共用一個(gè)中斷的時(shí)候加一個(gè)74HC4078就可以了,如果牽扯到電平取反則加一個(gè)74HC04即可;這個(gè)實(shí)驗(yàn)是練習(xí)基本的I/O口控制;
      2.       單片機(jī)+LCD;
      使用總線控制和I/O控制兩種方式來(lái)控制LCD;
      3.       單片機(jī)+通信+LED數(shù)碼等等(寄存器的設(shè)置+基本通信協(xié)議的理解+I/O模擬控制等等)具體有例子程序;
      /* 實(shí)驗(yàn)一  LED流水燈 */
      #Include <REG51.H>
      void delay(void)
      { unsigned int i,j,k,l;
        for(i=0;i<=27000;i++)
        {j++; k++;l++;};
      }
      void main (void)
      { unsigned char i,c[4] = {0xef,0xdf,0xbf,0x7f};// 從左往右流水
       i = 0;
       while(1)
       {    P3 = c[i & 3];
            i++;
              delay();
         }
      }
      //=========================================================================
      // 實(shí)驗(yàn)二  用一位數(shù)碼管循環(huán)顯示0~9
      #Include <REG51.H>
      #define U8 unsigned char
      code U8 tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};
      void delay(void)
      { unsigned int i,j,k,l;
        for(i=0;i<=27000;i++)
        {j++; k++;l++;};
      }
      void main(void)
      { U8 i;
       P2_4=0;
       while(1)
       { P0 = tab[i];
        delay();
        i++;
        if(i==10) i = 0;
       }
      }
      //=============================================================================
      // 實(shí)驗(yàn)三  LED數(shù)碼管的動(dòng)態(tài)驅(qū)動(dòng)
      #Include <REG51.H>
      #define U8 unsigned char
      U8 tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};
      U8 scn[]={0x7f,0xbf,0xdf,0xef};//先點(diǎn)亮左邊一個(gè)數(shù)碼管
      U8 buf[4]={0,0,0,0};// 顯示緩沖區(qū),開(kāi)機(jī)先顯示"0000"
      U8 cnt = 0;   // 掃描計(jì)數(shù)
      void main(void)
      { EA = 1;   // 允許中斷
       TMOD = 0x01; // 設(shè)定時(shí)器0為模式1(16位)
       ET0 = 1;   // 定時(shí)器0中斷允許
       TH0 = 0xee;  // 晶振11.0592MHz,5mS
       TL0 = 0;   
       TR0 = 1;  // 開(kāi)始計(jì)數(shù)
       while(1);   // 死循環(huán),等待中斷
      }
      void timeint(void) interrupt 1 // 定時(shí)器0中斷服務(wù)程序
      { char i;
       TH0 = 0xee;      // 設(shè)置定時(shí)器時(shí)間常數(shù)
       TL0 = 0;
       i = cnt & 0x03;  // 求應(yīng)點(diǎn)亮的LED號(hào)(從左到右依次為 0,1,2,3)
       P0 = tab[buf[i]]; // 筆劃代碼送P0口 
       P2 = scn[i];  // 控制掃描碼送P2口
       if(cnt==200)
       { cnt=0;   // 到1秒鐘,顯示的數(shù)字加一
        for(i=3;i>=0;i--)
        {   buf[i]++;
            if(buf[i]==10) buf[i]=0;// 加到10向前進(jìn)位
            else break;
        }
       }
       cnt++;
      }
      //====================================================================
      // 實(shí)驗(yàn)四  自動(dòng)演奏樂(lè)曲-康定情歌
      #Include <REG51.h>
      #define U8 unsigned char
      code unsigned int cyc[]={1800,1600,1440,1351,1200,1079,960};//音階1-7的半周期數(shù)
      code U8 tone[]={13,15,16,16,15,16,13,12,12,13,15,16,16,15,16,13,13, 13,15,16,
      16,15,16,13,12,12,15,13,12,13,12,11,12,6,6,12,15,13,12,6,6,15,13,12,13,12,11,
      12,6,5,6,0xff};// 樂(lè)曲《康定情歌》的簡(jiǎn)譜表
      code U8 time[]={8,8,8,4,4,8,8,12,4,8,8,8,4,4,8,16,8,8,8,8,4,4,8,8,12,4,8,8,4,4, 4,4,8,24,8,24,8,24,8,16,8,8,8,4,4,4,4,8,16,8,32};// 節(jié)拍表
      U8 H0,L0,cnt;
      void cntint0(void) interrupt 1 // 定時(shí)器0中斷用于產(chǎn)生音階方波
      { TH0=H0;
       TL0=L0;
       P2_3=~P2_3;                // P2.3是音樂(lè)信號(hào)輸出腳,P2.3反相,產(chǎn)生方波
      }
      void cntint1(void) interrupt 3  // 定時(shí)器1中斷用于產(chǎn)生節(jié)拍延時(shí)
      { cnt++;                     // 計(jì)數(shù)初值為0,所以不用賦值
      }
      void main(void)
      { U8 i,a,t;
      unsigned int b;
      next:TMOD=0x11;
       EA=1;
       ET0=1;
       ET1=1;
       cnt=0;
       TR1=1;
       i=0;
       while(1)
       { t=tone[i];           // 讀音調(diào)
        if(t==0xff) break;    // 0xff是結(jié)束符
        if(t!=0)      // 0 是休止符 
        { b=cyc[t%10-1];   // 根據(jù)基本音階,求出半周期數(shù)
         if(t<10) b=b*2;   // 若是低八度音階,半周期數(shù)加倍
         if(t>20) b=b/2;   // 若是高八度音階,半周期數(shù)減半
         H0=(65536-b)/256; // 根據(jù)半周期數(shù),計(jì)算T0初值的高字節(jié)和低字節(jié)
         L0=(65536-b)%256;
         TR0=1;        // 啟動(dòng)定時(shí)器0發(fā)音
        }
        cnt=0;
        a=time[i];           // 讀節(jié)拍
        while(a>cnt);
        TR0=0;
        i++;
        for(b=0;b<1000;b++);  // 稍加延時(shí),增強(qiáng)節(jié)奏感
       }
       P2_3=1;                // 關(guān)閉喇叭
       while(P3_2==1);           // 等待按INT鍵
       goto next;               // 重放一遍
      }
      //===========================================================================
      // 實(shí)驗(yàn)五  加法計(jì)算器
      #Include <REG51.H>
      #define U8 unsigned char
      #define key_port P1
      code U8 kcode[]={0xb7,0xbe,0xde,0xee,0xbd,0xdd,0xed,0xbb,0xdb,0xeb,0xd7,0xe7};
      //反轉(zhuǎn)碼對(duì)應(yīng)鍵值  0    1    2    3    4    5    6    7    8    9    A    B
      code U8 disp[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff};
      U8 buf[4]={0,0,0,0};
      U8 cnt=0;
      U8 scn[]={0x7f,0xbf,0xdf,0xef};// 先點(diǎn)亮左邊一個(gè)數(shù)碼管
      void delay_ms(U8 ms)
      { U8 i,j;
       for(i=0;i<100;i++)
       { for(j=0;j<ms;j++);};
      }
      U8 key(void)
      { U8 a,r;
       delay_ms(20); // 延時(shí)20毫秒,消除按鍵抖動(dòng)
       if(key_port == 0xf0) goto rn;
       a = key_port;
       key_port = a | 0x0f;
       delay_ms(20);
       a = key_port;
       for (r = 0;r <= 11;r++)
       {    if(a == kcode[r]) break;};
       if(r > 11) r = 0xff; //0xff表示無(wú)效
      rn: key_port = 0xf0;
       return r;
      }
      void main(void)
      { U8 k,i,pf;  // pf為按過(guò)加號(hào)鍵的標(biāo)志
       int p,p1,p2, // p1,p2為兩個(gè)加數(shù),p為和
       TMOD = 0x01;    // 設(shè)定時(shí)器0為模式1(16位)
       TH0 = 0xee;     // 晶振11.0592MHz,5mS
       TL0 = 0; 
       TR0 = 1;     // 開(kāi)始計(jì)數(shù)
       EA = 1;      // 允許中斷
       ET0 = 1;      // 定時(shí)器0中斷允許
       key_port = 0xf0;
       pf = 0;      // 清除加號(hào)標(biāo)志
       p = 0;
       delay_ms(20);
       while(1)      // 循環(huán)
       {   if (key_port != 0xf0)
           {   k = key();
               if (k < 10)
               {   if((p1==0)&&(p2==0))for(i=0;i<=3;i++) buf[i] = 0;//清空顯示緩沖區(qū)
                else for(i=1;i<=3;i++) buf[i-1]=buf[i];// 數(shù)字左移一位
                buf[3] = k;// 在個(gè)位顯示剛按的數(shù)字
                if(pf==0) p1 = p1 * 10 + k;
          else p2 = p2 * 10 + k;
          }
            else
            {   if(pf == 1)
                { p = p1 + p2;
                 p1 = 1000;
                 for(i=0;i<3;i++)
                 {   buf[i] = p / p1;
                  p = p - p1 * buf[i];
                     p1 = p1 / 10;
                 }
                 buf[3] = p;
           p = 0;
           p1 = 0;
           p2 = 0;
           pf = 0;
                }
                else
                { pf = 1;
                 p2 = 0;
                 for(k=0;k<=3;k++) buf[k] = 0;
          }
            }
               while(key_port != 0xf0);// 等待按鍵抬起
               delay_ms(20);
               while(key_port != 0xf0);
           }
       }
      }
      void timeint(void) interrupt 1 // 定時(shí)器0中斷服務(wù)程序
      { unsigned char i,s;
       TH0 = 0xee;      // 設(shè)置定時(shí)器時(shí)間常數(shù)
       TL0 = 0;
       i = cnt & 0x03;     // 求應(yīng)點(diǎn)亮的LED號(hào)(從左到右依次為 0,1,2,3)
       P0 = disp[buf[i]];  // 筆劃代碼送P0口 
      P2 = scn[i];  // 控制掃描碼送P2口
       cnt++;
      }
      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責(zé)聲明

      • 凡本網(wǎng)注明"來(lái)源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請(qǐng)必須注明智能制造網(wǎng),http://towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
      • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
      • 本網(wǎng)轉(zhuǎn)載并注明自其它來(lái)源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。
      • 如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

      <
      更多 >

      工控網(wǎng)機(jī)器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機(jī)械包裝機(jī)械印刷機(jī)械農(nóng)業(yè)機(jī)械食品加工設(shè)備制藥設(shè)備倉(cāng)儲(chǔ)物流環(huán)保設(shè)備造紙機(jī)械工程機(jī)械紡織機(jī)械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機(jī)械印染機(jī)械制鞋機(jī)械玻璃機(jī)械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


      我要投稿
      • 投稿請(qǐng)發(fā)送郵件至:(郵件標(biāo)題請(qǐng)備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時(shí)代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺(tái)
      智能制造網(wǎng)APP

      功能豐富 實(shí)時(shí)交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務(wù)

      微信公眾號(hào)

      關(guān)注我們

      抖音

      智能制造網(wǎng)

      抖音號(hào):gkzhan

      打開(kāi)抖音 搜索頁(yè)掃一掃

      視頻號(hào)

      智能制造網(wǎng)

      公眾號(hào):智能制造網(wǎng)

      打開(kāi)微信掃碼關(guān)注視頻號(hào)

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開(kāi)快手 掃一掃關(guān)注
      意見(jiàn)反饋
      關(guān)閉
      企業(yè)未開(kāi)通此功能
      詳詢客服 : 0571-87858618