嵌入式课程设计

时间:2024.4.20

X学校

课程名称:       嵌入式系统      

设计题目:ARM9串行接收发送驱动程序设计

院    系:      电气信息学院      

班    级:                 

姓    名:                 

学    号:               

指导教师:                

设计时间:        

目   录

一、设计题目... 2

二、设计内容... 2

三、硬件原理... 2

四、程序流程图... 2

1接收程序流程图... 4

2、发送程序流程图... 4

3、收发程序流程图... 5

五、程序设计... 6

1、基于ARM9微处理器的串行接收驱动程序设计... 6

2、基于ARM9微处理器的串行发送驱动程序设计... 7

3、基于ARM9微处理器的串行接收发送驱动程序设计     10

六、心得体会... 16

七、参考文献... 16

一、设计题目

(1)基于ARM9微处理器的串行接收驱动程序设计

(2)基于ARM9微处理器的串行发送驱动程序设计

(3)基于ARM9微处理器的串行接收发送驱动程序设计

二、设计内容

1 (1)基于ARM9微处理器的串行接收驱动程序设计

① 初始化程序设计

     ② 串行接收程序设计

(2)基于ARM9微处理器的串行发送驱动程序设计

① 初始化程序设计

② 串行发送程序设计

(3)基于ARM9微处理器的串行接收发送驱动程序设计

① 初始化程序设计

② 串行接收发送程序设计

2  实现PC机与EL-ARM-830开发系统的串行通讯,具体通讯方式与内容:

(1) 帧格式:正常模式,无奇偶校验,一个停止位,8个数据位

(2)串行发送:每过一定时间,隔2行发送字符串“HOW ARE YOU!”,通过PC机的串口调试助手接收。

(3) 串行接收:将接收到的5个字符存储到以0XC300000为首地址的SDRAM中,通过串口调试助手发送字符.

(4)当接收到串口调试助手界面发送的“1”,发送第1屏信息;当接收到串口调试助手界面发送的“2”,发送第2屏信息;当接收到串口调试助手界面发送的“3”,发送第3屏信息

设计要求

(1)流程图设计,流程图上每个任务的文字说明。

(2)完整的程序清单。

(3)通过在PC机和EL-ARM-830开发平台上的调试。

三、硬件原理

硬件原理如图所示,U2 MAX232是RS-232C的接口电路,实现电平转换作用。能将来自S3C44B0X一侧的0V~3.3V正逻辑电平转换为符合EIA标准的负逻辑电平输出,既当S3C44B0X发出0V电平时,经过MAX232转换为3V~15V电平,当S3C44B0X发出3.3V电平时,经过MAX232转换为-3V~-15V电平;能将来自PC机一侧的标准RS-232电平,转换为TTL电平输出,既当MAX232接收到3V~15V电平时,能转换为0V电平传向S3C44B0X一侧,当MAX232接收到-3V~-15V电平时,能转换为5V电平传向S3C44B0X一侧。通过这种电平转换,实现S3C44B0X与标准RS-232C设备通讯。图10-8中R1、R2是限流电阻,起保护作用。原因是,MAX232向S3C44B0X一侧的电平信号是0~5V,而S3C44B0X仅能发出/接收0~3.3V电平,逻辑高电平不匹配,通过限流电阻,简单实现两种电平的接口。

串行通讯原理图

四、程序流程图

1接收程序流程图

 

2、发送程序流程图

 

3、收发程序流程图

 

五、程序设计

1、基于ARM9微处理器的串行接收驱动程序设计

ULCON0            EQU          0x01d00000             ;//0x03 无校验,一个停止位;

UCON0              EQU          0x01d00004  ;//0x0c;

UFCON0            EQU          0x01d00008  ;//0x01;

UMCON0          EQU          0x01d0000C           ;//0x00;

URXH0               EQU          0x01d00024  ;//数据寄存器

UBIRDIV0                  EQU          0x01d00028  ;//波特率设置

UTRSTAT0         EQU          0x01d00010  ;//状态寄存器

CNT                    EQU          5

