历史上的今天
今天是:2024年11月08日(星期五)
2019年11月08日 | 蓝牙定时开关APP软件(附51单片机参考程序)
2019-11-08 来源:51hei
APP发送字符“1”至“7”数字。比如第一组定时发送的是字符“1”。第二组定时发送字符“2”.....一共7组。可用串口助手测试,电脑与蓝牙模块通信连接,如图1.所示。

单片机源程序如下:
#include #include #define uchar unsigned char #define uint unsigned int uchar tmp; uint c=0; sbit led1=P1^0; //指示灯0 sbit led2=P1^1; //指示灯1 sbit led3=P1^2; //指示灯3 sbit led7=P1^7; //指示灯3 sbit P2_0 = P2^0; sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90}; void delay1(uint z)//1ms { uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--); } void display(uchar value) { uchar shu1,value1; value1=value-48; //bai=value1/16; shu1=value1%16; P0=table[shu1]; P2_0 = 0; delay1(1); P2_0 = 1; } void init(); //串口初始化 void send(unsigned char a); //单字节发送函数 void ctrl(); //接收处理函数 void main() { init(); while(1) { display(SBUF); if(RI==1) // 是否有数据到来 { RI = 0; ctrl(); } } } void init() //串口初始化 { ES=0; //关中断 SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1, //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变 TMOD = 0x20; // 定时器1工作于方式2,8位自动重载模式, 用于产生波特率 TH1=TL1=0xFD; // 波特率9600 (本次测试采用晶振为11.0592) PCON &= 0x7f; // 波特率不倍增 TR1 = 1; //定时器1开始工作,产生波特率 //发送标志位置0 TI=0; //接收标志位置0 RI=0; //EA=0; ES=1; } void send(unsigned char a) //单字节数据发送 { //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻 TI=0; SBUF=a; while(TI==0); TI=0; if(c%2) //发送指示灯标志,每接收一次,此灯亮灭交替 led7=1; else led7=0; c++; } void ctrl() //接收处理函数 { switch(tmp) { case '1': led1=1; //收到字符1,指示灯0灭 send(tmp); break; case '2': //收到字符2,指示灯1灭 led2=1; send(tmp); break; case '3': //收到字符3,指示灯0、1亮 led1=0; led2=0; send(tmp); break; case '4': //收到字符4,指示灯0、1灭 led1=1; led2=1; send(tmp); break;
史海拾趣
|
☆★☆★☆★【电子设计】资料收藏区(2012.03更新)!!!☆★☆★☆★ 作为新的版主,为了活跃此版,我会努力地!!!虽然没有机会再参加下届的全国大学生电子设计竞赛了,但是我希望给下一届的朋友们留下一点东西,希望你们能够取得好成绩!也衷心希望大家能够支持我哈! 在此谨把我在今年参加大赛时候收集的自认为一些比 ...… 查看全部问答> |
|
程序如下:process (clk)begin if rising_edge (clk) then S_1<=S_1 +1; O_1<=S_1; else null; end if;end process;其中,S_1是 ...… 查看全部问答> |
|
makefile文件有这样一句,我想事先看看APP_PRJ是什么内容,应该怎么做,多谢 APP_LIB = $(APP_PRJ)/lib… 查看全部问答> |
|
怎样才能不间断采样呢? 我现在的方法:ADC12采样AB相的电压和电流,ADC3采样C相电压和电流,用TIM1的CC2和CC3作为触发,DMA传输采样数据,半传输完成后计算一次,计算期间进行下一个采样,整传输完成后,重新给DMA采样数据个数。 问题是: ...… 查看全部问答> |




