找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14106|回复: 10
打印 上一主题 下一主题
收起左侧

51单片机PWM调试LED呼吸灯程序-经典例程

  [复制链接]
跳转到指定楼层
楼主
51单片机利用PWM调试LED显示经典例程

单片机源程序如下:
  1. /*********************************************************************************
  2. * 【编写时间】: 12月2日
  3. * 【作    者】: 清翔电子:03
  4. * 【版    本】: 1.0
  5. * 【实验平台】: QX-MCS51 单片机开发板 & QX-A51智能小车
  6. * 【外部晶振】: 11.0592mhz       
  7. * 【主控芯片】: STC89C52
  8. * 【编译环境】: Keil μVisio4
  9. * ********************************【接线说明】********************************
  10.              以下"A_"表示智能小车底板~~~"B_"表示开发板     
  11. *开发板供电线  :A_J5-VCC~~~B_VCC或5V0    A_J6-GND~~~B_GND (一共使用2根杜邦线)
  12. *电机控制线    :A_J10-P1.2至P1.7 对应接到B_P1.2至P1.7 (一共使用6根杜邦线)
  13. *避障寻迹反馈线:A_J11-P3.2至P3.5 对应接到B_P3.2至P3.5 (一共使用4根杜邦线)
  14. ******************************************************************************
  15. * 【程序功能】:QX-A51智能小车红外避障(跟随障碍物)                                                                                   
  16. * 【使用说明】:接线无误后,烧写程序打开电源开、按下S2按键后蜂鸣器发出提示音1秒后启动小车
  17. * 【注意事项】:避免小车撞向障碍物或小车轮子堵转,小车电压不能低于6V
  18.                                 1、不能在自然光强烈的条件下进行试验
  19.                                 2、进行试验前必须调节好避障探头
  20.                                 3、必须先搭建好实验环境(参考相关视频教程)
  21.                                 4、此程序只做参考,实际运行效果需根据不同实验场地进行不同调试
  22. **********************************************************************************/
  23. #include <reg52.h> //51头文件
  24. #include <..\CONFIG\QXA51.h>//QX-A51智能小车配置文件
  25. unsigned char pwm_left_val = 160;//左电机占空比值 取值范围0-170,0最快
  26. unsigned char pwm_right_val = 160;//右电机占空比值取值范围0-170 ,0最快
  27. unsigned char pwm_t;//周期

  28. void delay(unsigned int z)//毫秒级延时
  29. {
  30.         unsigned int x,y;
  31.         for(x = z; x > 0; x--)
  32.                 for(y = 114; y > 0 ; y--);
  33. }       
  34. /*小车前进*/
  35. void forward()
  36. {
  37.         left_motor_go; //左电机前进
  38.         right_motor_go; //右电机前进
  39. }
  40. /*小车左转*/
  41. void left_run()
  42. {
  43.         left_motor_stops; //左电机停止
  44.         right_motor_go; //右电机前进       
  45. }
  46. /*小车右转*/
  47. void right_run()
  48. {
  49.         right_motor_stops;//右电机停止
  50.         left_motor_go;    //左电机前进
  51. }

  52. //定时器0中断
  53. void timer0() interrupt 1
  54. {
  55.         pwm_t++;//周期计时加
  56.         if(pwm_t == 255)
  57.                 pwm_t = EN1 = EN2 = 0;
  58.         if(pwm_left_val == pwm_t)//左电机占空比       
  59.                 EN1 = 1;               
  60.         if(pwm_right_val == pwm_t)//右电机占空比
  61.                 EN2 = 1;                         
  62. }
  63. void main()
  64. {
  65.         for(;;)        //死循环
  66.         {
  67.                 if(key_s2 == 0)// 实时检测S2按键是否被按下
  68.                 {
  69.                         delay(5); //软件消抖
  70.                         if(key_s2 == 0)//再检测S2是否被按下
  71.                         {
  72.                                 while(!key_s2);//松手检测
  73.                                 beep = 0;        //使能有源蜂鸣器
  74.                                 delay(200);//200毫秒延时
  75.                                 beep = 1;        //关闭有源蜂鸣器
  76.                                 break;                //退出FOR死循环
  77.                         }
  78.                 }
  79.         }
  80.         delay(1000);//延时1秒
  81.         TMOD |= 0x02;//8位自动重装模块
  82.         TH0 = 220;
  83.         TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ
  84.         TR0 = 1;//启动定时器0
  85.         ET0 = 1;//允许定时器0中断
  86.         EA        = 1;//总中断允许
  87.         while(1)
  88.         {
  89.                 //为0 识别障碍物 为1没有识别到障碍物
  90.                 if(left_led2 == 0 && right_led2 == 0)//左右识别到障碍物,前进跟随
  91.                 {
  92.                         forward();//前进
  93.                 }
  94.                 if(left_led2 == 1 && right_led2 == 0)//小车右侧识别到障碍物,右转跟随
  95.                 {
  96.                         right_run();//右转
  97.                 }
  98.                 if(left_led2 == 0 && right_led2 == 1)//小车左侧识别到障碍物,左转跟随
  99.                 {
  100.                         left_run();//左转

  101.                 …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
PWM调试LED灯显示.zip (808.25 KB, 下载次数: 145)


评分

参与人数 2黑币 +53 收起 理由
艾迪科特 + 3 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩1
回复

使用道具 举报

沙发
ID:349454 发表于 2018-6-11 16:59 | 只看该作者
没有Proteus仿真图,建议附件上以源程序+原理图+Proteus仿真图的形式发表会让此帖子更有实用性
回复

使用道具 举报

板凳
ID:319888 发表于 2018-6-12 16:31 | 只看该作者
看看,学习学习
回复

使用道具 举报

地板
ID:350462 发表于 2018-6-12 17:21 | 只看该作者
不建议完全变暗的呼吸,
回复

使用道具 举报

5#
ID:350462 发表于 2018-6-12 17:22 | 只看该作者
完全变暗的呼吸灯不好看,保留一点亮灯,效果更好看
回复

使用道具 举报

6#
ID:409028 发表于 2018-11-13 10:44 | 只看该作者

完全变暗的呼吸灯不好看,保留一点亮灯,效果更好看
回复

使用道具 举报

7#
ID:425684 发表于 2018-11-13 16:04 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:417804 发表于 2018-11-23 08:13 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

9#
ID:612528 发表于 2020-2-8 21:39 | 只看该作者
你这个附件中的程序不是呼吸灯的
回复

使用道具 举报

10#
ID:259035 发表于 2020-2-10 09:58 | 只看该作者
楼主好厉害是怎么实现的?
回复

使用道具 举报

11#
ID:713781 发表于 2020-4-8 16:03 | 只看该作者
有仿真工程或电路吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表