PCONE               EQU          0X01D20028

PUPE                  EQU          0X01D20030

WDTCON          EQU          0X01D30000             ;WDTCON

AREA    T_TXD,CODE,READONLY

ENTRY

                          LDR           R13,=0XC800000

                            BL              INIT

                            LDR           R4,=0XC300000

                           LDR          R5,=CNT

LOOP 

                        LDR          R3,=UTRSTAT0         

                        LDR          R2,[R3]

                         TST           R2,#0x01

                        BEQ         LOOP                                   

                            LDR          R0,=URXH0                      

                         LDRB        R1,[R0]                                

                        STRB        R1,[R4],#1                          

                        SUBS        R5,R5,#1                   

                        BNE         LOOP                                             

LOOP1  

                            B               LOOP1

DELAY

                            LDR           R6,=0XFFFF

DELAY1   

                            SUBS         R6,R6,#1

                            BNE           DELAY1

                            MOV         PC,R14

INIT

                            LDR           R1,=WDTCON

                            LDR           R0,=0X0

                            STR            R0,[R1]

                         LDR           R1,=PCONE

                         LDR           R0,=0x28

                         STR            R0,[R1]  

                        LDR           R1,=PUPE

                         LDR           R0,=0XFF

                         STR            R0,[R1]

                        LDR           R1,=ULCON0

                         LDR           R0,=0x03

                         STR            R0,[R1]

                         LDR          R1,=UCON0

                         LDR          R0,=0x245

                         STR                    R0,[R1]

                            LDR          R1, = UFCON0

                           LDR          R0, = 0x0

                           STR                    R0, [R1]

                            LDR          R1, = UMCON0

                           LDR          R0, = 0x0

                           STR                    R0, [R1]

                         LDR          R1, = UBIRDIV0                 ;频率60M

                           LDR          R0, = 0x20                           ;(取整)(60000000/16/115200)-1

                           STR                    R0, [R1]

                           MOV         PC,LR

                            END

2、基于ARM9微处理器的串行发送驱动程序设计

ULCON0      equ     0x01d00000          ; UART线控制器地址

UCON0       EQU     0x01d00004     ; UART控制器地址

UFCON0      EQU     0x01d00008        ; UART FIFO控制器地址

UMCON0     EQU     0x01d0000C          ; UART Modem控制器地址

UTXH0       EQU     0x01d00020         ; 发送数据寄存器地址

URXH0       EQU     0x01d00024         ; 接收数据寄存器

UBIRDIV0     EQU     0x01d00028     ; 波特率除数寄存器

UTRSTAT0     EQU     0x01d00010        ; UART发送/接收状态寄存器地址

PCONE               EQU          0X01D20028             ; 通用E口配置寄存器地址

PUPE                  EQU          0X01D20030             ; 通用E口上拉电阻配置寄存器地址

WDTCON          EQU          0X01D30000             ; WDT控制器地址

    AREA    T_TXD,CODE,READONLY                           ;欢ㄒ宕攵?T_TXD"

    ENTRY                                                                      ;程序入口

         LDR           R13,=0X800000                                    ;设置堆栈指针

         BL         INIT                                                    ;调用初始化子程序子程序

M1  

                   LDR           R0,=S1_L1                               ;发送1行字符

                   BL              TXD_LINE

                   LDR           R1,=0XFFFFF                                 ;延时

                   BL              DELAY

                   B                M1                                                  ;重复发送

;---------DELAY SUB.----------

DELAY                                                                                 ;延时子程序

                   SUBS         R1,R1,#1

                   BNE           DELAY

                   MOV                  PC,R14

;---------INIT SUB.-----------

INIT                                                                                     ;初始化子程序

                   LDR           R1,=WDTCON                             ;关闭WDT,以免影响程序调试

                   LDR           R0,=0X0

                   STR            R0,[R1]

                   LDR           R1,=PCONE                                  ;配置通用I/O口,使PE2为RxD0,PE1为TxD0

                LDR           R0,=0x28

                STR            R0,[R1]  

                LDR           R1,=PUPE                                               ;配置E口无上挂电阻

               LDR           R0,=0XFF

               STR            R0,[R1]

                   LDR           R1,=ULCON0                               ;配置UART线控制器:正常模式,

