欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式實(shí)訓(xùn) LED顯示+文件系統(tǒng)定制實(shí)驗(yàn)報(bào)告

      時(shí)間:2019-05-12 12:47:07下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《嵌入式實(shí)訓(xùn) LED顯示+文件系統(tǒng)定制實(shí)驗(yàn)報(bào)告》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《嵌入式實(shí)訓(xùn) LED顯示+文件系統(tǒng)定制實(shí)驗(yàn)報(bào)告》。

      第一篇:嵌入式實(shí)訓(xùn) LED顯示+文件系統(tǒng)定制實(shí)驗(yàn)報(bào)告

      LED顯示控制+文件系統(tǒng)定制

      名:

      業(yè):

      指導(dǎo)教師:

      名:

      學(xué)

      號(hào):

      級(jí):

      員:

      目:

      二○一 年 月

      目 錄

      一、設(shè)計(jì)任務(wù)和技術(shù)要求:.....................................................................................................................二、器件介紹……………………………………………………………………………………………

      三、設(shè)計(jì)代碼:………………………………………………………………………………………….四、設(shè)計(jì)結(jié)果:.......................................................................................................................................五、系統(tǒng)評(píng)價(jià):.......................................................................................................................................六、心得體會(huì):.......................................................................................................................................一、設(shè)計(jì)任務(wù)和技術(shù)要求: ? 編寫LED驅(qū)動(dòng)程序,驅(qū)動(dòng)程序采用手動(dòng)定義設(shè)備名稱(自己姓名拼音_led)和主設(shè)備號(hào),設(shè)備號(hào)必須是系統(tǒng)尚未使用的設(shè)備號(hào) ? 編寫對(duì)應(yīng)驅(qū)動(dòng)的makefile文件

      ? 將驅(qū)動(dòng)程序編譯成模塊,并實(shí)現(xiàn)模塊的加載及卸載

      ? 編寫驅(qū)動(dòng)測(cè)試程序,要求運(yùn)行該測(cè)試程序后,能夠?qū)ed設(shè)備打開成功與否做出判斷;能夠顯示led控制菜單選項(xiàng)(至少2個(gè)控制選項(xiàng)),例如,選擇“1”,led等循環(huán)點(diǎn)亮;選擇“2”,指定led1燈點(diǎn)亮

      ? 編寫對(duì)應(yīng)測(cè)試程序的makefile 文件

      文件系統(tǒng)定制 要求:

      ? 制作文件系統(tǒng)類型為yaffs的文件系統(tǒng); ? 文件系統(tǒng)啟動(dòng)時(shí)顯示小組成員信息; ? 文件系統(tǒng)啟動(dòng)時(shí)需要按提示輸入用戶名信息;

      ? 文件系統(tǒng)成功掛載后,通過串口傳送剛剛編寫的led控制程序,并運(yùn)行該led控制程序,要求能夠按照規(guī)定的控制方式實(shí)現(xiàn)led燈的控制

      二、設(shè)計(jì)代碼

      程序清單:

      應(yīng)用程序測(cè)試leds_test.c如下:

      #include #include #include #include

      #define IOCTL_LED_ON 1 #define IOCTL_LED_OFF 5 #define IOCTL_LED_RUN 3

      void usage(char *exename){ printf(“Usage:n”);printf(“

      %s n”, exename);printf(“

      led_no = 1, 2, 3 or 4n”);}

      int main(int argc, char **argv){ unsigned int led_no;int fd =-1;

      unsigned int count=10;

      if(argc > 3 || argc == 1)

      goto err;

      fd = open(“/dev/cylled”, 0);// 打開設(shè)備

      if(fd < 0){

      printf(“Can't open /dev/fdwled,n”);

      return-1;}

      if(argc == 2){

      if(!strcmp(argv[1], “run”))

      {

      ioctl(fd, IOCTL_LED_RUN, count);

      //運(yùn)行跑馬燈

      } else {

      goto err;

      } }

      if(argc == 3){

      led_no = strtoul(argv[1], NULL, 0)-1;

      // 操作哪個(gè)LED?

      if(led_no > 3)

      goto err;

      if(!strcmp(argv[2], “on”)){

      ioctl(fd, IOCTL_LED_ON, led_no);

      // 點(diǎn)亮

      } else if(!strcmp(argv[2], “off”)){

      ioctl(fd, IOCTL_LED_OFF, led_no);

      // 熄滅

      } else {

      goto err;

      } }

      close(fd);return 0;

      err:

      按鍵驅(qū)動(dòng):

      /* * linux/drivers/char/mini210_buttons.c * * This program is free software;you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation.*/

      #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

      #include #include #include #include

      #define DEVICE_NAME “buttons”

      struct button_desc { int gpio;int number;char *name;struct timer_list timer;};

      static struct button_desc buttons[] = { { S5PV210_GPH2(0), 0, “KEY0” }, { S5PV210_GPH2(1), 1, “KEY1” }, { S5PV210_GPH2(2), 2, “KEY2” }, { S5PV210_GPH2(3), 3, “KEY3” }, { S5PV210_GPH3(0), 4, “KEY4” }, { S5PV210_GPH3(1), 5, “KEY5” }, { S5PV210_GPH3(2), 6, “KEY6” }, { S5PV210_GPH3(3), 7, “KEY7” },static volatile char key_values[] = { '0', '0', '0', '0', '0', '0', '0', '0' };

      static DECLARE_WAIT_QUEUE_HEAD(button_waitq);

      static volatile int ev_press = 0;

      static void mini210_buttons_timer(unsigned long _data){ struct button_desc *bdata =(struct button_desc *)_data;int down;int number;unsigned tmp;

      tmp = gpio_get_value(bdata->gpio);

      /* active low */ down =!tmp;printk(“KEY %d: %08xn”, bdata->number, down);

      number = bdata->number;if(down!=(key_values[number] & 1)){ key_values[number] = '0' + down;

      ev_press = 1;wake_up_interruptible(&button_waitq);} }

      static irqreturn_t button_interrupt(int irq, void *dev_id){ struct button_desc *bdata =(struct button_desc *)dev_id;mod_timer(&bdata->timer, jiffies + msecs_to_jiffies(40));

      return IRQ_HANDLED;}

      static int mini210_buttons_open(struct inode *inode, struct file *file){ int irq;int i;int err = 0;

      for(i = 0;i < ARRAY_SIZE(buttons);i++){ if(!buttons[i].gpio)continue;

      setup_timer(&buttons[i].timer, mini210_buttons_timer,(unsigned long)&buttons[i]);

      irq = gpio_to_irq(buttons[i].gpio);err = request_irq(irq, button_interrupt, IRQ_TYPE_EDGE_BOTH, buttons[i].name,(void *)&buttons[i]);if(err)break;} if(err){ i--;for(;i >= 0;i--){ if(!buttons[i].gpio)continue;

      irq = gpio_to_irq(buttons[i].gpio);disable_irq(irq);free_irq(irq,(void *)&buttons[i]);del_timer_sync(&buttons[i].timer);}

      return-EBUSY;}

      ev_press = 1;return 0;}

      static int mini210_buttons_close(struct inode *inode, struct file *file){ int irq, i;

      for(i = 0;i < ARRAY_SIZE(buttons);i++){ if(!buttons[i].gpio)continue;

      irq = gpio_to_irq(buttons[i].gpio);free_irq(irq,(void *)&buttons[i]);

      del_timer_sync(&buttons[i].timer);} return 0;}

      static int mini210_buttons_read(struct file *filp, char __user *buff, size_t count, loff_t *offp){ unsigned long err;

      if(!ev_press){ if(filp->f_flags & O_NONBLOCK)else wait_event_interruptible(button_waitq, ev_press);}

      ev_press = 0;

      err = copy_to_user((void *)buff,(const void *)(&key_values), min(sizeof(key_values), count));

      return err ?-EFAULT : min(sizeof(key_values), count);}

      static unsigned int mini210_buttons_poll(struct file *file, struct poll_table_struct *wait){ unsigned int mask = 0;

      poll_wait(file, &button_waitq, wait);if(ev_press)mask |= POLLIN | POLLRDNORM;

      return mask;}

      static struct file_operations dev_fops = {.owner = THIS_MODULE,.open = mini210_buttons_open,.release = mini210_buttons_close,.read = mini210_buttons_read,.poll = mini210_buttons_poll, };

      static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,.fops = &dev_fops, };

      static int __init button_dev_init(void){ int ret;

      ret = misc_register(&misc);

      printk(DEVICE_NAME“tinitializedn”);

      return ret;}

      static void __exit button_dev_exit(void){ misc_deregister(&misc);}

      module_init(button_dev_init);module_exit(button_dev_exit);

      MODULE_LICENSE(“GPL”);MODULE_AUTHOR(“FriendlyARM Inc.”);程序cylled.c如下(基于實(shí)驗(yàn)11的代碼進(jìn)行更改):

      #include #include #include #include #include #include #include #include #include #include

      #include #include #include

      #define DEVICE_NAME “cylled” #define LED_MAJOR 222 #define IOCTL_LED_ON 1 #define IOCTL_LED_OFF 5 #define IOCTL_LED_RUN 3

      %定義三個(gè)宏

      #define LED_NUM ARRAY_SIZE(led_gpios)

      static int led_gpios[]={ S5PV210_GPJ2(0), S5PV210_GPJ2(1), S5PV210_GPJ2(2), S5PV210_GPJ2(3), };

      static long mini210_leds_ioctl(struct file *filp,unsigned int cmd,unsigned long arg){ int i;int j;switch(cmd){

      case IOCTL_LED_RUN:

      %定義RUN,用了兩個(gè)for循環(huán)。

      for(i=0;i

      {

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

      {

      gpio_set_value(led_gpios[j],0);

      msleep(100);

      gpio_set_value(led_gpios[j],1);

      }

      }

      break;

      case IOCTL_LED_ON:

      if(arg>LED_NUM)

      {

      return-EINVAL;

      }

      gpio_set_value(led_gpios[arg],0);

      break;

      case IOCTL_LED_OFF:

      if(arg>LED_NUM)

      {

      return-EINVAL;

      }

      gpio_set_value(led_gpios[arg],1);

      break;

      default:

      return-EINVAL;} return 0;}

      static struct file_operations mini210_led_dev_fops={.owner =THIS_MODULE,.unlocked_ioctl =mini210_leds_ioctl, };

      static int __init mini210_led_dev_init(void){ int ret;int i;for(i=0;i

      ret=gpio_request(led_gpios[i],“LED”);

      if(ret)

      {

      printk(“%s: request GPIO %d for LED failed, ret=%dn”,DEVICE_NAME ,led_gpios[i],ret);

      return ret;

      }

      s3c_gpio_cfgpin(led_gpios[i],S3C_GPIO_OUTPUT);

      gpio_set_value(led_gpios[i],1);} ret=register_chrdev(LED_MAJOR,DEVICE_NAME,&mini210_led_dev_fops);if(ret<0){

      printk(“%s can't register major numbern”,DEVICE_NAME);

      return ret;} return 0;} static void __exit mini210_led_dev_exit(void){ int i;for(i=0;i

      gpio_free(led_gpios[i]);

      } unregister_chrdev(LED_MAJOR,DEVICE_NAME);}

      module_init(mini210_led_dev_init);module_exit(mini210_led_dev_exit);

      MODULE_LICENSE(“GPL”);MODULE_AUTHOR(“cyl”);

      五.設(shè)計(jì)結(jié)果:

      Makefile Serial COM1 命令代碼

      第一盞燈亮 第二盞燈亮

      第三盞燈亮

      顯示小組成員信息(文件系統(tǒng))

      用戶名122014021登陸

      加載驅(qū)動(dòng)

      創(chuàng)建設(shè)備名

      卸載驅(qū)動(dòng)

      運(yùn)行跑馬燈命令

      點(diǎn)燈關(guān)燈

      6.心得體會(huì):

      在了解了基礎(chǔ)知識(shí)之后,我開始進(jìn)行上機(jī)操作,當(dāng)然,其中遇到很多的難題,很多東西都是第一次接觸,又沒有別人在旁邊指導(dǎo)操作,完全憑借自己去摸索練習(xí)。其 中的困難可想而知。然而堅(jiān)持就是勝利,牙一咬眼一閉堅(jiān)持做下去,而通過本次實(shí)驗(yàn),我感覺收獲還是蠻多的??赡芪覍?duì)于嵌入式的知識(shí)學(xué)習(xí)的還是不太多,但是這 之外的東西收獲頗豐。它讓我學(xué)會(huì)了如何通過自己的努力去認(rèn)知一個(gè)新事物,更重要的是端正自己的學(xué)習(xí)態(tài)度,只有真正下功夫去學(xué)習(xí),才能有收獲,正所謂“一份 耕耘,一份收獲?!睕]有付出,何談回報(bào)呢?再者,通過本次實(shí)驗(yàn),我也學(xué)會(huì)了如何去分析問題,如何找出自己設(shè)計(jì)中的不足,繼而去排除解決問題,這就是一個(gè)自 我學(xué)習(xí)的過程。當(dāng)我們通過實(shí)驗(yàn)去學(xué)習(xí)理論知識(shí)時(shí),自己動(dòng)手得出的結(jié)論,不僅能加深我們對(duì)嵌入式的理解,更能加深我們對(duì)此的記憶。學(xué)習(xí)到一個(gè)實(shí)驗(yàn)的完成過程。更深刻地了解arm的工作原理及其應(yīng)用,對(duì)比出之前單片機(jī)系統(tǒng)應(yīng)用的不同。

      第二篇:電子信息專業(yè)_嵌入式實(shí)驗(yàn)報(bào)告實(shí)訓(xùn)指導(dǎo)書

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      J-LINK 仿真器設(shè)置

      設(shè)置步驟:

      1.連接J-LINL仿真器USB到電腦。J-LINK仿真器指示燈閃爍,電腦開始自動(dòng)安裝驅(qū)動(dòng)程序,完成驅(qū)動(dòng)程序安裝后指示燈常亮。2.連接J-LINL仿真器的JTAG扁平排線到LPC22EB06-I實(shí)驗(yàn)系統(tǒng)的JTAG模塊CON19插座。連接完成后D12貼片LED常亮。3.連接LPC22EB06-I實(shí)驗(yàn)系統(tǒng)左側(cè)USB供電接口到電腦,將LPC22EB06-I實(shí)驗(yàn)系統(tǒng)右下角的電源開關(guān)打到“ON”狀態(tài)。此時(shí)系統(tǒng)上電,左下角的D4 LED燈亮度。4.將LPC22EB06-I實(shí)驗(yàn)系統(tǒng)右下角的SW1撥碼開關(guān)S3撥到“ON”,其余全為“OFF”。5.在電腦上打開KEIL 4軟件,建立一個(gè)工程,并新建一個(gè)C文件添加到工程中。

      6.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Debug 選項(xiàng)卡,點(diǎn)擊選擇右側(cè)的Use,然后在下拉列表中選擇“J-LINK/J-TRACE”。再點(diǎn)擊“Settings”按鈕。在彈出的“J-LINK/JTrace Interface Driver Setup”對(duì)話框中點(diǎn)擊右下方的“Target”按鈕,如果彈出的信息中“ARM CPU ID:”為“0x4F1F0F0F”,說明目標(biāo)芯片連接成功,否則請(qǐng)檢查原因。點(diǎn)擊“OK”按鈕確定。7.返回“Options for Target ‘Target 1’”對(duì)話框,選擇`“Utilities”選項(xiàng)卡,單擊選擇“Use Target Driver for Flash Programming”, 然后在下拉列表中選擇“J-LINK/J-TRACE”。勾選“Update Target before Debugging”選項(xiàng)。至此J-LINK仿真設(shè)置完成。

      注意事項(xiàng): LPC22EB06-I實(shí)驗(yàn)系統(tǒng)外部時(shí)鐘:Fosc = 10 MHz Fcclk = 50 MHz Pclk = Fcclk/4

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)一

      GPIO輸出實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、了解ARM7TDMI內(nèi)核處理器。

      2、掌握在Keil軟件中編制源程序。

      3、掌握在Keil軟件調(diào)試源程序。

      4、掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)的使用。

      二、實(shí)驗(yàn)內(nèi)容

      1、基本要求:

      編寫程序驅(qū)動(dòng)LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上的D5、D6 LED 閃爍。

      2、擴(kuò)展要求:

      編寫延時(shí)子程序,使得D5、D6的閃爍頻率約為1Hz和0.5Hz。

      三、硬件電路

      圖1 LED電路

      四、基本要求源程序

      #include int main(void){ long i,j;

      PINSEL2 = 0x04;

      //包含所需的文件

      IO2DIR |=(1 << 23);IO2DIR |=(1 << 24);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      while(1){for(j=0;j<6;j++)

      { if(0 ==(IO2PIN &(1 << 23)))IO2SET |=(1 << 23);

      }

      {if(0 ==(IO2PIN &(1 << 24)))IO2SET |=(1 << 24);

      else IO2CLR |=(1 << 24);for(i=0;i<1000000;i++);for(i=0;i<1000000;i++);else IO2CLR |=(1 << 23);

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

      }//end of for }//end of while }//end of main

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab01.uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.c文件,輸入上述源代碼,編譯。

      3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器; 4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。

      5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。觀察運(yùn)行輸出情況,修改程序。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.理解基本要求實(shí)驗(yàn)源程序,將基本要求的閃爍周期調(diào)整到約1Hz和0.5Hz。2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序。

      3.編譯通過并產(chǎn)生機(jī)器碼,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng),并運(yùn)行看實(shí)驗(yàn)現(xiàn)象。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理。

      2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的的源程序理解,包括源程序注釋及框圖繪制。3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì)。

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)二

      基于GPIO數(shù)碼管驅(qū)動(dòng)實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.2.3.4.了解ARM7TDMI內(nèi)核處理器。掌握在Keil軟件中編制源程序。掌握在Keil軟件調(diào)試源程序。

      掌握74HC595芯片工作時(shí)序及動(dòng)態(tài)數(shù)碼管的驅(qū)動(dòng)程序編寫。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上,編寫程序模擬SPI時(shí)序驅(qū)動(dòng)兩個(gè)四位動(dòng)態(tài)共陰數(shù)碼管LAM1、LAM2。顯示內(nèi)容“12345678”

      2.擴(kuò)展要求:

      編寫程序?qū)崿F(xiàn)動(dòng)態(tài)數(shù)碼顯示的左移、右移、單個(gè)位閃爍功能。

      三、硬件電路

      圖1 動(dòng)態(tài)數(shù)碼管電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2 74HC595工作時(shí)序圖

      四、基本要求源程序

      #include #include #define OUTPUT #define INPUT #define SDI_BIT #define RCLK_BIT #define G_BIT

      (1)(~OUTPUT)(6)(4)(19)(18)(OUTPUT << SDI_BIT)(OUTPUT << SRCLK_BIT)(OUTPUT << RCLK_BIT)(OUTPUT << G_BIT)

      //共陰數(shù)碼管編碼,#define SRCLK_BIT

      #define HC595_SDI #define HC595_SRCLK #define HC595_RCLK #define HC595_G

      unsigned char const LEDSEG[]={ 0x3F, //“0” 0x06, //“1” 0x5B, //“2” 0x4F, //“3”

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》 0x66, //“4” 0x6D, //“5” 0x7D, //“6” 0x07, //“7” 0x7F, //“8” 0x6F, //“9” };unsigned char const LEDDEG[]={0xF7,0xFB,0xFD,0xFE,0x7F,0xBF,0xDF,0xEF};unsigned char Display_Buffer[] = {1,2,3,4,5,6,7,8};void Send_Two_byte(unsigned int Data);void Delay_us(unsigned long int temp);void System_Int(void);/***************************************************************/ int main(void){

      } void Send_Two_byte(unsigned int Data){

      } void Delay_us(unsigned long int temp)

      long i;IO2CLR =(IO2CLR & ~(1 << G_BIT))|(1 << G_BIT);for(i=0;i<16;i++){

      } IO2SET =(1 << RCLK_BIT);Delay_us(1);IO2CLR =(1 << RCLK_BIT);IO2SET =(1 << G_BIT);if((Data &(1 << 15))==(1 << 15))IO0SET =(1 << SDI_BIT);IO0CLR =(1 << SDI_BIT);else Delay_us(1);IO0SET =(1 << SRCLK_BIT);Delay_us(1);IO0CLR =(1 << SRCLK_BIT);Delay_us(1);Data <<= 1;long i;PINSEL2 = 0x04;System_Int();while(1){

      } for(i=0;i

      //配置J-LINK

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》 {

      } void System_Int(void){

      } IO0DIR = HC595_SDI;IO0DIR = HC595_SRCLK;IO2DIR = HC595_RCLK;IO2DIR = HC595_G;temp = temp*10;while(temp > 0){ } temp--;

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab02.uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.C文件,輸入上述源代碼,編譯。

      3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器。4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。

      5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,理解74HC595工作時(shí)序及SPI協(xié)議原理,繪畫該要求的程序流程圖。2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序。

      3.編譯通過并產(chǎn)生機(jī)器碼,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng),并運(yùn)行看實(shí)驗(yàn)現(xiàn)象。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理; 2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的的源程序理解,包括源程序注釋及程序框圖繪畫; 3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)三

      GPIO輸入實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中實(shí)現(xiàn)外部信息號(hào)的輸入及其程序編寫。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      利用LPC22EB6-I實(shí)驗(yàn)系統(tǒng)的外部按鈕SW19,SW18手動(dòng)輸入開關(guān)信息,SW19按下一次D5的狀態(tài)轉(zhuǎn)換一次,SW18按下一次D6狀態(tài)轉(zhuǎn)換一次。要求有去抖功能。

      2.擴(kuò)展要求:

      利用LPC22EB6-I實(shí)驗(yàn)系統(tǒng)的SW2—SW17 4x4鍵盤做為輸入按鍵,并將被按下的按鍵編號(hào)顯示在U17動(dòng)態(tài)數(shù)碼管上。

      三、硬件電路

      圖1 按鍵電路

      圖2 LED輸出電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖3 矩陣鍵盤電路

      四、基本要求源程序

      #include #define D5 #define D6 #define SW_19 int main(void){

      long j;PINSEL2 = 0x04;IO2DIR |=(1 << D5);IO2DIR |=(1 << D6);IO1DIR &=(0 << SW_19);IO1DIR &=(0 << SW_18);IO2SET |=(1 << D5);IO2SET |=(1 << D6);IO1SET |=(1 << SW_19);IO1SET |=(1 << SW_18);while(1){

      if((IO1PIN &(1 << SW_19))== 0){

      for(j=0;j<10000;j++);if((IO1PIN &(1 << SW_19))== 0){

      if((IO2PIN &(1 << D5))== 0)IO2SET |=(1 << D5);IO2CLR |=(1 << D5);

      else(23)(24)(25)#define SW_18(24)桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      }

      }

      } if((IO1PIN &(1 << SW_18))== 0){

      } for(j=0;j<10000;j++);if((IO1PIN &(1 << SW_18))== 0){

      } if((IO2PIN &(1 << D6))== 0)IO2SET |=(1 << D6);IO2CLR |=(1 << D6);else while((IO1PIN &(1 << SW_18))== 0);} while((IO1PIN &(1 << SW_19))== 0);

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab03.uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.C文件,按照原理圖4和原理圖5編寫輸入上述源代碼,編譯并排除錯(cuò)誤。3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器;

      4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,理解74HC595、矩陣鍵盤和動(dòng)態(tài)數(shù)碼管工作時(shí)序與原理,繪制該要求的程序流程圖。

      2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序。

      3.編譯通過并產(chǎn)生機(jī)器碼,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng),并運(yùn)行看實(shí)驗(yàn)現(xiàn)象。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理;

      2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的的源程序理解,包括源程序注釋及程序框圖繪制; 3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)四

      基于定時(shí)器的LED閃爍實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3.掌握LPC2294處理器的定時(shí)器程序編寫。4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在Keil軟件中編寫基于定時(shí)器的LED閃爍程序,頻率:D5為1Hz,D6為2Hz。

      2.擴(kuò)展要求:

      在基本要求的基礎(chǔ)上,使用LAM1或者LAM2動(dòng)態(tài)數(shù)碼管設(shè)計(jì)實(shí)現(xiàn)一個(gè)簡(jiǎn)單秒表。

      三、硬件電路

      圖1 LED輸出電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2動(dòng)態(tài)數(shù)碼管電路

      四、基本要求源程序

      #include #define D5 #define D6 int main(void){

      unsigned long temp = 0;PINSEL2 = 0x04;IO2DIR |=(1 << D5);IO2DIR |=(1 << D6);T0TC = 0;T0PR = 10000;T0MCR = 0x06;T0MR0 = 250;while(1){

      T0TCR = 0x01;while(T0TCR == 0x01);temp++;if(temp == 2){

      } if((IO2PIN &(1 << D6))== 0)IO2SET |=(1 << D6);

      if((IO2PIN &(1 << D5))== 0)IO2SET |=(1 << D5);IO2CLR |=(1 << D5);else temp = 0;

      (23)(24)

      //VPB = Fosc/4=2.5MHz 桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      }

      } else IO2CLR |=(1 << D6);

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab04.uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.C文件,按照原理圖1和原理圖2編寫輸入上述源代碼,編譯并排除錯(cuò)誤。3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器;

      4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。

      5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,理解74HC595、矩陣鍵盤和動(dòng)態(tài)數(shù)碼管工作時(shí)序與原理,繪制該要求的程序流程圖。

      2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序。

      3.編譯通過并產(chǎn)生機(jī)器碼,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng),并運(yùn)行看實(shí)驗(yàn)現(xiàn)象。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理;

      2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的源程序理解,包括源程序注釋及程序框圖繪畫; 3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)五

      外部中斷實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3.掌握LPC2294處理器的外部中斷程序編寫。4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在Keil軟件中編寫外部中斷EXTIN0的中斷程序,并對(duì)中斷進(jìn)行計(jì)數(shù),然后將計(jì)數(shù)值以二進(jìn)制形式從D5、D6輸出。

      2.擴(kuò)展要求:

      在基本要求的基礎(chǔ)上,編寫基于外部中斷EINT3和矩陣鍵盤的輸入程序。并將按鍵編號(hào)顯示在LAM1或者LAM2動(dòng)態(tài)數(shù)碼管上。

      三、硬件電路

      圖1按鍵電路

      圖2 LED輸出電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2 矩陣鍵盤電路

      四、基本要求源程序

      #include #define D5(23)#define KEY16(21)void EXTIN0_FIQ(void);int main(void){

      } void EXTIN0_FIQ(void){

      if((IO2PIN &(1 << D5))== 0)IO2SET |=(1 << D5);IO2CLR |=(1 << D5);

      else PINSEL2 = 0x04;PINSEL1 =(PINSEL1 & ~(3 << 28)|(2 << 28));VICIntSelect =(1 << 17);VICIntEnable =(1 << 17);EXTMODE = EXTMODE|0x08;EXTPOLAR = EXTPOLAR&0x07;IO2DIR |=(1 << D5);IO2SET |=(1 << D5);IO1DIR |=(1 << KEY16);IO1CLR |=(1<< KEY16);while(1);

      while((EXTINT&(1 << 3))!=0){ EXTINT =(1<<3);桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》 } } 在Startup.s 文件

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)六

      PWM實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3.掌握LPC2294處理器PWM波型輸出程序的編寫。4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在Keil軟件中編寫PWM程序。編寫LPC2294程序從PWM3輸出1KHz的PWM信號(hào)驅(qū)動(dòng)蜂鳴器發(fā)出聲音。

      2.擴(kuò)展要求:

      在基本要求的基礎(chǔ)上,將輸出的PWM信號(hào)驅(qū)動(dòng)直流電機(jī),有關(guān)電路如圖1,圖2所示。并使用《實(shí)驗(yàn)3》圖1中的SW18或者SW19按鍵實(shí)現(xiàn)對(duì)直流電機(jī)的簡(jiǎn)單調(diào)速。

      三、硬件電路

      圖1 基本要求電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2 擴(kuò)展要求電路A

      四、基本要求源程序

      #include #define #define

      //Fosc = 10MHz

      pclk = Fosc/4=2.5MHz PWM_EN(21)BUZZER(1)int main(void)

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      { PINSEL2 = 0x04;PINSEL0 |=(PINSEL0 & ~(3 << 2))|(2 << 2);IO0DIR |=(1 << BUZZER);IO2DIR |=(1 << PWM_EN);IO2CLR =(1 << PWM_EN);PWMMCR |=(1 << 1);PWMPCR =(1 << 11);PWMPR = 10;PWMPC = 0;PWMMR0 = 250;PWMMR3 = 250/2;PWMLER =(0x09);PWMTCR = 0x09;while(1);}

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab05uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.C文件,按照原理圖1和原理圖4編寫輸入上述源代碼,編譯并排除錯(cuò)誤。3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器;

      4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。6.觀察LPC22EB6-I實(shí)驗(yàn)系統(tǒng)右下角的Buzzer蜂鳴器現(xiàn)象,并記錄。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.理解基本要求實(shí)驗(yàn)源程序,如何配置不同的PWM頻率和占空比。

      2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序,編譯通過生成HEX文件,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng)。3.觀察LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上DC/STEP MOTOR 模塊左邊的直流電機(jī)的運(yùn)行情況。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理。

      2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的源程序理解,包括源程序注釋及程序框圖繪制。3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì)。

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)七

      SPI驅(qū)動(dòng)實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯和產(chǎn)生機(jī)器碼。3.掌握LPC2294處理器SPI時(shí)序波型輸出程序的編寫。4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上,編寫SPI驅(qū)動(dòng)程序點(diǎn)亮LAM1、LAM2動(dòng)態(tài)數(shù)碼管。

      2.擴(kuò)展要求:

      在基本要求基礎(chǔ)上,編寫D/A芯片CS4334的SPI驅(qū)動(dòng)程序并使之播放一段音樂。

      三、硬件電路

      圖1動(dòng)態(tài)數(shù)碼管電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2 CS4334工作時(shí)序圖

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖3 D/A轉(zhuǎn)換電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖3 使能電路

      四、基本要求源程序

      #include #include #define OUTPUT #define INPUT #define CPHA #define CP0L #define MSTR #define LSBF

      (1)(0)(0 << 3)(0 << 4)(1 << 5)(1 << 6)(MSTR|CP0L|CPHA)(18)(19)(OUTPUT << G_BIT)(6)(5)(4)(7)(INPUT << SSEL0)(OUTPUT << MOSI_BIT)(OUTPUT << SCK_BIT)#define SPI_MODE #define G_BIT #define RCLK_BIT #define HC595_G #define MOSI_BIT #define MISO_BIT #define SCK_BIT #define SSEL0

      #define HC595_SSEL #define HC595_SDI #define HC595_SRCLK

      unsigned char const LEDSEG[]={ 0x3F, //“0” 0x06, //“1”

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》 0x5B, //“2” 0x4F, //“3” 0x66, //“4” 0x6D, //“5” 0x7D, //“6” 0x07, //“7” 0x7F, //“8” 0x6F, //“9” };unsigned char const LEDDEG[]={0xF7,0xFB,0xFD,0xFE,0x7F,0xBF,0xDF,0xEF};unsigned char Display_Buffer[]={1,2,3,4,5,6,7,8};void Delay_us(unsigned long temp);void SPI_Send_Data(unsigned char TEMP);void SPI_Ini(unsigned char fdiv);int main(void){

      } void SPI_Ini(unsigned char fdiv){

      } void SPI_Send_Data(unsigned char TEMP)

      if(fdiv < 8)fdiv = 8;S0SPCCR = fdiv & 0xFE;S0SPCR = SPI_MODE;unsigned char i;PINSEL2 |= 0x04;PINSEL0 =(PINSEL0 & ~(3 << SSEL0*2))|(1 << SSEL0*2);PINSEL0 =(PINSEL0 & ~(3 << MISO_BIT*2))|(1 << MISO_BIT*2);PINSEL0 =(PINSEL0 & ~(3 << MOSI_BIT*2))|(1 << MOSI_BIT*2);PINSEL0 =(PINSEL0 & ~(3 << SCK_BIT*2))|(1 << SCK_BIT*2);IO0DIR |=(1 << 24);IO0SET |=(1 << 24);IO2DIR |=(1 << RCLK_BIT);IO2DIR |=(1 << G_BIT);IO2CLR |=(1 << G_BIT);SPI_Ini(200);while(1){

      } for(i=0;i < sizeof(Display_Buffer);i++){

      } SPI_Send_Data(LEDDEG[i]);SPI_Send_Data(LEDSEG[Display_Buffer[i]]);IO2SET =(1 << RCLK_BIT);Delay_us(1);IO2CLR =(1 << RCLK_BIT);Delay_us(1000);桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》 { } void Delay_us(unsigned long temp){

      } temp = temp*10;while(temp > 0){temp--;} S0SPDR = TEMP;while((S0SPSR & 0x80)== 0);

      五、基本實(shí)驗(yàn)步驟

      1.打開Keil軟件,新建立一個(gè)工程Lab08uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2.新建一個(gè)后綴名為.C文件,按照?qǐng)D10原理編寫輸入上述源代碼,編譯并排除錯(cuò)誤。3.按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器;

      4.點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。5.選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。6.觀察動(dòng)態(tài)數(shù)碼管的顯示情況,修正程序,并記錄。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.理解基本要求實(shí)驗(yàn)源程序,如何配置不同的PWM頻率和占空比。

      2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序,編譯通過生成HEX文件,下載到LPC22EB6-I實(shí)驗(yàn)系統(tǒng)。3.觀察聲音的情況;

      七、實(shí)驗(yàn)報(bào)告要求

      4.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理;

      5.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的源程序理解,包括源程序注釋及程序框圖繪制; 6.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)八

      A/D模數(shù)轉(zhuǎn)換實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1. 了解并掌握Keil軟件的工程設(shè)計(jì)。

      2. 掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3. 掌握LPC2294處理器A/D模數(shù)轉(zhuǎn)換程序的編寫。4. 掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1. 基本要求:

      在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上編寫程序,讀取AIN17電位器的輸出電壓的A/D轉(zhuǎn)換值,并以十進(jìn)制的形式顯示在動(dòng)態(tài)數(shù)碼管LAM1上。

      2. 擴(kuò)展要求:

      在基本要求的基礎(chǔ)上,將AIN7與AIN6輸出的通過A/D采集,并在LAM1與LAM2上分別顯示出來,實(shí)現(xiàn)簡(jiǎn)單的數(shù)字電壓表功能。所需原理圖參見圖1和圖2。

      三、硬件電路

      圖1 A/D轉(zhuǎn)換輸入電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖 2 動(dòng)態(tài)數(shù)碼管電路

      四、基本要求源程序

      #include #include #define GET_ADC_CNT #define OUTPUT #define INPUT #define SDI_BIT #define RCLK_BIT #define G_BIT

      31(1)(~OUTPUT)(6)(4)(19)(18)

      ((IO0DIR & ~(1 << SDI_BIT)|(OUTPUT << SDI_BIT)))((IO0DIR & ~(1 << SRCLK_BIT)|(OUTPUT << SRCLK_BIT)))((IO2DIR & ~(1 << RCLK_BIT)|(OUTPUT << RCLK_BIT)))((IO2DIR & ~(1 << G_BIT)|(OUTPUT << G_BIT)))(28)

      | | | | | |

      ((2500000/1000000-1)<< 8)|(0 << 16)(0 << 17)(1 << 21)(0 << 22)(1 << 24)(0 << 27);

      #define SRCLK_BIT

      #define HC595_SDI #define HC595_SRCLK #define HC595_RCLK #define HC595_G #define AIN7

      #define START_ADC()ADCR =(1 << 7)桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      unsigned char const LEDSEG[]={ 0x3F, //“0” 0x06, //“1” 0x5B, //“2” 0x4F, //“3” 0x66, //“4” 0x6D, //“5” 0x7D, //“6” 0x07, //“7” 0x7F, //“8” 0x6F, //“9” };unsigned char const LEDDEG[]={0xF7,0xFB,0xFD,0xFE,0x7F,0xBF,0xDF,0xEF};unsigned char Display_Buffer[] = {0,0,0,0};void Send_Two_byte(unsigned int Data);void Delay_us(unsigned long int temp);void System_Int(void);int main(void){

      } void Send_Two_byte(unsigned int Data){ long i;

      unsigned char i;unsigned int temp = 0;unsigned int ADC_Val;PINSEL2 = 0x04;PINSEL2 =(PINSEL2 & ~(3 << 4))|(3 << 4);PINSEL2 =(PINSEL2 & ~(1 << 7))|(1 << 7);System_Int();while(1){

      } for(i=0;i<=GET_ADC_CNT;i++){

      } Display_Buffer[0] = temp/1000;Display_Buffer[1] =(temp/100)% 10;Display_Buffer[2] =(temp/10)% 10;Display_Buffer[3] = temp % 10;for(i=0;i> 6);temp += ADC_Val;temp = temp/2;桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      } void Delay_us(unsigned long int temp){

      } void System_Int(void){

      } IO0DIR = HC595_SDI;IO0DIR = HC595_SRCLK;IO2DIR = HC595_RCLK;IO2DIR = HC595_G;temp = temp*10;while(temp > 0){ temp--;} IO2CLR =(IO2CLR & ~(1 << G_BIT))|(1 << G_BIT);for(i=0;i<16;i++){

      } IO2SET =(1 << RCLK_BIT);Delay_us(1);IO2CLR =(1 << RCLK_BIT);IO2SET =(1 << G_BIT);if((Data &(1 << 15))==(1 << 15))IO0SET =(1 << SDI_BIT);IO0CLR =(1 << SDI_BIT);else Delay_us(1);IO0SET =(1 << SRCLK_BIT);Delay_us(1);IO0CLR =(1 << SRCLK_BIT);Delay_us(1);Data <<= 1;

      五、基本實(shí)驗(yàn)步驟

      1. 打開Keil軟件,新建立一個(gè)工程Lab08uvproj,在Select Device for Target ‘Target 1’對(duì)話框的‘Data base’選擇“NXP(founder by Philips)”中的‘LPC2294’芯片。確定后彈出的確認(rèn)框,選擇“是”。2. 新建一個(gè)后綴名為.C文件,按照?qǐng)D10原理編寫輸入上述源代碼,編譯并排除錯(cuò)誤。

      3. 按《J-LINK 仿真器設(shè)置》設(shè)置好J-LINK仿真器;

      4. 點(diǎn)擊“Project”-“Options for Target ‘Target 1’”-Output 選項(xiàng)卡, 勾選擇“Creat HEX File”,然后編譯連接生成HEX文件。

      5. 選擇“Debug”-“Start/Stop Debug Session”開始調(diào)試源代碼。選擇“Debug”-“Step”或者按F11可單步調(diào)試程序。選擇“Debug”-“Run”或者F5全速運(yùn)行程序。6. 旋轉(zhuǎn)AIN7或者AIN6,觀察動(dòng)態(tài)數(shù)碼管的顯示情況,并記錄。

      六、擴(kuò)展實(shí)驗(yàn)要求

      1.理解基本要求實(shí)驗(yàn)源程序;

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      2.根據(jù)實(shí)驗(yàn)內(nèi)容的擴(kuò)展要求,在Keil軟件中編寫該要求的源程序。

      3.編譯通過并產(chǎn)生機(jī)器碼,加載LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中,并運(yùn)行看實(shí)驗(yàn)現(xiàn)象。

      七、實(shí)驗(yàn)報(bào)告要求

      1.預(yù)習(xí)報(bào)告中要體現(xiàn)實(shí)現(xiàn)內(nèi)容的基本要求中的源程序理解,包括源程序注釋及程序框圖繪制和現(xiàn)實(shí)現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的實(shí)現(xiàn)原理;

      2.實(shí)驗(yàn)報(bào)告中要體現(xiàn)擴(kuò)展實(shí)驗(yàn)要求的源程序理解,包括源程序注釋及程序框圖繪制; 3.實(shí)驗(yàn)報(bào)告中要有實(shí)驗(yàn)心得體會(huì);

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      實(shí)驗(yàn)九

      串口通信實(shí)驗(yàn)(2學(xué)時(shí))

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解并掌握Keil軟件的工程設(shè)計(jì)。

      2.掌握在Keil軟件中編制源程序、編譯通過并產(chǎn)生機(jī)器碼。3.掌握LPC2294處理器串行通信程序的編寫。4.掌握在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)中運(yùn)行程序。

      二、實(shí)驗(yàn)內(nèi)容

      1.基本要求:

      在LPC22EB6-I實(shí)驗(yàn)系統(tǒng)上編寫程序,從串口0(UART0)發(fā)送字符串“Hello ARM!”到計(jì)算機(jī)。

      2.擴(kuò)展要求:

      在基本要求的基礎(chǔ)上,實(shí)現(xiàn)在計(jì)算機(jī)輸入一個(gè)數(shù)值控制D5的閃爍速度,并回發(fā)此數(shù)值到計(jì)算機(jī)上。

      三、硬件電路

      圖1 UART0電路

      桂林電子科技大學(xué)

      應(yīng)用科技學(xué)院 《ARM嵌入式系統(tǒng)實(shí)驗(yàn)指導(dǎo)書》

      圖2 撥碼開關(guān)電路

      四、基本要求源程序

      #include #define UART_BPS #define FPCLK

      (1200)(50000000/4)unsigned char const String[]=“Hello ARM!”;void UART_Send_Byte(unsigned char data);void System_Int(void);void UART_Ini(void);int main(void){ unsigned long i = 0;

      } void System_Int(void){

      } void UART_Ini(void){ unsigned int FDIV;

      PINSEL2 = 0x04;PINSEL0 =(PINSEL0 & ~(3 << 0))|(1 << 0);PINSEL0 =(PINSEL0 & ~(3 << 2))|(1 << 2);System_Int();UART_Ini();while(1){

      } while(String[i]!= '