找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2483|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

求助proteus串口通信,主要功能是藍(lán)牙控制led亮度,但是在proteus總是仿真不出來(lái),...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
主要功能是藍(lán)牙控制led亮度,但是在proteus總是仿真不出來(lái),串口通信沒(méi)有反應(yīng)
代碼和仿真圖如下
#include "reg51.h"
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
sbit PWM=P1^0;
unsigned char LD;//亮度位 0-100調(diào)節(jié)
uchar time=0;
bit flag;//變化標(biāo)志位
void initTimer(void)
{
TMOD=0x01;
TH0=(65536-10)/256;//賦初值定時(shí)
TL0=(65536-10)%256;//0.01ms
}

void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON = 0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
ET1=1;
ES=1 ;
REN = 1;
RI=0;
}

void uart(void) interrupt 4
{
if(RI)
{
ES=0; //接收完畢關(guān)閉一下,用再打開(kāi),避免中斷亂開(kāi)
RI=0;//令接收中斷標(biāo)志位為0(軟件清零)
UART_data=SBUF;
ES=1;

if(UART_data == 1){if(LD != 100){ flag=1;LD = LD+10;}}//串口接收到1,增加亮度
if(UART_data == 2){if(LD != 0){ flag=1;LD = LD-10; }} //串口接收到2,減少亮度
if(UART_data == 3){if(LD != 0){ flag=1;LD = 0; }}//串口接收到3,改變亮度為0 即關(guān)燈
if(UART_data == 4){if(LD != 100){ flag=1;LD = 50; }}//串口接收到4,改變亮度為50;即開(kāi)燈
}
}
void timer0(void) interrupt 1
{
TR0=0;//賦初值時(shí),關(guān)閉定時(shí)器
TH0=(65536-10)/256;//賦初值定時(shí)
TL0=(65536-10)%256;//0.01ms
TR0=1;//打開(kāi)定時(shí)器
time++;
}

void main(void)
{
LD = 0;//初始亮度
flag = 0;
//IP=0X10;
initTimer();
initUart();
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(time>=100)//PWM周期等于100*0.01ms
{
time=0;
}
if(time < LD)
{
PWM=1;
}
else
{
PWM=0;
}

}
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表