单片机端采用C51实现单个单片机与PC串口通信任务Word文件下载.docx
《单片机端采用C51实现单个单片机与PC串口通信任务Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机端采用C51实现单个单片机与PC串口通信任务Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
sbita3=P0^2;
sbita4=P0^3;
sbita5=P0^4;
sbita6=P0^5;
sbita7=P0^6;
sbita8=P0^7;
voiddelay(uintx)//延时
{
uchari;
while(x--)for(i=0;
i<
120;
i++);
}
voiduart(void)interrupt4//把接收到的数据写入ucReceiveData()
TI=0;
RI=0;
if(SBUF=='
h'
)//接收到'
H'
字符发送'
OK'
{
SBUF='
o'
;
while(TI==0)
;
}
elseif(SBUF=='
1'
)a1=0;
elseif(SBUF=='
2'
)a1=1;
3'
)a2=0;
4'
)a2=1;
5'
)a3=0;
6'
)a3=1;
7'
)a4=0;
8'
)a4=1;
9'
)a5=0;
a'
)a5=1;
b'
)a6=0;
c'
)a6=1;
d'
)a7=0;
e'
)a7=1;
f'
)a8=0;
g'
)a8=1;
voidmain(void)
{
ucharb=0xfe;
TMOD=0x20;
//定时器1--方式2
IE=0x12;
//中断控制设置,串口、T2开中断
PCON=0x80;
//电源控制
SCON=0x50;
//方式1
TL1=0xFa;
//0xF4;
//12MHZ晶振,波特率为48000xf34800
TH1=0xFa;
//11.0592MHZ晶振,波特率为48000xf496000xfa192000xfd
TR1=1;
//启动定时
ES=1;
EA=1;
//P0=0;
while
(1)
{
P1=0;
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing.Drawing2D;
namespacelsd1
publicpartialclassForm1:
Form
inta=0,b=2,c=0,d=0;
intm;
intsur=0;
intsu=0,sf=0;
publicForm1()
InitializeComponent();
privatevoidForm1_Load(objectsender,EventArgse)
this.skinEngine1.SkinFile="
WaveColor1.ssk"
GraphicsPathgp=newGraphicsPath();
gp.AddEllipse(pictureBox1.ClientRectangle);
Regionregion=newRegion(gp);
pictureBox1.Region=region;
pictureBox2.Region=region;
pictureBox3.Region=region;
pictureBox4.Region=region;
pictureBox5.Region=region;
pictureBox6.Region=region;
pictureBox7.Region=region;
pictureBox8.Region=region;
gp.Dispose();
region.Dispose();
label5.ForeColor=Color.Red;
timer1.Enabled=false;
timer2.Enabled=false;
privatevoidbutton8_Click(objectsender,EventArgse)
if(textBox1.Text!
="
"
)
if(serialPort1.IsOpen)
pictureBox1.BackColor=Color.DarkSeaGreen;
serialPort1.Write("
2"
);
pictureBox2.BackColor=Color.RosyBrown;
4"
pictureBox3.BackColor=Color.DarkSeaGreen;
6"
pictureBox4.BackColor=Color.RosyBrown;
8"
pictureBox5.BackColor=Color.DarkSeaGreen;
a"
pictureBox6.BackColor=Color.RosyBrown;
c"
pictureBox7.BackColor=Color.DarkSeaGreen;
e"
pictureBox8.BackColor=Color.RosyBrown;
g"
sur=20;
serialPort1.Close();
button8.Text="
打开串口"
textBox1.Enabled=true;
else
sur=0;
serialPort1.PortName=comboBox1.Text;
serialPort1.BaudRate=Convert.ToInt32(comboBox2.Text);
try
serialPort1.Open();
关闭串口"
textBox1.Enabled=false;
comboBox2.Enabled=false;
comboBox1.Enabled=false;
timer1.Interval=Convert.ToInt32(textBox1.Text);
timer1.Enabled=true;
timer2.Enabled=true;
catch
MessageBox.Show("
串口打开失败了!
\n\n可能是串口已补占用。
请输入延时时间~"
privatevoidbutton1_Click(objectsender,EventArgse)
sur=1;
sf=0;
su=0;
b=2;
privatevoidbutton2_Click(objectsender,EventArgse)
sur=2;
privatevoidbutton6_Click(objectsender,EventArgse)
sur=3;
privatevoidbutton4_Click(objectsender,EventArgse)
sur=4;
privatevoidbutton5_Click(objectsender,EventArgse)
sur=5;
b=0;
privatevoidbutton3_Click(objectsender,EventArgse)
sur=6;
privatevoidbutton7_Click(objectsender,EventArgse)
v"
发送失败了!
\n\n请打开串口。
privatevoidtimer1_Tick(objectsender,EventArgse)
if(sur==0)
if(a==0)
pictureBox1.BackColor=Color.Green;
1"
pictureBox2.BackColor=Color.Red;
3"
pictureBox3.BackColor=Color.Green;
5"
pictureBox4.BackColor=Color.Red;
7"
pictureBox5.BackColor=Color.Green;
9"
pictureBox6.BackColor=Color.Red;
b"
pictureBox7.BackColor=Color.Green;
d"
pictureBox8.BackColor=Color.Red;
f"
a=~a;
if(sur<
3||su==8||sf==8)
pictureBox4.BackColor=Color.