⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scan.c

📁 键盘扫描子程序.lcd1602液晶显示子程序.ad子程序
💻 C
字号:

/*+++++++++++++++++++++++++++++++++++++++++++++++++++/
 程序名 :时间发生函数
 入口:  以1ms为基准的时间数量  
 出口:
 功能: 产生任意的时间(基本时间单位是1ms)
+++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "CPLD.h"
unsigned char idata jishu1,jishu2;
unsigned char code base[8]={ 0x00,0x1a,0x33,0x4d,0x66,0x82,0x9d,0xb6 };
unsigned char code vcc[27]={ 0x00,0x0a,0x14,0x1e,0x28,0x32,0x3c,0x46,0x50,0x5a,0x64,0x6e,0x78,0x82,0x8c,0x96,0xa0,0xaa,0xb4,0xbe,0xc8,0xd2,0xdc,0xe6,0xf0,0xfa,0xff };
void scan (void)                                    //jishu1代表基极电压的扫描,jishu2代表集电极电压的扫描
{   	
		if(jishu2==0)    
	    da(0,jishu1);       //基极电压的扫描  ,开始阶段jishu2=0;jishu1=0;
 	    da(1,jishu2);      //vcc的电压扫描
  	    if(jishu1==8) 
	    jishu1=0;        //jishu1大于7时,归零
	    p17=0;    //同时开启两路da转换器
  	    if(jishu2==26)       //jishu2大于25时,归零
 	    { jishu2=0;
 	      jishu1++;	                     	    	                     
 	     }	                         
  	     else jishu2++;
}
void da(unsigned char addr,unsigned char dat)
{unsigned char b[11];
 unsigned char dat1,ji1,ji2;  
    if(addr) 
     dat1=vcc[dat]; 
    else  
     dat1=base[dat];   
     p17=1;   /*LDAC置为高电平*/
     p16=1;   /*LOAD置为高电平*/
     b[1]=addr%2;  /*分解地址*/
     addr=addr/2;     //地址有两位
     b[0]=addr%2;      //addr的地址功能完成,后面的addr用于计数          
     b[2]=1;             //RNG为1,加倍
 for(ji1=10;ji1>2;ji1--)  /*分解数据*/
  { b[ji1]=dat1%2;
    dat1=dat1/2;
   }                            //dat的数据功能完成,后面的dat用于计数
 for(ji1=11,ji2=0;ji1>0;ji1--,ji2++)   /*把地址和数据送到DAC并完成锁存*/
  { p15=1;            
    p14=b[ji2];                     
    p15=0;          
  }
    p16=0;                    /*完成DA转换*/
 // p17=0;                //用于同步LDAC脚,为零是开始转换
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -