欢迎来到天天文库
浏览记录
ID:47201297
大小:72.50 KB
页数:3页
时间:2019-08-23
《PCF8591的DA转换程序详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/*-----------------------------------------------名称:PCF8591DA实验公司:赣西科技职业学院QQ:983043571编写:寄意寒星日期:2012.9.20时间:22:06修改:无内容:scl=P3^0;//IIC的时钟线sda=P3^1;//IIC的数据线分别接J26-7和J26-6上。J23-5接J26-5上LED会逐渐变亮后有逐渐变暗------------------------------------------------*/#include2、51.h>#include#defineucunsignedchar#defineuiunsignedintsbitscl=P3^0;//IIC的时钟线sbitsda=P3^1;//IIC的数据线uccodeshuju[]={0x0f,0x1e,0x2d,0x3c,0x4b,0x5a,0x69,0x78,0x87,0x96,0xa5,0xb4,0xc3,0xd2,0xe1,0xf0,0xff,//让电压逐渐升高的数据0xff,0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x963、,0x87,0x78,0x69,0x5a,0x4b,0x3c,0x2d,0x1e,0x0f,//让电压逐渐下降的数据};voiddelayus(void){;;}voiddelay(uim){uii,j;for(i=0;i<120;i++)for(j=0;j4、elayus();}voidstop(void)//IIC的停止信号{sda=0;delayus();scl=1;delayus();sda=1;delayus();}voidack(void)//IIC的应答信号{uci;scl=1;delayus();while((sda==1)&(i<255))i++;scl=0;delayus();}voidwrite_byte(ucdate)//向IIC写一个字节的数据{uci,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;sc5、l=0;delayus();sda=CY;delayus();scl=1;delayus();}scl=0;delayus();sda=1;delayus();}voidwrite(ucadd,ucsda,ucdate){start();write_byte(add);//0x90表示器件地址为000的写操作ack();write_byte(sda);//0x40表示四路单数入00通道无增益的器件控制指令ack();write_byte(date);//表示DA数据ack();stop();}voidmain(vo6、id){uci;init();//I2C总线初始化while(1){for(i=0;i<34;i++){write(0x90,0x40,shuju[i]);//向PCF8591里写入数据(即电压量的数据);delay(100);}}}
2、51.h>#include#defineucunsignedchar#defineuiunsignedintsbitscl=P3^0;//IIC的时钟线sbitsda=P3^1;//IIC的数据线uccodeshuju[]={0x0f,0x1e,0x2d,0x3c,0x4b,0x5a,0x69,0x78,0x87,0x96,0xa5,0xb4,0xc3,0xd2,0xe1,0xf0,0xff,//让电压逐渐升高的数据0xff,0xf0,0xe1,0xd2,0xc3,0xb4,0xa5,0x96
3、,0x87,0x78,0x69,0x5a,0x4b,0x3c,0x2d,0x1e,0x0f,//让电压逐渐下降的数据};voiddelayus(void){;;}voiddelay(uim){uii,j;for(i=0;i<120;i++)for(j=0;j4、elayus();}voidstop(void)//IIC的停止信号{sda=0;delayus();scl=1;delayus();sda=1;delayus();}voidack(void)//IIC的应答信号{uci;scl=1;delayus();while((sda==1)&(i<255))i++;scl=0;delayus();}voidwrite_byte(ucdate)//向IIC写一个字节的数据{uci,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;sc5、l=0;delayus();sda=CY;delayus();scl=1;delayus();}scl=0;delayus();sda=1;delayus();}voidwrite(ucadd,ucsda,ucdate){start();write_byte(add);//0x90表示器件地址为000的写操作ack();write_byte(sda);//0x40表示四路单数入00通道无增益的器件控制指令ack();write_byte(date);//表示DA数据ack();stop();}voidmain(vo6、id){uci;init();//I2C总线初始化while(1){for(i=0;i<34;i++){write(0x90,0x40,shuju[i]);//向PCF8591里写入数据(即电压量的数据);delay(100);}}}
4、elayus();}voidstop(void)//IIC的停止信号{sda=0;delayus();scl=1;delayus();sda=1;delayus();}voidack(void)//IIC的应答信号{uci;scl=1;delayus();while((sda==1)&(i<255))i++;scl=0;delayus();}voidwrite_byte(ucdate)//向IIC写一个字节的数据{uci,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;sc
5、l=0;delayus();sda=CY;delayus();scl=1;delayus();}scl=0;delayus();sda=1;delayus();}voidwrite(ucadd,ucsda,ucdate){start();write_byte(add);//0x90表示器件地址为000的写操作ack();write_byte(sda);//0x40表示四路单数入00通道无增益的器件控制指令ack();write_byte(date);//表示DA数据ack();stop();}voidmain(vo
6、id){uci;init();//I2C总线初始化while(1){for(i=0;i<34;i++){write(0x90,0x40,shuju[i]);//向PCF8591里写入数据(即电压量的数据);delay(100);}}}
此文档下载收益归作者所有