用微控制器做簡單計算器需要什麼模電知識

2021-03-04 00:06:31 字數 7757 閱讀 9848

1樓:匿名使用者

除了會微控制器程式設計外,基本上全是數位電路知識

除微控制器,需要的器件只有液晶顯示屏或數碼管加一些按鍵

請問如何用微控制器做一個簡單的計算器?需要哪些元器件和材料?

2樓:匿名使用者

簡單元器件=微控制器+1602lcd+4*4鍵盤

3樓:匿名使用者

硬體就樓下說的那些。下面就是軟體的編寫

怎樣用51微控制器做計算器啊?

4樓:浮生梔

1、首先第一步就是要進行查詢元器件並放入到原理圖中,如下圖所示。

2、接著就是要進行原理圖連線根據網路標籤的方式即可。

3、然後就是要進行編寫程式,

程式源**

#include #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];

uchar operator;

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

4、最後一步就是進行驗證正確後編譯程式在protues中載入hex觀察**結果是否正確,如下圖所示。

擴充套件資料

電腦**:

微控制器有了開發系統,隨著微控制器的發發系統也在不斷髮展。 keil是一種先進的微控制器整合開發系統。

它代表著組合語言微控制器開發系統的最新發展,首創多項便利技術,將開發的程式設計/**/除錯/寫入/加密等所有過程一氣呵成,中間不須任何編譯或彙編。

功能特性:

1、可以**63k程式空間,接近64k 的16位地址空間;

2、可以**64kxdata 空間,全部64k 的16位地址空間;

3、可以真實**全部32 條io腳;

4,完全相容keilc51 uv2 除錯環境,可以通過uv2 環境進行單步,斷點, 全速等操作;

5、可以使用c51語言或者a**組合語言進行除錯 ;

6、可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;

7、可選 使用使用者晶振,支援0-40mhz晶振頻率;

8、片上帶有768位元組的xdata,您可以在**時選 使用他們,進行xdata 的**;

9、可以**雙dptr 指標;

10、可以**去除ale 訊號輸出. ;

11、自適應300-38400bps 的所有波特率通訊;

12、體積非常細小,非常方便插入到使用者板中.插入時緊貼使用者板,沒有連線電纜,這樣可以有效地減少執行中的干擾,避免**時出現莫名其妙的故障;

13、**插針採用優質鍍金插針,可以有效地防止日久生鏽,選擇優質園腳ic插座,保護**插針,同時不會損壞目標板上的插座. ;

14,**時監控和使用者**分離,不可能產生不能**的軟故障;

15、rs-232介面不計成本採用max202積體電路,序列通訊穩定可靠,絕非一般三極體的簡易電路可比。

功能限制:

**器佔用微控制器串列埠及定時器2,與keil c(pc)通訊,故不支援串列埠及定時器2 的**功能。全速執行時微控制器串列埠及定時器2 可供使用者使用。

使用方法:

1、將**器插入需**的使用者板的cpu插座中,**器由使用者板供電;

2、將**器的序列電纜和pc機接好,開啟使用者板電源;

5樓:心脆任憔悴

1、硬體**圖

硬體部分比較簡單,當鍵盤按鍵按下時它的那一行、那一列的埠為低電平。因此,只要掃描行、列埠是否都為低電平就可以確定是哪個鍵被按下。

2、主程式流程圖

程式的主要思想是:將按鍵抽象為字元,然後就是對字元的處理。將運算元分別轉化為字串儲存,操作符儲存為字元形式。

然後呼叫***pute()函式進行計算並返回結果。具體程式及看註釋還有流程圖。

3、altium designer畫的pcb圖

4、程式源**

#include #include

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar operand1[9], operand2[9];

uchar operator;

void delay(uint);

uchar keyscan();

void disp(void);

void buf(uint value);

uint ***pute(uint va1,uint va2,uchar optor);

uchar code table = ;

uchar dbuf[8] = ;

void delay(uint z)

uchar keyscan()

while((p1 & 0xf0) != 0xf0) ;}

}p1 = 0xfd;

while((p1 & 0xf0) != 0xf0)

while((p1 & 0xf0) != 0xf0);}

}p1 = 0xfb;

while((p1 & 0xf0) != 0xf0)

while((p1 & 0xf0) != 0xf0);}

}p1 = 0xf7;

while((p1 & 0xf0) != 0xf0)

while((p1 & 0xf0) != 0xf0);}

}return skey;

}void main()

while(1)

}else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/')

else if(ckey == '=')}}

else if(ckey == '$')

}disp();}}

uint ***pute(uint va1,uint va2,uchar optor)

return value;

}void buf(uint val)

else

for(i = 7; val > 0; i--)

for( ; i > 0; i--)

dbuf[i] = 10;

}void disp(void)}

6樓:該使用者未註冊

|程式和電路圖如下:

#include

#define din p1_0

#define clk p1_2

#define load p1_1

unsigned char key_h,key_l,key_code;

unsigned char ads,i,j,m,n;

unsigned char n_bit=0;

unsigned char flag=0;

unsigned char key_num[16]=;

unsigned char data1[6]=;

unsigned char data2[6]=;

unsigned int result;

void delay(unsigned int n)void send(unsigned char addr,unsigned char dat)

i+=8;

}load=1;

}void clear()

void calc()

clear();

for(n=6;n>1;n--)

flag=0;

while((p2&0xf0)!=0xf0);

}void keyscan() //鍵盤掃描程式key_code=key_l*4+key_h;

switch(key_code)

send(n_bit--,key_num[key_code]);

