Visual Studio 2019实现c51上位机控制数码管显示数字
作者:互联网
Visual Studio 2019实现c51上位机控制数码管显示数字
初学者编写上位机程序
本人在编写上位机的时候花了很多时间,终于找到了正确的方法,在此分享一下,傻瓜式教学,希望能够对大家有所帮助!
上位机编写环境
我选择编写上位机的环境是Visual Studio 2019,编程语言是C#,环境的安装以及配置在此就不做过多阐述。
上位机窗体设计
打开Visual Studio 2019,选择创建新项目,搜索选择Windows窗体应用
给自己的项目起名
创建项目后即可看到form窗口,在窗口中添加组件,如图所示,“串口设置”的灰色框是GroupBox组件,下拉选框是ConboBox组件,按钮是Button组件,串口输入框是TextBox组件,其中还有Label组件。
设置好之后就可以开始对组件功能进行设计了。
上位机界面功能代码
form界面
在form界面写初始化串口以及波特率,填入下拉选框
private void Form1_Load(object sender, EventArgs e)
{
//添加波特率列表
string[] baud = { "9600", "115200" };
comboBox2.Items.AddRange(baud);
//设置选项默认值
comboBox2.Text = "115200";
//获取电脑当前可用串口并添加到选项列表中
comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
}
“打开串口”代码
代码实现打开代码功能
private void button1_Click(object sender, EventArgs e)
{
try
{
//将可能产生异常的代码放置在try块中
//根据当前串口属性来判断是否打开
if (serialPort1.IsOpen)
{
//串口已经处于打开状态
serialPort1.Close(); //关闭串口
button1.Text = "打开串口";
comboBox1.Enabled = true;
comboBox2.Enabled = true;
}
else
{
//串口已经处于关闭状态,则设置好串口属性后打开
comboBox1.Enabled = false;
comboBox2.Enabled = false;
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
serialPort1.DataBits = 8;
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.Open(); //打开串口
button1.Text = "关闭串口";
}
}
catch (Exception ex)
{
//捕获可能发生的异常并进行处理
//捕获到异常,创建一个新的对象,之前的不可以再用
serialPort1 = new System.IO.Ports.SerialPort();
//刷新COM口选项
comboBox1.Items.Clear();
comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames());
//响铃并显示异常给用户
System.Media.SystemSounds.Beep.Play();
button1.Text = "打开串口";
button1.BackColor = Color.ForestGreen;
MessageBox.Show(ex.Message);
comboBox1.Enabled = true;
comboBox2.Enabled = true;
}
}
“发送”按钮代码
将文本框中的内容发送到串口
private void button2_Click(object sender, EventArgs e)
{
try
{
serialPort1.Write(textBox2.Text);
}
catch (Exception exx)
{
MessageBox.Show("发送失败,原因:"+exx.Message);
}
}
单片机烧录代码
单片机需要编写自己想要实现的功能代码 并 烧录
#include<reg52.h>
#define duan P0
#define uint unsigned int
#define uchar unsigned char
uchar date;
sbit wei1 = P2^4;
sbit wei2 = P2^5;
sbit wei3 = P2^6;
sbit wei4 = P2^7;
void UsartConfiguration(){
SCON = 0x50;
TMOD = 0x20;
PCON = 0x00;
TH1 = 0Xfd;
TL1 = 0Xfd;
ES=1;
EA=1;
TR1=1;
}
void main(){
UsartConfiguration();
wei1=1;
wei2=1;
wei3=1;
wei4=1;
while(1);
}
void uart()interrupt 4{
//uchar receiveData;
date=SBUF;
switch(date){
case '0':duan = 0x3f;break;//0
case '1':duan = 0x06;break;//1
case '2':duan = 0x5b;break;//2
case '3':duan = 0x4f;break;//3
case '4':duan = 0x66;break;//4
case '5':duan = 0x6d;break;//5
case '6':duan = 0x7d;break;//6
case '7':duan = 0x07;break;//7
case '8':duan = 0x7f;break;//8
case '9':duan = 0x6f;break;//9
default:duan = 0x71;break;//F
}
//receiveData=SBUF;
RI=0;
SBUF=date;
while(!TI) ;
TI=0;
}
功能说明:串口发送0~9的数字,数码管显示4个数字,如“0000”或者“1111”;如果输入其他非法字符,则显示“FFFF”。
效果图
注意正确选择波特率
分享不易,感觉不错可以请我喝杯奶茶~
标签:case,c51,上位,break,数码管,Visual,duan,serialPort1,串口 来源: https://blog.csdn.net/wanghai159/article/details/113782023