双机通信(C语言、主机和从机共用程序)

发布者:superstar11最新更新时间:2012-11-06 来源: 21ic 关键字:双机通信  stc89c52  数码管 手机看文章 扫描二维码
随时随地手机看文章
*
发送和接收程序:即主机和从机可共用此程序
程序效果:通过主机发送,从机接收
在主机中通过记下按键按下的次数,主机中显示最后
按下的六个数值,并发送给从机,从机也显示这六个数值
单片机类型:stc89c52
完整程序下载地址:
http://www.51hei.com/ziliao/file/shuangjidanduc.rar
*/

#include //头文件
#include //循环移位文件
#define uchar unsigned char//宏定义
#define uint  unsigned int
sbit key1=P3^5;   //位声明
uchar code table[]={0X00,0x3f,0x06,0x5b,//数码管显示的数值
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar table_tr[6];//暂存最后按下的六个数值
uchar count,cnt;
//延时子函数,用于数码管显示
void delay(uchar i)
{
     uchar x,y;
     for(x=i;x>0;x--)
          for(y=110;y>0;y--);
}
//初始化子函数
void init()
{
     TMOD=0x20;//T1工作在方式2
     TH1=0XF4;//波特率为4.8kbit/s
     TL1=0XF4;
     TR1=1;//启动定时器1
     SCON=0X50;//串口工作在方式1,允许接收
}
//显示子函数
void display()
{
     uchar i,j;//定义局部变量
     j=0x7f;  //赋初值
     for(i=0;i<6;i++)
     {
          P2=j;  //点亮最右边的数码管
          P0=table[table_tr[i]]; //显示该数值
          delay(10);    //延时,便于眼睛看清
          j=_cror_(j,1);//循环右移一位
     }
}
//按键扫描子函数
void key_scan()
{
     if(key1==0) //判断是否有按键按下
     {
          while(!key1)  //等待按键松手
          {
               display();//防止掉显
          }
          cnt++; //加1,用于显示
          SBUF=cnt;//送给缓冲区,发送
          while(!TI); //等待发送完
          TI=0;   //发送完了,标志位清零
          for(count=0;count<5;count++) //用于保存最后按下的六个按键数值
          {
               table_tr[count]=table_tr[count+1];
          }
          table_tr[5]=cnt; //把最后按下的按键数值赋给table_tr【5】
          if(cnt==10) //按键按下的次数有没有等于10
           cnt=0;//等于,则清零
     }
}
void main()
{
     uchar i;
     init(); //调用初始化子函数
     P0=0x00;
     while(1)
     {
          while(RI) //判断是否接受完
          {
               RI=0;//接受完了,标志位清零
               for(i=0;i<5;i++)  //把数组的数值都往前移一位,腾出table_tr【5】
                    table_tr[i]=table_tr[i+1];
               table_tr[5]=SBUF;//装入接收的数值
          }
          key_scan(); //调用键盘扫描子函数
          display();//调用显示子函数

     }
}

关键字:双机通信  stc89c52  数码管 引用地址:双机通信(C语言、主机和从机共用程序)

上一篇:红外遥控解码器设计
下一篇:简单电子琴程序-用蜂鸣器发声

推荐阅读最新更新时间:2024-03-16 13:12

51单片机直接驱动共阴极数码管
单片机驱动Led数码管(或n个Led)应该算是单片机经典试验之一了。 数码管种类: 少量的数码管实际可以直接用单片机驱动(如4个数码管)。数码管数码管有两种:共阴极和共阳极数码管。虽然只是一个极性的不同,实际应用时大有不同(根据网上资料小结如下): 数码管类型 上拉电阻 限流电阻 对单片机电流的影响 三极管驱动 工业IC 共阳极 不需 200~470 (非排阻) 位码高电平, 段码低电平时点亮 PNP 共阴极 需要 (可
[单片机]
单片机中 LED 数码管的介绍
LED 小灯是一种简单的 LED,只能通过亮和灭来表达简单的信息。而这节课我们要来学习一种能表达更复杂信息的器件——LED 数码管。 先给大家提供一张原理图看一下,如图5-3所示。 图5-3 数码管原理图 这是比较常见的数码管的原理图,我们板子上一共有6个数码管。前边有了 LED 小灯的学习,数码管学习就会轻松的多了。从图5-3可以看出来,数码管共有 a、b、c、d、e、f、g、dp 这么8个段,而实际上,这8个段每一段都是一个 LED 小灯,所以一个数码管就是由8个 LED 小灯组成的。我们看一下数码管内部结构的示意图,如图5-4。 图5-4 数码管结构示意图 数码管分为共阳和共阴两种,共阴数码管就是8只 LED 小灯的
[单片机]
单片机中 LED <font color='red'>数码管</font>的介绍
数码管动态显示程序
经过几天的不眠不休,结合我们老师是方法和网络资料,加上自己不断的学习,思考,修改,终于成功的让数码管动态显示出来,并且能从0~99自动跳转。接下来继续努力,把程序再简化。耶,又成功了一步,辛苦的付出总能见到美好的收获。加油加油! 电路连接图 #include"reg51.h" #define uchar unsigned char #define uint unsigned int uchar code smg ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar data yy ={0,0}; uint a; sbit P30=P3^0; sbit P31=P
[单片机]
<font color='red'>数码管</font>动态显示程序
一套热计量仪表温度控制系统的设计方案
0引言 随着生活水平的提高,人们对生活的环境提出了更高的要求,良好的温度控制对提高人民生活质量起着非常重要的作用。 特别是北方,城镇居民冬季一般采取集中供暖,采暖质量的好坏,直接关系到人们生产生活。目前我国绝大数的地区采暖缺少有力的监控系统,无法完成按需采暖以及实现对温度数据的有效控制,从而造成了对供暖热能的浪费。随着人们节约能源意识的逐步增强,迫切需要一种操作简单、节能环保和高效利用的智能热计量仪表温度控制系统。 1系统总体设计 根据热量与流量、温度之间的关系: Q=CM(T1-T0)式中,Q为散热器的散热量(单位:J);C为水的比热4.2*103J/kg°C ;T1-T0为散热器进出口的温差(°C);M为流经散热器的水的流量(L
[单片机]
一套热计量仪表温度控制系统的设计方案
MSP430数码管的使用Ⅱ
通过宏定义设置段选位选 #include msp430f149.h typedef unsigned char uchar; #define wei_h P5OUT |= BIT5 #define wei_l P5OUT &= BIT5 #define duan_l P6OUT &= ~BIT6 #define duan_h P6OUT |= BIT6 uchar table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar num = 0; void ma
[单片机]
51单片机的数码管和矩阵键盘
使用4*4的矩阵键盘和一个数码管 在4*4的矩阵键盘上编码0-F的字符,和一个数码管显示每个键盘上输入的字符。 //4*4键盘检测程序,按下键后相应的代码显示在数码管上 #include reg51.h typedef unsigned char UINT8; UINT8 i=100; UINT8 j,k,temp,key; void delay(unsigned char i) { for(j=i;j 0;j--) for(k=125;k 0;k--); } UINT8 code table = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
[单片机]
共阳极数码管
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。 基本信息 中文名 共阳数码管 外文名 Co-anode nixie tube 分类 七段数码管和八段数码管 基本单元 发光二极管 本质 半导体发光器件 共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
[模拟电子]
步进电机的单片机控制
一、 方案论证与比较     1、 本设计的重点在于对步进电机的控制和驱动,设计中受控电机为四相六线制的步进电机(内阻33欧,步进1.8度,额定电压12V)     方案一:使用多个功率放大器件驱动电机     通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。     方案二:使用L298N芯片驱动电机     L298N芯片可以驱动两个二相电机(如图1-1),也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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