实验四、串口控制AD采样显示

阅读: 评论:0

实验四:串口控制AD采样显示实验
一、实验目的
熟悉 LPC2000 系列 ARM7 微控制器的UART0基本设置及应用,AD的基本功能设置及应用。
二、实验设备
硬件:PC 机  一台、EasyARM2013 开发板 一套
软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境,EasyARM串口软件
三、实验内容
使用UART0通讯,通过上位机发出启动AD的指令,当核心处理器接收到指令后,启动AD,并将AD到的数据通过串口UART0,发送到上位机进行显示。
四、实验预习要求
仔细阅读教材关于UART的设置使用说明。AD的设置与应用。
UART接口接收流程图如下
五、实验步骤
1. 启动 ADS 1.2,使用 ARM Executable Image for lpc2103 工程模板建立一个工程AD_UART。
2. 在工程的 user 中的main文件中编写实验程序。
3. 选用 DebugInRAM生成目标,然后编译连接工程。
4. 将 EasyARM2103 开发板上的P0.0、P0.1短接,即实现处理器与UART模块的连接。
5. 将 EasyARM2103 开发板上的P0.22与1.8V的电源短接。
6. 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7. 可以全速运行程序,输入指令,查看结果。
8. 更改程序,改变上位机中的输出内容。
六、实验参考程序
程序清单      AD采样实验程序清单
#include "config.h"
# include <stdio.h>
# define  UART_BPS      115200        /*  串口通信波特率                  */
/******************************************************************************
**  函数名称:DelayNS
**  函数功能:延时函数
**  输入参数:uiDly        值越大,延时时间越长
**  输出参数:无
******************************************************************************/
void DelayNS (uint32 uiDly)
{
    uint32 i;
    for (; uiDly > 0; uiDly--){
          for(i = 0; i < 50000; i++);
    }
}
/******************************************************************************
**  函数名称:UARTInit
**  函数功能:串口初始化,设置为8 位数据位,1 位停止位,无奇偶校验,波特率为 9600
**  输入参数:uiDly        值越大,延时时间越长
**  输出参数:无
******************************************************************************/
void UARTInit (void)
{
    uint16 uiFdiv;
    U0LCR    = 0x83;                /*  允许设置波特率                */
    uiFdiv    = (Fpclk / 16) / UART_BPS; /*  设置波特率                    */
    U0DLM    = uiFdiv / 256;
    U0DLL    = uiFdiv % 256;
    U0LCR    = 0x03;                /* 锁定波特率                      */
}
/******************************************************************************
** 函数名称:UART0GetByte
**  函数功能:从串口接收 1 字节数据,使用查询方式接收
**  输入参数:无
**  输出参数:无
**  返回参数:uiRcvData        接收到的数据
******************************************************************************/
uint8 UART0GetByte (void)
{
    uint8 uiRcvData;
    while ((U0LSR & 0x01) == 0);          /*  等待接收标志置位                  */
    uiRcvData = U0RBR;                /*  读取数据                          */
    return (uiRcvData);
}
/******************************************************************************
** 函数名称:UART0GetStr
** 函数功能:串口接收字符串
**  输入参数:uiStr        指向接收数据数组的指针
**            uiNum    接收数据的个数
**  输出参数:无
******************************************************************************/
void UART0GetStr(uint8 *uiStr, uint32 uiNum)
{
    for (; uiNum > 0; uiNum--){
        *uiStr++ =  UART0GetByte ();
    }
}
/******************************************************************************
** 函数名称:UART0SendByte
** 函数功能:向串口发送子节数据,并等待数据发送完成,使用查询方式
**  输入参数:uiDat        要发送的数据
**  输出参数:无
******************************************************************************/
void UART0SendByte (uint8 uiDat)
{
    U0THR = uiDat;                /*  写入数据                              */
    while ((U0LSR & 0x40) == 0);    /*  等待数据发送完毕                      */
}
/******************************************************************************
** 函数名称:UART0SendStr
** 函数功能:向串口发送字符串
** 输入参数:uiStr      要发送的字符串指针
** 输出参数:无
******************************************************************************/
void UART0SendStr(char  const *uiStr)
{
    while (1){
        if (*uiStr == '\0')break;        /*  遇到结束符,退出                      */
        UART0SendByte (*uiStr++);
    }
}
/******************************************************************************
** 函数名称 :ADC_Init()
** 函数功能 :ADC模块初始化
** 入口参数 :无
** 出口参数 :无
******************************************************************************/
void ADC_Init(void)
{
  AD0CR = (1 << 0) |                      /*  选择通道0                      */
          (((Fpclk / 1000000) - 1) << 8) |    /*  转换时钟为 1MHz                */
          (0 << 16) |                    /*  BURST = 0,软件控制转换操作      */
          (0 << 17) |                    /*  CLKS = 0,使用 11clock 转        */
          (1 << 21) |                /*  PDN = 1,正常工作模式              */
          (0 << 22) |                /*  TEST = 0,正常工作模式            */

本文发布于:2023-05-07 09:41:13,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/90290.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实验   串口   参数   函数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图