关于上位机发送数据给单片机改变当前1602的显示时间

2019-03-24 18:09发布

大虾们!帮帮忙,我现在在学串口通信,我知道上位机发送一个字节的数据给单片机,然后让数码管显示发送的数据但是现在我想通过上位机发送一些数据给单片机,让1602显示的时间通过上位机发过来的数据进行改变,
该怎么发送呢
哪位大虾有这个程序没有?
贴出来好吗?
谢谢了
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
werjufour
2019-03-26 05:21
jishuaihu 发表于 2014-11-7 11:38
每个字节中断一次。手里没有现成的全局变量,uchar flag,array[14],cnt;
初始化中
flag= 0;

帮我看看这程序有什么问题没有?
我已经按了串口助手发送数据,但是时间不刷新不知道怎么回事!程序如下;
#include<reg51.h>
#include"DS1302.h"
#include"1602.h"
uchar flag=0;
void main()
{
        SCON=0x50;//串口选择工作方式为1;
        TMOD=0x20;//选择定时器1工作方式2;
        PCON=0x80;//波特率加倍;
        TH1 =0xF3;
    TL1 =0xF3;//设置定时器1初值,产生4800的波特率;
        ES=1;/*打开串口中断*/
        EA=1;/*打开总中断*/
        TR1=1;//开启定时器1产生波特率;

        LcdInit();
        Ds1302Init();/*1302初始化时间0秒0分12时1日1月星期3,2014年*/

        while(1)
        {
                if(flag==0)
                {
                        Ds1302ReadTime();        /*读取DS1302中的数据到全局变量数组TIME中*/       
                        LcdWriteCom(0x80+0x40);
                        LcdWriteData('0'+TIME[2]/16);
                        LcdWriteData('0'+(TIME[2]&0x0f));
                        LcdWriteData('-');
                        LcdWriteData('0'+TIME[1]/16);
                        LcdWriteData('0'+(TIME[1]&0x0f));
                        LcdWriteData('-');
                        LcdWriteData('0'+TIME[0]/16);
                        LcdWriteData('0'+(TIME[0]&0x0f));
                        LcdWriteCom(0x80+0x49);
                        LcdWriteData('0'+(TIME[5]&0x07));
                        LcdWriteCom(0x80);
                        LcdWriteData('0'+2);
                        LcdWriteData('0'+0);
                        LcdWriteData('0'+TIME[6]/16);
                        LcdWriteData('0'+(TIME[6]&0x0f));
                        LcdWriteData('-');
                        LcdWriteData('0'+TIME[4]/16);
                        LcdWriteData('0'+(TIME[4]&0x0f));
                        LcdWriteData('-');
                        LcdWriteData('0'+TIME[3]/16);
                        LcdWriteData('0'+(TIME[3]&0x0f));
                }
        }
}

void usartconfiguration() interrupt 4
{
        uchar temp,cnt=0;
        temp=SBUF;
        if(flag==0)
        {
              if(temp=='A')
              {
                flag=1;
                cnt=0;
             }
       
        }
        else
        {
            TIME[cnt++]=temp;
            if(cnt>6)
           {   
                           Ds1302Init()/*刷新发送过来的数据*/
               cnt=0;
               flag=0;
                  
           }
        }
        RI=0;/*接收标志清0*/
}

一周热门 更多>