单片机源程序如下:
- /**********************************************************************************************
- 程序名: 蓝牙台灯
- 硬件支持: stc89c51 11.0596MHz
- 接口说明: P2.0
- 修改日志:
- 完成最基本的蓝牙调光以及开关控制功能
- **********************************************************************************************/
- #include "reg51.h"
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- unsigned char UART_data; //定义串口接收数据变量
- sbit PWM=P2^0;
- unsigned char LD;//亮度位 0-255调节
- uchar time;
- bit flag; //变化标志位
- void initTimer(void)
- {
- TMOD=0x1;
- TH0=(65536-10)/256;//赋初值定时
- TL0=(65536-10)%256;//0.01ms
- }
- void initUart(void)
- {
- TMOD|=0x20;
- SCON=0x50;
- TH1=0xfd;
- TL1=0xfd;
- TR1=1;
- ET1=1;
- }
- void uart(void) interrupt 4
- {
- if(RI)
- {
- ES=0; //接收完毕关闭一下,用再打开,避免中断乱开
- RI=0; //令接收中断标志位为0(软件清零)
- UART_data=SBUF;
- ES=1;
-
- if(UART_data == 1){if(LD != 255){ flag=1;LD = LD+51; }}//串口接收到1,增加亮度
- if(UART_data == 2){if(LD != 0){ flag=1;LD = LD-51; }} //串口接收到2,减少亮度
- if(UART_data == 3){if(LD != 0){ flag=1;LD = 0; }} //串口接收到3,改变亮度为0 即关灯
- if(UART_data == 4){if(LD != 255){ flag=1;LD = 255; }} //串口接收到4,改变亮度为255;即开灯
- }
- }
- void timer0(void) interrupt 1
- {
- TR0=0;//赋初值时,关闭定时器
- TH0=(65536-10)/256;//赋初值定时
- TL0=(65536-10)%256;//0.01ms
- TR0=1;//打开定时器
- time++;
- }
- void main(void)
- {
- LD = 153;//初始亮度
- flag = 0;
- IP=0X10;
- initTimer();
- initUart();
- TR0=1;
- ET0=1;
- EA=1;
- while(1)
- {
- if(time>=255) //PWM周期等于255*0.1ms
- {
- time=0;
- }
- if(time < LD)
- {
- PWM=0;
- }
- else
- {
- PWM=1;
- }
-
- }
- }
复制代码
所有资料51hei提供下载:
卡通台灯制作图文资料.pdf
(638.15 KB, 下载次数: 163)
蓝牙台灯五级调光.rar
(1015 Bytes, 下载次数: 170)
|