久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7230|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

藍(lán)牙串口控制電路及程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于51單片機(jī)的藍(lán)牙串口控制電路原理圖

全部資料下載:
藍(lán)牙串口控制電路.zip (15.8 MB, 下載次數(shù): 40)

三按鍵模式控制程序:
  1. #include<reg51.h>                                                   
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. int Time[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};          //共陰極數(shù)碼管0~9段碼
  5. int hour_shi=2,hour_ge=0,min_shi=1,min_ge=6;
  6. int NLh_shi=0,NLh_ge=0,NLm_shi=0,NLm_ge=0;
  7. int star_flag=1;
  8. int kk=4600;          //一秒鐘是75,一分鐘是4500(用一個LED燈來做狀態(tài)指示),但是還是有點(diǎn)誤差

  9. char sbuf_in;

  10. sbit jdq=P1^0;
  11. sbit jdq1=P1^1;
  12. sbit jdq2=P1^2;
  13. sbit jdq3=P1^3;
  14. sbit fmq=P1^4;

  15. sbit button4=P2^7;
  16. sbit button3=P2^6;
  17. sbit button2=P2^5;
  18. sbit button1=P2^4;

  19. void delay(uchar i)
  20. {
  21.         uchar j;
  22.         while(i--)
  23.         for(j=0;j<120;j++);
  24. }


  25. void BT_Uart_inti()          //單片機(jī)串口初始化
  26. {
  27.         //SCON=0X50;           //串口工作方式1,允許串口接收
  28.         SM0=0;
  29.         SM1=1;
  30.         REN=1;
  31.         //RI=1;  //接收標(biāo)志位,0:正在接收 1:接收完畢 (如果RI=1就一直執(zhí)行串口中斷)

  32.         TMOD=0X20;           //定時器T1工作方式2
  33.         TH1=0XFD;           //9600bit/s下的定時器初值
  34.         TL1=0XFD;
  35.         TR1=1;                  //啟動定時器T1
  36.         EA=1;                  //開總中斷
  37.         ES=1;                  //開串行口中斷
  38. }

  39. void smg_init()                 //數(shù)碼管初始化
  40. {
  41.         uint n;
  42.         for(n=0;n<4;n++)
  43.         {
  44.                 P2=(0XFE<<n);
  45.                 P0=0X49;
  46.                 delay(500);
  47.                 P0=0X3F;
  48.                 delay(500);
  49.         }
  50.         fmq=0;                 //關(guān)閉蜂鳴器
  51. }

  52. /*void Send_char(uchar dat)          //發(fā)送端
  53. {
  54.         SBUF=dat;                  //將字符送入發(fā)送寄存器
  55.         while(!TI);                  //T1為發(fā)送狀態(tài)標(biāo)志位,0:發(fā)送中 1:發(fā)送結(jié)束
  56.         TI=0;                         //手動清零標(biāo)志位
  57. }*/


  58. void Smg_display()
  59. {
  60.         P2=0XFE;
  61.         P0=Time[hour_shi];
  62.         delay(3);
  63.         P2=0XFD;
  64.         P0=Time[hour_ge];
  65.         delay(3); //若延時大于此數(shù)值,則數(shù)碼管閃爍明顯
  66.         P2=0XFB;
  67.         P0=Time[min_shi];
  68.         delay(3);
  69.         P2=0XF7;
  70.         P0=Time[min_ge];
  71.         delay(3); //若延時大于此數(shù)值,則數(shù)碼管閃爍明顯
  72. }

  73. void Time_off()
  74. {
  75.         uint k;
  76.         for(k=0;k<20;k++)          //不知為何只循環(huán)一半次數(shù)
  77.         {
  78.                 Smg_display();  //如果不調(diào)用顯示函數(shù)則無法正常顯示數(shù)值
  79.                 jdq=~jdq;
  80.                 jdq1=~jdq1;
  81.                 jdq2=~jdq2;
  82.                 jdq3=~jdq3;
  83.                 fmq=~fmq;
  84.                 delay(33);
  85.                 Smg_display();
  86.                 delay(33);
  87.         }
  88. }

  89. void Smg_display2()
  90. {
  91.         P2=0XFE;
  92.         P0=Time[NLh_shi];
  93.         delay(3);
  94.         P2=0XFD;
  95.         P0=Time[NLh_ge];
  96.         delay(3); //若延時大于此數(shù)值,則數(shù)碼管閃爍明顯
  97.         P2=0XFB;
  98.         P0=Time[NLm_shi];
  99.         delay(3);
  100.         P2=0XF7;
  101.         P0=Time[NLm_ge];
  102.         delay(3); //若延時大于此數(shù)值,則數(shù)碼管閃爍明顯
  103. }



  104. void Button4()
  105. {
  106.         if(button1==0)
  107.         {
  108.                 delay(15);
  109.                 if(button1==0)
  110.                 {
  111.                         star_flag++;
  112.                         if(star_flag>3)
  113.                         star_flag=1;
  114.                 }
  115.         }
  116.         if(star_flag==1)          //啟動時鐘
  117.         {
  118.                 jdq=0;jdq1=1;jdq2=1;jdq3=0;                        //用LED來做狀態(tài)顯示,靠邊的兩盞燈常亮表示正在工作
  119.                 Smg_display();  //調(diào)用數(shù)碼管顯示函數(shù)
  120.                 kk--;
  121.                 if(kk<0)
  122.                 {
  123.                         kk=4600;
  124.                         min_ge++;
  125.                         if(min_ge>9)
  126.                         {
  127.                                 min_ge=0;
  128.                                 min_shi++;
  129.                                 if(min_shi>5)
  130.                                 {
  131.                                         min_shi=0;
  132.                                         hour_ge++;
  133.                                         if(hour_shi==2&&hour_ge>3)
  134.                                         {
  135.                                                 hour_shi=0; hour_ge=0;
  136.                                                 min_shi=0; min_ge=0;
  137.                                         }
  138.                                         if(hour_ge>9)
  139.                                         {
  140.                                                 hour_ge=0;
  141.                                                 hour_shi++;
  142.                                         }
  143.                                 }
  144.                         }
  145.                 }
  146.         }

  147.         if(star_flag==2)                //暫停時鐘(用來校準(zhǔn)時間)
  148.         {
  149.                 jdq=0;jdq1=0;jdq2=0;jdq3=0;          //四盞燈全亮表示進(jìn)入暫停狀態(tài)
  150.                 Smg_display();  //調(diào)用數(shù)碼管顯示函數(shù)
  151.                 if(button2==0)           //時位自增
  152.                 {
  153.                         delay(88);
  154.                         if(button2==0)
  155.                         {
  156.                                 hour_ge++;
  157.                                 if(hour_shi==2&&hour_ge>3)
  158.                                 {
  159.                                         hour_shi=0;
  160.                                         hour_ge=0;
  161.                                 }
  162.                                 if(hour_ge>9)
  163.                                 {
  164.                                         hour_ge=0;
  165.                                         hour_shi++;
  166.                                 }
  167.                         }
  168.                 }

  169.                 if(button3==0)                //分位自減
  170.                 {
  171.                         delay(88);
  172.                         if(button3==0)
  173.                         {
  174.                                 min_ge--;
  175.                                 if(min_ge<0)
  176.                                 {
  177.                                         min_ge=9;
  178.                                         min_shi--;
  179.                                         if(min_shi<0)
  180.                                                 min_shi=5;
  181.                                 }
  182.                         }
  183.                 }
  184.         }

  185.         if(button4==0)
  186.         {
  187.                 delay(88);
  188.                 if(button4==0)
  189.                         star_flag=3;
  190.         }

  191.         if(star_flag==3)          //設(shè)置鬧鈴時間
  192.         {
  193.                 jdq=1,jdq1=1;jdq2=1;jdq3=1;          //四盞燈全滅表示進(jìn)入設(shè)置鬧鈴狀態(tài)
  194.                 Smg_display2();
  195.                 if(button2==0)          //時位自增
  196.                         {
  197.                                 delay(88);
  198.                                 if(button2==0)
  199.                                 {
  200.                                         NLh_ge++;
  201.                                         if(NLh_shi==2&&NLh_ge>3)
  202.                                         {
  203.                                                 NLh_shi=0;
  204.                                                 NLh_ge=0;
  205.                                         }
  206.                                         if(NLh_ge>9)
  207.                                         {        
  208.                                                 NLh_ge=0;
  209.                                                 NLh_shi++;
  210.                                         }
  211.                                 }
  212.                         }
  213.                 }

  214.                 if(button3==0)                //分位自減
  215.                 {
  216.                         delay(88);
  217.                         if(button3==0)
  218.                         {
  219.                                 NLm_ge--;
  220.                                 if(NLm_ge<0)
  221.                                 {
  222.                                         NLm_ge=9;
  223.                                         NLm_shi--;
  224.                                         if(NLm_shi<0)
  225.                                                 NLm_shi=5;
  226.                                 }
  227.                         }
  228.                 }
  229. }

  230. /*void Add_Sub(void)
  231. {
  232.         smg_ge--;
  233.         if(smg_ge<0)
  234.         {smg_shi--;smg_ge=9;}
  235.         if(smg_shi<0)
  236.         {smg_shi=9;smg_ge=9;}
  237. }*/

  238. void main()
  239. {
  240.         BT_Uart_inti();
  241.         Time_off();
  242.         smg_init();
  243.         while(1)
  244.         {
  245.                 Button4();
  246.                 if(hour_shi==NLh_shi&&hour_ge==NLh_ge&&min_shi==NLm_shi&&min_ge==NLm_ge)
  247.                                 Time_off();


  248.         }
  249. }

  250. void BT_serial_smg()        interrupt 4    //中斷編號4為串行口中斷
  251. {
  252.         //Smg_display();
  253.         if(RI)   //接收標(biāo)志位,0:正在接收 1:接收完畢 (如果RI=1就一直執(zhí)行中斷)
  254.         {//Smg_display();k--;if(k==0){Add_Sub();k=66;}
  255.                 RI=0;           //同樣需要手動清零
  256.                 sbuf_in=SBUF;         //將接收緩沖器接收的字符送入變量中
  257.         }

  258. }
