zoukankan
html css js c++ java
C#与51单片机串口通信
C#与51单片机串口通信
51接受数据,PC发送数据。
通过单片机的数码管将PC发送的16进制数据显示出来。
51接受数据代码:
#include <reg51.h> #include <string.h> #include <intrins.h> sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制 sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制 sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制 unsigned char ch; bit read_flag= 0 ; //此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; void delay(unsigned int i); void init_serialcom( void ) { SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M) IE |= 0x90 ; //Enable Serial Interrupt TR1 = 1 ; // timer 1 run TI=1; } //向串口发送一个字符 void send_char_com( unsigned char ch) { SBUF=ch; while (TI== 0); TI= 0 ; } //串口接收中断函数 void serial () interrupt 4 using 3 { if (RI) { RI = 0 ; ch=SBUF; read_flag= 1 ; //就置位取数标志 } } main() { int LedNumVal = 0; unsigned char LedOut[3]; int i = 0; init_serialcom(); //初始化串口 while ( 1 ) { if (read_flag) //如果取数标志已置位,就将读到的数从串口发出 { read_flag= 0 ; //取数标志清0 send_char_com(ch); LedNumVal = ch; } LedOut[0]=Disp_Tab[LedNumVal / 100]; LedOut[1]=Disp_Tab[(LedNumVal / 10) % 10]; LedOut[2]=Disp_Tab[LedNumVal % 10]|0x80; for( i=0; i<3; i++) //实现8位动态扫描循环 { P0 = LedOut[i]; //将字模送到P0口显示 switch(i) //使用switch 语句控制位选 { case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; } delay(100); } } } void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); }
C#发送数据代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.IO.Ports; namespace 交通灯串口通信 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private SerialPort com; private void button1_Click(object sender, EventArgs e) { com = new SerialPort(); com.BaudRate = 4800; com.PortName = "COM4"; com.DataBits = 8; com.Open(); Byte[] data = new Byte[4]; data[0] = 0x10; com.Write(data, 0, 1); com.Close(); } } }
查看全文
相关阅读:
post请求返回404
启动网关服务报错 Unable to find GatewayFilterFactory with name RequestRateLimiter
数据库远程连接linux报错2003 can't connect to MySQL server on ip (0) 防火墙没有开放端口3306
idea下maven项目打包部署到tomcat服务器
修改Idea背景色
20种源代码测试工具
作为一名测试工程师,需要具备哪些能力
Android自动化测试工具——monkey简介及入门
appium关于定位元素
appium testcase2
原文地址:https://www.cnblogs.com/johnpher/p/2570601.html
最新文章
SharePreference是如何实现的——序列化XML文件
使用 SharedPreferences 实现数据的存储和读取
企业级工作流解决方案(二)--微服务总体介绍
GB28181实现摄像头网页无插件直播、回放过程中设备状态分析
大华海康等摄像头、录像机通过GB28181注册LiveGBS国标流媒体实现网页直播的注册流程解析
LiveGBS通过GB28181协议实现监控摄像头云端录像及回看查询,支持WEB直播与回放
免费WEB播放器LivePlayer.js如何自适应div宽高集成播放视频
方便快捷的使用LiveQing生成可以集成到业务界面的播放代码-点播、直播、HLS、RTMP、HTTP-FLV
LiveGBS通过GB28181协议接入海康、大华、华为等各厂家硬盘录像机NVR 或者带存储的摄像头实现WEB直播及录像查询回放
GB28181流媒体服务LiveGBS启动报错 HTTP Port[10000] In Use
热门文章
海康、大华等设备GB28181接入LiveGBS国标流媒体服务后通道数为0的问题处理
GB28181 协议WEB直播服务LiveGBS前端源码中WEB播放组件的使用
基于LiveGBS修改实现一套自己的GB28181流媒体
1.认识bash这个shell
坚持
返回的数据,设置TEXT/plain,可以直接用@ResponseBody
通过ServletInputStream读取http请求传入的数据
springboot controller接收到http请求后打印request中的参数
微服务项目发请求
springboot接收post请求
Copyright © 2011-2022 走看看