<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        ARM—LPC2124—NXP實踐

        作者:佚名   來源:互聯網   點擊數:  更新時間:2014年08月10日   【字體:

        認識ARM7-- LPC2124—Philips

         

        當作851模式用:熟悉、理解保留字、數據模式、硬件接口與擴展à內置

        1)             單個LED燈(位操作輸出)與多(8及其整倍數)個LED燈(字節操作—輸出)最小系統,僅有輸出的單片機系統

        1)        單個LED燈,位操作輸出

        2)        多(8及其整倍數)個LED燈,字節操作輸出

        3)        單個與多個LED燈,位與字節混合操作輸出

        4)        單個LED燈閃爍延時函數

        5)        多個LED燈閃爍或流動延時函數—流水燈

        6)        多種軟控制形成流水燈

         

         

         

         

         

        1)    輸出一個LED燈顯示

        了解ARM

        A)        硬件操作

        打開-Proteus,

        選取ARM芯片LPC2124、R電阻、LED燈、電源(設置正電位)與接地

        連線完成(可以將二極管的極性調換,使用高電位或低電位)

        保存文件

        B)        軟件操作

        打開- Keil,

        建立新的工程、設置或選擇ARM芯片LPC2124、

        建立新文件、編寫控制代碼、保存文件為*.C、添加到工作區

        設置時鐘頻率、設置輸出的編譯文件*.HEX

        鏈接編譯、編譯修改

        保存文件

        C)        控制指令軟件編寫

         

        ***************單位輸出一個LED燈顯示*************

        #include  

        //軟件延時函數: delay()—用戶自定義函數

        void delay (void) 

          unsigned volatile long i,j;

          for(i=0;i<60000;i++)

          for(j=0;j<5;j++)

        }

        int main(void)

        {

        PINSEL0 = 0;//設置引腳為GPIO-輸出口PINSEL0、PINSEL1設置各引腳的功能。

        IO0DIR = 0x000001;//P0.0設置為輸出 ,P0~7口用0x0000ff

        IO0SET = 0x000001;//P0.01,也就是讓led滅(因:外接高電平); P0~7口用0x0000ff

          while (1) 

        {

        IO0CLR = 0x000001;// 使led

               delay();

              IO0SET = 0x000001;

               delay();

          }

         

        程序說明:

         

        GPIO

        做輸入輸出。以P0口為例,寄存器有IO0PIN、IO0SET、IO0DIR、IO0CLR。

         

        D)        仿真結果

        打開-Proteus的仿真文件,雙擊芯片LPC2124,選擇需要仿真的文件路徑,選取*.HEX文件,OK;

        點擊仿真按鈕,觀察結果,修改軟硬件,調整仿真時鐘頻率;

         

        2)    多位輸出—LEDs燈顯示流水燈

        A)      硬件操作

        同前

        B)       軟件操作

        同前

        C)      控制指令軟件編寫

        ///////////////////////////////

        void delay (void) //軟件延時函數

                                

          unsigned volatile long i,j;

          for(i=0;i<60000;i++);

          for(j=0;j<8;j++);

        }

         

        int main(void)

         {

          PINSEL0 = 0;   

          IO0DIR = 0x0000FF;

          IO0SET = 0x0000FF;      

          while (1)

           {

              IO0CLR = 0x000001;

               delay();

              IO0SET = 0x000001;

               delay();

                     IO0CLR = 0x000002;

               delay();

              IO0SET = 0x000002;

               delay();

                     IO0CLR = 0x000004;

               delay();

              IO0SET = 0x000004;

               delay();

                     IO0CLR = 0x000008;

               delay();

              IO0SET = 0x000008;

               delay();

                      IO0CLR = 0x000010;

               delay();

              IO0SET = 0x000010;

               delay();

                     IO0CLR = 0x000020;

               delay();

              IO0SET = 0x000020;

               delay();

                     IO0CLR = 0x000040;

               delay();

              IO0SET = 0x000040;

               delay();

                     IO0CLR = 0x000080;

               delay();

              IO0SET = 0x000080;

               delay();

          }

        }

        ////////////////////////////////

        程序說明:

        該程序表明了

        可以注意數值的發送格式0x000080;這里總計8位,每位代表4個二進制數,總共32位?0x00000000==二進制0000 0000 0000 0000 0000 0000 0000 0000

        0x0000FFFF==二進制0000 0000 1111 1111 1111 1111 1111 1111

        注意對比8位的51系列數值的發送格式0x000x0FF

        程序可讀性差,使用數組比較恰當

        專用的數據格式的變化,可以用于數碼管的顯示驅動

        D)      仿真結果

        打開-Proteus的仿真文件,雙擊芯片LPC2124,選擇需要仿真的文件路徑,選取*.HEX文件,OK;

        點擊仿真按鈕,觀察結果,修改軟硬件,調整仿真時鐘頻率;

        3)    多位輸出—LEDs燈顯示流水燈

        A)      硬件操作

        同前

        B)       軟件操作

        同前

        C)      控制指令軟件編寫

         

        //流水燈

        #include                        

                

        void delay (void)//  軟件延時函數delay()

                                

          unsigned volatile long i,j;

          for(i=0;i<60000;i++);

          for(j=0;j<9;j++);

        }

         

        int main(void)

         {

          PINSEL0 = 0;    //PINSEL0設置引腳為GPIO ;PINSEL1設置?

          IO0DIR = 0x0003FF;//P0.0~P0.09設置為輸出,陽極硬件--高電平,陰極硬件可取反;DIR? 

          IO0SET = 0x0003FF;       //P0.0~P0.091,也就是讓led

          while (1)

           {

              IO0CLR = 0x000001;

               delay();

              IO0SET = 0x000001;

               delay();

                     IO0CLR = 0x000002;

               delay();

              IO0SET = 0x000002;

               delay();

                     IO0CLR = 0x000004;

               delay();

              IO0SET = 0x000004;

               delay();

                     IO0CLR = 0x000008;

               delay();

              IO0SET = 0x000008;

               delay();

                      IO0CLR = 0x000010;

               delay();

              IO0SET = 0x000010;

               delay();

                     IO0CLR = 0x000020;

               delay();

              IO0SET = 0x000020;

               delay();

                     IO0CLR = 0x000040;

               delay();

              IO0SET = 0x000040;

               delay();

                     IO0CLR = 0x000080;

               delay();

              IO0SET = 0x000080;

               delay();

                            IO0CLR = 0x000100;

               delay();

              IO0SET = 0x000100;

               delay();

                            IO0CLR = 0x000200;

               delay();

              IO0SET = 0x000200;

               delay();

          }

        }

        程序說明:

        程序書寫的繁瑣可以看到數組的好處。程序編寫用循環結構的好處

        D)      仿真結果

         

         

         

        4)    多位輸出—LEDs燈顯示流水燈位掃描數組

         

        A)      硬件操作

        同前

        B)       軟件操作

        同前

        C)      控制指令軟件編寫

         

        //流水燈--數組

        #include

        typedef unsigned int uint;                     

         uint const SaoMiao_TAB[]={0x000001,0x000002,0x000004,0x000008,0x000010,0x000020,0x000040,0x000080,0x000100,

        0x000200,0x000400,0x000800,0x001000,0x002000,0x004000,0x008000,0x010000,0x020000,0x040000,0x080000};

                

        void delay (void)//  軟件延時函數delay()

                                

          unsigned volatile long i,j;

          for(i=0;i<60000;i++);

          for(j=0;j<9;j++);

        }

         

        int main(void)

         {

          PINSEL0 = 0;    //PINSEL0設置引腳為GPIO ;PINSEL1設置?

          IO0DIR = 0x0fffFF;//P0.0~P0.15設置為輸出,陽極硬件--高電平,陰極硬件可取反;DIR? 

          IO0SET = 0x0fffFF;  //P0.0~P0.151,也就是讓led

           

          while (1)

           {

           unsigned volatile long n;

                 for(n=0;n<20;n++)

                 {

              IO0CLR = SaoMiao_TAB[n];

               delay();

              IO0SET = SaoMiao_TAB[n];

               delay();

                 }       

          }

        }

        程序說明:

        程序書寫簡潔,可讀性好;可以看到數組的好處。程序編寫用循環結構的好處

         

        ---------數組也顯得不方便移位功能好使--------------

        //流水燈—38LED—數組

        #include

        typedef unsigned int uint;                     

         uint const SaoMiao_TAB[]={0x000001,0x000002,0x000004,0x000008,0x000010,0x000020,0x000040,0x000080,0x000100,0x000200,0x000400,0x000800,0x001000,0x002000,0x004000,0x008000,0x010000,0x020000,0x040000,0x080000,0X100000,0X0200000,0X0400000,0X0800000, 0X01000000,0X02000000,0X040000000,0X080000000};

         

        uint const SaoMiao_TAB1[]={0x010000,0x020000,0x040000,0x080000,0x100000,0x200000,0x400000,0x800000,0x01000000,0x02000000,0x04000000,0x08000000,0x010000000,0x020000000,0x040000000,0x080000000};

                

        void delay (void)// 軟件延時函數delay()

                                

          unsigned volatile long i,j;

          for(i=0;i<60000;i++);

          for(j=0;j<9;j++);

        }

         

        int main(void)

         {

          PINSEL0 = 0;  //PINSEL0設置引腳為GPIO ;

          IO0DIR = 0x0FFFFFFFF;//P0.0~P0.31設置為輸出,陽極硬件--高電平,陰極硬件也不能取反; 

          IO0SET = 0x0FFFFFFFF; //P0.0~P0.311,也就是讓led

          IODIR1 = 0x0ffff0000;//P1.16~P1.31設置為輸出,陽極硬件--高電平,陰極硬件也不能取反; 

          IOSET1 = 0x0ffff0000;

           

          while (1)

           {

           unsigned volatile long n,m;

              for(n=0;n<32;n++)

              {

            IO0CLR = SaoMiao_TAB[n];

            delay();

            IO0SET = SaoMiao_TAB[n];

            delay();

                  for(m=0;m<16;m++)

                  {

            IOCLR1 = SaoMiao_TAB1[m];

            delay();

            IOSET1 = SaoMiao_TAB1[m];

            delay();

             }

              }    

          }

        }

        程序說明:

        通過使用32+16LED顯示流水燈,可以理解LPC2124的各個管腳、端口的功能。

         

        ---------------數組也顯得不方便移位功能好使-----------------













         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