基于51单片机的串口通信(PC发字符)

发布者:dong125612最新更新时间:2022-01-12 来源: eefocus关键字:51单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

串口通信

选用芯片:AT89S52

函数功能:见如下代码。


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

函数功能:PC机发送数据给单片机,每次发送3个字节(每字节为8位)的数据,

每个字节的内容为0~99无符号整数中的一个;单片机接收PC机串口发送过来的

这3个字节数据,并将它们依次以十进制方式显示在6位数码管中(每两个数码管

显示一个字节数据,例如发送数据为11,9,70,则数码管上显示11 09 70);

显示采用共阳极数码管,采用动态扫描显示方式。

作者:Crazy Wind      

日期:2020.10.22

version:1.0.0

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

#include"reg52.h"

#define uchar unsigned char

#define uint unsigned int

uchar code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //段码:0~9

uchar code smgwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码

uchar b;

uchar k=0;

uchar y[9]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};   //给数组y[]一组初始值

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

函数功能:ms延时

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

void delayms(uint ms)             //毫秒延时

{

uint i,j;

    for(i=0;i    {

        for(j=115;j>0;j--);

    }

}

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

函数功能:发送数据x

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

void send_char(uchar x)

{

SBUF=x;   //SBUF是数据缓冲寄存器(暂存数据),把数据x输入到SBUF

while(!TI); //等待数据发送

TI=0;    //每发送8位数据TI就自动置1,需软件清零

}

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

函数功能:串口初始化、T1作波特率发生器初始化、打开串口中断

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

void init()

{

TMOD=0x20;   //定时器1工作于8位自动重载模式, 用于产生波特率

TH1=0xFD;   //波特率9600

TL1=0xFD;

SCON=0x50;   //串口工作方式1 允许接收

PCON=0x00;   //波特率不倍增

TR1=1;   //启动定时器1

EA=1;   //打开总中断

ES=1;   //打开串口中断

}

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

函数功能:把接收到的数据转换十进制,再转换成对应的段码

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

void quduanma()

{

y[k]=smgduan[b/16];

y[k+1]=smgduan[b%16];

y[k+2]=smgduan[10];

}

void main()

{

uint n;

init(); //串口初始化

while(1)

{

for(n=0;n<8;n++)

{

P2=smgwei[n];

P0=y[n];

delayms(1);

P0=0xff;

}

}

}

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

函数功能:串口接收的中断函数

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

void TNT_Uart() interrupt 4

{

RI=0; //每接收8位数据RI就自动置1,需软件清零

b=SBUF; //SBUF是数据缓冲寄存器(暂存数据),把数据输出到b

quduanma();

send_char(b);  //传给电脑接收到的数据

k=k+3;

if(k==9)    //装满8位就重装

{

k=0;

}

}


关键字:51单片机  串口通信 引用地址:基于51单片机的串口通信(PC发字符)

上一篇:51单片机串口通信数码管显示
下一篇:51单片机实验1——串行通信(TX/RX)

推荐阅读最新更新时间:2024-11-09 11:41

51单片机数据类型int,float,指针所占字节数
1.int===2个字节 2.sfr===特殊功能寄存器,也是一种扩充数据类型,占用1个内存单元,利用它可以访问51单片机内的所有特殊功能寄存器。 sfr P1 = 0x90;/////////这一句定义P1为P1端口在片内的寄存器。 3.sfr16===16位特殊功能的寄存器。用于定时器T0,T1 4.sbit===可录址位,也是一种扩充数据类型。利用它可访问芯片内部RAM中的可寻址位或特殊功能寄存器的可寻址位。 sfr P1 = 0x90;/////////因P1端口的寄存器是可寻址位的,所以我们可以定义 sbit P1_1 = P1^1;///////P1_1为P1中的P1.1引脚 ////////== sbit P1_1
[单片机]
<font color='red'>51单片机</font>数据类型int,float,指针所占字节数
51单片机学习:蜂鸣器实验
实验名称:蜂鸣器实验 接线说明: 实验现象:下载程序后蜂鸣器发出声音,一段时间后关闭 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; sbit BEEP=P2^5; //将P2.5管脚定义为BEEP /************************************************************
[单片机]
C51单片机指针变量的定义及应用
一。 指针变量的定义 指针变量定义与一般变量的定义类似,其形式如下: 数据类型 [存储器类型1] * [存储器类型2] 标识符; [存储器类型1] 表示被定义为基于存储器的指针。无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下: 存储类型IIdata/data/bdataxdatapdataCode编码值0x000x010xFE0xFF [存储类型2]用于指定指针本身的存储器空间。 1、 char * c_ptr; int *
[单片机]
C<font color='red'>51单片机</font>指针变量的定义及应用
51单片机“积木式”实验板的制作
这套实验板每块板上的元件数不多,采用万能板和敷铜板丙种方法制作均可,上图中的实物就是用l5xLOCm万能板制作的。主控板的制作要注意的是PO口的引出端,从主控板原理下图可以看到,PO口引出端接线柱的排列方向和51 芯片 的PO口引脚的排列方向正好相反,所以要接跳线,别的三个 端口 的对外接线柱排列方向和51芯片的端口引脚方向一致。这样安排主要是保证不管主板怎样摆放,板上边两个端口各自的8个接线柱排列从左到右分别按PX.7、PX.6、...、PX.1、PX.0(X为0、1、2、3)的顺序,这样容易记忆,特别是外接数码管驱动时尤为方便。 另外要注意各元件的安装高度,保证40脚锁紧式插座装上芯片后,锁紧柄按下不被板上所装的元件挡住。
[单片机]
<font color='red'>51单片机</font>“积木式”实验板的制作
基于51单片机的直流电机调速系统(L298的使用)
设计要求 一个按键控制启动/停止 一个按键控制正反转 两个按键控制结束减速 四位数码管前一位显示正反转、1表示正转、0表示反转,后三位显示速度值 采用AT89C51单片机,以及直流电机驱动器L298 L298的IN1、IN2控制OUT1、OUT2输出高低电平 IN3、IN4控制OUT3、OUT4输出高低电平 使电机两端有一个电压差 可以外接两路直流电机。 ENA、ENB使能两路电机控制端口高电平有效。 用到的模块有数码管显示、按键获取、定时器0. 数码管显示部分 #include REGX52.H #include Delay.h sbit we2=P2^1; sbit w
[单片机]
基于<font color='red'>51单片机</font>的直流电机调速系统(L298的使用)
利用AT89S51单片机实现飞机发动机智能测量和显示系统的设计
引言 飞机飞行过程中,转速是需要测量的一个重要参数,通过测量喷气发动机转速,可以了解发动机的功率和推力,并可确定发动机所承受的运动负荷和能量负荷。测量发动机转速时必须把飞机发动机转轴的转速传送到座舱,供给飞行员读数,为实现飞机发动机转速远距离传输问题,目前飞机上采用三相交流发电机传感器,那么如何能准确的测量显示发动机的转速?本文提出了一种利用AT89S51单片机来实现对发动机转速进行智能测量和显示,不仅可提高发动机转速的测量精度,而且可提高系统的抗干扰能力。 1、 三相交流发动机工作原理 测量发动机转速的三相交流发电机传感器,其结构和原理示意图如图1所示,它由转子和定子组成。发电机的静子为星形连接的三相绕组;转子为两极永久磁铁
[单片机]
利用AT89S<font color='red'>51单片机</font>实现飞机发动机智能测量和显示系统的设计
51单片机对智能温控器的设计
这是一款51单片机智能温控器C语言源程序,程序功能:速成有时钟显示,使用DS18B20进行温度检测,控制温度可通过按键进行设置,输出通过继电器械驱动加热器进行加热。是一款功能较为完善的温度控制板,适合单片机爱好者进行温度控制的电子制作实作项目。电路简单,容易制作,调试容易。 #include ‘reg51.h’ #include ‘intrins.h’ #include‘absacc.h’ #define uchar unsigned char #define uint unsigned int #define BUSY 0x80 //lcd忙检测标志 #define DATAPORT P0 //定义P0口为LCD通讯端口 #
[单片机]
C51全局初始化及精确延时程序,51单片机精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact :zq1987731@163.com * * Version : V2.1 γ * Corrector : QiZhao * Date : 2008.2.1 (Last modified) * * Remarks :
[单片机]

推荐帖子

msp430f5529双路输出pwm波
#includemsp430.hexternunsignedintperiod,period1;intpwm1(period,period1)调节占空比{P2DIR|=BIT0+BIT5;//P2.0andP2.1outputP2SEL|=BIT0+BIT5;//P2.0andP2.1optionsselectTA1CCR0=1000-1;
fish001 微控制器 MCU
设计灵活、高性能的嵌入式系统
您的下一个嵌入式系统设计项目需要的是什么:是可以让您轻松地定制设计的灵活的系统元件,还是额外的性能空间,以便您在设计周期中加入更多的功能?为什么要让自己承受过度的开发压力,并且只能舍此取彼呢?软处理和IP定制能够为同时确保灵活性和高性能提供了最佳的解决方案,将定制设计的概念和协处理带来的性能加速结合起来。分立处理器只能提供固定的外设选择,并且一些性能受到时钟频率的限制。在嵌入式FPGA所提供的平台上,您可以创建一个具有大量定制处理器核、灵活的外设、甚至协处理减负引擎的系统。现在,您能设计出
jioeio 嵌入式系统
雷达测量 功率、频谱及其相关参数的测量
雷达系统应用广泛,不同类型的雷达应用场景也不同,它需要综合考虑性能、尺寸、成本等一系列因素。比如警用雷达常使用连续波雷达来简单测量运动车辆的速度而不需关注距离信息。因此,低成本和小尺寸就比先进性能和特性更重要。另一种极端情况下,复杂的相控阵雷达,可能有上千个收发组件同时工作,另外他们可能依靠复杂的技术来提升性能,比如说,旁瓣调零,参差PRI,捷变频、实时波形优化等。一起来看看雷达参数的测量。功率/频谱的测量通常,雷达发射机是系统中成本最高的部件,它具有最高的功耗,最严
火辣西米秀 模拟与混合信号
msp430f149 usart 谁能告诉我这个程序是什么意思啊
//*****************************************************************************//MSP-FET430P140Demo-USART0,Ultra-LowPwrUART19200EchoISR,32kHzACLK////Description:Echoareceivedcharacter,USART0RXISRathigh-speedused//withultr
yanqitwins 微控制器 MCU
MicroPython中新增蓝牙的文档
MicroPython中新增了蓝牙部分的文档,可以初步进行使用了。http://docs.micropython.org/en/latest/library/bluetooth.htmlMicroPython中新增蓝牙的文档 这个IC图片很酷
dcexpert MicroPython开源版块
【2024 DigiKey 创意大赛】基于树莓派的空巢老人监护系统
一、项目简介1、设计名称基于树莓派的空巢老人监护系统2、项目照片环境监测部分:跌倒监测部分:3、项目用到的板卡(1)RaspberryPi5处理器:2.4GHz4核64位Cortex-A76内存:4GBLPDDR4X-4267通讯接口:Wi-Fi6(802.11ac)支持2.4GHz和5GHz频段Bluetooth5.2支持低功耗蓝牙连接1个2.5Gbps1000MEthern
空耳- DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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