久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4662|回復: 7
打印 上一主題 下一主題
收起左側

AT24C02都出來的數一直不變是什么原因???求大神指點,經測試1602顯示是沒問題的

[復制鏈接]
回帖獎勵 30 黑幣 回復本帖可獲得 30 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
#define uchar unsigned char
#define uint unsigned int
sbit SCK=P3^6;       //串行時鐘輸入
sbit SDA=P3^7;      //串行數據輸入/輸出
void Start()//起始信號
{
SDA=1;
delay5us();//延時要大于4.7us,取5u
SCK=1;
delay5us();
SDA=0;
delay5us();
}
void Stop()//結束信號
{
SDA=0;
delay5us();//延時要大于4.7us,取5us
SCK=1;
delay5us();
SDA=1;
delay5us();
}
void Ack()//應答信號
{
SDA=0;
SCK=0;
delay5us();
SCK=1;
delay5us();
SCK=0;
}
/*SCK在高電平期間,SDA被拉為低電平表示應答*/
bit WaitAck()//等待應答信號
{
SDA=1;//釋放總線
delay5us();
SCK=1;
delay5us();
if(SDA)//無應答
{
  SCK=0;
  Stop();
  return 0;
}
else
{
  SCK=0;
  return 1;
}
}
void InputOneByte(uchar dat)//寫入一個字節AT24C02
{
uchar iVal;
for(iVal=0;iVal<8;iVal++)
{
  SCK=0;
  delay5us();
  SDA=(dat & 0x80)>>7;//將數據的最高位放入SAD,如0011 0010
  //則將末位0送入SDA
  delay5us();
  SCK=1;
  dat<<=1;//數據左移一位,準備存第二位數
}
SCK=0;
}
uchar OutputOneByte()//讀取一個字節
{
uchar iVal;
uchar x;//保存讀取到的值
SDA=1;//釋放總線,以讓SDA線轉由接收設備(AT24C02)控制
for(iVal=0;iVal<8;iVal++)
{
  SCK=0;
  delay5us();
  SCK=1;
  delay5us();
  x<<=1;//從低位開始讀
  if(SDA)
   x |= 0x01;//將SDA上的數據通過按位“或“運算存入x中
}
SCK=0;
return x;
}
void WriteAddAndDate(uchar add,uchar dat)
{
Start();//啟動
InputOneByte(0xA0);//寫入器件AT24C02地址
WaitAck();//等待器件應答
InputOneByte(add);//存放數據的地址
WaitAck();//等待器件應答
InputOneByte(dat);//要保存的數據
WaitAck();//等待器件應答
Stop();
}
uchar ReadDataFromDatAdd(uchar DatAdd)//從某個地址讀取數據
{
uchar Data;
Start();
InputOneByte(0xA0);//寫入器件AT24C02地址
WaitAck();//等待器件應答
InputOneByte(DatAdd);//存放數據的地址
WaitAck();//等待器件應答
Start();
InputOneByte(0xA1);//讀取數據的器件地址
WaitAck();//等待器件應答
Data=OutputOneByte();//d讀取數據
Stop();
return Data;
}
void main()
{
  float AT;
/**********AT24C02轉換***********/
  LCD_Initial();
  GotoXY(0,0);//設定顯示位置
  WriteAddAndDate(0X01,0X85);
  AT=ReadDataFromDatAdd(0X00);
  sprintf(table2,"The data is:%f",AT);//將數據寫入table2中
  Print(table2);//打印
  while(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:303735 發表于 2018-4-17 15:22 | 只看該作者
我之前也遇到這樣的情況,軟件工程師也說不出啥原因,后面把24C02的通訊腳上拉電阻加10K就可以了。不知是不是你沒接上拉電阻。
回復

使用道具 舉報

板凳
ID:301302 發表于 2018-4-18 19:15 | 只看該作者
liqingyong 發表于 2018-4-17 15:22
我之前也遇到這樣的情況,軟件工程師也說不出啥原因,后面把24C02的通訊腳上拉電阻加10K就可以了。不知是不 ...

加上了,很煩[
回復

使用道具 舉報

地板
ID:285031 發表于 2018-5-6 11:53 | 只看該作者
兩個問題,
一是AT24C02芯片連接要有電阻。
二是每寫完數據要有10ms的延時,用于芯片把數據轉化成不可擦除的。這段時間芯片不會響應讀寫信號。

附錄是datasheet,重點應該高亮了。主要看時序和write/read operation

00_AT24C02A.pdf

184.52 KB, 下載次數: 19

芯片手冊

回復

使用道具 舉報

5#
ID:268717 發表于 2018-10-2 16:52 | 只看該作者
讀出來的數據是I5對吧?
回復

使用道具 舉報

6#
ID:211052 發表于 2018-10-2 22:37 | 只看該作者
單步走,走到口線輸出的地方停下量下口線電壓。或者用示波器看波形。
回復

使用道具 舉報

7#
ID:387733 發表于 2018-10-3 07:57 | 只看該作者
/*SCK在高電平期間,SDA被拉為低電平表示應答*/
這個是錯誤的,這個是START的定義。



可參考單片機論壇  http://www.zg4o1577.cn/bbs/dpj-136469-1.html
回復

使用道具 舉報

8#
ID:63090 發表于 2018-10-4 21:57 | 只看該作者
先檢查硬件是否接線正確,再檢查軟件程序接口調動對不對,如果都正確,就是軟件時序處理不當導致的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕视频在线 | 国产免费一区二区三区 | 91精品国产91久久久久久密臀 | 国产精品一区一区三区 | h片在线观看网站 | 久久高清 | 精品一区二区三区不卡 | 人人草人人干 | 99热在线播放 | 精品日韩在线 | 久草青青草 | 噜噜噜色网 | 午夜久久久久久久久久一区二区 | 日韩中文不卡 | 91精品国产91久久久久久吃药 | 黄片毛片在线观看 | 国产综合精品一区二区三区 | 91久久国产综合久久 | 中文字幕一区二区三区在线观看 | 国产精品视频网 | 日韩在线精品视频 | 人人人人干 | 亚洲精品乱码久久久久v最新版 | 国产精品日韩欧美 | 色播久久久 | 日本黄色影片在线观看 | 国产激情第一页 | аⅴ资源新版在线天堂 | 亚洲成人三级 | 高清国产一区二区 | 中文字幕一区在线观看视频 | 精品少妇一区二区三区日产乱码 | 成人av一区二区三区 | 中文字幕国产第一页 | 亚洲一区二区久久 | 国产黄色在线观看 | 亚洲aⅴ一区二区 | 精品国产乱码久久久久久牛牛 | 日韩欧美国产一区二区三区 | 日韩亚洲欧美综合 | 日韩有码一区 |