51单片机串口发送字符事例

发布者:SereneVoyage最新更新时间:2020-03-03 来源: eefocus关键字:51单片机  串口  发送字符 手机看文章 扫描二维码
随时随地手机看文章

#include

#define jingzhen     11059200UL             /*使用22.1184M晶体*/     

#define botelv   9600UL             /*波特率定义为9600*/

unsigned char zifuchuan[]="您好!n";            //待显示字符。

volatile unsigned char sending;

sbit S4=P3^2;


void delay(unsigned char i)

{

    unsigned char j,k;

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

        for(k=90;k>0;k--);

}

void init(void)                //串口初始化

{

EA=0; //暂时关闭中断

TMOD&=0x0F;  //定时器1模式控制在高4位

TMOD|=0x20;    //定时器1工作在模式2,自动重装模式

SCON=0x50;     //串口工作在模式1

TH1=256-jingzhen/(botelv*12*16);  //计算定时器重装值

TL1=256-jingzhen/(botelv*12*16);

PCON|=0x80;    //串口波特率加倍

ES=1;         //串行中断允许

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

REN=1;        //允许接收 

EA=1;         //允许中断

}


void send(unsigned char d)          //发送一个字节的数据,形参d即为待发送数据。

{


SBUF=d; //将数据写入到串口缓冲

sending=1;     //设置发送标志

while(sending); //等待发送完毕

}


void sendc(unsigned char * pd)

{

while((*pd)!='') //发送字符串,直到遇到0才结束

{

  send(*pd); //发送一个字符

  pd++;  //移动到下一个字符

}

}


void main()

{

    init();

    while(1)

    {

        if(S4==0)

        {

            delay(20);

            if(!S4)

            {

                while(!S4);           

                sendc(zifuchuan);

            }

        }

    }

}


void uart(void) interrupt 4         //串口发送中断

{

if(RI)    //收到数据

{

  RI=0;   //清中断请求

}

else      //发送完一字节数据

{

  TI=0;

  sending=0;  //清正在发送标志

}

}


关键字:51单片机  串口  发送字符 引用地址:51单片机串口发送字符事例

上一篇:基于51单片机的可调PWM波程序
下一篇:单片机风扇模拟控制系统

推荐阅读最新更新时间:2024-10-29 14:03

51单片机用PWM控制LED渐亮与渐灭
设计思路:用定时器中断产生最小时间单位T0,每m个T0组成一个子周期T10,其中前n个T0为LED导通时间,即Ton=n*T0,则Toff=(m-n)*T0 ;每X个T10组成一个母周期T20,其中前y个T10为有效控制时间,后续的(x-y)个T10令LED熄灭或者子周期占空比调至最小。 ;适当调节n/m和x/y的比例使显示效果达到最佳。 ;以下是刚刚调试通过的小段程序,显示效果良好。 ;子周期的最小占空比的宽度应大于LED的点亮时间,即点亮LED的时间宽度n/m*T0应足够产生余辉。类似于动态数码管对点亮时间的要求。 ;母周期的宽度应小于1/50s,提高刷新频率以令肉眼察觉不出闪烁。 ;芯片: AT89C2051
[单片机]
基于89C51单片机、RAM和8251实现无线电台通信卡的设计
当今信息时代,人们需要多种多样的通信手段和设备,常见的不论是有线电话还是无线电台,都为模拟信道,适合传送模块话音信号。目前,通过公用电话网进行计算机通信的技术已经成熟。而无线电台特点是老式电台,在我国使用范围很广,拥有量很大,但其功能单一,不能适应当前数据通信的要求,如何对其进行技术改造,增加数据能信功能,就显得尤为必要。为此,研究设计了无线电台用智能数据通信卡(以下简称通信卡),通过该卡,可给以模拟方式作为话通信的无线电台增加数据通信功能,大大提高了老式电台的性价比。该卡体积小,成本低,可放置于电台内部。 1、通信卡的设计思想 从电台实际工作情况考虑,给电台增加数据通信功能后,应注意解决以下问题: ·不能影响原话音通信功能。
[单片机]
基于89C<font color='red'>51单片机</font>、RAM和8251实现无线电台通信卡的设计
51单片机的定时器中断(寄存器)
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。 此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。 其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。 1.中断允许寄存器IE 图1.中断寄存器IE 中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址,即可对该
[单片机]
<font color='red'>51单片机</font>的定时器中断(寄存器)
基于USB总线和89C51单片机的数据采集系统设计
在工业生产和科学技术研究过程的各行业中,常常要对各种数据进行采集,现在常用的采集方式是在PC机或工控机内安装数据采集卡,如A/D卡及RS-422卡、RS-485卡。采集卡不仅安装麻烦,易受机箱内环境的影响,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。而通用串行总线(Universal Serial Bus,简称USB)的出现能很好地解决以上这些冲突。我们利用89C51单片机设计了基于USB总线的数据采集设备,并可与MAX485结合起来实现数据的远程采集。 系统硬件设计 USB数据采集系统硬件模块主要由串行A/D转换器、89C51芯片、USB接口芯片和多路模拟开关等组成。硬件总体结构框图如图1所示。
[应用]
基于数字PID和51单片机的温度控制系统
在工业生产过程中,温度是工业生产过程中常见的工艺参数之一,对温度控制的好坏直接影响产品的质量。及时准确地得到温度信息并对其进行适当的控制,在许多工业场合中都是重要的环节。对于不同生产情况和工艺要求下的温度控制,所采用的加热方式和控制方式均不同。本文介绍了一种基于89C52单片机的温度控制系统,本系统的任务是对温度进行实时监控与控制。它以温度传感器DSl820对温度进行测量、采样与转换,并将测量结果送给单片机;单片机将输人的温度值与内部指定单元的给定温度值进行比较,根据比较结果,通过一个执行机构(可控硅)对加热源(加热炉的温度)的开关状态进行控制。在控制环节中,本系统采用的是数字PID控制算法来实现上述功能。传统的PID控制电路结
[单片机]
基于数字PID和<font color='red'>51单片机</font>的温度控制系统
51单片机数据传递类指令举例介绍
(1)以直接地址为目的操作数的 指令 MOV direct,A 例: MOV 20H,A MOV direct,Rn MOV 20H,R1 MOV direct1,direct2 MOV 20H,30H MOV direct,@Ri MOV 20H,@R1 MOV direct,#data MOV 20H,#34H (2)以间接地址为目的操作数的指令 MOV @Ri,A 例:MOV @R0,A MOV @Ri,direct MOV @R1,20H MOV @Ri,#data MOV @R0,#34H (3)十六位数的传递指令 MOV DPTR,#data16 8051是一种8位机,这是唯一的一条16位立即数
[单片机]
51单片机【二】LED闪烁及流水灯附带c语言位操作
void main(void) { while (1) { gLed1 = 0; // 点亮LED Delay(); // 延时一段时间 gLed1 = 1; // 熄灭LED Delay(); // 延时一段时间 } } void FlashLed1(void) { LED_PORT = 0x7f; // 0b01111111,左边数第1颗LED亮其他灭 Delay(); LED_PORT = 0xbf; // 0b10111111,左边数第2颗LED亮其他灭 Delay(); LED_PORT = 0xdf; // 0b11011111,左边数第3颗LED亮其他灭 Delay(
[单片机]
6位数字显示频率计数器电路及51单片机源程序
1.频率计算器功能 利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。 2.电路原理图 3.程序设计内容 (1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。对于频率的概念就是在一秒只数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数
[单片机]
6位数字显示频率计数器电路及<font color='red'>51单片机</font>源程序
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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