怎么用上位机通过串口去控制51单片机点亮一个LED? 求程序。。

怎么用上位机通过串口去控制51单片机点亮一个LED? 求程序。。,第1张

编了一个小程序,供参考,没有环境调试,大概意思就这样,你可以参考自己试试。

#include<reg51.h>

#include<string.h>

#define uchar unsigned char

sbit LED=P1^0

uchar buf[16],num

uchar strOpen="Open"

uchar strClose="Close"

void uart() interrupt 4

{

if(RI)

{

RI=0

buf[num]=SBUF

num++

}

if(TI)TI=0

}

void initbuf()

{

uchar i

for(i=0i<16i++)buf[i]=0x00

}

main()

{

TMOD=0x20

SCON=0x50

TH1=TL1=0xfd

TR1=1

ES=1

EA=1

initbuf()

while(1)

{

switch(num)

{

case 0:break

case 1:break

case 2:break

case 3:break

case 4:

if(strcmp(strOpen,buf)==0)LED=0

initbuf()

num=0

break

case 5:

if(strcmp(strClose,buf)==0)LED=1

initbuf()

num=0

break

default:num=0break

}

}

}

串口发来2字节的数据(一般还要加上校验),按16进制显示用4个数码管,10进制用5个数码管。如果是10进制,先转换成5个0-9的数(16进制转换成4个0-15的数),再分别按照数码管驱动对照表从控制口发出0-9(0-15)对应的驱动码就可以了。

void Usart() interrupt 4

{ static k

receivedata[k]=SBUF

RI=0

SBUF=receivedata[k]

while(!TI)

TI=0

k++

if(SBUF==0x21) { flag=1 k=0}

}

不能与函数output() 共用一个变量 i;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11064621.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存