ARM7单片机(学习ing)—(三)、UART—02

发布者:大泉人家最新更新时间:2017-04-04 来源: eefocus关键字:ARM7  单片机  UART 手机看文章 扫描二维码
随时随地手机看文章

总算是整好了~~

基于LPC2106的Proteus仿真UART0~~

重点就是频率的设置~~

写程序是小事~~

明白其中的PLL才是大事~~

后面的程序里面有详细的介绍~~

三、UART

三—(02)、向串口发送字符串(就是发送_Justin~~哈哈~~)

ARM7单片机(学习ing)—(三)、UART—02

ARM7单片机(学习ing)—(三)、UART—02
ARM7单片机(学习ing)—(三)、UART—02


然后就是源代码:

MDK3_1.c

//------------------------------------------------------------------------------
//向串口发送字符串
//向串口UART0发送字符串“Designed by: _Justin"
//使用外部晶振12MHz;使用KEIL自带的启动代码Startup.s,里面有关时钟的设置(下边有图~~)
//PLL设置:倍频系数M=4,分频系数P=2
//当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz

//顺便再介绍一下波特率的除数计算吧:
//UxDLM、UxDLL=Fpclk/(16*baud)
//UART基本操作如下:
//1)设置I/O连接到UART0
//2)设置串口波特率(U0DLM、U0DLL)
//3)设置穿口工作模式(U0LCR、U0FCR)
//4)发送或者接收数据(U0THR、U0RBR)
//5)检查串口状态字或者等待串口中断(U0LSR)
//------------------------------------------------------------------------------
#include"lpc210x.h"
#include"delay.h"
#include"macroandconst.h"
#include"bit.h"
//------------------------------------------------------------------------------
#define Fpclk 15000000
#define BAUD 9600
#define THRE 5            //线状态寄存器第五位,发送保持寄存器空~~
uchar const send_string[]="Designed by:  _Justin";
//------------------------------------------------------------------------------
//端口初始化函数
void port_init()
{
 PINSEL0=0x00000005;          //设置I/O口连接到UART0
 PINSEL1=0X00000000;          
               //由于当I/O口设置为第二引脚功能后,I/O口的输入输出就不受寄存器控制
               //硬件自动控制~~
}
//------------------------------------------------------------------------------
//串口初始化函数——uart0_init()
//初始化串口0,设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
void uart0_init()
{
 uint32 Fdiv;           
 U0LCR=0X83;              //DLAB=1,可以设置波特率;同时设置8位数据位
 Fdiv=(Fpclk/16)/BAUD;         //就是上面的波特率除数计算公式~~  
 U0DLM=Fdiv/256;          
 U0DLL=Fdiv%6;
 U0LCR=0X03;            //清零DLAB,禁止访问除数锁存~~ 
}
//------------------------------------------------------------------------------
//向串口发送字节函数——uart0_send_byte()
void uart0_send_byte(uchar dat)
{
 U0THR=dat;            //向发送器保持寄存器U0THR写入数据,它是UART0 Tx FIFO的最高字节
               //它包含了Tx FIFO中最新的字符,为只写寄存器,DLAB必须为0

 while(GET_BIT(U0LSR,6)==0X00);         //等待数据发送完毕

}
//------------------------------------------------------------------------------
//uart0_send_string()
//向串口发送字符串函数
void uart0_send_string(uchar const *s)
{
 while(1)
 {
  if(*s=='\0')
  {
   uart0_send_byte('\n');       //发送回车字符
   break;
  }
  uart0_send_byte(*s);        //发送字符串对应的数据
  s++;
 }
}
//------------------------------------------------------------------------------
//main
int main()
{
 port_init();
 uart0_init();
 uart0_send_string(send_string);
 while(1);
}

 

ARM7单片机(学习ing)—(三)、UART—02


关键字:ARM7  单片机  UART 引用地址:ARM7单片机(学习ing)—(三)、UART—02

上一篇:ARM7单片机(学习ing)—(四)、定时器—01
下一篇:ARM7单片机(学习ing)—(KZ)、PLL(锁相环)—01

推荐阅读最新更新时间:2024-03-16 15:34

