C7C10104C4R7C110410K+12VC8R4+12VC5R610K563814R93K+12VC111041041K+12V7R2LM324N104R820KC9C12LM324N104ADCR12R143KLM324NDA10474#include
#define uchar unsigned char #define uint unsigned int sbit rs=P3^0;
sbit rw=P3^1;
sbit lcden=P3^2; //液晶显示屏相关位定义 //sbit AD_OUT=P1^4; //sbit AD_IN=P1^5;
104POWER+MOSFETAPLM324NADOP07AQ2C6POWER-R50.1-12VC13-12V104104104-12V104-12VR101KC18LM324N104R15R161K+12VC21R1810C15104AR?5ADOP07AQ238C201C226MOSFETAPPOWER+-12V10K+12VC19104ADCR1110K+12VC1410410K+12VC2R1LM324N104DA10KR310KC3104-12VC16104R1310KLM324N10KC17//sbit AD_CS=P1^6; //sbit AD_CLOCK=P1^7; //sbit EOC=P3^3;
sbit DSO=P1^4; sbit DSI=P1^5; sbit CS=P1^6; sbit CLK=P1^7;
sbit DA_IN=P1^0; sbit DA_CK=P1^1; sbit DA_CS=P1^2;
unsigned long int value,value1; uchar set;
uint a,b,z,temp1,temp_1; float x,y,out=0; uint AD_DAstart;
char iset[6]={0,0,0,0,0,0};
uchar code table1[]=\ %uchar code table2[]=\ to set I? \
//DA输出变量值
void delay(uchar x) //延时子程序 {
uchar i,j;
for(i=0;i for(j=0;j<120;j++); //延时120秒 } void delay1(uint t) //极短延时 { while(t--); } void delayms(uint z) //延时函数,参数为z { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); //z=1测试为大约1微秒 } void write_com(uchar com) //写命令函数 { rs=0; //rs置0表示写命令 P0=com; //位声明,按原理图接P0口,输入数据 delayms(5); //时序图中须有thd2时间延时 lcden=1; //置高 delayms(5); //时序图中须有thd2时间延时 lcden=0; //按时序图置低 } void write_date(uchar date) //写数据函数 { rs=1; //rs置1表示写数据 lcden=0; P0=date; //将数据赋到P0口 delayms(5); lcden=1; delayms(5); lcden=0; } void led_init() //初始化函数 { lcden=0; rw=0; } write_com(0x38); //显示模式设置:16X2显示,5X7点阵,8位数据 write_com(0x0c); // 开显示,关光标,光标不闪烁 write_com(0x06); // 写一个数据后地址指针加一,光标加一 write_com(0x01); // 数据指针及数据清0 write_com(0x80); // 设置数据地址指针,第一行 write_date(0x53); write_date(0x30+iset[1]); write_date(0x30+iset[2]); write_date(0x2e); write_date(0x30+iset[4]); write_date(0x30+iset[5]); //uint read2543(uchar port) //AD转换子程序 //{ // uint ad=0,j; // AD_CLOCK=0; // AD_CS=0; // EOC=1; // port<<=4; // delay1(50); // for(j=0;j<12;j++) // { // if(AD_OUT) // { // ad|=0x01; // } // AD_IN=(bit)(port&0x80); // AD_CLOCK=1; // delay1(6); // AD_CLOCK=0; // delay1(3); // port<<=1; // ad<<=1; // } // AD_CS=1; // ad>>=1; // return(ad); //} //uint Read_TLC2543(uchar CHN)//TLC2543据转换函数(方法二) //{ // uchar i,temp; // uint read_ad_data = 0; //分别存放采集的数据,先清0 // CHN=CHN<<4; //12位格式,选择高位道导前,单极性 // CLK=0; // CS=1; // CS=0; //下降沿,并保持低电平 // temp=CHN; //输入要转化的通道 // for(i=0;i<12;i++) //12位数据 // { // read_ad_data=read_ad_data<<1; //转换结果左移一位 // if((temp&0x80)!=0){DSI=1;} //送方式、通道控制字串行输入 // else{DSI=0;} // if(DSO){read_ad_data=read_ad_data+1;} //读入转换结果 // CLK =1; // CLK =0; // temp=temp<<1; //左移,准备发送方式,通道控制字下一位 // } // CS=1; // read_ad_data=read_ad_data&0x0fff; //屏蔽高四位,因为是12位的转换结果 // return(read_ad_data); //} uint Read_TLC2543(uchar chanle)//TLC2543数据转换函数(方法一) { uchar i,dah=0,dal=0; uint date; CS=1; CS=0; CLK=0; chanle<<=4;//高低位交换 for(i=0;i<4;i++) { dah<<=1; if(DSO) { dah++;//高四位数据 } DSI=chanle&0x80;//选择转换通道 CLK=1; delay(1); CLK=0; chanle<<=1; } DSI=0;//此部不能少! for(i=0;i<8;i++)//转换的数据低8位 { CLK=1; dal<<=1; if(DSO) { dal++; } CLK=0; } CS=1; date=dah;//转换的数据高四位 date<<=8; date=date|dal;//合并12位数据 return(date); } void adzh() { uint ge,shi,x1,x2; temp1=Read_TLC2543(0x00); y=temp1*5.0/4096; z=y*100; shi=z/1000; ge=(z/100); //电流检测测出电流实际值 //输出AD转换后的电流值 搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新资格考试认证直流电子负载设计 全文阅读和word下载服务。
相关推荐: