c語言單片機簡易計算,單片機c語言的運算符有哪些

本文目錄一覽:

單片機簡單C語言問題,實現一個個位加法計算器

你的問題應該出現在鍵盤處理不完善造成的,稍微修改了一下你試試。

#include reg52.h

#define uchar unsigned char

#define unit unsigned int

#define OPdata P0 //十位數據口

#define OPdata1 P1//個位數據口

sbit se0=P3^6;//十位選擇

sbit se1=P3^7;//個位選擇

sbit Q=P2^6;

sbit W=P2^5;

sbit E=P2^4;

uchar cis; //按下鍵盤次數

uchar jia1; //加數1

uchar jia2; //加數2

uchar z; //中轉數

uchar shi; //十位數

uchar ge; //個位數

uchar s; //譯碼結果

uchar j; //譯碼結果

uchar sum; //加法結果

uchar keytemp;

void judge(uchar m) //數碼顯像管譯碼

{

switch (m)

{

case 0: s=0x3F; break;

case 1: s=0x06; break;

case 2: s=0x5B; break;

case 3: s=0x4F; break;

case 4: s=0x66; break;

case 5: s=0x6D; break;

case 6: s=0x7D; break;

case 7: s=0x07; break;

case 8: s=0x7F; break;

case 9: s=0x6F; break;

}

}

void judge1(uchar h) //十位數碼顯像管譯碼

{

switch (h)

{

case 0: j=0x3F; break;

case 1: j=0x06; break;

}

}

void judgecis()

{

if (cis==1)

{

jia1=z;

ge=z;

shi=0;

}

else if (cis==2)

{

jia2=z;

ge=z;

shi=0;

cis=0;

}

}

void jiafa(uchar m,uchar n) //加法

{

sum=m+n;

if (sum=10)

{

ge=sum-10;

shi=1;

}

else

{

ge=sum;

shi=0;

}

}

void main()

{

cis=0;

jia1=0;

jia2=0;

shi=0;

ge=0;

s=0;

j=0;

P2=0XFF;

se0=0;//開啟十位

se1=0;//開啟個位

OPdata=0x3f;//十位

OPdata1=0x3f;//個位

while (1)

{

Q=0;

keytemp=P2;

switch (keytemp)

{

case 0xbb: z=3; cis++;while(P2==0xbb); break;

case 0xbd: z=6; cis++;while(P2==0xbd); break;

case 0xbe: z=9; cis++;while(P2==0xbe); break;

case 0xb7: //等於號

jiafa (jia1,jia2); cis=0; break;

}

Q=1;

W=0;

keytemp=P2;

switch (keytemp)

{

case 0xde: z=8; cis++;while(P2==0xde); break;

case 0xdd: z=5; cis++;while(P2==0xdd); break;

case 0xdb: z=2; cis++;while(P2==0xdb); break;

case 0xd7: z=0; cis++;while(P2==0xd7); break;

}

W=1;

E=0;

keytemp=P2;

switch (keytemp)

{

case 0xee: z=7; cis++;while(P2==0xee); break;

case 0xed: z=4; cis++;while(P2==0xed); break;

case 0xeb: z=1; cis++;while(P2==0xeb); break;

}

judgecis();

judge(ge);

OPdata1=s;

judge1(shi);

OPdata=j;

E=1;

}

}

51單片機中如何用C語言實現兩個測量量的相加減

51單片機中用C語言實現兩個測量量的相加減,是最簡單的計算了,設兩個測量的數據分別為x1,x2,總量為x0,則相加計算,x0=x1+x2,相減計算,x0=x1-x2。

大神,求51單片機做簡易計算器的那個c語言程序

以下是我編的簡易計算器程序,基本成功

//4*4鍵盤檢測程序,按下鍵後相應的代碼顯示在液晶屏上

//顯示5位後,第6次顯示操作符號

//再顯示下一個數

// 鍵值與功能對應表

//鍵值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

//功能 0 1 2 3 4 5 6 7 8 9 + – × ÷ = 清零

