实验八 - 串行口发送数据和串行口数据接收实验

2026/1/26 6:45:27

实验八 串行口发送数据和串行口数据接收实验

[实验目的]

1.掌握标准16c550系列串行口寄存器的作用和功能以及设置方法。 2.掌握使用串行口收发格式化的数据方法。 [实验仪器]

1.Proteus仿真的LPC2000系列的ARM处理器

2.软件:PC机操作系统Win98、Win2000或WinXP,Keil for ARM(MDK)集成开发环境

[实验原理]

Lpc2000系列的ARM芯片内部含有1个简单的3线串口和一个标准的modem调制解调器串口。通过外接电平转换芯片可以实现和rs232接口设备的互联。 [实验内容]

使用UART0向串口发送字符串“Hello ARM!”,并且根据串口输入的数据为‘A’或者是‘B’字符实现点亮或者关闭LED发光管。 [预备知识]

参照上课用的ppt的UART一节或者参考教材UART一章。 [实验步骤] 按照下图设计硬件,使符合本次实验的需要.(电源设置参考实验一)

使用proteus设计如下串口电路。 设定电路的电源为3.3V。

用到的器件有:

虚拟串口终端按下图查找

虚拟串口终端设置见下图

1 2

注:在虚拟终端上点击右键,弹出1,选择 Edit Properties弹出2. LPC2138的主时钟频率设置为12M

创建一个keil项目uart.uv2,并且将Starup.s添加到项目中。新建一个文本文件并另存为uart.c并且添加到项目中。设定Startup.s的属性如下:

在uart.c文件中包含lpc21xx.h头文件,并添加main函数框架。 #include #include

#define Fpclk 12000000///4 时钟频率 #define UART_BAUD 9600 波特率 char const str[] =\void Uart0_Init()

{ unsigned int tmp; PINSEL0 &=~(0xf); PINSEL0 |= 0x5; //设置uart U0LCR = (0x3<<0|0x0<<2|0<<3|0<<6|1<<7); //控制uart tmp = Fpclk/16/UART_BAUD; U0DLM = tmp/256; //uart除数锁存低位寄存器 U0DLL = tmp%6; // uart除数锁存高位寄存器 U0LCR = 0x3; }

void UartSendChar(unsigned char x) { U0THR = x; while((U0LSR&(1<<5))== 0); }

void Uart_SendString(const char * s) {

while((*s)!='\\0'){ UartSendChar(*s++); } }

char GetCh() { char ch; while((U0LSR&(1<<0))==0); ch = U0RBR; return ch;

}

void LED_Init()

{ PINSEL1= 0x0; IODIR0 = 0x1<<16; }

void led_on(unsigned char on) { if(on == 0) IOCLR0 = 1<<16; else IOSET0 = 1<<16; }

int main() { char c; char s[100]; LED_Init(); Uart0_Init();

Uart_SendString(str); while(1){

c = GetCh(); if(c=='A') led_on(1); else if(c=='B') led_on(0); }

return 0; }

分析代码中各个语句的含义。了解此类设计的编程思想。 [思考题与数据分析]

1. 修改代码,使串口能够格式化输出数值到虚拟终端。

2. 将led的开关控制设置为字符串控制,当输入字符串“ON”时候led点亮;输入字符串

“OFF”led熄灭。

3. 修改代码,使实现在串口终端中输入的字符能够显示。 4. 设置串口中断输入方式点亮led。


实验八 - 串行口发送数据和串行口数据接收实验.doc 将本文的Word文档下载到电脑
搜索更多关于: 实验八 - 串行口发送数据和串行口数据接收实验 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219