精品乱码一区内射人妻无码-亚洲中文AⅤ中文字幕在线-免费不卡国产福利在线观看-国产综合无码一区二区色蜜蜜

          您現(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://www.tzhjjxc.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