无奇偶校验,一个停止位,8个数据位

                LDR       R0,=0x03

                STR            R0,[R1]

                   LDR          R1,=UCON0                                 ;配置UART控制器:RX边沿触发,TX

电平触发,

                                                                                             ;禁用延时中断,使用RX错误中断,正

常操作

                                                                                             ;模式,中断请求或表决模式

                LDR          R0,=0x245

                STR          R0,[R1]

                   LDR          R1, = UFCON0                             ;配置UART FIFO控制器:禁用 FIFO

                   LDR          R0, = 0x0

                 STR          R0, [R1]

                   LDR          R1, = UMCON0                           ;配置UART Modem控制器:禁止使

用AFC     

                   LDR          R0, = 0x0

                 STR          R0, [R1]

                LDR          R1, = UBIRDIV0                          ;配置波特率,系统主频为频率60M

                 LDR          R0, = 0x20                                  ;(取整)(60000000/16/115200)-1=32

                 STR          R0, [R1]

                 MOV                  PC,LR                                    ;子程序返回

                

 ;------------TXD_LINE SUB.------------

TXD_LINE                                                                                    ;发送1行字符串子程序

                 MOV                  R4,LR                                    ;保存堆栈指针

TXD_LINE1      

                 LDRB        R1,[R0],#1

                 ANDS        R1,R1,#0XFF

                 MOVEQ    PC,R4

                 BL              TXD_BYTE

                 B                TXD_LINE1

;------------TXD_BYTE SUB.------------

TXD_BYTE                                                                         ;发送1字符子程序

                 MOV                  R5,LR

                 LDR          R3,=UTRSTAT0

               LDR          R2,[R3]

               TST R2,#0X02

               BEQ         TXD_BYTE

               LDR          R2,=UTXH0

               STRB        R1,[R2]

               LDR           R1,=0XFFFF

               BL              DELAY

               MOV                  PC,R5

;--------------------------------------        

S1_L1                 DCB          "HOW ARE YOU!",&A,&A,&D,0     0020;定义字符串

                 mov r0,r0

                 END

3、基于ARM9微处理器的串行接收发送驱动程序设计

ULCON0            EQU          0x01d00000                     ; UART线控制器地址

UCON0              EQU          0x01d00004                        ; UART控制器地址

UFCON0            EQU          0x01d00008                        ; UART FIFO控制器地址

UMCON0          EQU          0x01d0000C                       ; UART Modem控制器地址

UTXH0               EQU          0x01d00020                     ; 发送数据寄存器地址

URXH0            EQU          0x01d00024                        ; 接收数据寄存器

UBIRDIV0      EQU          0x01d00028                        ; 波特率除数寄存器

UTRSTAT0         EQU          0x01d00010                     ; UART发送/接收状态寄存器地址

PCONE               EQU          0X01D20028                       ; 通用E口配置寄存器地址

PUPE                  EQU          0X01D20030                       ; 通用E口上拉电阻配置寄存器地址

WDTCON          EQU          0X01D30000                       ; WDT控制器地址

                      AREA    T_UART,CODE,READONLY                       

ENTRY                                                                               ;程序入口

                            LDR           R13,=0X800000                 ;设置堆栈指针

                            BL          INIT                                       ;调用初始化子程序子程序

M1 

                        LDR          R3,=UTRSTAT0         

                        LDR          R2,[R3]

                         TST          R2,#0x01

                        BEQ         M1                              

                            LDR          R0,=URXH0                      

                         LDRB        R1,[R0]

                         CMP          R1,#"1"   

                         BNE           M2

                         BL              TXD_SCREEN1

                         B                M1

M2

                            CMP          R1,#"2"

                            BNE           M3

                            BL              TXD_SCREEN2

                            B                M1

