|
一、實(shí)驗(yàn)內(nèi)容
手機(jī)APP紅,綠,藍(lán)顯示。
二、實(shí)驗(yàn)器材
STC15W408AS芯片
三、實(shí)驗(yàn)環(huán)境
Keil4
四、實(shí)驗(yàn)流程
實(shí)驗(yàn)要求使用手機(jī)APP控制三路PWM從而控制全彩LED紅黃藍(lán)的輸出顯示,那我們使TXD, RXD分別連接串口轉(zhuǎn)TTL通過(guò)OTG接口轉(zhuǎn)換連接到手機(jī)上,并選擇P20, P21, P22三個(gè)I/O口作為PWM輸出引腳分別接到共陽(yáng)多彩LED燈的R, G, B引腳,完成電路連接。
五、實(shí)驗(yàn)電路
六、實(shí)驗(yàn)程序
#include"2.h"
#include"intrins.h"
#define FOSC 24000000L
#define BAUD 9600
#define NONE_PARITY 0
#define PARITYBIT NONE_PARITY
#define u8 BYTE
#define u16 WORD
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long u32;
#define CCP_S0 0x10
#define CCP_S1 0x20
BYTE a;
BYTE BLINGBLING[5];
BYTE i=0;
BYTE JIANYANWEI=0;
bit busy;
void SendData(BYTE dat);
void SendString(char *s);
void main(void)
{
SCON = 0x50;
T2L = (65536 - (FOSC/4/BAUD));
T2H = (65536 - (FOSC/4/BAUD))>>8;
AUXR = 0x14;
AUXR |= 0x01;
ES = 1;
EA=1;
SendData(0xff);
ACC=AUXR1;
ACC&=~(CCP_S0|CCP_S1);
AUXR1=ACC;
CCON=0;
CL=0;
CH=0;
CMOD=0x02;
CR=1;
while(1)
{
if(JIANYANWEI==1)
{
SendData(0x01);
PCA_PWM0=0x00;
CCAP0H=CCAP0L=BLINGBLING[1];
CCAPM0=0x42;
PCA_PWM1=0x00;
CCAP1H=CCAP1L=BLINGBLING[2];
CCAPM1=0x42;
PCA_PWM2=0x00;
CCAP2H=CCAP2L=BLINGBLING[3];
CCAPM2=0x42;
JIANYANWEI=0;
}
}
}
void Uart() interrupt 4 using 1
{
if (RI)
{
RI = 0;
a=SBUF;
BLINGBLING=SBUF;
i++;
if (i>=5)
{
JIANYANWEI=1;
i=0;
}
P22 = RB8;
}
if (TI)
{
TI = 0;
busy = 0;
}
}
void SendData(BYTE dat)
{
while (busy);
ACC = dat;
if (P)
{
#if (PARITYBIT == 1)
TB8 = 0;
#elif (PARITYBIT == 2)
TB8 = 1;
#endif
}
else
{
#if (PARITYBIT == 1)
TB8 = 1;
#elif (PARITYBIT == 2)
TB8 = 0;
#endif
}
busy = 1;
SBUF = ACC;
}
|
|