1樓:塞千山
把8031直接換成8951就行啦
管腳是一樣的
電路如圖
程式如下
#include
#define uint unsigned int#define uchar unsigned charuchar code leddata=
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
sbit oe = p1^0;
sbit eoc = p1^1;
sbit st = p1^2;
sbit clk = p1^3;
void delayms(uint ms)uchar i;
while(ms--)
for(i=0;i<120;i++);
void display_result(uchar d)p2 = 0xf7;
p0 = leddata[d%10];
delayms(5);
p2 = 0xfb;
p0 = leddata[d%100/10];
delayms(5);
p2 = 0xfd;
p0 = leddata[d/100];
delayms(5);
void main()
tmod = 0x02;
th0 = 0x14;
tl0 = 0x00;
ie = 0x82;
tr0 = 1;
p1 = 0x3f;
while(1)
st = 0;
st = 1;
st = 0;
while(eoc == 0);
oe = 1;
display_result(p3);
oe = 0;
void timer0_int() interrupt 1clk = !clk;
2樓:匿名使用者
8031 和at89c51 是相容的。就是at89c51 的容量更大點。
3樓:匿名使用者
電路應該不用改,直接把8031的31腳ea接高電平就可以了,這樣程式從內部程式存貯器執行了。你可以試一下
89c51微控制器問題,使AT89C51微控制器復位有幾種方法 復位後的狀態如何
一定要採用與運算的話,我是這樣算的 unsigned char target 待測試數unsigned char tmp,i,j 變數tmp 0x01 j 0 for i 7 i 0 i tmp 1 tmp左移一位 接下來判斷j是偶數還是奇數就能知道target裡1的個數了。回hanxingfdx ...
AT89C51的微控制器,晶振是11 0592MHZ的,算延時,要有計算步驟,謝謝
9 void delay 50us uint t 50us延遲函式 10 c 0x0d45 d3 setb c 1 c 0x0d46 ef mov a,r7 1 c 0x0d47 9400 subb a,0x00 2 c 0x0d49 ee mov a,r6 1 c 0x0d4a 9400 subb...
用c語言怎麼在微控制器at89c51上編寫延時10秒的
1 十秒對於微控制器來說是很長很長的時間了,微控制器十秒的時間什麼事都不能做,只在跑這延時程式,那是什麼概念,用中斷的話,微控制器正常執行其他程式,只是時間到了才過來處理延時以後的程式,效率不知道高了多少 2 例程 假設晶振12mhz include reg51.h unsigned int ysj...