|
單片機(jī)源程序如下:
- /**********************************************************************************************
- 程序名: 藍(lán)牙臺(tái)燈
- 硬件支持: stc89c51 11.0596MHz
- 接口說(shuō)明: P2.0
- 修改日志:
- 完成最基本的藍(lán)牙調(diào)光以及開(kāi)關(guān)控制功能
- **********************************************************************************************/
- #include "reg51.h"
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
- sbit PWM=P2^0;
- unsigned char LD;//亮度位 0-255調(diào)節(jié)
- uchar time;
- bit flag; //變化標(biāo)志位
- void initTimer(void)
- {
- TMOD=0x1;
- TH0=(65536-10)/256;//賦初值定時(shí)
- 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; //接收完畢關(guān)閉一下,用再打開(kāi),避免中斷亂開(kāi)
- RI=0; //令接收中斷標(biāo)志位為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 即關(guān)燈
- if(UART_data == 4){if(LD != 255){ flag=1;LD = 255; }} //串口接收到4,改變亮度為255;即開(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 = 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;
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
卡通臺(tái)燈制作圖文資料.pdf
(638.15 KB, 下載次數(shù): 170)
|
評(píng)分
-
查看全部評(píng)分
|