M3

                            CMP          R1,#"3"

                            BNE           M1

                            BL              TXD_SCREEN3

                            B                M1                                       

TXD_SCREEN1                                                                  ;----------TXD_SCREEN 1---------------

                            MOV         R6,LR

                            LDR           R0,=S1_L1

                            BL              TXD_LINE

                            LDR           R0,=S1_L2

                            BL              TXD_LINE

                            LDR           R0,=S1_L3

                            BL              TXD_LINE

                            LDR           R0,=S1_L4

                            BL              TXD_LINE

                            LDR           R0,=S1_L5

                            BL              TXD_LINE

                            LDR           R0,=S1_L6

                            BL              TXD_LINE

                            LDR           R0,=S1_L7

                            BL              TXD_LINE

                            LDR           R0,=S1_L8

                            BL              TXD_LINE

                            MOV         PC,R6                                  

TXD_SCREEN2                                                                  ;----------TXD_SCREEN 2---------------

                            MOV         R6,LR

                            LDR           R0,=S2_L1

                            BL              TXD_LINE

                            LDR           R0,=S2_L2

                            BL              TXD_LINE

                            LDR           R0,=S2_L3

                            BL              TXD_LINE

                            LDR           R0,=S2_L4

                            BL              TXD_LINE

                            LDR           R0,=S2_L5

                            BL              TXD_LINE

                            LDR           R0,=S2_L6

                            BL              TXD_LINE

                            LDR           R0,=S2_L7

                            BL              TXD_LINE

                            LDR           R0,=S2_L8

                            BL              TXD_LINE

                            MOV         PC,R6                

TXD_SCREEN3                                                                  ;----------TXD_SCREEN 3---------------

                            MOV         R6,LR

                            LDR           R0,=S3_L1

                            BL              TXD_LINE

                            LDR           R0,=S3_L2

                            BL              TXD_LINE

                            LDR           R0,=S3_L3

                            BL              TXD_LINE

                            LDR           R0,=S3_L4

                            BL              TXD_LINE

                            LDR           R0,=S3_L5

                            BL              TXD_LINE

                            LDR           R0,=S3_L6

                            BL              TXD_LINE

                            LDR           R0,=S3_L7

                            BL              TXD_LINE

                            LDR           R0,=S3_L8

                            BL              TXD_LINE

                            MOV         PC,R6

;---------DELAY SUB.----------

DELAY                                                                                 ;延时子程序

                            SUBS         R1,R1,#1

                            BNE           DELAY

                            MOV         PC,R14

;---------INIT SUB.-----------

INIT                                                                                     ;初始化子程序

                            LDR           R1,=WDTCON                    ;关闭WDT,以免影响程序调试

                            LDR           R0,=0X0

                            STR            R0,[R1]

                            LDR           R1,=PCONE                         ;配置通用I/O口,使PE2为RxD0

                LDR           R0,=0x28

                         STR            R0,[R1]  

                         LDR           R1,=PUPE                                     ;配置E口无上挂电阻

                        LDR           R0,=0XFF

                        STR            R0,[R1]

                            LDR           R1,=ULCON0                      ;配置UART线控制器:正常模式,无                                                                                                 ;奇偶校验,一个停止位,8个数据位

                         LDR           R0,=0x03

                         STR            R0,[R1]

                            LDR          R1,=UCON0                        ;配置UART控制器:RX边沿触发,TX                                                                                                ;电平触发,

                                                                                             ;禁用延时中断,使用RX错误中断,正                                                                                       ;常操作

                                                                                             ;模式,中断请求或表决模式

                         LDR          R0,=0x245

                         STR         R0,[R1]

                            LDR          R1, = UFCON0                    ;配置UART FIFO控制器:禁用 FIFO

                            LDR          R0, = 0x0

                           STR         R0, [R1]

                            LDR          R1, = UMCON0                  ;配置UART Modem控制器:禁止使                                                                                                ;用AFC   

                            LDR          R0, = 0x0

                           STR         R0, [R1]

                         LDR          R1, = UBIRDIV0                 ;配置波特率,系统主频为频率60M

                           LDR          R0, = 0x20                           ;(取整)(60000000/16/115200)-1=32

                           STR                    R0, [R1]

                           MOV         PC,LR                                    ;子程序返回

