专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

TLC549模数转换C51程序

作者:佚名   来源:本站原创   点击数:  更新时间:2011年08月04日   【字体:
/*******************************************
  程序功能:将采集的模拟量数据转换为数字量数
            据, 并在P2口的流水灯上体现出来。
  涉及芯片:TLC549         
********************************************/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit clock=P3^3;//时钟线
sbit dout=P3^4;//数据输出端
sbit cs=P3^5;//片选(低电平有效)

void delay(uint t)
 {   
   while(t--);
 }

uchar read_549()//数据得采集
 {
   uint i;
   uchar k=0x00;//定义一个变量k,将在dout上采集的到的数据装进K
   dout=1;//该地方置不置高电平都可以,应为单片机的I/O口默认值为高点平
   for(i=0;i<8;i++)
    {
   if(dout)
    {
      k++;
    }
    k=k<<1;
    clock=1;//高电平期间采集dout线上的数据
    clock=0;
    delay(10);
 }
   return k;//返回值
 }

uchar shuchu_549()//数据得读取
 {
   uchar date;
   cs=0;//片选低电平时数据有效
   date=read_549();//将read_549()函数中采集到的数据付给变量date
   cs=1;//片选拉高,表示数据读取完毕
   delay(50);
   return date;//返回值
 }

void main()
 {
   while(1)
    {
   P2=shuchu_549(); 
 }
 }
/**********************************************
  详细分析TLC549芯片时序图:
    1、串行数据A7位先输出(即最高位)A0位最后
    输出。
 2、在每一次I/O clock的高电平期间DATA OUT线
    就产生有效输出,每出现一次I/O clock信号
    并对8个字节数据输出。一个周期出现8次 I/O
    clock信号并对8个字节输出。
 3、在CS变为低电平后,最高位自动置于DATA OUT
    总线上。其余7位(A6~A0)在7个I/O clock下
    降沿由时钟同步输出。B7~B0以同样的方式跟在
    其后。
 4、在片选CS变为低电平后1.4微秒I/O clock才允
    许跳变。
 5、在片选CS变为低电平后到数据线DATA OUT线上
    输出数据的时间间隔为1.2微秒;
 6、只要I/O CLOCK变高就可以读取DATA OUT线上的
    数据。
     
 **********************************************/
关闭窗口

相关文章