if(!flag)

data1[n_bit]=key_num[key_code];

else

7樓:金尚精品

^剛做過,發給你參考下

這是原理圖

51微控制器簡易計算器程式:

#include

#include

#define uchar unsigned char

#define uint unsigned int

//---------定義引腳--------------------

bit clr=0;

bit ok=0;

bit xiaoshu=0;

bit jiego=0;

bit first_1=1;

bit first_2=1;

sbit dout = p3^2;

sbit load = p2^0;

sbit din = p2^1;

sbit dclk = p2^2;

sbit beer=p0^1;

sbit lcd1602_rs=p2^3;

sbit lcd1602_rw=p2^4;

sbit lcd1602_e=p2^5;

//---------定義變數--------------------

uchar ch451_key=0xff;

uchar yun_sign;

uchar xiabiao=0;

uchar tab[32];

uchar tab1=;

uchar tab2=;

uchar tab3=;

float opr_1=0,opr_temp=0,end=0,a;

//---------宣告函式--------------------

void ch451_init(void); //ch451初始化

void ch451_write(uint ***mand);//寫命令或資料到ch451

uchar ch451_read(void); //讀按鍵值

uchar get_char(void);

void lcd_init(void);//初始化;

void delay(unsigned int k);//延時程式

void lcd_inter_***mand(unsigned char ***mand);//寫入控制字

void lcd_inter_dat(unsigned char dat);//寫入要顯示的資料

void set_xy(unsigned char x,unsigned char y);//找地址

void write(unsigned char date);//寫入字元

void lcdbusy();//查忙時

void display(void);

void spec(void);

void get_end(void);

void hun_he(uchar n);

//-------- 主函式----------------------

void main()

lcd_inter_***mand(0xc0);//從第二行開始顯示

for(i=0;i<=14;i++)

delay(0xffff);

delay(0xffff);

lcd_inter_***mand(0x01);

while(1)}}

//----------子函式--------------------

void hun_he(uchar n)

}else

break;

}default:break;}

}void ch451_init(void)//ch451初始化

void ch451_write(uint ***mand)//寫命令或資料到ch451

load = 1;

ex0 = 1;

}uchar ch451_read(void)//讀按鍵值

load = 1;

key = 0;

for(i=0;i<7;i++) //從ch451讀出按鍵值

ex0 =1;

return key;

}void ex0_isr(void)interrupt 0 //中斷程式

temp=get_char();

if(temp)

if(xiabiao>=16)lcd_inter_***mand(0xc0);//若大於16,則從第2行開始顯示

if(ok) get_end();

beer=0;

delay(3000);

beer=1;

}uchar get_char(void)

return dis;

}void spec(void) //特殊功能鍵

break; //左移

case 0x54:lcd_inter_***mand(0x14);break; //右移

default:break;}}

void delay(unsigned int k)//延時程式

void lcd_inter_***mand(unsigned char ***mand)//寫入控制字

void lcd_init(void)//初始化;

void lcd_inter_dat(unsigned char dat)//寫入要顯示的資料

void lcdbusy()//查忙

void display(void) //轉化在lcd上顯示計算結果

}else }}

void get_end(void)//計運算元程式

switch(tab[i])

else hun_he(lianji_sign);opr_1=0;lianji_sign='+'; break;

case '-': xiaoshu=1;yun_sign='-';if(opr_temp==0)else hun_he(lianji_sign);opr_1=0;lianji_sign='-'; break;

case 'x': xiaoshu=1;yun_sign='x';if(opr_temp==0)else hun_he(lianji_sign);opr_1=0;lianji_sign='*';break;

case '/': xiaoshu=1;yun_sign='/';if(opr_temp==0)else hun_he(lianji_sign);a=opr_1;opr_1=0;lianji_sign='/';break;

case '=':

switch(yun_sign)//進行運算

}else

break;

}default:break;

}ok=1;//開始進行顯示,標誌位置1

xiabiao=0;//小數的標誌位清零

break;

default:break;

}i++;

if(xiao_flag)//表示小數

xiao_flag=0; }}

if(fu_flag)}}

opr_1=0;

opr_temp=0;

xiabiao=0;

xiaoshu=1;}

應用51微控制器語言編寫簡易計算器程式實驗目的在51實驗小系統硬體基礎上,在keil開發環境

在51實驗小系統硬體基礎上,首先得有一個51實驗小系統硬體。判斷好矩陣鍵盤就好了,思路並不難啊 怎樣用51微控制器做計算器啊?1 首先第一步就是要進行查詢元器件並放入到原理圖中,如下圖所示。2 接著就是要進行原理圖連線根據網路標籤的方式即可。3 然後就是要進行編寫程式,程式源 include inc...

微控制器串列埠驅動,微控制器和電腦用串列埠連線需要驅動嗎?

電腦串列埠是不支援熱插拔,當你把微控制器連結到com口後,可以使用一個串列埠除錯助手來看看 是否有資料從微控制器裡出來,先把波特率設定低一些,如果能接受到亂碼 就表示微控制器與串列埠在通訊,具體的你可以調節波特率,資料位長度,停止位長度,校驗方式等選項來修正亂碼 兄弟,你用的是usb轉串列埠吧?1....

做微控制器實習,求個51的簡單程式

不知道你是要組合語言的還是c語言的,我給你兩個吧。mov a,0feh mov p1,a 讓第一個亮。acall delay 呼叫延時子程式,下面的都是一樣的。main mov a,0fdh loop mov p1,a acall delay rl a 左移。jb loop 判斷是否亮了,沒有,就跳...