求这个程序数据的串口通讯
时间: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
}
希望大神修改使数据通过串口显示到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
}