runxinzhi.com
首页
百度搜索
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(); } } }
相关阅读:
解决.Net 4.0 A potentially dangerous Request.Form value was detected from the client 异常
解决背景在360极速模式下不显示的问题
ASP怎么解除文件上传200kb限制
mysql导入数据出错
ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法
phpmyadmin导入sql数据的纠结
Veket_Porteus_Puppy安装器by双心
多系统的福音,bcdedit找回传统启动菜单。取消(恢复)Modern UI风格启动菜单~菜单~
关于fbinst-ud区的几点看法
高速公路坐标高程计算软件4.2版本发布
原文地址:https://www.cnblogs.com/johnpher/p/2570601.html
最新文章
微服务、分库分表、分布式事务管理、APM链路跟踪性能分析演示项目
CentOS 6.3下配置iSCSI网络存储
CentOS 6.4下Squid代理服务器的安装与配置
CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
CentOS 6.4下PXE+Kickstart无人值守安装操作系统
CentOS 6.3下配置LVM(逻辑卷管理)
CentOS 6.3下配置软RAID(Software RAID)
微信公众平台开发(十二) 发送客服消息
CentOS 6.3下rsync服务器的安装与配置
微信公众平台开发(十一) 功能整合
热门文章
微信公众平台开发(十) 消息回复总结
微信公众平台开发(九) 数据库操作
微信公众平台开发(八) 自定义菜单功能开发
微信公众平台开发(七) 聊天机器人功能开发
微信公众平台开发(六) 翻译功能开发
微信公众平台开发(五) 天气预报功能开发
qq临时会话设置
Dreamweaver8 查找和替换窗口不见了解决办法
asp.net“服务器应用程序不可用” 解决方法
Access to the path '20141211142713.gif' is denied.
Copyright © 2020-2023
润新知