找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机使用pcf8591实现光敏、热敏及电位器电压的测量 源程序

[复制链接]
跳转到指定楼层
楼主
     步骤及现象:程序下载前,选择stc-isp的IRC频率:12MHz。程序下载后,通过改变开发板杜邦线的连接方式实现不同功能。

    (1)电位器旋钮可调电压:
    用杜邦线或跳线帽把AIN0与RAD短接。这时数码管前三位显示一个十进制数字,当拧动电位器时数字也跟着变化,变化范围为0.00~5.00。

    (2)光敏电阻电压:
    用杜邦线把AIN0与J13右侧两个排针同时短接。这时数码管前三位显示一个十进制数字,通过遮挡光敏电阻RL或用手电筒照射光敏电阻RL,数码管显示数字改变,变化范围0.00~5.00。
         
    (3)热敏电阻电压:
    用杜邦线把AIN0与J13左侧两个排针同时短接。这时数码管前三位显示一个十进制数字,通过用手触摸热敏电阻NTC,数码管显示数字改变,变化范围0.00~5.00。

#include "stc8.h"
#include "pcf8591_i2c.h"
#include "hc595.h"
void main()
{
        int dat;
        while(1)
        {
                dat = ((int)Pcf8591_ReadAD())/51.0*100;    // 读取ad值
                display(0,dat/100);                                        // 数据在数码管上显示               
                display(0,19);
                display(1,dat%100/10);
                display(2,dat%10);
        }
}

  1. #include "hc595.h"
  2. #include "stc8.h"
  3. #include <intrins.h>

  4. sbit P_HC595_SRCLK = P3^5;            // 移位时钟
  5. sbit P_HC595_RCLK  = P3^4;            // 存储时钟
  6. sbit P_HC595_SER   = P3^7;            // 数据输入端

  7. // 段选:dp、g、f、e、d、c、b、a
  8. unsigned char const LedData[]=
  9.    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xFF , 0x00, 0xbf,0x7f,0x89};
  10. //  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"   "9"  "A"  "B"  "C"  "D"  "E"  "F" "全灭" "全亮" "-"  "."  "H"

  11. // 位选:CS1、CS2、CS3、CS4、CS5、CS6、CS7、CS8
  12. unsigned char const LedPos[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

  13. /***** 延时函数,xms是多少就延时多少毫秒 *****/

  14. void sDelay_ms(unsigned int xms)    // 晶振:12MHz
  15. {
  16.         unsigned int i, j;
  17.         for(i=xms;i>0;i--)
  18.                 for(j=921;j>0;j--);
  19. }
  20. /*************************************************
  21. * 函数名:Send_595
  22. * 描述  :hc595发送一个字节数据
  23. * 参数  :dat  (位选或段选)
  24. * 返回值:无
  25. * 调用  :内部调用
  26. *************************************************/

  27. void Send_595(unsigned char dat)
  28. {        
  29.         unsigned char i;
  30.         for(i=0; i<8; i++)
  31.         {
  32.                 dat <<= 1;
  33.                 P_HC595_SER   = CY;
  34.                 P_HC595_SRCLK = 0;          // SH_CP产生一个上升沿,数据移位
  35.                 _nop_();
  36.                 P_HC595_SRCLK = 1;               
  37.         }
  38. }

  39. /*************************************************
  40. * 函数名:display
  41. * 描述  :pos位数码管显示数字dat
  42. * 参数  :pos,dat
  43. * 返回值:无
  44. * 调用  :外部调用
  45. *************************************************/

  46. void display(unsigned char pos,unsigned char dat)
  47. {
  48.         Send_595(LedPos[pos]);          // 发送位选
  49.         Send_595(LedData[dat]);         // 发送段选
  50.         P_HC595_RCLK = 0;               // ST_CP产生一个上升沿,数据并口输出
  51.         _nop_();
  52.         P_HC595_RCLK = 1;         
  53.         sDelay_ms(5);                    // 延时5ms
  54. }
复制代码


pcf.JPG (20.18 KB, 下载次数: 105)

工程文件.jpg

工程文件.jpg

pcf8591.jpg (3.21 MB, 下载次数: 94)

光敏现象.jpg

光敏现象.jpg

remin.jpg (3.28 MB, 下载次数: 85)

热敏现象.jpg

热敏现象.jpg

PCF8591实现ADC转换.rar

72.98 KB, 下载次数: 79, 下载积分: 黑币 -5

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:512761 发表于 2020-2-2 12:54 | 只看该作者
一样的板子,真的是谢谢了同学。线连的厉害了
回复

使用道具 举报

板凳
ID:927341 发表于 2021-8-14 10:32 | 只看该作者
光照越强,值是越大还是越小
回复

使用道具 举报

地板
ID:893445 发表于 2022-3-19 11:04 | 只看该作者
请问这个线是怎么连的?一分二的线吗?
回复

使用道具 举报

5#
ID:487079 发表于 2022-4-8 09:00 | 只看该作者
绝壁羚羊 发表于 2022-3-19 11:04
请问这个线是怎么连的?一分二的线吗?

K可以帮我看下我主页的问题吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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