;------------TXD_LINE SUB.--------------

TXD_LINE                                                                                    ;发送1行字符串子程序

                           MOV         R4,LR                                    ;保存堆栈指针

TXD_LINE1      

                           LDRB        R1,[R0],#1

                           ANDS        R1,R1,#0XFF

                           MOVEQ    PC,R4

                           BL              TXD_BYTE

                           B                TXD_LINE1

;------------TXD_BYTE SUB.------------

TXD_BYTE                                                                          ;发送1字符子程序

                           MOV         R5,LR

                           LDR          R3,=UTRSTAT0

                        LDR          R2,[R3]

                        TST          R2,#0X02

                        BEQ         TXD_BYTE

                        LDR          R2,=UTXH0

                        STRB        R1,[R2]

                        LDR           R1,=0XFFFF

               BL              DELAY

                        MOV         PC,R5

;--------------SCREEN 1------------------------         

S1_L1                 DCB    "*******************************",0xa,0xa,0xa,0

S1_L2                 DCB "*                                      *",0xa,0xa,0xa,0

S1_L3                 DCB "*     WELCOM TO USE EL-ARM-830   *",0xa,0xa,0xa,0

S1_L4                 DCB "*                                      *",0xa,0xa,0xa,0

S1_L5                 DCB "*     THIS  IS  SCREEN 1              *",0xa,0xa,0xa,0

S1_L6                 DCB "*     20##-12-01                                       *",0xa,0xa,0xa,0

S1_L7                 DCB "*                                                                        *",0xa,0xa,0xa,0

S1_L8                 DCB    "*******************************",0xa,0xa,0xa,0

;--------------SCREEN 2------------------------         

S2_L1                 DCB    "******************************",0xa,0xa,0xa,0

S2_L2                 DCB "*                               *",0xa,0xa,0xa,0

S2_L3                 DCB "*     WELCOM TO USE EL-ARM-830  *",0xa,0xa,0xa,0

S2_L4                 DCB "*                               *",0xa,0xa,0xa,0

S2_L5                 DCB "*     THIS  IS  SCREEN2          *",0xa,0xa,0xa,0

S2_L6                 DCB "*     20##-12-01                 *",0xa,0xa,0xa,0

S2_L7                 DCB "*                               *",0xa,0xa,0xa,0

S2_L8                 DCB "*********************************",0xa,0xa,0xa,0

;--------------SCREEN 3------------------------         

S3_L1                 DCB "*********************************",0xa,0xa,0xa,0

S3_L2                 DCB "*                               *",0xa,0xa,0xa,0

S3_L3                 DCB "*    WELCOM TO USE EL-ARM-830   *",0xa,0xa,0xa,0

S3_L4                 DCB "*                               *",0xa,0xa,0xa,0

S3_L5                 DCB "*    THIS  IS  SCREEN3           *",0xa,0xa,0xa,0

S3_L6                 DCB "*    20##-12-01                  *",0xa,0xa,0xa,0

S3_L7                 DCB "*                               *",0xa,0xa,0xa,0

S3_L8                 DCB    "******************************",0xa,0xa,0xa,0

                           END

六、心得体会

通过本次课程设计,我通过阅读书籍,查阅资料已经程序的调试,对嵌入式的编程原理有了更深的理解。

我也很好的把平时书本上学习的理论知识用在实践中。在实践中,遇到很多没有想到的困难,经过反复的程序调试,我也能够解决遇到的问题。这次的分组设计也加强了同学之间的团队合作精神。

这次设计让我明白嵌入式在生活应用的广泛,我要努力学习更多的嵌入式知识并将这些知识运用到实际生活中。

七、参考文献

*《嵌入式系统基础教程》    于忠德 林敏 申华    国防工业出版社 

