久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機+PCF8591仿真不正確,但是燒錄到單片機中是可以的,I2C有問題?
[打印本頁]
作者:
chuangyu1897
時間:
2022-5-22 01:09
標題:
51單片機+PCF8591仿真不正確,但是燒錄到單片機中是可以的,I2C有問題?
如題,使用PCF8591的AD模式時,仿真結果是正確的,能夠讀到正確的輸出,但是使用DA功能時就不對了,使用DA時,設置輸出2.5V以上能夠正常輸出,設置輸出2.5V以下就不能正常輸出。
另外在使用AD模式時,控制字不能設置為0x00,講道理我用AD的時候模擬輸出端口使能我應該是可以置零的啊,但是置零就不對。。。
貼出原理圖和部分代碼,文件在附件中,求各位大佬解惑
PS.同樣的問題也出現在EEPROM ATC02中,也是仿真不正確燒錄到單片機中正確。。。
這兩個芯片都是I2C通信,難道是I2C的問題?
PCF8591.zip
2022-5-22 01:06 上傳
點擊文件名下載附件
84.92 KB, 下載次數: 9
代碼及仿真文件
作者:
chuangyu1897
時間:
2022-5-22 01:13
帖子長度有限制,現將部分單片機代碼貼上
#include <REGX52.H>
#include "delay.h"
//這里的延時都可以去掉,是用來調試代碼的時候方便分析的
/*********************
/*@brief 該文件定義了I2C的6個時序,可以直接調用,
/*@param 6個時序分別為起始、發送字節、接收應答、接收字節、發送應答、終止
/*@retval
*********************/
//單片機實際連接引腳
sbit scl = P3^4;
sbit sda = P3^5;
/*********************
/*@brief I2C起始條件,SCL高電平期間,SDA從高電平切換到低電平
/*@param 無
/*@retval 無
*********************/
void I2C_start() {
sda =1;
scl = 1;
delay10us();
sda =0;
delay10us();
scl =0;
}
/*********************
/*@brief I2C終止條件,SCL高電平期間,SDA從低電平切換到高電平
/*@param 無
/*@retval 無
*********************/
void I2C_stop() {
sda = 0;
scl = 1;
delay10us();
sda = 1;
}
/*********************
/*@brief I2C發送一個字節,SCL低電平期間,主機將數據位依次放到SDA線上(高位在前),然后拉高SCL,
從機將在SCL高電平期間讀取數據位,SCL高電平期間SDA不允許數據變化,
/*@param 要發送的字節
/*@retval 無
*********************/
void I2C_sendByte(unsigned char Byte) {
int i;
for(i=0; i<8; i++) {
sda = Byte&(0x80>>i);
delay10us();
scl = 1;
delay10us();//這里可能比較重要?
scl = 0;
}
}
/*********************
/*@brief I2C接收一個字節,主機在接收之前需要釋放SDA
SCL低電平期間,從機將數據位依次放到SDA線上(高位在前),然后拉高SCL,
主機將在SCL高電平期間讀取數據位,所以SCL高電平期間SDA不允許數據變化
/*@param 無
/*@retval 接收到的數據
*********************/
unsigned char I2C_receiveByte() {
unsigned char Byte=0x00;
int i;
sda =1;
for(i=0; i<8; i++) {
scl=1;
if(sda)(Byte|=(0x80>>i));
delay10us();
scl=0;
delay10us();
}
return Byte;
}
/*********************
/*@brief I2C發送應答
/*@param 數據0表示應答,數據1表示非應答
/*@retval 無
*********************/
void I2C_sendACK(bit ack) {
sda = ack;
delay10us();
scl = 1;
scl =0;
}
/*********************
/*@brief I2C接收應答,主機在接收之前,需要釋放SDA
/*@param 數據0表示應答,數據1表示非應答
/*@retval 接收到的應答標志
*********************/
bit I2C_receiveACK() {
bit ack;
sda =1;
delay10us();
scl =1;
ack = sda;
delay10us();
scl =0;
return ack;
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产成人网
|
国产成人综合网
|
国产精品呻吟
|
四虎黄色网址
|
三级网站视频
|
欧美一级黄色大片
|
免费av一区二区三区
|
国产又色又爽又黄又免费
|
国产伦理一区二区
|
久久久免费观看
|
在线观看av的网站
|
免费看黄色网址
|
色中色综合
|
www.国产.com
|
日韩视频一区二区
|
亚洲一级大片
|
亚洲一区二区在线播放
|
亚洲国产精品久久久久久久
|
四虎在线观看视频
|
日韩欧美在线一区
|
天天干天天草
|
天堂av网站
|
在线免费看毛片
|
国产午夜三级
|
久久精品欧美一区二区
|
亚洲精品色图
|
秋霞av在线
|
超碰人人人
|
91黄色免费
|
午夜精品视频在线观看
|
成人动漫在线看
|
一本一道久久a久久精品蜜桃
|
伊人影院综合
|
日韩高清中文字幕
|
特级黄色片
|
亚洲777
|
久久爱综合
|
www.夜夜骑
|
日韩久久网
|
欧美视频一二三区
|
www.夜夜
|