51单片机之232串口实现

发布者:心想的45号最新更新时间:2022-02-21 来源: eefocus关键字:51单片机  232串口  工作模式 手机看文章 扫描二维码
随时随地手机看文章

任务要求

Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。

1、通过波特率计算定时器T1时间常数初值。

2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。

3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。


发送机(甲机)

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

*任务要求

*Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。

*1、通过波特率计算定时器T1时间常数初值。

*2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。

*3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。

*

*项目名:甲机

*作者:刘子琰

*时间:2020年4月4日11:34:59

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

#include

#include

typedef unsigned char u8;


void delay(unsigned int i);    //函数声明


u8 i=0;

u8 *Tx_Buf= (u8*)0x30; 

void main (void) {

SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1       

TMOD|= 0x20;      //定时器1的工作方式2                       

PCON|= 0x80;      //波特率提高一倍                                                        

TH1 = 0xFA; //TH1=256-(6000000/12)*(2/(32*4800))

TL1 = 0xFA; //因为是定时器模式2,所以高8位和低八位要相同

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

ES   = 1;        //开串口中断                  

EA   = 1;        // 开总中断 

while(1)

{  

for(i=0;i<16;i++){

SBUF = Tx_Buf[i];     //SUBF作为发送缓冲器

while(!TI); // 等特数据传送 (TI发送中断标志)

TI = 0; // 清除数据传送标志

delay(1000);  

}

}


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

            

  延时处理程序  

  

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


 void delay(unsigned int i)

{

unsigned char j;

for(i; i > 0; i--)

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


}


接受机(乙机)

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

*任务要求

*Fosc为6MHz,定时器T1为工作模式2,串口工作模式1,波特率为4800。

*1、通过波特率计算定时器T1时间常数初值。

*2、编写甲机发送程序,工作于查询或者中断方式,传送30H——3FH中的十六个字节。

*3、编写乙机接收程序,接受十六字节数据放在40H——4FH中。

*

*项目名:乙机

*作者:刘子琰

*时间:2020年4月4日11:34:59

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

#include

#include

typedef unsigned char u8;


void delay(unsigned int i);    //函数声明


u8 i=0;

u8 *Rx_Buf= (u8*)0x40; 

void main (void) {

SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1       

TMOD|= 0x20;      //定时器1的工作方式2                       

PCON|= 0x80;      //波特率提高一倍                                                        

TH1 = 0xFA; //TH1=256-(6000000/12)*(2/(32*4800))

TL1 = 0xFA; //因为是定时器模式2,所以高8位和低八位要相同

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

ES   = 1;        //开串口中断                  

EA   = 1;        // 开总中断 

while(1)

{  

for(i=0;i<16;i++){

if(RI)       //RI接受中断标志

{  

RI=0;     //清除RI接受中断标志

Rx_Buf[i]=SBUF ;     //SUBF作为接受寄存器

}

delay(1000);  

}

}


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

            

  延时处理程序  

  

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


 void delay(unsigned int i)

{

unsigned char j;

for(i; i > 0; i--)

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


}

关键字:51单片机  232串口  工作模式 引用地址:51单片机之232串口实现

上一篇:《初学者C51自学笔记》之74HC573芯片及发光二极管闪烁
下一篇:51单片机之串口波特率配置

推荐阅读最新更新时间:2024-11-12 08:54

51单片机2个外部中断的应用
;51单片机的P1口上接有8只LED。 ;在外部中断0输入引脚P3.2接有一只按钮开关K1。 ;在外部中断1输入引脚P3.3接有一只按钮开关K2。 ;要求K1和K2都未按下时,P1口的8只LED呈流水灯显示, ;仅K1(P3.2)按下时,左右4只LED交替闪烁。 ;仅按下K2(P3.3)时,P1口的8只LED全部闪亮。 ;两个外中断的优先级相同。 ;============================================= ;用 PROTSUE 仿真界面如下: ;图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/50c618c5f08ba9
[单片机]
<font color='red'>51单片机</font>2个外部中断的应用
51单片机之晶振与定时器
Part1 晶振 晶振,也就是晶体振荡器,主要作用是产生稳定的振动频率用于单片机时钟电路。 一、晶振的工作原理 压电效应: 如图所示,晶体振荡器主要由引线构成的电极和晶体片构成。 当我们在晶体两电极外加电压后,晶体会发生形变,反过来,如果外力使得晶体变形,两极上又会产生电压。 因此当我们在晶体两端施加一个交变电压时,随着电压正负的改变,晶体交替形变,进而以一定的频率发生谐振–单频振荡(振荡频率固定不变)。 二、晶体单频振荡产生时钟脉冲 我们知道,脉冲信号是一个按一定电压幅度、一定时间间隔连续发出的信号。 而我们的晶体振荡器,既有电压幅度–晶体两端施加的电压,又有时间间隔–振荡频率 f 的倒数作为周期。因此我
[单片机]
<font color='red'>51单片机</font>之晶振与定时器
智能窗帘设计:51单片机+A/D转换+光敏电阻+LCD1602+步进电机
单片机源程序如下: #include reg52.h #define uchar unsigned char #define uint unsigned int #define yi 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40) uchar display_digit ={0,0,0}; uchar yuzhi ={0,0,0}; uchar phasecw ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D
[单片机]
智能窗帘设计:<font color='red'>51单片机</font>+A/D转换+光敏电阻+LCD1602+步进电机
8051单片机实战分析(以STC89C52RC为例) | 07 - 独立按键驱动
按键是比较常用的也是比较简单的人机交互操作,按键实际上是一个非自锁的轻触开关,按下时触点会闭合,松开是触点断开。 1 独立式按键 常用的按键电路有两种形式,独立式按键和矩阵式按键,独立式按键比较简单,它们各自与独立的输入线相连接,如图所示。 4 条输入线接到单片机的 IO 口上,当按键 K3 按下时,K3两边的线路将会导通,P32这个单片机IO口直接接到GND,此时P32这个引脚就是低电平了。当松开按键后,当松开按键后,线路断开,就不会有电流通过,那么P32引脚就会是默认的电平状态,是一个高电平,因为被上拉电阻R8拉到了VCC状态。所以我们就可以通过 P32 这个 IO 口的高低电平来判断是否有按键按下。 2
[单片机]
80<font color='red'>51单片机</font>实战分析(以STC89C52RC为例) | 07 - 独立按键驱动
AT89S51单片机对十字路口交通信号灯的控制设计
一、技术要求 某十字路口,如下图所示,设计一个交通灯信号控制器,指挥交通车的通行。要求如下: 1)东西通道和南北通道交替通行,东西通道每次放行时间大于南北通道每次放行时间。 2)绿灯亮表示可以通行,红灯亮表示禁止通行。 3)每次绿灯变红灯时,绿灯先闪转变黄灯(此时另一干道上的红灯不变)。 4)要有数字显示,作为时间提示,以便人们更直观地把握时间。具体要求东西通道、南北通道通行时间及黄灯亮的时间均以秒为单位作减计数。 二、硬件电路说明 2.1电路设计原理图 本设计是以89S51为主控芯片 ,利用P1口控制74LS240(八反相缓冲器,线驱动器)驱动发光二极管模拟交通灯。倒计时显示部分采用串口实现。串口工作在方式0时通过外接
[单片机]
AT89S<font color='red'>51单片机</font>对十字路口交通信号灯的控制设计
51单片机上用定时器实现按键长按、短按功能
我们在项目中常常需要在只有一个按键的情况下,来实现长按执行某个功能,短按执行另一个功能。 鉴于此,用51搭的核心板实测,亲测可行。好了,废话少说,简单粗暴,直接贴上程序结构。 主函数() { } 在进入while大循环中,先要配置定时器。 在while中核心是:使用两个if块判断,第一个if块判断按键是否按下,在第一个if块里面只进行按键按下标志位设置和定时器计数。 在第二个if块里根据第一个if块定时器计数来执行长短按功能,记得在退出第二个if块时,按键按下标志位(press_flag)和定时器 计数变量(count)都要清零。 …… 定时器配置和中断服务程序就不贴出来了。
[单片机]
在<font color='red'>51单片机</font>上用定时器实现按键长按、短按功能
贰:第一个51单片机的汇编实验
指令是指示单片机执行某种操作的指令。 1、机器码指令 用二进制(或十六进制)表示,这种形式的指令能够直接被计算机硬件识别和执行。 例如:二进制码“0000 0100B”,(十六进制“04H”)。 2、汇编语言指令 为了方便记忆,便于程序的编写和阅读,用助记符来表示每一条指令的功能。用助记符表示的指令不能被微处理器直接识别和执行,必须转换成机器码指令才能被机器执行。 例如,把5FH传送到累加器A中,实现这种操作的汇编语言指令形式为: MOV A,#5FH 其中“#”号为立即数5FH的标示符。这条指令的机器码为“74H 5FH” 汇编语言的语句格式 :操作码助记符 LOOP:MOV P0,#0FFH ;P0 端口
[单片机]
贰:第一个<font color='red'>51单片机</font>的汇编实验
51单片机设计方案TOP10(五)
基于51单片机的空气净化机的设计    引言   随着工业和社会的发展,全球空气污染很严重,人类健康正面临着“室内空气污染”的威胁。因此,人们需要专门的空气净化装置一空气净化机。空气净化机发展至今,先后经历了两代产品。第一代产品采用物理方法,即通过过滤、吸附、磁化、负离子等消除烟尘,其缺点在于无法消除由异味、病原菌、微生物等造成的污染。第二代产品利用化学反应产生臭氧负离子来净化空气,但是臭氧有令人难以容忍的刺鼻味道,并且臭氧作为强氧化剂对人体有一定的伤害。国内目前大量使用的空气净化机是以砍伐木材为代价,生产特殊纸张做成过滤器,给生态环境造成很大破坏,也增加了消费成本。若过滤器未能及时更换,空气净化机不仅无法实现空气净化功能
[模拟电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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