EVB-335与51单片机串口通讯
时间:10-02
整理:3721RD
点击:
最近一直在做一个信息采集系统,做了很多实验,都不怎么理想,但我还是选择了用51单片机作为信息采集端,通过串口,51单片机会将采集到的信息发送给EVB_335,硬件连接如图
首先,做一块带串口的51单片机的最小系统板。
将最小系统板与EVB-335用交叉线连接。
将以下代码编译后下载到51单片机,该程序功能为:将51单片机各个IO口采集到的信息通过串口发送出去
首先,做一块带串口的51单片机的最小系统板。
将最小系统板与EVB-335用交叉线连接。
将以下代码编译后下载到51单片机,该程序功能为:将51单片机各个IO口采集到的信息通过串口发送出去
- #include <reg52.h>
- void uart_init()
- {
- ET1 = 0;
- TMOD = TMOD & 0X0F;
- TMOD = TMOD | 0X20;
- TH1=TL1=0XFd;
- PCON = 0;
- SCON = 0X40;
- TR1 = 1;
- }
- uart_delay(int us)
- {
- while(us--);
- }
- void uart_txdat(char dat)
- {
- SBUF = dat;
- while(TI==0);
- TI = 0;
- // uart_delay(50);
- }
- void main()
- { int j=100;
- uart_init();
- while(1)
- {
- uart_txdat('s');
- uart_txdat(((P0&0xf0)>>4)+48);
- uart_txdat((P0&0x0f)+48);
- uart_txdat(((P1&0xf0)>>4)+48);
- uart_txdat((P1&0x0f)+48);
- uart_txdat(((P2&0xf0)>>4)+48);
- uart_txdat((P2&0x0f)+48);
- uart_txdat(((P3&0xf0)>>4)+48);
- uart_txdat((P3&0x0f)+48);
- for(j=5;j>0;j--)
- uart_delay(30000);
- }
- }
- #include<stdio.h>
- #include<string.h>
- #include<malloc.h>
- #include<sys/types.h>
- #include<sys/stat.h>
- #include<fcntl.h>
- #include<unistd.h>
- #include<termios.h>
- #define max_buffer_size 9
- int main()
- {
- char fd=-1,ffd=-1,fdt=-1;
- volatile char j=0,ret=0;
- char buff[max_buffer_size];
- struct termios opt,opt_tem;
-
- while(1)
- {
- fd=-1,ffd=-1,fdt=-1;
- opt = opt_tem;
- fd=open("/dev/ttySAC3",O_RDWR); //′ò?aμúò???′??ú
- if(fd<0)
- {
- printf("dev1 open error!");
- return 0;
- }
- fdt=open("/dev/ttySAC0",O_RDWR); //′ò?aμú?t??′??ú
- if(fdt<0)
- {
- printf("dev2 open error!");
- close(fd);
- return 0;
- }
- ffd=open("/file/info.txt",O_RDWR,0664);//′ò?a???t
- if(ffd<0)
- {
- printf("info.txt file open failed!");
- close(fd);
- close(fdt);
- return 0;
- }
- tcgetattr(fd,&opt);
- tcgetattr(fdt,&opt);
- cfmakeraw(&opt);
- cfsetispeed(&opt,B9600);
- cfsetospeed(&opt,B9600);
- tcsetattr(fd,TCSANOW,&opt);
-
- printf("reday receiving data####\n");
-
- for(j=0;j<max_buffer_size;j++)
- {
- *(buff+j) = '\n'; //?aè·±£3é1|?óê?êy?Y£??óê????°£??è???àó|?o′???
- }
- read(fd,buff,sizeof(char)); //2é?ˉ?????ú×′ì?£??óê?μ??aê??üá?oó?aê??óê?oí′|àíêy?Y
- if(buff[0] == 's')
- {
- for(j=1;j<max_buffer_size;j++)
- {
- *(buff+j) = '\n'; //?aè·±£3é1|?óê?êy?Y£??óê????°£??è???àó|?o′?????
- read(fd,buff+j,sizeof(char));//?óê?êy?Y
- printf("receiv success,char is %c,j value %d\n",buff[j],j);
- }
-
- if(*(buff+j-1) != '\n')
- {
- //printf("receiv success,string is %s\n",buff);
- for(j=0;j<max_buffer_size;j++)
- write(fdt,buff+j,sizeof(char));//???óê?μ?μ?êy?Y·¢?í???í?§?ú
- lseek(ffd,0,SEEK_SET); //???t?¨??
- ret = write(ffd,buff+1,strlen(buff)-1);//???óê?μ?μ?êy?Y±£′?μ??÷?ú???t??ó|????
- close(fd);
- close(fdt);
- close(ffd);
- sleep(1);
- // if(ret)
- //break;
- }
-
- }
-
- }
- return 0;
-
- }
好
好东西,谢谢分享,顶!