普中单片机串口接收数据控制灯亮灭

普中单片机 串口 接收数据 控制灯亮灭

简介

1.硬件部分
普中单片机开发板 USB To TTL
2.软件部分
keil软件 串口调试助手

硬件部分

普中单片机开发板
一般的开发板即可

在这里插入图片描述

软件部分

/*-----------------------------------------------------------------------------
* 实 验 名		 : 串口试验
* 实验说明     : 普中单片机串口接收数据控制灯亮灭
* 连接方式     : 
* 注    意		 : 该试验使用的晶振是12MHZ
*******************************************************************************/
 
#include<reg52.h>
#include<intrins.h>
 
#define uchar unsigned char
#define uint  unsigned int
	

#define jingzhen     12000000UL			 /*使用12.0M晶体*/	
#define botelv   4800UL		           /*波特率定义为4800*/
 
uchar PuZh[] = "广州汇承信息科技有限公司www.hc01.com";
 
//--定义使用的IO--//
 
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
 
//--声明全局函数--//   
void UsartConfiguration();
void Delay_1ms(uint i);


void DELAY_nMS(unsigned int time);
 
/********************************************************************
* 名称 : Com_Int()
* 功能 : 串口中断子函数
* 输入 : 无 * 输出 : 无
***********************************************************************/
void Com_Int(void) interrupt 4
{
	uchar i;
  uchar receive_data;
	
  EA = 0;
	
  if(RI == 1) //当硬件接收到一个数据时,RI会置位
	{ 		
			RI = 0;
			receive_data = SBUF;//接收到的数据
			
		if(receive_data == '1')	 
		{
				LED1= 0;
			  DELAY_nMS(500);
				LED2= 0;
			 DELAY_nMS(500);
				LED3= 1;
			 DELAY_nMS(500);
		}
		else
		{
				LED1 = 1; 
			 DELAY_nMS(500);
			  LED2 = 1; 
			 DELAY_nMS(500);
			  LED3 = 0; 
			 DELAY_nMS(500);
		}
		
	}
		
		for(i=0; i<36; i++)
		{
			SBUF = PuZh[i];   //将要发送的数据放入到发送寄存器
			while(!TI);		    //等待发送数据完成
			TI=0;			        //清除发送完成标志位
			Delay_1ms(1);
		}
		EA = 1;
}
 
/*******************************************************************************
* 函 数 名       : main
* 函数功能		   : 主函数
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/
 
void main()
{
 
	UsartConfiguration();//初始化串口
	
	while(1);	
}
	
/*******************************************************************************
* 函 数 名       : UsartConfiguration()
* 函数功能		   : 设置串口
* 输    入       : 无
* 输    出       : 无
*******************************************************************************/


void  UsartConfiguration(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;         //允许中断
}
 
 
/********************************************************************
* 名称 : Delay_1ms()
* 功能 : 延时子程序,延时时间为 1ms
* x * 输入 : x (延时一毫秒的个数)
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)//1ms延时
{
  uchar x,j;
  
  for(j=0;j<i;j++)
    for(x=0;x<=148;x++);
}

void DELAY_nMS(unsigned int time)
{
  unsigned int  i,j;             
  for(i=0;i<time;i++)    
     for(j=0;j<939;j++); 
}

参考资料

1.普中开源电子发现网站http://prechin.net/
2.普中单片机开发板资料网站http://www.prechin.net/forum.php?mod=viewthread&tid=35264&page=1&extra=#pid44329
3.51黑电子论坛http://www.51hei.com/bbs/

普中科技C51单片机是一款广泛应用于嵌入式系统的微控制器芯片,具有较高的稳定性和灵活性。要实现将串口接收到的数据显示在数码管上,我们可以采用以下步骤: 1. 初始化串口:首先,我们需要配置C51单片机的串口功能,包括波特率、数据位、停止位等参数,以便与外部设备(如电脑或其他单片机)进行数据通信。 2. 设置数码管:通过初始化相应的引脚,将数码管与C51单片机进行连接,并设置相应的段选位、位选位等信号接口,以控制数码管的显示。 3. 接收串口数据:使用C51单片机提供的串口接收函数,不断监听串口上接收到的数据。当接收到数据时,将其存储到一个变量中等待显示。 4. 解析数据:根据接收到的数据内容,进行相应的解析和处理。例如,如果接收到的是数字字符,则可以将其转换为数字;如果接收到的是特定指令,则可以相应地进行处理。解析后得到的数据将用于控制数码管的显示。 5. 数码管显示:通过将解析后的数据按位或按段选方式,将数据分别送入数码管的控制引脚上,实现数据在数码管上的显示。通常,采用循环扫描的方式,不断更新数码管的显示内容,以使数据能够连续显示。 通过以上步骤,我们可以实现普中科技C51单片机串口接收到的数据显示在数码管上。这样可以方便地监测串口接收到的数据内容,并进行相应的处理和显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值