#includereg52.h

sbit beep=P2^3;

sbit lcden=P3^4;

sbit rs=P3^5;

sbit rw=P3^6;

#define uint unsigned int

#define ulint unsigned long int

#define uchar unsigned char

#define lcddata P0

ulint bb,dd,ee,ff;

uchar d,flag1;

uchar fd1,fd2;

uchar b1=16,b2=16,b3=16,b4=16,b5=16;

uchar d1=16,d2=16,d3=16,d4=16,d5=16;

uchar f1=16,f2=16,f3=16,f4=16,f5=16,f6=16,f7=16,f8=16,f9=16,f10=16;

uchar key,keyval,c,temp;

void Delay1ms(uint i) //1ms延時程序

{

uint j;

for(;i0;i–)

{

for(j=0;j125;j++)

{;}

}

}

void write_com(uchar com)

{

lcddata=com;

rs=0;

rw = 0;

lcden=0;

Delay1ms(10);

lcden=1;

Delay1ms(10);

lcden=0;

}

void write_date(uchar date)

{

lcddata=date;

rs=1;

rw=0;

lcden=0;

Delay1ms(10);

lcden=1;

Delay1ms(10);

lcden=0;

}

void init2()

{

rw=0;

write_com(0x38);

Delay1ms(10);

write_com(0x0f);

Delay1ms(10);

write_com(0x06);

Delay1ms(10);

write_com(0x01);

Delay1ms(10);

}

void display1(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第1個數顯示程序

{

init2();

write_com(0x80);//第1行,第1字

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

}

void display2(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第2個數顯示程序

{

write_com(0x88);//第1行,第1字

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

}

void display3(uchar a) //操作符號顯示程序

{

write_com(0x86);//第1行,第1字

Delay1ms(10);

switch(a)

{

case 10:

write_date(‘+’);

Delay1ms(10);

case 11:

write_date(‘-‘);

Delay1ms(10);

case 12:

write_date(‘x’);

Delay1ms(10);

case 13:

write_date(‘/’);

Delay1ms(10);

}

}

void display4(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5,uchar A6,uchar A7,uchar A8,uchar A9,uchar A10,uchar A11,uchar A12) //結果顯示程序

{

write_com(0x80+0x40);//第2行,第1字

Delay1ms(10);

if (flag1==0)

{

write_date(‘-‘);

}

else write_date(‘+’);

Delay1ms(10);

write_date(0x30+A1);

Delay1ms(10);

write_date(0x30+A2);

Delay1ms(10);

write_date(0x30+A3);

Delay1ms(10);

write_date(0x30+A4);

Delay1ms(10);

write_date(0x30+A5);

Delay1ms(10);

write_date(0x30+A6);

Delay1ms(10);

write_date(0x30+A7);

Delay1ms(10);

write_date(0x30+A8);

Delay1ms(10);

write_date(0x30+A9);

Delay1ms(10);

write_date(0x30+A10);

Delay1ms(10);

write_date(‘.’);

Delay1ms(10);

write_date(0x30+A11);

Delay1ms(10);

write_date(0x30+A12);

Delay1ms(10);

}

uchar keyscan()

{

key=16;

P3=0xef;//P3.7輸出1個低電平

temp=P3; //讀取

temp=temp0x0f;//屏蔽高4位

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xee:

key=0;

break;

case 0xed:

key=4;

break;

case 0xeb:

key=8;

break;

case 0xe7:

key=12;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0xdf;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xde:

key=1;

break;

case 0xdd:

key=5;

break;

case 0xdb:

key=9;

break;

case 0xd7:

key=13;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0xbf;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xbe:

key=2;

break;

case 0xbd:

key=6;

break;

case 0xbb:

key=10;

break;

case 0xb7:

key=14;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

P3=0x7f;

temp=P3;

temp=temp0x0f;

if(temp!=0x0f)

{

Delay1ms(10);

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0x7e:

key=3;

break;

case 0x7d:

key=7;

break;

case 0x7b:

key=11;

break;

case 0x77:

key=15;

break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp0x0f;

beep=0;

}

beep=1;

}

}

return(key);

}

