/*----------------------------------------------- 名称:串口通信 编写:LZM 日期:2015.05 修改:无 内容:连接好串口波特率设置为9600,无奇偶校验 晶振11.0592MHz 接上串口,可以接收到自己发送的字符 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 /******************************************************************* 请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度 (1) 波特率加倍(SMOD=1): Max_Baud = FOSC/12/16 (2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32 例如:22.1184MHz晶振,波特率加倍时,最大波特率=22118400/12/16=115200 *******************************************************************/ #define FOSC 11059200 //振荡频率 #define BAUD 9600 //波特率 #define SMOD 1 //是否波特率加倍 #if SMOD #define TC_VAL (256-FOSC/16/12/BAUD) #else #define TC_VAL (256-FOSC/32/12/BAUD) #endif typedef unsigned char uint8; typedef unsigned int uint16; code const char str1[] = "The string is 来自单片机!\r\n"; code const char str2[] = "Author: louis \r\n"; //const 限定一个变量不允许被改变。在一定程度上提高程序安全性和可靠性 //code 存储区间为 程序存储区 /***************函数声明*******************/ void InitUART(void); void SendOneByte(uint8); void SendrStr(const uint8 *ptr); /****************主函数********************/ void main(void) { uint8 i=0; InitUART(); while(str2[i]!='\0') { SendOneByte(str2[i++]); } SendrStr(str1); while(1); } /****************中断服务函数***************/ void UART_ISR(void) interrupt 4 { uint8 RX_Data; //只响应"接收"中断,"发送"中断来了就直接抹掉 if(RI) { RI = 0; //串口中断标志不能自己清除,需要手动清除 RX_Data=SBUF; SendOneByte(RX_Data); } else TI = 0; //串口发中断是发送完缓冲区数据之后产生 } /****************串口初始化函数*************/ void InitUART(void) { TMOD = 0x20; //定时器1,模式2工作模式 SCON = 0x50; //串口工作模式1,允许REN /* SCON: 模式 1, 8-bit UART, 使能接收 */ TH1 = TC_VAL; TL1 = TH1; PCON = 0x80; //发送速率加倍 ES = 1; EA = 1; TR1 = 1; } /**************串口发送字符函数*************/ void SendOneByte(uint8 c) { ES = 0; //禁止中断,让串口安心工作啊 SBUF = c; while(!TI); //等待发送完毕 TI = 0; //清TI中断 ES = 1; //打开中断 } /**************串口发送字符串函数*************/ void SendrStr(const uint8 *ptr) { do { SendOneByte(*ptr); //其实发送字符串也是在调用发送字符的函数~~ }while(*ptr++!='\0'); //要有结束判断,否则串口发送 字符串 不知道什么时候停止 }
发表评论
-
STC89C52单片机——串口发送程序2
2015-05-24 22:08 474修改了 1 中不能连续调用 字符串发送的BUG!! ... -
IIC总线协议基础1
2015-06-06 10:12 834文档类别 ... -
LED数码管-十六进制码值
2015-06-09 23:13 1045//unsigned char Number[16]={0 ... -
DS18B20-Onewire Bus-单总线 单片机读取温度
2015-06-18 22:29 693DS18B20,单片机,11.0592MHZ </p ... -
单片机之KEIL--添加头文件库
2013-04-25 14:09 1146点击打开链接KEIL v3添加STC系列单片机库文件 方法+ ... -
单片机之UIP--TCP作为服务器,主动发送数据 ACK
2013-04-28 16:21 748作者:LZMCSDN: http://blog.csdn. ... -
单片机之UIP--TCP 校验和计算
2013-06-04 10:49 720TCP 数据校验,在网络和资料中找了许多,总结了下:利用TC ... -
利用KEIL编程nop()如何定义?
2013-11-25 23:34 1479在KEIL中编程,有时候发现无法使用:_nop_(); ... -
Android学习之路以及如何利用Android应用来赚钱
2015-01-17 12:36 349本人一开始学习Android ... -
IIC读写AT24C02代码1——通过串口命令控制R/W
2015-05-26 21:13 969IIC读写AT24C02代码1—— ... -
IIC读写AT24C02代码2——串口命令控制多页读写
2015-06-02 21:24 614通过串口输入 R 、W 进行控制程序读写IIC设备。波特率9 ... -
UART串口协议基础1
2015-06-04 22:53 680Louis kaly.liu@163.com ... -
sizeof strlen 的区别
2013-10-11 08:48 1075sizeof 和strlen 直接给代码: char ... -
单片机之串口通信
2013-09-12 09:12 1282#include "reg52.h" ... -
SPI之CC1101
2013-09-02 08:30 1504SPI读写操作 INT8U SpiTxRxByte ... -
KEIL v3添加STC系列单片机库文件 方法+头文件库
2013-04-25 06:09 2765点击打开链接KEIL v3添加STC系列单片机库文件 方法 ... -
IIC之AT24C256的读写程序
2013-05-10 19:54 1588一个通用的24C01-24C256共9种EEPROM的字节 ... -
TCP 校验和计算 有问题?
2013-06-04 02:49 1667TCP 数据校验,在网络和资料中找了许多,总结了下:利用T ...
相关推荐
超低功耗——STC89C52系列单片机 STC89C52系列单片机在空闲模式下具有极低的功耗特性,这使其非常适合于电池供电的场合。 #### 12. 每个单片机拥有全球唯一身份号码(ID号) 这一特性为追踪和管理单片机提供了便利...
3. **编程STC89C52**:编写C语言程序,用以控制单片机读取传感器数据,发送AT指令给ESP8266,以及解析从ESP8266返回的网络响应。程序设计需要考虑错误处理和通信协议的实现。 4. **网络通信**:STC89C52通过串行...
STC89C52单片机内部集成了一个全双工的串行通信接口(UART),可以实现异步串行数据的发送和接收。该串行口支持四种工作方式,分别适用于不同的应用场景。 **2.2 串行口管脚定义** - RXD (P3.0):串行数据接收端; ...
0.96寸OLED显示屏在嵌入式系统中的应用是一个常见的硬件接口技术,尤其当与STC89C52系列微控制器结合时,能够实现丰富的图形与文本显示功能。STC89C52是一款基于8051内核的微控制器,拥有丰富的I/O口和内存资源,常...
这个压缩包“基于单片机——STC89C52RC单片机学习例程书籍代码资料.zip”包含了多个部分,旨在帮助初学者和进阶者深入理解和应用STC89C52RC单片机。 1. **必看!代码说明.doc**:这份文档可能包含对压缩包中所有...
在这个"51单片机STC89C52RC开发板例程之串口发送一串字符"的项目中,我们主要关注的是如何利用单片机的串行通信接口(UART)来实现数据的发送。串口通信是单片机与外部设备之间进行数据交换的一种常用方式,其工作...
在本文中,我们将深入探讨51单片机STC89C52RC的开发板实验,特别是如何通过串口发送字符来显示爱心形状的图形程序。STC89C52RC是一款广泛应用的8位微控制器,因其性价比高、功能强大而受到众多电子爱好者的青睐。在...
### 基于STC89C52单片机的智能交通灯控系统设计 #### 概述 本文档详细介绍了一个基于STC89C52单片机的智能交通灯控系统的设计思路和技术要点。该系统旨在解决城市交通管理中的一个重要问题——交通信号灯的智能...
标题 "1、源码_STC89C52_" 暗示了这是一个关于STC89C52单片机的源代码项目,而描述 "基于单片机心率检测STC89C52 单片机电子设计" 提供了具体的应用场景——心率检测。结合标签 "STC89C52" 和压缩包中的文件名 "1、...
/*模 块 名:串口通讯——发送 驱动芯片型号:PL2303 */ /*创 建 人:追忆逝水的年华 日期:2013-09-12 */ /*修 改 人: 日期:2013-09-12 */ /*功能描述: */ /*其他说明: */ /*版 本: /*占用资源: 1)端口...
单片机毕业设计是许多计算机科学与电子工程专业学生在学术生涯最后阶段的重要任务,而STC89C52RC单片机是这类设计中常见的核心元件。这个压缩包文件包含了丰富的学习资源,旨在帮助学生更好地理解和掌握单片机的使用...
### STC89C52RC使用手册关键知识点解析 #### 一、STC89C51RC/RD+系列单片机总体介绍 **1.1 STC89C51RC/RD+系列单片机简介** STC89C51RC/RD+系列单片机是一款基于8051架构的高度集成化的微控制器,由宏晶科技(STC...
《Stc89C52_CC1101 无线通讯收发程序——嵌入式开发详解》 在嵌入式系统的世界里,无线通信扮演着至关重要的角色,它使得设备能够无需物理连接就能进行数据交换。本项目聚焦于Stc89C52微控制器与CC1101无线通信芯片...
首先,我们要了解核心组件——STC89C52。这是一款8位单片机,由Microchip Technology(原名STC)生产。它拥有8K字节的Flash ROM,256字节的RAM,32个I/O口线,内置4KB EEPROM,以及多个定时器和串行通信接口。这种...
这篇文章将详细讲解如何使用STC89C52单片机配合MLX90614红外测温传感器实现温度测量,并将结果显示在LCD屏幕上。首先,我们要了解这两个关键组件。 STC89C52是一款低功耗、高性能的8位微控制器,拥有8KB的Flash存储...
在这个实例中,我们关注的是STC89C52单片机,这是一种广泛应用的8位微控制器,以其丰富的I/O端口、内置Flash存储和低功耗特性而闻名。STC89C52的串口通信功能使其能够与个人计算机(PC)或其他具有串行接口的设备...
根据提供的文档信息,本次课程设计的主要内容是基于STC89C52单片机的温度测量系统设计,并采用数码管进行数据显示。接下来,我们将详细分析该设计中的关键知识点。 ### 1. 引言 #### 1.1 本设计意义 在现代工业...
STC89C52 单片机是一种8位微控制器,具有丰富的外设接口,包括串口、计数器、计时器、PWM 输出等,可以满足各种应用场景的需求。 知识点2:LCD1602 液晶显示屏 LCD1602 液晶显示屏是本系统的显示模块,能够显示...
本设计的关键词——STC89C52单片机、DS18B20温度传感器和显示电路,揭示了系统的关键组成部分和技术焦点。通过对这些关键技术的掌握和应用,设计者能够构建一个可靠且实用的温度控制系统,满足不同领域的温度监测和...