*《嵌入式软件技术的现状与发展动向》 熊光泽, 罗蕾.  计算机应用,2000   *《嵌入式实时操作系统VxWorks及其开发环境孔祥营》 柏桂枝..中国电力出版社, 20##

*《嵌入式操作系统中的I/O驱动软件》.李江, 常葆林. 计算机工程, 2006

*《嵌入式系统原理及应用开发技术》.桑楠. 北京航空航天大学出版社, 20##

*《嵌入式系统原理与应用技术》 袁志勇  王景存 北京航空航天大学出版社   2009

更多相关推荐:
嵌入式课程设计心得体会

本学期为期一周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,而且使自己的学习目标更加明确,学习方法更加完善,也…

嵌入式课程设计报告

福建工程学院嵌入式系统课程设计报告书题目基于S3C2440设备驱动及其界面设计班级姓名学号指导老师陈靖张平均李光炀2目录一设计课题4二设计目的4三设计任务及要求4四设计内容5五操作界面的生成7六操作界面调试9七...

嵌入式课程设计报告

信息技术学院嵌入式操作系统课程综合设计报告书姓名班级B0905学号XXXX题目嵌入式文件锁应用时间20xx年6月指导教师摘要随着PC时代的到来嵌入式系统技术已经成为了一个万众瞩目的焦点目前已广泛应用于信息家电数...

嵌入式课程设计报告

中南大学嵌入式课程设计基于ARM平台的打地鼠游戏姓名董嘉伟学号0909103303班级物联网1002时间20xx913目录课程设计内容课程设计实验环境课程设计原理分析课程设计开发计划课程设计系统设计图课程设计关...

嵌入式系统课程设计报告

嵌入式系统课程设计报告基于ARM的楼宇对讲系统设计摘要采用模块化设计方法设计出一款基于ARM微控制芯片和Linux操作系统的楼宇对讲系统,该对讲系统通过以太网与楼宇间的各室内机相连,实现了安装在楼道门口的终端机…

嵌入式课程设计报告

目录一前言211课题研究背景212课程研究目的和意义213ARM2440实验箱介绍31312440核心板规格31322440实验箱底板规格3133软件资源5二需求分析5三开发环境及系统结构631开发环境632系...

嵌入式课程设计报告

嵌入式控制器设计课程设计总结报告题目基于STM32F407的MP3学院计算机与信息科学学院软件学院专业自动化控制方向年级20xx级学号20xx3210420xx姓名陈萍指导教师赵亦欣黄伟成绩20xx年7月30日...

嵌入式系统课程设计报告

郑州航空工业管理学院嵌入式系统课程设计报告题目基于SKYEYE的嵌入式Linux系统设计20xx20xx第2学期院系姓名专业学号指导老师电子通信工程系张衡通信工程111307334赵成电子通信工程系20xx年5...

嵌入式课程设计报告

仰恩大学工程技术学院课题设计报告嵌入式系统应用课程设计报告课题名称基于嵌入式的web服务器的远程控制程序设计专业电子信息工程班级姓名沈荣彬郑彦勋颜丁炜学号121820xx0026121820xx0019指导老师...

嵌入式系统课程设计报告

软件学院课程设计报告书课程名称嵌入式系统设计题目作息时间控制器专业班级学号姓名指导教师20xx年06月1设计时间12设计目的13设计任务14设计内容141总体方案设计1411需求规定2412核心部件选型2413...

嵌入式课程设计报告模板

嵌入式系统及应用设计seminar東南大學题目基于硬件PWM的信号发生器院系仪器科学与工程学院学生姓名签名学号评语一背景知识查找文献调研现有相关技术调研发展历程现状和发展趋势描述归类并综述二基于硬件PWM的信号...

嵌入式课程设计报告(交通灯控制、uC-OS-Ⅱ的移植)

任务一十字路口交通灯控制一设计目的1了解基于ARM7核的LPC2106的管脚功能和特点掌握IO控制寄存器的设置方法2掌握ARM7应用系统编程开发方法能用C语言编写应用程序3熟练掌握ADS12软件的使用以及PRO...

嵌入式课程设计总结(39篇)