PIC单片机定时器0的应用
#include #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); uint intnum; void main() { init(); while(1) { if(intnum==5) { intnum=0; RD0=!RD0; } } } void init() { TRISD=0; PORTD=0; OPTION=0x07; INTCON=0xa0; TMR0=61; } void interrupt TIme0() { T0IF=0; TMR0=61; intnum++; }
[单片机]
PIC<font color='red'>单片机</font>定时器0的应用
ARM7加速度数据采集系统设计
引言 加速度传感器一直是加速度测试中的重要元件。随着微加速度计的应用越来越广泛,对于微加速度计的数据信号采集和存储变得极为重要。传统的数据采集方法多数是采用单片机完成的,编程简单、控制灵活,但控制周期长、速度慢,特别是对高速转换的数据来说,单片机的速度极大地限制了数据传输速度。 目前,嵌入式系统的应用已经进入到一个高低并行发展的阶段。ARM处理器凭借体积小、功耗低、集成度高、硬件调试方便和操作系统可移植等优点,获得广泛的应用。本文采用基于ARM7TDMI-S核的32位微处理器AT91SAM7X256为控制核心,利用其内部自带的A/D转换器对采集到的加速度值进行转换。 本文应用Model 1221单轴MEMS加速度计,输
[嵌入式]
【51单片机快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角
STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 移植自MPU6050姿态解算——Mahony互补滤波 —— 大写的小写字母 加入了输入数据范围的自动处理,即使更改量程也能正确解算。 源码 为了避免所用RAM超标,部分变量设为idata类型,移植时需注意。 所用MCU为STC89C516 晶振16MHz 6T模式 stdint.h见【51单片机快速入门指南】1:基础知识和工程创建 软件I2C程序见【51单片机快速入门指南】4: 软
[单片机]
【51<font color='red'>单片机</font>快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角
STM32 | 分享一个简单易用的单片机裸机程序模板
前言 前不久,我有位做测试的朋友转去做开发的工作,面试遇到了一个问题,他没明白,打电话问了我。题目大概就是: 在单片机裸机开发时,单片机要处理多个任务,此时你的程序框架是怎样的呢? 这其实是个经典面试问题,我以前面试也被问过。 答案一:轮询系统 代码结构如: // 微信公众号:嵌入式大杂烩 int main(void) { init_something(); while(1) { do_something1(); do_something2(); do_something3(); } } 这种结构大概是我们初学单片机的时候的代码结构。在没有外部事件驱动时,可以较好使用。 只答出了
[单片机]
STM32 | 分享一个简单易用的<font color='red'>单片机</font>裸机程序模板
这些单片机按键设计方案,请拿好,不谢!
在单片机系统里,按键是常见的输入设备,在本文中介绍几种按键硬件、软件设计方面的技巧。一般的在按键的设计上,一般有四种方案。 一是GPIO口直接检测单个按键,如图1.1所示; 二是按键较多则使用矩阵键盘,如图1.2所示; 三是将按键接到外部中断引脚上,利用按键按下产生的边沿信号进行按键检测,如图1.3所示; 四是利用单片机的ADC,在不同的按键按下后,能够使得ADC接口上的电压不同,根据电压的不同,则可以识别按键,如图1.4所示。 图1.1方案一 图1.2方案二 图1.3方案三 图1.4方案四 在以上四种设计上,各有优点和不足。 第一种是最简单和最基础的,对于单片机初学者很
[单片机]
这些<font color='red'>单片机</font>按键设计方案,请拿好,不谢!
台媒:电源IC、MCU问题并不大
台积电涨价传闻持续发酵,加上此前联电等也都传出再次涨价的消息,引发业内对下游设计厂毛利率的担忧,但台媒分析指出,不同产品情况不同,如电源管理IC和MCU厂向下游转嫁成本问题不大。 钜亨网报道指出,部分电源管理IC厂近期陆续收到涨价通知,增加的成本已在新订单上反映给客户,大多数可以完全转嫁,体现需求仍然稳固,下半年毛利率有望维持第二季度的高水准。此外考虑到经济效益,电源管理IC多投片于8英寸,业内预期到明年底产能仍吃紧。 同样投片于8英寸的MCU情况类似,部分设计厂目前仍在议价中掌握主动权,成本仍可转嫁给客户,业内多数认为,从代理商、客户端的库存来看,MCU仍处于缺货状态,仍在积极拉货的趋势,除非第四季度终端销售状况大变,否则到年底
[手机便携]
关于单片机--蜂鸣器输出音调设置
根据查找资料,现做以总结和说明。 1. 首先要明确音调问题: 音调在简谱中的发音为:1 2 3 4 5 6 7 。读作多来米发梭拉西。重低音区的音调“拉”(6)。在各乐器中(电子琴、手风琴)的发声频率都是220Hz,低音区的“拉”为440Hz,中音区的“拉”为 880Hz,高音区为1760Hz。 世界范围内统一标准。以电子琴举例: 重低音“拉”与低音“拉”之间,间隔12个按键(白健加黑键)。相邻两个音调之间的频率成等比数列。 2.音调频率的计算: 如果设等比数列中的公比为q,则: 220*q*q*...*q (12个q) = 440,由此可得:q = 1.059463. 由此可计算每个按键的频
[单片机]
关于<font color='red'>单片机</font>--蜂鸣器输出音调设置
单片机定时/计数器设计输出PWM
  一、定时/计数器PWM设计要点   根据 PWM 是利用微处理器的数字输出来对模拟电路进行控制的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点:   1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。   2.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为:   3.然后根据需要PW
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved