51单片机学习四 串口通信

发布者:脑洞飞扬最新更新时间:2022-07-29 来源: csdn关键字:51单片机  串口通信  系统中断 手机看文章 扫描二维码
随时随地手机看文章

单片机芯片型号 STC89C516


需求

需要的知识

关于串口通信与系统中断,请看

串口通信

系统中断

或者这个专辑

链接


这位大佬更专业


硬件设计

关于1,详见本篇的三

关于2,只需和电脑链接就可以


软件设计

pc>>单片机 数码管显示


#include "reg52.h"

#include

typedef unsigned int u16;  

typedef unsigned char u8;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

u8 i;


/*******************************************************************************

* 函数名         :UsartInit()

* 函数功能    :设置串口

* 输入           : 无

* 输出          : 无

*******************************************************************************/

void UsartInit()

{

SCON=0X50; //设置为工作方式1

TMOD=0X20; //设置计数器工作方式2

PCON=0X80; //波特率加倍

TH1=0XF3; //计数器初始值设置,注意波特率是4800的

TL1=0XF3;

ES=1; //打开接收中断

EA=1; //打开总中断

TR1=1; //打开计数器

}


/*******************************************************************************

* 函 数 名       : main

* 函数功能 : 主函数

* 输    入       : 无

* 输    出    : 无

*******************************************************************************/

void main()

{

UsartInit();  // 串口初始化

while(1);

}


/*******************************************************************************

* 函数名         : Usart() interrupt 4

* 函数功能   : 串口通信中断函数

* 输入           : 无

* 输出          : 无

*******************************************************************************/

void Usart() interrupt 4

{

i=SBUF;//出去接收到的数据

switch(i)

        {

case '0':P0=~smgduan[0];;break;

case '1':P0=~smgduan[1];;break;

case '2':P0=~smgduan[2];;break;

case '3':P0=~smgduan[3];;break;

case '4':P0=~smgduan[4];;break;

case '5':P0=~smgduan[5];;break;

case '6':P0=~smgduan[6];;break;

case '7':P0=~smgduan[7];;break;

case '8':P0=~smgduan[8];;break;

case '9':P0=~smgduan[9];;break;

case 'a':P0=~smgduan[10];;break;

case 'b':P0=~smgduan[11];;break;

case 'c':P0=~smgduan[12];;break;

case 'd':P0=~smgduan[13];;break;

case 'e':P0=~smgduan[14];;break;

case 'f':P0=~smgduan[15];;break;

        }

RI = 0;

}


单片机>>pc 发送hello world


#include "reg52.h"


#include

#include //使用延时函数需要加这个头文件

typedef unsigned int u16;

void Delay1000ms() //@12.000MHz

{

unsigned char i, j, k;

_nop_();

i = 8;

j = 154;

k = 122;

do

{

do

{

while (--k);

} while (--j);

} while (--i);

}


void UsartInit()

{

SCON=0X50; //设置为工作方式1

TMOD=0X20; //设置计数器工作方式2

PCON=0X80; //波特率加倍

TH1=0XF3; //计数器初始值设置,注意波特率是4800的

TL1=0XF3;

ES=1; //打开接收中断

EA=1; //打开总中断

TR1=1; //打开计数器

}


/*******************************************************************************

* 函 数 名       : main

* 函数功能 : 主函数

* 输    入       : 无

* 输    出    : 无

*******************************************************************************/

void main()

{

u16 i;

i = 0;

UsartInit();

while(1){

i++;

TI=1;                              //printf将T1置为1

  printf("%d Hello Worid!n", i);

Delay1000ms();

while(!TI);

  TI=0;}

}


效果

1.

2.

在这里插入图片描述

关键字:51单片机  串口通信  系统中断 引用地址:51单片机学习四 串口通信

上一篇:51单片机学习二 led流水灯与按键控制
下一篇:51单片机学习三 关于静态数码管的使用

推荐阅读最新更新时间:2024-11-11 23:29

