用51微控制器先在EEPROM中寫入資料,然後讀取資料顯示在數碼管上

時間 2021-09-10 12:13:00

1樓:匿名使用者

protues 庫中,如果你沒有新增特殊庫,自帶庫的51是沒有e2prom的。。。。

2樓:匿名使用者

#include

#include

#define uchar unsigned charsbit sda=p2^0;

sbit scl=p2^1;

sbit duan=p2^6;

sbit wei=p2^7;

uchar smg_duan=;

void delay()

void start()

void stop()

void ack()

void noack()

void iicwr_byte(uchar dat)else

dat=dat<<1;

delay();

scl=1;

delay();

scl=0;

delay();

} sda=1;

delay();

}uchar iicre_byte()

scl=0;

delay();

}return dat;

}void init()

void iicwrite_byte(uchar add,uchar dat)

uchar iicread_byte(uchar add)void main()

51微控制器 用eeprom掉電儲存 兩位數碼管秒錶 數碼管無法正常顯示

3樓:找她的那個他

整體問題不大,就是在中斷中使用write_add()會有機會和在主迴圈中的read_add()相遇,那就會導致讀取失敗,建議加入應答判斷,當然重新整理快影響不大

不知樓主在單獨執行儲存程式時是怎麼除錯的,還有來回閃的頻率是低於一秒的麼?

樓主可以試下在關閉中斷的情況下,通過在主迴圈中通過延時函式,先寫入,再讀出,然後顯示,讓它迴圈顯示看看是否有錯,如果顯示不正常,那就是儲存的時序沒弄好,

比如在write_add()函式最後面加上1ms的延時,確儲存儲晶片儲存資料,防止寫完後接著讀出錯

樓主還可以換個別的儲存地址試一下看看,

確保接線正確

4樓:匿名使用者

大概看了一下

不要在定時器中斷裡面呼叫write_add函式,請在main函式裡面呼叫。

5樓:匿名使用者

做過電子鐘掉電儲存,有兩個問題1.頻繁讀寫eeprom,秒級的話,不用一個月,器件上所有地址都達到讀寫極限。2,執行讀寫操作的過程,佔用機器週期不短。

此時數碼管大約有0.1秒熄滅。

至於中斷函式和主函式的重入警告,可以將write_add(),read_add()內部呼叫的相同的函式,做成兩個內容相同的函式,分開來呼叫。

51微控制器串列埠通訊:把上位機接收的資料在數碼管顯示

6樓:

建議把這幾行**

n=sbuf;while(! ri);ri=0;

sbuf=n;while(! ti);ti=0;

p0=dis[n];

dislay();

改為while(1)

另外,如果是實際製作電路,p0口和數碼管之間的七根連線中間要串入7個電阻才比較好,阻值在幾百歐,例如200~510歐之間。

7樓:匿名使用者

求個程式

求個程式

求個程式

用51微控制器調光,51微控制器pwm調光電路

你的電路構思不太好,目的一樣但是電路構成的方法有很多的,你這種辦法比較耗費元件,並且因為過多的原件而導致可靠性下降。實現你的要求有簡單的辦法,就是採用微控制器產生可控的pwm pwm pulse width modulation 控制 脈衝寬度調製技術。通過對一系列脈衝的寬度進行調製,來等效地獲得所...

51微控制器的pc值怎麼算,51微控制器中如何進行相對定址?pc值怎麼計算?rel又怎麼給

鈺瀟 a 50h sp 50h 51h 30h 52h 50h pc 5030h a 50h sp 50h 因為在程式中,sp減了兩次,後來又加了兩次,在程式最後ret有在返回的時候減了兩次,即地址出棧,故最終結果是50h。51h 30h 52h 50h 因為ret指令返回時,出棧的結果是高地址 5...

51微控制器中按鍵程式用C怎麼寫

這個太簡單了吧,記住寫程式定時器要一直跑,建立一個時基,像個手錶的時間一樣要一直跑,即有time 125us,time 1ms,time 100ms,time 1s,time 1min,time 1hour等時間變數建立時基一直走。其它程式可以分時掃描也可以輪流掃描,不能停留死等,像電腦裡的程式一樣...