博客
关于我
51单片机 普中V2 DAC PCF8591 模拟电压输出 数码管 仿真
阅读量:363 次
发布时间:2019-03-04

本文共 2147 字,大约阅读时间需要 7 分钟。

2个按键控制DAC输出修改方案

系统简介

本方案采用LS138A系列芯片作为七段显示器控制器,通过I2C通信接口与主控器进行数据交互。系统主要功能包括读取AD通道电压值并通过DAC转换输出,同时支持四个按键进行控制操作。

主要硬件组成

  • 显示器控制器:LS138A、LS138B、LS138C
  • I2C通信模块
  • AD通道模块
  • 四个按键模块
  • 软件设计

    按键检测函数

    void delay_ms_key(unsigned char t) {    unsigned char ttt;    while (t--) {        for (ttt = 0; ttt < 125; ttt++) ;    }}unsigned char KeySscan(void) {    unsigned char keyvaluee = 0xff;    if (key_01 == 0) {        delay_ms_key(10);        if (key_01 == 0) {            while (key_01 == 0) ;            return(1);        }    }    if (key_02 == 0) {        delay_ms_key(10);        if (key_02 == 0) {            while (key_02 == 0) ;            return(2);        }    }    if (key_03 == 0) {        delay_ms_key(10);        if (key_03 == 0) {            while (key_03 == 0) ;            return(3);        }    }    if (key_04 == 0) {        delay_ms_key(10);        if (key_04 == 0) {            while (key_04 == 0) ;            return(4);        }    }    return(0xff);}

    主程序设计

    #include 
    #include
    sbit LS138A = P2 ^ 2;sbit LS138B = P2 ^ 3;sbit LS138C = P2 ^ 4;const unsigned char Disp_Tab[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};unsigned char AD_CHANNEL;unsigned char LedOut[8];sbit key_01 = P3 ^ 0;sbit key_02 = P3 ^ 1;sbit key_03 = P3 ^ 2;sbit key_04 = P3 ^ 3;void main() { int adadadad = 0; unsigned char ad_value = 32; unsigned char anjianzhi = 0xff; TMOD = 0x11; EA = 1; TH0 = (65536 - 3000) / 256; TL0 = (65536 - 3000) % 256; ET0 = 1; TR0 = 1; LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80; LedOut[0] = Disp_Tab[ad_value % 10]; while (1) { anjianzhi = KeySscan(); if (anjianzhi != 0xff) { if (anjianzhi == 1) { ad_value++; DACconversion(PCF8591, 0x40, adadadad); } else if (anjianzhi == 2) { ad_value--; DACconversion(PCF8591, 0x40, adadadad); } LedOut[1] = Disp_Tab[ad_value % 100 / 10] | 0x80; LedOut[0] = Disp_Tab[ad_value % 10]; } }}

    系统工作流程

  • 初始化I2C通信模块和AD通道模块
  • 设置初始AD值为32(可扩展)
  • 按键扫描并判断按键状态
  • 根据按键状态调整AD值并更新DAC输出
  • 实时显示AD值对应的七段显示器数字
  • 转载地址:http://suce.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
    查看>>
    Netty工作笔记0029---NIO 网络编程应用--群聊系统4--客户端编写2
    查看>>
    Netty工作笔记0030---NIO与零拷贝原理剖析
    查看>>
    Netty工作笔记0031---NIO零拷贝应用案例
    查看>>
    Netty工作笔记0032---零拷贝AIO内容梳理
    查看>>
    Netty工作笔记0033---Netty概述
    查看>>
    Netty工作笔记0034---Netty架构设计--线程模型
    查看>>
    Netty工作笔记0035---Reactor模式图剖析
    查看>>
    Netty工作笔记0036---单Reactor单线程模式
    查看>>
    Netty工作笔记0037---主从Reactor多线程
    查看>>
    Netty工作笔记0038---Netty模型--通俗版
    查看>>
    Netty工作笔记0039---Netty模型--详细版
    查看>>
    Netty工作笔记0040---Netty入门--服务端1
    查看>>
    Netty工作笔记0041---Netty入门--服务端2
    查看>>
    Netty工作笔记0042---Netty入门--编写客户端
    查看>>
    Netty工作笔记0043---单Reactor多线程模式
    查看>>
    Netty工作笔记0044---Netty案例源码分析
    查看>>
    Netty工作笔记0044---scheduledTaskQueue
    查看>>
    Netty工作笔记0045---Netty模型梳理
    查看>>