资源简介

用PCF8591做的一个AD转换程序,通过1206LCD液晶屏显示,其中数据数据转换后处理的数据有三种,程序包含I2C通信协议子程序,可以直接拿来放在工程文件下使用,很方便,程序调试通过,由于本人也是菜鸟,所以每一步都解释的很详细。

资源截图

代码片段和文件信息

#include
#include 

#define  PCF8591 0x90    //PCF8591 地址
#define uchar unsigned char 
#define uint unsigned int
sbit lcden=P2^7; //LCD使能
sbit rs=P2^6; //LCD数据/命令选择
sbit rw=P2^5; //LCD读/写选择
uchar code table[]=“    .       SZGL“;
uchar code table1[]=“   .  nw         “;

unsigned char AD_CHANNEL;
unsigned int  D[5];

/*******************************************************************
延时函数              
*******************************************************************/
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
/*******************************************************************
lcd写入指令            
*******************************************************************/
void write_com(uchar com)
{
rs=0;
rw=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*******************************************************************
lcd写入数据             
*******************************************************************/
void write_date(uchar date)
{
rs=1;
rw=0;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*******************************************************************
初始化函数,这里指LCD初始化              
*******************************************************************/
void init()
{
uchar num;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<16;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<16;num++)
{
write_date(table1[num]);
delay(5);
}

}
/*******************************************************************
显示函数,显示ad转换结果               
*******************************************************************/
void write_val(uchar adduchar date)
{
uchar geshibai;  //无符号字符型 0-255
uint tmp;  //无符号整型 0-65535
uchar qian;
tmp=date*10;
qian=tmp/510; //显示最大5000
tmp=tmp%510;
tmp=tmp*10;
bai=tmp/510;
tmp=tmp%510;
tmp=tmp*10;
shi=tmp/510;
tmp=tmp%510;
tmp=tmp*10;
ge=tmp/510;    

/* bai=date/51;  //显示最大500
tmp=date%51*10;
shi=tmp/51;
tmp=tmp%51*10;
ge=tmp/51;  */

/* bai=date/100;   //显示最大值为255
shi=date%100/10;
ge=date%100%10;   */

  
write_com(0x80+add);   //写入要输入数字的其实位置,只需写入第一个位置即可,因为每写入一个数字光标自动后移一位
write_date(0x30+qian);
delay(5);
write_date(0x30+bai);   //0-9在LCD显示要以ASC码输入,当然也可以直接输入0-9此时需要打‘‘号
delay(5);
write_date(0x30+shi);
delay(5);
write_com(0x80+add+4);
write_date(0x30+ge);
}
 

/*******************************************************************
DAC 变换 转化函数               
*******************************************************************/
bit DACconversion(unsigned char slaunsigned char c  unsigned char Val)
{
   Start_I2c();              //启动总线
   SendByte(sla);            //发送器件地址
   if(ack==0)return(0);
   SendByte(c);              //发送控制字节
   if(ack==0)return(0);
 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-06-10 09:27  0605 AD and LCD\
     文件         548  2010-06-15 16:10  0605 AD and LCD\I2C.H
     文件        8272  2014-06-10 09:27  0605 AD and LCD\I2C.LST
     文件        7919  2014-06-10 09:27  0605 AD and LCD\I2C.OBJ
     文件        4738  2014-06-08 23:13  0605 AD and LCD\I2C.c
     文件        5115  2002-04-16 14:32  0605 AD and LCD\STARTUP.A51
     文件       11679  2014-06-10 09:27  0605 AD and LCD\STARTUP.LST
     文件         749  2014-06-10 09:27  0605 AD and LCD\STARTUP.OBJ
     文件       17633  2014-06-10 09:27  0605 AD and LCD\ad and LCD
     文件       10269  2014-06-10 09:27  0605 AD and LCD\ad and LCD.LST
     文件       20818  2014-06-10 09:27  0605 AD and LCD\ad and LCD.M51
     文件       11461  2014-06-10 09:27  0605 AD and LCD\ad and LCD.OBJ
     文件        1583  2014-06-09 21:53  0605 AD and LCD\ad and LCD.Opt
     文件        2081  2014-06-05 23:56  0605 AD and LCD\ad and LCD.Uv2
     文件        5234  2014-06-09 21:47  0605 AD and LCD\ad and LCD.c
     文件        2756  2014-06-10 09:27  0605 AD and LCD\ad and LCD.hex
     文件          80  2014-06-10 09:27  0605 AD and LCD\ad and LCD.lnp
     文件         401  2014-06-10 09:27  0605 AD and LCD\ad and LCD.plg
     文件        1264  2014-06-08 23:13  0605 AD and LCD\ad and LCD_Opt.Bak
     文件           0  2014-06-05 12:08  0605 AD and LCD\ad and LCD_Uv2.Bak

评论

共有 条评论