找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机ADC电阻调节滑动控制pwm占空比调光程序+Proteus仿真设计

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


一、硬件设计
   程序流程图


元件清单:
晶振
电容
电容
电阻
按钮
led
电阻
模数芯片
滑变
三极管
电池盒
电线
洞洞板
开关

软件设计  
按下start,开始工作
按下end,关闭
调整滑变,改变亮度
通过按钮打开电灯后,调节滑动来改变的亮度,达到调光的目的。

单片机源程序如下:
  1. #include <REG51.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. //******************adc0832****************************//
  6. sbit CLK=        P2^2;//时钟,初始状态为0
  7. sbit DI=        P2^3;//数据输入
  8. sbit DO=        P2^1; // 数据输出
  9. sbit CS=        P2^0;
  10. //******************按钮****************************//
  11. sbit start =P2^4;
  12. sbit end=P2^5;
  13. sbit led=P3^5;

  14. uchar start_flag;//开始标志
  15. //延时
  16. void delay(uchar i)
  17. {
  18.         while(i--)
  19.         {
  20.                 if(!end)                         //end按钮按下
  21.                         start_flag=0;
  22.         }
  23. }
  24. /*******************亮灯函数***************/
  25. void led_red(uchar i)//占空比i/13
  26. {
  27.         led=0;
  28.         delay(i/10);
  29.         if(i/10<12)
  30.         {
  31.                 led=1;
  32.                 delay(12-i/10);
  33.         }
  34. }
  35. /*********************************************
  36. 读取ADC
  37. **********************************************/
  38. uchar ADC()//通道ch0
  39. {
  40.         uchar temp0,temp1,i;
  41.         CS=0;
  42.         temp0=0;
  43.         temp1=0;
  44.         _nop_();
  45.         _nop_();
  46.         DI=1;//开始位
  47.         _nop_();
  48.         _nop_();
  49.         CLK=1;
  50.         _nop_();
  51.         _nop_();
  52.         CLK=0;
  53.         _nop_();
  54.         _nop_();
  55.         DI=0;
  56.         _nop_();
  57.         _nop_();
  58. //选择通道0
  59.                 DI=1;
  60.                 _nop_();
  61.                 CLK=1;//上升沿DI=1
  62.                 _nop_();
  63.                 CLK=0;//1个下降沿DI=1
  64.                 _nop_();
  65.                 DI=0;
  66.                 _nop_();
  67.                 CLK=1;
  68.                 _nop_();
  69.                 CLK=0;//第3个上升沿DI=0
  70.                 _nop_();
  71.                    DI=1;
  72. //********通道选择结束开始读取转换后的二进制数****
  73. //下降沿读数,一下进行判断和处理,共8次
  74. for(i=0;i<8;i++)
  75.    {
  76.         temp0=temp0<<1;
  77.         CLK=1;
  78.     if(DO)
  79.            temp0++;
  80.            _nop_();
  81.            CLK=0;
  82.    }
  83. for(i=0;i<8;i++)
  84.    {
  85.         temp1=temp1>>1;
  86.         CLK=1;
  87.     if(DO)
  88.            temp1=temp1 +0x80;
  89.            _nop_();
  90.            CLK=0;
  91.    }
  92.          CS=1;
  93.    return temp0;
  94. }
  95. //*********************************************
  96. void main()
  97. {
  98.         uchar num,i;
  99.         CLK=0;//ADC时钟初始化
  100.         start_flag=0;
  101. while(1)
  102.         {
  103. //按键检测
  104.         if(!start)                         //start按钮按下
  105.                 {
  106.                 start_flag=1;
  107.                 }
  108.         if(!end)                         //end按钮按下
  109.                 {
  110.                 start_flag=0;
  111.                 }
  112.                
  113.         if(start_flag)
  114.         {
  115.                 num=ADC();
  116.                 P1=num;
  117.                 for(i=0;i<100;i++)
  118.                         led_red(num);
  119.         }
  120.         }
  121. }
复制代码


所有资料51hei提供下载:
调光灯项目设计.rar (88.96 KB, 下载次数: 128)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:744762 发表于 2020-5-8 15:13 | 只看该作者
为啥仿真不了呢
回复

使用道具 举报

板凳
ID:18842 发表于 2020-5-8 15:34 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

地板
ID:774556 发表于 2020-6-10 17:12 | 只看该作者
最后for语句还有num不太懂,有没有大神讲解一下调节原理
回复

使用道具 举报

5#
ID:774556 发表于 2020-6-10 17:14 | 只看该作者
最后for语句还有num那个字母调占空比,有没有大神讲解一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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