打印
[51单片机]

分享我自己写的tlc615程序

[复制链接]
1659|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaodapeng|  楼主 | 2013-8-12 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/********************************
项目名称:TLC5615DA转换
项目版本:1.1
项目时间:20130808
制 作 人:大鹏
********************************/
#include<stc12c5a60s2.h>
#include<intrins.h>
#include"tlv5615.h"
uint ads=256;
/*************用户自定义*********/

/******************************
函 数 名:void delay_ms(uchar i)
函数功能;1-255ms任意延时
参    数;无
返 回 值:无
时    间;20130808
***************************/
void delay_ms(uchar i)   //误差 -0.651041666667us
{
    unsigned char a,b;
        while(i--)
        {
      for(b=4;b>0;b--)
        for(a=248;a>0;a--);
        _nop_();  //if Keil,require use intrins.h
    }
               
}
/******************************
函 数 名:void DA(uint j)
函数功能;WRIT DA转换J(0-1023)代表不同电压值
参    数;uint j
返 回 值:无
时    间;20130808
***************************/
void DA(uint j)
{
        uint i;
        uchar temb=0,dout=0,temp=0;
        temb=j/256;//取出高两位
        temp =j%256;//取出低八位
        temb=temb<<6 ;//将高两位右移6位
    clk=0;
        cs=0;
        for(i=0;i<12;i++) //注意当是12时,有一位没有移位。因为数据是在后面移位的
        {                
            
                if(i<2)
                {
                        temb=temb<<1;
                        di=CY; //取出最高位
                        clk=1;
                        _nop_();
                        clk=0;
                }

                if(i>=2&&i<11)
                {               
                        temp=temp<<1;
                        di=CY;
                        clk=1;
                        _nop_();
                        clk=0;
                       
                }
                if(i>=11)
                {
                        di=CY;
                        clk=1;
                        _nop_();
                        clk=0;
                        dout=dout<<1;
                }
        }
        cs=1;
}


/******************************
函 数 名:uint key()
函数功能;按键调整,可实现4ms与40ms步进
参    数;无
返 回 值:        uint ads
时    间;20130808
*******************************/
void key()
{
                
                P2=0xdf;
                        if(k1==0)
                        {
                                while(~k1)
                                delay_ms(90);
                                xia=0;
                                if(ads>0)
                                ads=ads-1;
                                if(ads<1)
                             ads=ads+10;
                                 delay_ms(35);
                        }
                        xia=1;

                        if(k2==0)
                        {
                                while(~k2)
                                delay_ms(90);
                                xia=0;
                                if(ads<1022)
                                ads=ads+1;
                                if(ads>1022)
                             ads=ads+10;
                                 delay_ms(35);
                        }
                        xia=1;

                        P2=0xef;
                        if(k1==0)
                        {
                                while(~k1)
                                delay_ms(90);
                                xia=0;
                                if(ads>0)
                                ads=ads-10;
                                if(ads<1)
                             ads=ads+10;
                                 delay_ms(75);
                        }
                        xia=1;

                        if(k2==0)
                        {
                                while(~k2)
                                delay_ms(90);
                                xia=0;
                                if(ads<1022)
                                ads=ads+10;
                                if(ads>1022)
                             ads=ads-10;
                                 delay_ms(75);
                        }
                        xia=1;

          
}
/******************************
函 数 名:main
函数功能;
参    数;无
返 回 值:无
时    间;20130808
***************************/
main()
{
       
        cs=1;
        clk=0;
        while(1)
        {       
                        DA(ads);
                        delay_ms(30);
                    key();
                               
    }               
}
                               
                               

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

29

帖子

0

粉丝