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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9022|回復: 7
打印 上一主題 下一主題
收起左側

單片機推挽輸出怎么設置?

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:377872 發(fā)表于 2018-8-1 14:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    我用ld3320語音模塊控制繼電器,從而控制4路負載,但是無法控制,有人叫我在語音模塊端口設置為推挽輸出才夠電流推動,我想問怎么設置?我是新手,望解答。謝謝
  1. #include "config.h"
  2. /************************************************************************************/
  3. //        nAsrStatus 用來在main主程序中表示程序運行的狀態(tài),不是LD3320芯片內部的狀態(tài)寄存器
  4. //        LD_ASR_NONE:                表示沒有在作ASR識別
  5. //        LD_ASR_RUNING:                表示LD3320正在作ASR識別中
  6. //        LD_ASR_FOUNDOK:                表示一次識別流程結束后,有一個識別結果
  7. //        LD_ASR_FOUNDZERO:        表示一次識別流程結束后,沒有識別結果
  8. //        LD_ASR_ERROR:                表示一次識別流程中LD3320芯片內部出現(xiàn)不正確的狀態(tài)
  9. /***********************************************************************************/
  10. uint8 idata nAsrStatus=0;       
  11. void MCU_init();
  12. void ProcessInt0(); //識別處理函數(shù)
  13. void  delay(unsigned long uldata);
  14. void         User_handle(uint8 dat);//用戶執(zhí)行操作函數(shù)
  15. void Led_test(void);//單片機工作指示
  16. void Delay200ms();
  17. uint8_t G0_flag=DISABLE;//運行標志,ENABLE:運行。DISABLE:禁止運行
  18. sbit LED=P4^2;//信號指示燈
  19. //應用IO口定義 (模塊標注 P2)
  20. sbit PA1=P4^1; //對應板上標號 P4.1
  21. sbit PA2=P2^7;  //對應板上標號 P2.7
  22. sbit PA3=P2^6;  //.....
  23. sbit PA4=P2^5;  //.....
  24. sbit PA5=P2^4;  //.....
  25. sbit PA6=P2^3;  //.....
  26. sbit PA7=P3^3;  //對應板上標號 IT1
  27. sbit PA8=P3^4;  //對應板上標號 T0
  28. sbit LED2=P1^0;
  29. sbit FAN=P1^1;
  30. sbit CURTAIN=P1^2;

  31. /***********************************************************
  32. * 名    稱: void  main(void)
  33. * 功    能: 主函數(shù)        程序入口
  34. * 入口參數(shù):  
  35. * 出口參數(shù):
  36. * 說    明:                                          
  37. * 調用方法:
  38. **********************************************************/
  39. void  main(void)
  40. {
  41.         uint8 idata nAsrRes;
  42.         uint8 i=0;
  43.         Led_test();
  44.         MCU_init();
  45.         LD_Reset();
  46.         UartIni(); /*串口初始化*/
  47.         nAsrStatus = LD_ASR_NONE;                //        初始狀態(tài):沒有在作ASR
  48.        
  49.         #ifdef TEST       
  50.     PrintCom("一級口令:小杰\r\n"); /*text.....*/
  51.         PrintCom("二級口令:1、代碼測試\r\n"); /*text.....*/
  52.         PrintCom("        2、開發(fā)板驗證\r\n"); /*text.....*/
  53.         PrintCom("        3、開燈\r\n"); /*text.....*/
  54.         PrintCom("        4、關燈\r\n"); /*text.....*/
  55.         PrintCom("  5、開風扇\r\n"); /*text.....*/
  56.         PrintCom("        6、關風扇\r\n"); /*text.....*/
  57.         PrintCom("        7、開窗簾\r\n"); /*text.....*/
  58.         PrintCom("        8、關窗簾\r\n"); /*text.....*/
  59.         #endif

  60.         while(1)
  61.         {
  62.                 switch(nAsrStatus)
  63.                 {
  64.                         case LD_ASR_RUNING:
  65.                         case LD_ASR_ERROR:               
  66.                                 break;
  67.                         case LD_ASR_NONE:
  68.                         {
  69.                                 nAsrStatus=LD_ASR_RUNING;
  70.                                 if (RunASR()==0)        /*        啟動一次ASR識別流程:ASR初始化,ASR添加關鍵詞語,啟動ASR運算*/
  71.                                 {
  72.                                         nAsrStatus = LD_ASR_ERROR;
  73.                                 }
  74.                                 break;
  75.                         }
  76.                         case LD_ASR_FOUNDOK: /*        一次ASR識別流程結束,去取ASR識別結果*/
  77.                         {                               
  78.                                 nAsrRes = LD_GetResult();                /*獲取結果*/
  79.                                 User_handle(nAsrRes);//用戶執(zhí)行函數(shù)
  80.                                 nAsrStatus = LD_ASR_NONE;
  81.                                 break;
  82.                         }
  83.                         case LD_ASR_FOUNDZERO:
  84.                         default:
  85.                         {
  86.                                 nAsrStatus = LD_ASR_NONE;
  87.                                 break;
  88.                         }
  89.                 }// switch                                
  90.         }// while

  91. }
  92. /***********************************************************
  93. * 名    稱:          LED燈測試
  94. * 功    能: 單片機是否工作指示
  95. * 入口參數(shù): 無
  96. * 出口參數(shù):無
  97. * 說    明:                                          
  98. **********************************************************/
  99. void Led_test(void)
  100. {
  101.         LED=~ LED;
  102.         Delay200ms();
  103.         LED=~ LED;
  104.         Delay200ms();
  105.         LED=~ LED;
  106.         Delay200ms();
  107.         LED=~ LED;
  108.         Delay200ms();
  109.         LED=~ LED;
  110.         Delay200ms();
  111.         LED=~ LED;
  112. }
  113. /***********************************************************
  114. * 名    稱: void MCU_init()
  115. * 功    能: 單片機初始化
  116. * 入口參數(shù):  
  117. * 出口參數(shù):
  118. * 說    明:                                          
  119. * 調用方法:
  120. **********************************************************/
  121. void MCU_init()
  122. {
  123.         P0 = 0xff;
  124.         P1 = 0xff;
  125.         P2 = 0xff;
  126.         P3 = 0xff;
  127.         P4 = 0xff;
  128.         LD_MODE = 0;                //        設置MD管腳為低,并行模式讀寫
  129.         IE0=1;
  130.         EX0=1;
  131.         EA=1;
  132. }
  133. /***********************************************************
  134. * 名    稱:        延時函數(shù)
  135. * 功    能:
  136. * 入口參數(shù):  
  137. * 出口參數(shù):
  138. * 說    明:                                          
  139. * 調用方法:
  140. **********************************************************/
  141. void Delay200us()                //@22.1184MHz
  142. {
  143.         unsigned char i, j;
  144.         _nop_();
  145.         _nop_();
  146.         i = 5;
  147.         j = 73;
  148.         do
  149.         {
  150.                 while (--j);
  151.         } while (--i);
  152. }

  153. void  delay(unsigned long uldata)
  154. {
  155.         unsigned int j  =  0;
  156.         unsigned int g  =  0;
  157.         while(uldata--)
  158.         Delay200us();
  159. }

  160. void Delay200ms()                //@22.1184MHz
  161. {
  162.         unsigned char i, j, k;

  163.         i = 17;
  164.         j = 208;
  165.         k = 27;
  166.         do
  167.         {
  168.                 do
  169.                 {
  170.                         while (--k);
  171.                 } while (--j);
  172.         } while (--i);
  173. }

  174. /***********************************************************
  175. * 名    稱: 中斷處理函數(shù)
  176. * 功    能:
  177. * 入口參數(shù):  
  178. * 出口參數(shù):
  179. * 說    明:                                          
  180. * 調用方法:
  181. **********************************************************/
  182. void ExtInt0Handler(void) interrupt 0  
  183. {        
  184.         ProcessInt0();                                /*        LD3320 送出中斷信號,包括ASR和播放MP3的中斷,需要在中斷處理函數(shù)中分別處理*/
  185. }
  186. /***********************************************************
  187. * 名    稱:用戶執(zhí)行函數(shù)
  188. * 功    能:識別成功后,執(zhí)行動作可在此進行修改
  189. * 入口參數(shù): 無
  190. * 出口參數(shù):無
  191. * 說    明: 通過控制PAx端口的高低電平,從而控制外部繼電器的通斷                                         
  192. **********************************************************/
  193. void         User_handle(uint8 dat)
  194. {
  195.      //UARTSendByte(dat);//串口識別碼(十六進制)
  196.                  if(0==dat)
  197.                  {
  198.                           G0_flag=ENABLE;
  199.                                 LED=0;
  200.                  }
  201.                  else if(ENABLE==G0_flag)
  202.                  {       
  203.                                  G0_flag=DISABLE;
  204.                                 LED=1;
  205.                          switch(dat)                   /*對結果執(zhí)行相關操作,客戶修改*/
  206.                           {
  207.                                   case CODE_DMCS:                        /*命令“測試”*/
  208.                                                 PrintCom("“代碼測試”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  209.                                                 PA1=0;//讓PA1端口為低電平
  210.                                                                                                          break;
  211.                                         case CODE_KFBYZ:         /*命令“全開”*/
  212.                                                 PrintCom("“開發(fā)板驗證”命令識別成功\r\n");//串口輸出提示信息(可刪除)
  213.                                                 PA2=0;//讓PA2端口為低電平
  214.                                                                                                          break;
  215.                                         case CODE_KD:                /*命令“復位”*/                               
  216.                                                 PrintCom("“開燈”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  217.                                                 PA3=0;//讓PA3端口為低電平
  218.                                                 LED2=0;//燈開
  219.                                                                                                         break;
  220.                                         case CODE_GD:                /*命令“復位”*/                               
  221.                                                 PrintCom("“關燈”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  222.                                                 PA3=1;//讓PA3端口為高電平
  223.                                                 LED2=1;//燈關
  224.                                                                                                         break;
  225.                                         case CODE_KFS:                /*命令“復位”*/                               
  226.                                                 PrintCom("“開風扇”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  227.                                                 PA4=0;//讓PA4端口為低電平
  228.                                                 FAN=0;
  229.                                                                                                         break;
  230.                                         case CODE_GFS:                /*命令“復位”*/                               
  231.                                                 PrintCom("“關風扇”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  232.                                                 PA5=1;//讓PA5端口為低電平
  233.                                                 FAN=1;
  234.                                                                                                         break;
  235.                                         case CODE_KCL:                /*命令“復位”*/                               
  236.                                                 PrintCom("“開窗簾”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  237.                                                 PA6=0;       
  238.                                                 CURTAIN=0;
  239.                                                                                                         break;       
  240.                                         case CODE_GCL:                /*命令“復位”*/                               
  241.                                                 PrintCom("“關窗簾”命令識別成功\r\n"); //串口輸出提示信息(可刪除)
  242.                                                 PA7=0;
  243.                                                 CURTAIN=1 ;
  244.                                                                                                         break;                                                                                                                                                                                                                                                                       
  245.                                                         default:PrintCom("請重新識別發(fā)口令\r\n"); //串口輸出提示信息(可刪除)
  246.                                                                                                         break;
  247.                                 }       
  248.                         }       
  249.                         else        
  250.                         {
  251.                                 PrintCom("請說出一級口令\r\n"); //串口輸出提示信息(可刪除)       
  252.                         }
  253. }       
復制代碼


main.docx

18.82 KB, 下載次數(shù): 4

ld3320控制繼電器

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

使用道具 舉報

沙發(fā)
ID:308437 發(fā)表于 2018-8-2 08:38 | 只看該作者
要增強型的51才可以支持:
初始化寫上:
P2M0=0xff;
就把所有的P2口設置為強推挽輸出了。電流可以達到幾百毫安(不強推,只有二三十毫安,最大好像是五十多,具體要看手冊)。你試一下,還有頭文件記得改
回復

使用道具 舉報

板凳
ID:381956 發(fā)表于 2018-8-2 09:05 | 只看該作者
可通過設置PXM1:PXM0的值: PXM1:PXM0 0 0 準雙向口(傳統(tǒng)IO) 0 1 推挽輸出(強上拉 ,電流可達20mA,盡量少用) 1 0 僅為輸入(高阻)可通過設置PXM1:PXM0的值: PXM1:PXM0 0 0 準雙向口(傳統(tǒng)IO) 0 1 推挽輸出(強上拉 ,電流可達20mA,盡量少用) 1 0 僅為輸入(高阻)

評分

參與人數(shù) 1黑幣 +2 收起 理由
hyg1997 + 2 很給力!

查看全部評分

回復

使用道具 舉報

地板
ID:377872 發(fā)表于 2018-8-2 09:25 | 只看該作者
yousunny 發(fā)表于 2018-8-2 08:38
要增強型的51才可以支持:
初始化寫上:
P2M0=0xff;

就是說如果我要設置p1口的話就加上p1M0=0xff?我的單片機是增強型的,那個頭文件要怎么改?
回復

使用道具 舉報

5#
ID:221865 發(fā)表于 2018-8-2 19:26 | 只看該作者
hyg1997 發(fā)表于 2018-8-2 09:25
就是說如果我要設置p1口的話就加上p1M0=0xff?我的單片機是增強型的,那個頭文件要怎么改?

不用改頭文件,直接給賦值就行。
回復

使用道具 舉報

6#
ID:584864 發(fā)表于 2020-4-27 11:13 | 只看該作者
yousunny 發(fā)表于 2018-8-2 08:38
要增強型的51才可以支持:
初始化寫上:
P2M0=0xff;

如果不是增強的單片機,幾百毫安受不了,單片機可能燒毀。所以盡量單個引腳設置推免。
比如STC12C5A60S2單片機片內最大不得超過120mA。
假如P2.4引腳想強推免可以輸出20mA驅動蜂鳴器。代碼是
P2M0=0x10;
P2M1=0x00;
強推免配置:這里相應的P2M0中的2,就是指整個P2引腳系列,包括P2.0,P2.1等。
然后后面十六進制0X的數(shù)0000 0000 從左到右分別是P2.7到P2.0引腳
然后只需將相應的PXM0引腳設置為1,相應的PXM1引腳設置為0即是強推免模式。
比如上面的P2.4引腳強推免代碼。
回復

使用道具 舉報

7#
ID:311846 發(fā)表于 2020-4-27 16:04 | 只看該作者
單片機驅動不了就加上拉電阻,妥妥的讓你驅動
回復

使用道具 舉報

8#
ID:230500 發(fā)表于 2022-4-1 22:15 | 只看該作者
2319964969 發(fā)表于 2020-4-27 11:13
如果不是增強的單片機,幾百毫安受不了,單片機可能燒毀。所以盡量單個引腳設置推免。
比如STC12C5A60S2 ...

說得很詳細,今天剛好用到,剛開始也不知道怎么設置, 現(xiàn)在會了
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久免费观看一级毛片 | 精品欧美久久 | 成人在线视频免费观看 | 国产精品日韩一区二区 | 特黄级国产片 | 免费观看毛片 | 久久久久国产一区二区三区 | 日韩精品在线观看一区二区 | 欧美日韩久久精品 | 九九热免费看 | 免费在线观看av网站 | 在线免费av观看 | 天天干天天爱天天操 | 成在线人视频免费视频 | 91久色 | 久久精品性视频 | 小川阿佐美pgd-606在线 | 欧美一级片中文字幕 | 视频一区二区在线观看 | 成人午夜激情 | 亚洲人在线 | 欧美精品一区二区三区在线 | 97国产一区二区 | 亚洲人成人一区二区在线观看 | 欧美三级电影在线播放 | 日韩久久久久 | 激情五月综合网 | 精品久久久久久久久久久久 | 伊人伊人伊人 | 91电影| 久久久性色精品国产免费观看 | 天天操天天摸天天爽 | 日韩一区二区福利视频 | 欧美jizzhd精品欧美巨大免费 | 国产精品久久久久一区二区三区 | 免费在线观看一区二区 | 亚洲国产精品激情在线观看 | 国产成人久久 | 91免费电影| 日本综合在线观看 | 欧美成人手机视频 |