找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2008|回复: 0
收起左侧

基于STC89C51单片机的光强检测程序

[复制链接]
ID:952422 发表于 2021-7-20 09:56 | 显示全部楼层 |阅读模式
最近学习了AD 觉得光敏检测很有意思
于是就根据光敏检测的值点个灯吧

使用的普中51 A2开发板
原理图在附件

源代码 如下
  1. #include <reg52.h>

  2. #define XPT2046_VBAT 0xAC
  3. unsigned int ADvalue;
  4. unsigned int led_num=0;

  5. sbit XPT2046_CS=P3^5;  
  6. sbit XPT2046_DCLK=P3^6;
  7. sbit XPT2046_DIN=P3^4;
  8. sbit XPT2046_DOUT=P3^7;

  9. void Delay(unsigned int xms)
  10. {
  11.         unsigned char i, j;
  12.         while(xms--)
  13.         {
  14.                 i = 2;
  15.                 j = 239;
  16.                 do
  17.                 {
  18.                         while (--j);
  19.                 } while (--i);
  20.         }
  21. }

  22. unsigned int XPT2046_ReadAD(unsigned char Command)
  23. {
  24.         unsigned int ADValue=0;
  25.         unsigned char i;
  26.         XPT2046_DCLK=0;
  27.         XPT2046_CS=0;
  28.         
  29.         for(i=0;i<8;i++)
  30.         {
  31.                 XPT2046_DIN=Command&(0x80>>i);
  32.                 XPT2046_DCLK=1;
  33.                 XPT2046_DCLK=0;
  34.         }
  35.         
  36.         for(i=0;i<16;i++)
  37.         {
  38.                         XPT2046_DCLK=1;
  39.                         XPT2046_DCLK=0;
  40.                         if(XPT2046_DOUT)
  41.                         {
  42.                                 ADValue|=(0x8000>>i);
  43.                         }
  44.         }
  45.         XPT2046_CS=1;
  46.         return ADValue>>8;
  47. }

  48. void led_light()
  49. {
  50.         switch(led_num)
  51.         {
  52.                 case 1:P2=0xfe;break;
  53.                 case 2:P2=0xfc;break;
  54.                 case 3:P2=0xf8;break;
  55.                 case 4:P2=0xf0;break;
  56.                 case 5:P2=0xe0;break;
  57.                 case 6:P2=0xc0;break;
  58.                 case 7:P2=0x80;break;
  59.                 case 8:P2=0x00;break;
  60.         }
  61. }

  62. void pd()
  63. {
  64.         if(ADvalue>0&&ADvalue<=10)
  65.                 led_num=1;
  66.         else if(ADvalue>10&&ADvalue<=18)
  67.                 led_num=2;
  68.         else if(ADvalue>18&&ADvalue<=26)
  69.                 led_num=3;
  70.         else if(ADvalue>26&&ADvalue<=34)
  71.                 led_num=4;
  72.         else if(ADvalue>34&&ADvalue<=42)
  73.                 led_num=5;
  74.         else if(ADvalue>42&&ADvalue<=50)
  75.                 led_num=6;
  76.         else if(ADvalue>50&&ADvalue<=52)
  77.                 led_num=7;
  78.         else if(ADvalue>52)
  79.                 led_num=8;
  80. }

  81. void main()
  82. {
  83.         while(1)
  84.         {
  85.                 ADvalue=XPT2046_ReadAD(XPT2046_VBAT);
  86.                 Delay(5);
  87.                 pd();
  88.                 led_light();
  89.         }
  90. }
复制代码

Keil代码工程51hei附件下载:
光强灯.zip (20.84 KB, 下载次数: 27)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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