找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 14944|回復(fù): 10
收起左側(cè)

51單片機(jī)PWM調(diào)試LED呼吸燈程序-經(jīng)典例程

  [復(fù)制鏈接]
ID:233281 發(fā)表于 2017-9-16 16:04 | 顯示全部樓層 |閱讀模式
51單片機(jī)利用PWM調(diào)試LED顯示經(jīng)典例程
PWM控制LED亮度.jpg
單片機(jī)源程序如下:
  1. /*********************************************************************************
  2. * 【編寫(xiě)時(shí)間】: 12月2日
  3. * 【作    者】: 清翔電子:03
  4. * 【版    本】: 1.0
  5. * 【實(shí)驗(yàn)平臺(tái)】: QX-MCS51 單片機(jī)開(kāi)發(fā)板 & QX-A51智能小車
  6. * 【外部晶振】: 11.0592mhz       
  7. * 【主控芯片】: STC89C52
  8. * 【編譯環(huán)境】: Keil μVisio4
  9. * ********************************【接線說(shuō)明】********************************
  10.              以下"A_"表示智能小車底板~~~"B_"表示開(kāi)發(fā)板     
  11. *開(kāi)發(fā)板供電線  :A_J5-VCC~~~B_VCC或5V0    A_J6-GND~~~B_GND (一共使用2根杜邦線)
  12. *電機(jī)控制線    :A_J10-P1.2至P1.7 對(duì)應(yīng)接到B_P1.2至P1.7 (一共使用6根杜邦線)
  13. *避障尋跡反饋線:A_J11-P3.2至P3.5 對(duì)應(yīng)接到B_P3.2至P3.5 (一共使用4根杜邦線)
  14. ******************************************************************************
  15. * 【程序功能】:QX-A51智能小車紅外避障(跟隨障礙物)                                                                                   
  16. * 【使用說(shuō)明】:接線無(wú)誤后,燒寫(xiě)程序打開(kāi)電源開(kāi)、按下S2按鍵后蜂鳴器發(fā)出提示音1秒后啟動(dòng)小車
  17. * 【注意事項(xiàng)】:避免小車撞向障礙物或小車輪子堵轉(zhuǎn),小車電壓不能低于6V
  18.                                 1、不能在自然光強(qiáng)烈的條件下進(jìn)行試驗(yàn)
  19.                                 2、進(jìn)行試驗(yàn)前必須調(diào)節(jié)好避障探頭
  20.                                 3、必須先搭建好實(shí)驗(yàn)環(huán)境(參考相關(guān)視頻教程)
  21.                                 4、此程序只做參考,實(shí)際運(yùn)行效果需根據(jù)不同實(shí)驗(yàn)場(chǎng)地進(jìn)行不同調(diào)試
  22. **********************************************************************************/
  23. #include <reg52.h> //51頭文件
  24. #include <..\CONFIG\QXA51.h>//QX-A51智能小車配置文件
  25. unsigned char pwm_left_val = 160;//左電機(jī)占空比值 取值范圍0-170,0最快
  26. unsigned char pwm_right_val = 160;//右電機(jī)占空比值取值范圍0-170 ,0最快
  27. unsigned char pwm_t;//周期

  28. void delay(unsigned int z)//毫秒級(jí)延時(shí)
  29. {
  30.         unsigned int x,y;
  31.         for(x = z; x > 0; x--)
  32.                 for(y = 114; y > 0 ; y--);
  33. }       
  34. /*小車前進(jìn)*/
  35. void forward()
  36. {
  37.         left_motor_go; //左電機(jī)前進(jìn)
  38.         right_motor_go; //右電機(jī)前進(jìn)
  39. }
  40. /*小車左轉(zhuǎn)*/
  41. void left_run()
  42. {
  43.         left_motor_stops; //左電機(jī)停止
  44.         right_motor_go; //右電機(jī)前進(jìn)       
  45. }
  46. /*小車右轉(zhuǎn)*/
  47. void right_run()
  48. {
  49.         right_motor_stops;//右電機(jī)停止
  50.         left_motor_go;    //左電機(jī)前進(jìn)
  51. }

  52. //定時(shí)器0中斷
  53. void timer0() interrupt 1
  54. {
  55.         pwm_t++;//周期計(jì)時(shí)加
  56.         if(pwm_t == 255)
  57.                 pwm_t = EN1 = EN2 = 0;
  58.         if(pwm_left_val == pwm_t)//左電機(jī)占空比       
  59.                 EN1 = 1;               
  60.         if(pwm_right_val == pwm_t)//右電機(jī)占空比
  61.                 EN2 = 1;                         
  62. }
  63. void main()
  64. {
  65.         for(;;)        //死循環(huán)
  66.         {
  67.                 if(key_s2 == 0)// 實(shí)時(shí)檢測(cè)S2按鍵是否被按下
  68.                 {
  69.                         delay(5); //軟件消抖
  70.                         if(key_s2 == 0)//再檢測(cè)S2是否被按下
  71.                         {
  72.                                 while(!key_s2);//松手檢測(cè)
  73.                                 beep = 0;        //使能有源蜂鳴器
  74.                                 delay(200);//200毫秒延時(shí)
  75.                                 beep = 1;        //關(guān)閉有源蜂鳴器
  76.                                 break;                //退出FOR死循環(huán)
  77.                         }
  78.                 }
  79.         }
  80.         delay(1000);//延時(shí)1秒
  81.         TMOD |= 0x02;//8位自動(dòng)重裝模塊
  82.         TH0 = 220;
  83.         TL0 = 220;//11.0592M晶振下占空比最大比值是256,輸出100HZ
  84.         TR0 = 1;//啟動(dòng)定時(shí)器0
  85.         ET0 = 1;//允許定時(shí)器0中斷
  86.         EA        = 1;//總中斷允許
  87.         while(1)
  88.         {
  89.                 //為0 識(shí)別障礙物 為1沒(méi)有識(shí)別到障礙物
  90.                 if(left_led2 == 0 && right_led2 == 0)//左右識(shí)別到障礙物,前進(jìn)跟隨
  91.                 {
  92.                         forward();//前進(jìn)
  93.                 }
  94.                 if(left_led2 == 1 && right_led2 == 0)//小車右側(cè)識(shí)別到障礙物,右轉(zhuǎn)跟隨
  95.                 {
  96.                         right_run();//右轉(zhuǎn)
  97.                 }
  98.                 if(left_led2 == 0 && right_led2 == 1)//小車左側(cè)識(shí)別到障礙物,左轉(zhuǎn)跟隨
  99.                 {
  100.                         left_run();//左轉(zhuǎn)

  101.                 …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
PWM調(diào)試LED燈顯示.zip (808.25 KB, 下載次數(shù): 147)


評(píng)分

參與人數(shù) 2黑幣 +53 收起 理由
艾迪科特 + 3 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:349454 發(fā)表于 2018-6-11 16:59 | 顯示全部樓層
沒(méi)有Proteus仿真圖,建議附件上以源程序+原理圖+Proteus仿真圖的形式發(fā)表會(huì)讓此帖子更有實(shí)用性
回復(fù)

使用道具 舉報(bào)

ID:319888 發(fā)表于 2018-6-12 16:31 | 顯示全部樓層
看看,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:350462 發(fā)表于 2018-6-12 17:21 | 顯示全部樓層
不建議完全變暗的呼吸,
回復(fù)

使用道具 舉報(bào)

ID:350462 發(fā)表于 2018-6-12 17:22 | 顯示全部樓層
完全變暗的呼吸燈不好看,保留一點(diǎn)亮燈,效果更好看
回復(fù)

使用道具 舉報(bào)

ID:409028 發(fā)表于 2018-11-13 10:44 | 顯示全部樓層

完全變暗的呼吸燈不好看,保留一點(diǎn)亮燈,效果更好看
回復(fù)

使用道具 舉報(bào)

ID:425684 發(fā)表于 2018-11-13 16:04 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:417804 發(fā)表于 2018-11-23 08:13 | 顯示全部樓層
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:612528 發(fā)表于 2020-2-8 21:39 | 顯示全部樓層
你這個(gè)附件中的程序不是呼吸燈的
回復(fù)

使用道具 舉報(bào)

ID:259035 發(fā)表于 2020-2-10 09:58 | 顯示全部樓層
樓主好厲害是怎么實(shí)現(xiàn)的?
回復(fù)

使用道具 舉報(bào)

ID:713781 發(fā)表于 2020-4-8 16:03 | 顯示全部樓層
有仿真工程或電路嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表