void main()

{ while(1)

{

c=1;

while(c6)//輸入第1個5 位數

{

keyval=keyscan();

if(keyval10)

{

switch(c)

{

case 1:b1=keyval; break;

case 2:b2=keyval; break;

case 3:b3=keyval; break;

case 4:b4=keyval; break;

case 5:b5=keyval; break;

}

c++;

}

display1(b1,b2,b3,b4,b5);

}

while(c==6) //輸入計算符號

{

keyval=keyscan();

if((keyval=10)(keyval14)) //可去一層括號,因邏輯運算優先級較低

{

d=keyval;

}

c=1;

display3(d);

}

while(c6) //輸入第2個5 位數

{

keyval=keyscan();

if(keyval10)

{

switch(c)

{

case 1:d1=keyval; break;

case 2:d2=keyval; break;

case 3:d3=keyval; break;

case 4:d4=keyval; break;// 除

case 5:d5=keyval; break;

}

c++;

}

display2(d1,d2,d3,d4,d5);

}

bb= b1*10000+b2*1000+b3*100+b4*10+b5;

dd=d1*10000+d1*1000+d3*100+d4*10+d5;

while(keyval!=14) //等待按下”=”

{

keyval=keyscan();

}

Delay1ms(10);

switch(d)

{

case 10:ee=bb+dd; break;//+

case 11:

flag1=1;

if(bb=dd)

{

ee=bb-dd; //-

flag1=0;

}

else ee=dd-bb;

break;

case 12:ee=bb*dd; break;//*可能會溢出

case 13:ee=bb/dd; //除法小數部分會丟失,保留2位

ff=bb%dd;

fd1=ff*10/dd;

fd2=ff*100/dd%10;

break;

}

f10=ee/1000000000%10;

f9=ee/100000000%10;

f8=ee/10000000%10;

f7=ee/1000000%10;

f6=ee/100000%10;

f5=ee/10000%10;

f4=ee/1000%10;

f3=ee/100%10;

f2=ee/10%10;

f1=ee%10;

display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2);

while(keyval!=15)

{

keyval=keyscan();

}

b1=0;b2=0;b3=0;b4=0;b5=0;

d1=0;d2=0;d3=0;d4=0;d5=0;

bb=0;dd=0;ee=0;

init2();

}

}

c語言設計一個簡單的計算器程序

#include<stdio.h>//計算器

voidmenu()//自定義的菜單界面

printf("--------------------\n");

printf("請輸入你的選擇\n");

printf("1.+\n");

printf("2.-\n");

printf("3.*\n");

printf("4./\n");

printf("--------------------\n");

intmain()

inti=0;

intj=0;

intnum=0;//計算結果存放在nun

intselect=0;//選擇的選項存放在select

do//do-while先執行再判斷循環條件,即可實現重複計算功能

menu();//打印出菜單界面

scanf("%d",&select);//輸入你的選項

printf("請輸入計算值:");

scanf("%d%d",&i,&j);//輸入要計算的數值

switch(select)

case1:

printf("%d+%d=%d\n",i,j,num=i+j);//實現加法功能

break;

case2:

printf("%d-%d=%d\n",i,j,num=i-j);//實現減法功能

break;

case3:

printf("%d*%d=%d\n",i,j,num=i*j);//實現乘法功能

break;

case4:

printf("%d-%d=%d\n",i,j,num=i/j);//實現除法功能

break;

default:

printf("輸入有誤重新選擇");

break;

}while(select);

return0;

運行結果:

擴展資料:

return表示把程序流程從被調函數轉向主調函數並把表達式的值帶回主調函數,實現函數值的返回,返回時可附帶一個返回值,由return後面的參數指定。

return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/272284.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-17 13:55
下一篇 2024-12-17 13:55

相關推薦

  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論