单片机
返回首页

TLC2543单片机程序 带Proteus仿真 电路原理图 AD转换实验

2019-10-22 来源:51hei

单片机与TLC2543接口实现ad转换,并且用数码管显示的仿真原理图如下(proteus仿真工程文件可到本帖附件下载)

TLC2543与单片机连接的电路图:
 
TLC2543是11通道12位串行A/D转换器.TLC2543中文资料详见:http://www.51hei.com/chip/4009.html

TLC2543单片机驱动源代码:

#include

sbit SDO=P3^0;                                                        //定义端口

sbit SDI=P3^1;

sbit CS=P3^2;

sbit CLK=P3^3;

sbit EOC=P3^4;

sbit P2_0=P2^0;

sbit P2_1=P2^1;

sbit P2_2=P2^2;

sbit P2_3=P2^3;

unsigned char code xiao[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

                                                                                //共阳极数码管0-9的段码

//**********************************

//延时程序

//**********************************

void delay(unsigned char n)

{   

    unsigned char i,j;

       for(i=0;i         for(j=0;j<125;j++);

}

//**********************************

//向TLC2543写命令及读转换后的数据

//**********************************

unsigned int read2543(unsigned char con_word)

{

  unsigned int ad=0,i;

  CLK=0;                                                                //时钟首先置低

  CS=0;                                                                          //片选为0,芯片工作

  for(i=0;i<12;i++)                                  

  {

    if(SDO)                                                                  //首先读TLC2543的一位数据

         ad=ad|0x01;

         SDI=(bit)(con_word&0x80);                        //向TLC2543写一位数据

         CLK=1;                                                                  //时钟上升沿,TLC2543输出使能

         delay(3);

         CLK=0;                                                                  //时钟下降沿,TLC2543输入使能

         delay(3);

         con_word<<=1;

         ad<<=1;

   }

   CS=1;

   ad>>=1;

   return(ad);

}

void main()

{

   unsigned int ad;

   while(1)

    {

           ad=read2543(0x00);

           P0=xiao[ad/1000];                                           //千位数字的段码

           P2_0=1;                                                           //显示千位

           delay(3);

           P2_0=0;

           P0=xiao[(ad%1000)/100];                         //百位数字的段码

           P2_1=1;                                                           //显示百位

           delay(3);

           P2_1=0;

           P0=xiao[(ad%100)/10];                           //十位数字的段码

           P2_2=1;                                                           //显示十位


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章