復(fù)制代碼


評分

參與人數(shù) 2黑幣 +55 收起 理由
hou1232 + 5 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:140926 發(fā)表于 2016-10-1 15:56 | 只看該作者
感謝樓主的分享。。。。。。。。。!
回復(fù)

使用道具 舉報(bào)

板凳
ID:166036 發(fā)表于 2017-2-23 12:02 | 只看該作者
51單片機(jī)的藍(lán)牙串口控制電路原理圖
回復(fù)

使用道具 舉報(bào)

地板
ID:188933 發(fā)表于 2017-4-14 18:03 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

5#
ID:147735 發(fā)表于 2017-5-10 15:35 | 只看該作者
看看,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频一区二区三区 | www.干| 欧美成人手机视频 | 在线观看视频91 | 欧日韩不卡在线视频 | 国产色视频网站 | 国产欧美日韩在线一区 | 日韩精品在线观看网站 | 久久99深爱久久99精品 | 中文字幕高清 | 日韩视频观看 | 国产精品中文字幕一区二区三区 | 91精品国产乱码久久久久久久久 | 蜜桃毛片 | 国产分类视频 | 成人在线精品 | 一区二区高清在线观看 | 国产xxxx岁13xxxxhd | 国产 日韩 欧美 中文 在线播放 | 国产在线观看一区二区 | 久久不射电影网 | 国产99久久 | 黄色网址在线免费观看 | 国产精品视频入口 | 欧洲视频一区 | 午夜免费| 国产乱码精品一区二区三区忘忧草 | 亚洲天堂精品一区 | 免费观看的av毛片的网站 | 国产精品久久久久久久久久久久冷 | 麻豆久久精品 | 国产综合在线视频 | 成人午夜免费视频 | 国产美女特级嫩嫩嫩bbb片 | 国产精品中文字幕在线 | 亚洲欧美中文日韩在线v日本 | 97人人超碰| 国产性网 | 精精国产视频 | 国产精品免费观看 | 中文字幕av高清 |