找回密码
 立即注册

QQ登录

只需一步,快速开始

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

由光敏强度来控制路灯的单片机程序+仿真图

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


源代码如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar  unsigned char
  4. #define uint  unsigned int
  5. //共阳极/*0,1,2,3,4,5,6,7,8,9,A,b,C,*/
  6. uchar code SEG7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6};
  7. //显示缓冲
  8. uchar num[]={0,0,0,0,0,0};
  9. //位码定义
  10. sbit      q2=P2^1;
  11. sbit      q1=P2^0;
  12. //按键
  13. sbit key1=P2^3;
  14. //灯
  15. sbit  led0=P3^6;
  16. sbit  led1=P3^7;
  17. sbit  led2=P1^0;
  18. sbit  led3=P1^1;
  19. sbit  led4=P1^2;
  20. sbit  led5=P1^3;
  21. sbit  led6=P1^4;
  22. sbit  led7=P1^5;
  23. sbit  led8=P1^6;
  24. sbit  led9=P1^7;


  25. uchar pep=0;
  26. sbit  Clk= P2^4;
  27. sbit  DATI=P2^6;
  28. sbit  DATO= P2^6;
  29. sbit  CS= P2^5;
  30. uint  dat = 0x00;      //AD值


  31. //AD转换子程序
  32. uint adc0832(unsigned char CH)
  33. {
  34.   uchar i,test,adval;
  35.   adval = 0x00;
  36.   test = 0x00;
  37.    //初始化
  38.   Clk = 0;      
  39.   DATI = 1;
  40.   _nop_();   _nop_();
  41.   CS = 0;
  42.   _nop_();
  43.   Clk = 1;
  44.   _nop_();  _nop_();
  45.   //通道选择
  46. if(CH == 0x00)     
  47.    {
  48.        Clk = 0;
  49.        DATI = 1;      //通道0的第一位
  50.        _nop_();
  51.        Clk = 1;
  52.        _nop_();  _nop_();


  53.        Clk = 0;
  54.        DATI = 0;      //通道0的第二位
  55.        _nop_();  _nop_();


  56.        Clk = 1;
  57.        _nop_();
  58.     }
  59.     else
  60.     {
  61.        Clk = 0;
  62.        DATI = 1;      //通道1的第一位
  63.         _nop_();  _nop_();


  64.        Clk = 1;
  65.         _nop_();  _nop_();


  66.        Clk = 0;
  67.        DATI = 1;      //通道1的第二位
  68.       _nop_();
  69.       Clk = 1;
  70.       _nop_();
  71.     }
  72.       Clk = 0;   _nop_();


  73.       DATI = 1;
  74.    for( i = 0;i < 8;i++ )      //读取前8位的值
  75.     {
  76.        _nop_();
  77.        adval <<= 1;
  78.        Clk = 1;
  79.        _nop_();  _nop_();


  80.        Clk = 0;           _nop_();


  81.        if (DATO)
  82.           adval |= 0x01;
  83.       else
  84.           adval |= 0x00;
  85.     }
  86.   for (i = 0; i < 8; i++)      //读取后8位的值
  87.       {
  88.            test >>= 1;
  89.            if (DATO)
  90.               test |= 0x80;
  91.            else
  92.               test |= 0x00;
  93.           _nop_();
  94.           Clk = 1;
  95.           _nop_();  _nop_();


  96.           Clk = 0;   _nop_();


  97.       }

  98. 限于篇幅请下载附件,附件可直接仿真
复制代码

全部资料51hei下载地址:
光敏强度控制路灯.zip (67.8 KB, 下载次数: 172)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:573664 发表于 2019-6-27 19:31 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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