电脑通过单片机串口发送调光指令使单片机产生PWM信号对LED调光
利用单片机和电脑的串口助手来控制单片机开发板上面的8个LED
电脑发送不同的数值,即可点亮不同的LED
你可以根据这个程序的原理,来自己试着编写电脑控制PWM
如果有什么疑问可以随时向我提问,或私密我加好友,记得采纳哦!
/***************************************************************************/
//串口发送的数据格式单个数字,电脑端以字符形式发送
#include <REG52.h> //通用89C52头文件
char table[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},i,n;//LED编码
/***************************************************************************/
void main(void)//主函数
{
TMOD=0x20; //定时器1工作方式2,8位,,定时器0工作方式1,16位
PCON=0x00; //SMOD=0,不加倍
SCON=0x50; //串口工作方式1,允许接收
IE=0x92; //启用串口中断与定时器0中断,并开启总中断
TH1=0xfd; //定时器1设置初值,波特率9600bit/s,
TL1=0xff; //晶振频率 11.0592
TR1=1; //启动定时器T1
while(1)//主循环
{
P2=table[i];//输出状态
}
}
/***************************************************************************/
void ser() interrupt 4//串口接收,中断方式
{
n=SBUF; while(!RI); RI=0;//接收一个字符
switch(n)//根据接收的字符对 i 赋相应的数值值
{
case 0x31:i=1;break; case 0x32:i=2;break;
case 0x33:i=3;break; case 0x34:i=4;break;
case 0x35:i=5;break; case 0x36:i=6;break;
case 0x37:i=7;break; case 0x38:i=8;break;
case 0x39:i=9;break; default:i=0;
}//如果是0,或其他字符,则关闭所有LED
}
/***************************************************************************/