基于51单片机制作的基础四轮蓝牙小车
一、材料准备 1.小车底座(淘宝有很多亚克力板的,但是我没有,我就拿以前比赛用过的铁板来组装了) 2.51单片机最小系统 3.51单片机芯片 4.l298n电机驱动芯片x2(因为是做四轮的,所以我就用了两个驱动了,驱动效率也高一些) 5.HC-05蓝牙模块 (新手可以用hc-06,比较简单一些,因为我只有hc-05就只能用这个了) 6. 直流电机x4 7.轮子x4 8.12V 16850锂电池组 9.DC转接头 10.公对母,公对公,母对母杜邦线若干(建议长短都买些,全是长的接线就太乱了,全是短 的也就不太好接线了) 11.USB转TTL (用于给HC-05蓝牙模块配置) 二、蓝牙设
[单片机]
51单片机在wave6000下编程如何实现几个模块的结合
本文主要是关于wave6000的相关介绍,并着重对51单片机在wave6000下编程如何实现几个模块的结合进行了详尽的阐述。 wave6000 wave6000,这个软件是南京伟福公司的单片机开发软件,一般就是用在C51单片机。不需要购买仿真器,使用软件模拟器就可以了,使用很方便的。 也支持KEILC,但最好不要在WAVE内使用C,如果想用C编写,还是用KEIL C方便。 WAVE6000编译软件,采用中文界面。用户源程序大小不受限制,有丰富的窗口显示方式,能够多方位、动态地展示程序的执行过程。其项目管理功能强大,可使单片机程序化大为小,化繁为简,便于管理。另外,其书签、断点管理功能以及外设管理功能等为51单片机的仿真带来
[单片机]
单片机串口通信UART与USART的区别
UART与USART都是单片机上的串口通信,他们之间的区别如下: 首先从名字上看: UART:universal asynchronous receiver and transmitter通用异步收/发器 USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器 从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢? 其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道
[单片机]
基于51单片机设计的家庭防盗报警系统
  从实际出发,设计一种家庭用、与电话线连接、操作简单、工作稳定可靠的远程智能防盗报警装置。 当人们外出时,往往希望实施自动监测报警以使家庭财产免受损失。针对这一需求,研制出了一系列自动报警系统,如门磁式、触摸式和红外线监测自动报警系统等。本文将介绍的远程智能防盗报警装置,可同时监视多个重要点(如门、窗等),发现盗情及时拨叫号码,并能利用普通电话线进行告警信号呼叫,其性能稳定可靠,实用性、适用性强,且具有较高的灵活性。 基本工作原理 如图1所示,远程智能防盗报警装置由信号检测电路、复位电路、电话号码输入电路、89C51单片机、语音电路、模拟摘机挂机电路、DTMF编码发送电路、铃流信号检测电路和忙音信号检测电路等构成。 DTM
[单片机]
基于<font color='red'>51单片机</font>设计的家庭防盗报警<font color='red'>系统</font>
51单片机开发之LED灯模块
3.1 LED灯模块 3.1.1 LED原理图 图3-1-1 LED灯原理图 LED灯模块是通过74573锁存器芯片与单片机IO口连接,并与数码管共用IO口。 在开发板上,需要使用排线将J12排针与P0口相连接。 图3-1-3 3.1.2 74HC573锁存器介绍 74HC573是拥有八路输出的透明锁存器,输出有三个状态。 锁存,就是把信号暂存以维持某种电平状态。 图3-1-4 OE为高时,输出始终为高阻态,此时芯片处于不可控制状态,在一般应用中,必须将OE接低电平。 LE则是输出端状态改变使能端,当LE为低电平,输出端Q始终保持上一次存储的信号(从D端输入),当LE为高电平时,Q紧随D的状态变化,并将D的状
[单片机]
<font color='red'>51单片机</font>开发之LED灯模块
51单片机中断响应的条件
讲到这儿,我们依然对于计算机响应中断感到神奇,我们人可以响应外界的事件,是因为我们有多种“传感器“――眼、耳可以接受不同的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1“,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。。。。很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。 了解了上述中断的过程,就不难解中断响应的条件了。在下列三种情况之一时,CPU将封锁对中断的响应: 1、CPU正在处理
[单片机]
Keil5中51单片机和MDK的整合的方法
不知道论坛的朋友们是怎么处理MDK和51的,在前一段时间,我是用Keil4来写51, Keil5写ARM。后来发现它两其实可以整合到一块。在这分享一下我的雕虫小技。 1.Keil5的安装 网上的教程非常之多,这里我提供MDk526的包,双击安装就行。x也在里面。 2.Software Packs下载 选择需要的芯片包下载,比如上图的DFPXXX什么的就是芯片包。 我也提供了STM32F4系列还有TI的MSP432。 3.51的导入 使用stc官方的下载助手,一键导入。 4.最终成型 最终就可以在一个IDE里编辑这两种内核的了,当然C251内核的也可以这样导入。 链接: https://pan.baidu.com/s/1
[单片机]
Keil5中<font color='red'>51单片机</font>和MDK的整合的方法
Proteus仿真51单片机C语言-单片机向主机发送字符串
简介:单片机向主机发送字符串:单片机按一定的时间间隔向主机发送字符串,发送内容在虚拟终端显示。
[单片机]
Proteus仿真<font color='red'>51单片机</font>C语言-单片机向主机发送字符串
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved