導航:首頁 > 操作系統 > 偉福單片機8位數碼管顯示19

偉福單片機8位數碼管顯示19

發布時間:2025-09-27 04:49:30

『壹』 如何用51單片機做計算器(要求用C語言編程) 由於是新手所以沒積分 對不住各位了

給你參考一下的,我最近做的:

我的實驗板上的鍵不夠,所以只能做加法運算,而且兩數之和不能大於十。

嘿嘿,沒錯這個給某種人用的。

//**********myh.h***********有兩個文件,一個是頭文件myh.h一個是js.c

#include<reg52.h>

typedefunsignedcharuchar;

typedefunsignedintuint;

typedefbitBOOL;

//**

sbitrs=P2^6;

sbitrw=P2^5;

sbite=P2^7;

//**

ucharKey_Down(void);//返回0到12的鍵盤的編碼

voiddelay(uchar);//延時

voidInit(void);

voidWrite_Cmd(uchar);

voidWrite_Data(uchar);

BOOLIf_Busy();

//**

ucharcodeLcd_tab[]="0123456789+=";

ucharcodeKey_tab[]={0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee};

//**********

uintQ0;

uintQ1;

uintQ2;

//*************js.c********

#include"myh.h"

//**************

voidmain()

{ucharm_key;

ucharm_inc=0;

Init();

Write_Cmd(0x80);

while(1)

{Q1=0;

Q0=0;

Q2=0;

m_key=Key_Down();

Write_Cmd(0x01);

Write_Data(Lcd_tab[m_key]);

Q0=m_key;

m_key=Key_Down();

Write_Data(Lcd_tab[m_key]);

m_key=Key_Down();

Write_Data(Lcd_tab[m_key]);

Q1=m_key;

m_key=Key_Down();

Write_Data(Lcd_tab[m_key]);

Q2=Q0+Q1;

Write_Data(Lcd_tab[Q2]);

}

}

//************************

ucharKey_Down(void)

{ucharKey_number=0;

ucharm_cx;

ucharm_cy;

ucharm_cxy;

P3=0x0f;

m_cx=P3;

while(1)

{if(m_cx!=0x0f)

{delay(500);

m_cx=P3;

if(m_cx!=0x0f)

break;}

else{P3=0x0f;m_cx=P3;}

}

P3=0x0f;

m_cx=P3&0x0f;

P3=0xf0;

m_cy=P3&0xf0;

m_cxy=m_cx|m_cy;

for(Key_number=0;Key_number<12;Key_number++)

{if(m_cxy==Key_tab[Key_number])

break;

}

returnKey_number;}

//**********

voiddelay(uchartime)

{ucharj;

for(;time>0;time--)

for(j=0;j<200;j++);

}

//**************

voidinit()

{delay(10);

Write_Cmd(0x38);

delay(10);

Write_Cmd(0x38);

delay(10);

Write_Cmd(0x38);

delay(10);

Write_Cmd(0x0c);

delay(10);

Write_Cmd(0x06);

delay(10);

Write_Cmd(0x01);

}

//***********

voidWrite_Cmd(ucharcmd)

{//while(If_Busy());

e=0;

rw=0;

rs=0;

delay(4);

P0=cmd;

delay(4);

e=1;

delay(10);

e=0;

}

//***

voidWrite_Data(uchardat)

{//while(If_Busy());

e=0;

rw=0;

rs=1;

delay(4);

P0=dat;

delay(4);

e=1;

delay(10);

e=0;

}

//**

BOOLIf_Busy()

{

BOOLresult;

rw=1;

rs=0;

e=1;

delay(4);

result=(BOOL)(P2&0x80);

e=0;

returnresult;

}

『貳』 51單片機用什麼軟體編程

開源軟體mcu8051ide 功能不是一般的強,用c語言編程,界面不輸給商業軟體,而且提供多種模擬器件如:led 數碼管,矩陣數碼管(8×8)按鍵,矩陣按鍵,甚至溫度感測器。開源的沒有任何限制,完全免費,自動生成多種燒錄文件(我們一般就用.HEX的)感覺keil c弱爆了。
安裝方法,下載sdcc(mcu8051ide是基於sdcc的)和mcu 8051 ide都安裝好就可以啦,頭文件在sdcc的安裝文件夾內(include)有些關鍵字要加兩個連在一起的下劃線比如 __interrup, __code.
頭文件與keil的不通用,比如定義P0口
在keil下是: sfr P0=0x80; 在sdcc下是: __sfr __at P0 0x80; 這個P0^1的不行,但sdcc裡面有很多頭文件8051.h 80c51.h 80c52.h等等 基本滿足要求,給stc單片機編程不用改,加一點特殊的就可以。這樣優秀的開源軟體不用真的是白不用啊。

『叄』 51單片機的編程問題

1:C51編譯器如何區分位地址和位元組地址
是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0埠地址位於0x80,後者說明了P0埠的bit0,即P0.0位於位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:

C51語句: P0 = 1;

P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由於0x80單元物理上對應P0埠,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。

C51語句: P0_0 = 1;

P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行後,P0.0將輸出高阻態。而P0.1-.7不會變化。

2:C51為什麼要嵌套匯編
51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由於c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限於篇幅,不能說得很細。下面舉例:

匯編程序單獨保存一個文件,加入到工程中,函數如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);

調用時形如: retvalue = proc_a(0x11);

說明:

a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。

b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然後跳轉子程序,子程序將它加1後送回。

d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用後是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。

閱讀全文

與偉福單片機8位數碼管顯示19相關的資料

熱點內容
國際服ec伺服器為什麼進不去 瀏覽:28
偉福單片機8位數碼管顯示19 瀏覽:856
電視盒和app有什麼區別 瀏覽:217
cocos2dxlinux 瀏覽:726
西方哲學史學術版pdf 瀏覽:777
程序員接盤知乎 瀏覽:163
在線編程代碼實現 瀏覽:79
法蘭克數控機床編程角度 瀏覽:132
崩壞三游戲安卓服指的是什麼 瀏覽:701
androidbluedroid 瀏覽:675
一套源碼可以架設幾個服 瀏覽:722
程序員用一串代碼 瀏覽:59
程序員顧默顧筱柒劇情片段 瀏覽:768
深圳壓縮機廠家 瀏覽:969
51單片機c語言實例 瀏覽:313
linux命令bak 瀏覽:433
解壓無聊的視頻 瀏覽:620
35歲以上程序員有前端開發的嗎 瀏覽:352
液態壓縮空氣的時候會吸熱嗎 瀏覽:976
php的cms系統源碼 瀏覽:767