微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求这个程序数据的串口通讯

求这个程序数据的串口通讯

时间:10-02 整理:3721RD 点击:
这个程序是已经做好了的ad数据采集。(硬件已经做好了)
希望大神修改使数据通过串口显示到labview里面,然后labview发送字符在液晶第二行后面显示。顺便能控制P3口两个led灯
#include <reg52.h>
#include "lcd1602.c"
#define uint unsigned int
#define uchar unsigned char
/*        ST--P1.0
        EOC--P1.6
        OE--P1.5
        CLK--P1.4
        A--P1.3
        B--P1.2
        C--P1.1         */
sbit OE  = P1^0;                                   //位定义
sbit EOC = P1^1;
sbit ST  = P1^2;
sbit CLK = P1^3;
void DelayMS(uint ms)                           //延时函数
{
        uchar i;
        while(ms--)
        {
                 for(i=0;i<120;i++);
        }
}
void Display_Result(int x)
{                                                                                          
         x=(x*3.9);                                                // 255与1000转换
         GotoXY(0,1);       
           LCD_Write(1,x/1000+'0');       
         LCD_Write(1,x%1000/100+'0');
     LCD_Write(1,x%100/10+'0');
         LCD_Write(1,'.');       
         LCD_Write(1,x%10+'0');
}
void main()
{
    LCD_Initial();                 //液晶屏初始化
        GotoXY(0,0);                 //指针定位
        Print("temp");
          
        TMOD = 0x02;         //0000 0010        定时计数器 高四位T1 低四位T0     gate  c/t'   m1 m0
        TH0  = 0x14;                 //0001 0100  16+4=20        高八位
        TL0  = 0x00;                 //0000 0000                低八位
        IE   = 0x82;                 //1000 0010                        开中断
        TR0  = 1;                         //                                                开启定时计数
        P1   = 0x3f;         //0011 1111        0 c1 c2 c3           clk st eoc oe
        while(1)
        {         
            ST = 0;                       
                ST = 1;                             //当ST上跳沿时,所有内部寄存器清零
                ST = 0;                             //下跳沿时,开始进行A/D转换         ,在转换期间,ST应保持低电平
                while(EOC == 0);     //当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换
                OE = 1;                                  //OE=1,输出转换得到的数据;
                DelayMS(40);
                Display_Result(P2) ;
                OE = 0;                                 //  OE=0,输出数据线呈高阻状态
        }
}
void Timer0_INT() interrupt 1                 //定时计数器0
{
        CLK = !CLK;                                         //通常使用频率为500KHZ
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top