您的位置:首页技术文栏LED应用
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

TLC2543_C程序

[日期:2008-01-07 ] [来源: 作者:] [字体: (投递新闻)

//adc

#define XMS 1000  /* 定时中断间隔 12MHz,1uS */
#include <reg51.h>
#include <stdio.h>
#define uchar unsigned char

extern unsigned adc(char path); /* 这个函数的定义在"tlc2543.c"中*/


sbit KEY1 =P2^7;  /* path+1 */
sbit KEY2 =P2^6;  /* path-1 */
sbit KEY3 =P2^5;  /* path=0 */
sbit KEY4 =P2^4;  /* 显示 path或者volt */

char buf[5]={0,0,0,0,0};
char low[4]={0xfe,0xfd,0xfb,0xf7};
char disppoint;
uchar ms;
int volt;
int pathx;

code char seg[]={0x22,0xfa,0x31,0x25,0xac,0x64,0x60,0x2f,0x20,0x24};  /* 显示段表*/

void delayms(int t)
{
uchar i;
while(t--)
 {
 i=100;
 while(i--); 
 }
}

void put_num(char c)
{
P0=seg[c&0x0f];
}

void timer0( ) interrupt 1 using 1  /*定时器中断程序*/
{
EA=0;
//显示:
TH0=-(XMS/256);
TL0=-(XMS%256);
disppoint&=3;
put_num(buf[disppoint]);
P2=low[disppoint];
disppoint++;
EA=1;
}

bit pv;

main()
{
char i,ss[5];
TMOD=0x01;
TH0=-(XMS/256); /* 5ms */
TL0=-(XMS%256);
TR0=1;
EA=1;

while(1)
 {
 ET0=1;
 if(!KEY1 && pathx<11){pathx++;delayms(300);} 
 if(!KEY2 && pathx>0){pathx--;delayms(300);}
 if(!KEY3){pathx=0;delayms(300);}
 if(!KEY4) {pv=!pv;delayms(300);}
 volt=adc(pathx);
 if(pv) sprintf(ss,"%04d",pathx);
 else sprintf(ss,"%04d",volt);
 for(i=0;i<4;i++)buf[i]=ss[i];
 }
}

 

#include <reg51.h>
#define uchar unsigned char

 

#define H   1
#define L   0     

sbit ADC_CS  = P1^0;
sbit ADC_CLK = P1^1;
sbit ADC_IN  = P1^2;
sbit ADC_OUT = P1^3;


unsigned adc1(uchar path)
{
char i;
unsigned cc;
ADC_CLK=L;  
ADC_CS=L; 
ADC_OUT=1;
cc=0;
for(i=0;i<12;i++)
 {cc<<=1;
 if(path&0x80)ADC_IN=1;/*通道*/
 else ADC_IN=0;
 path<<=1;
 ADC_CLK=H;
 if(ADC_OUT)cc|=1;
 ADC_CLK=L;
 }
ADC_CS=H;
return(cc);
}

unsigned adc(uchar path)  /* path = 0-10 */
{
data unsigned cc;
path<<=4;
adc1(path);  /* set path*/
cc=adc1(path);
return(cc);
}


 

阅读:
录入:admin

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