版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、功能實現(xiàn):利用1602液晶顯示器實現(xiàn)整數(shù)和小數(shù)的加法、減法、乘法、除法、開根號的運算。第一行顯示輸入的數(shù)據(jù),第二行顯示運算結(jié)果。二、proteus仿真圖三、操作說明:每次運算完后必須按一下清零鍵,該系統(tǒng)才會重新開始執(zhí)行。四、程序:#include#include#define int unsigned int#define char unsigned charvoid inti(); /初始化void delay(); /延時void anjian(); /按鍵顯示數(shù)字和符號,第一個數(shù)存在a內(nèi)void sheji(); /設(shè)計顯示完后的參數(shù)void jsab();/存儲兩個輸入數(shù)void
2、jisuanxs(); /計算顯示void chufa(); /除法計算部分void chengfa(); /乘法計算部分void jianfa(); /減法計算部分void jiafa();/加法計算部分void kaigenhao();/開根號運算部分void benshenxs(); /一個數(shù)本事顯示void leijixiaoshudian(); /小數(shù)點的累計void fenli(); /計算后的結(jié)果分離,以便于顯示void ql(); /清屏void xshuju(char shuju); /寫數(shù)據(jù)void xzhiling(char zhiling); /寫指令/char num
3、=i love you; 顯示在屏幕上int sz=0,1,2,3,4,5,6,7,8,9,+,-,*,/,=,.;char xs=enrro;sbit e=p22;sbit rs=p20;sbit rw=p21;sbit key0=p26;sbit key1=p27;sbit key2=p30;sbit key3=p31;sbit key4=p32;sbit key5=p33;sbit key6=p34;sbit key7=p35;sbit key8=p36;sbit key9=p37;sbit key10=p13;sbit key11=p14;sbit key12=p15;sbit key
4、13=p16;sbit key14=p17;sbit qingling=p10;sbit key15=p11;sbit key16=p12;int fuhao,num,m,n,q,w,s,fuhao1,fuhao2,fuhao3,fuhao4,fuhao5,xiaoshu,cishu1,cishu2;int i,g,j,p;int t,f,h;float a,b,c,d;void main() inti();a=0;b=0;c=1.0;d=1.0;q=0;fuhao=0;xiaoshu=0;cishu1=0;cishu2=0;num=0;xzhiling(0x80+0x01);/*第一行初始地
5、址為80h,后面加03h是指在距屏幕的起始處3空格出開始顯示,第二行的初始地址為80h+40h */ while(1) while(fuhao=0) /沒有計算過程,輸入數(shù)據(jù)后,按等于號即輸出結(jié)果 anjian(); benshenxs(); while(fuhao1=1) /加法anjian();jiafa();while(fuhao2=1)/減法anjian();jianfa();while(fuhao3=1) /乘法anjian();chengfa();while(fuhao4=1) /除法anjian();chufa(); while(fuhao5=1) /開根號anjian();ka
6、igenhao();ql(); /清零void inti()/初始化 e=0; xzhiling(0x38);/功能設(shè)定,根據(jù)所用的液晶顯示器來決定的,即開顯示 xzhiling(0x0f); /0x0f設(shè)置顯示功能開,有光標(biāo)且閃爍,如為0x0e則為光標(biāo)不閃,如為0x0c則無光標(biāo) xzhiling(0x06); /光標(biāo)設(shè)置為寫入字符后自動右移一位,和整屏左移 xzhiling(0x01); /清屏 void delay() /延時int i,j;for(i=5;i0;i-)for(j=110;j0;j-);void xzhiling(char zhiling) /寫指令rs=0;rw=0;e=
7、0;p0=zhiling;delay();e=1;delay();e=0;void xshuju(char shuju) /寫數(shù)據(jù)rs=1;rw=0;e=0;p0=shuju;delay();e=1;delay();e=0;void anjian() /按鍵顯示數(shù)字和符號,第一個數(shù)存在a內(nèi)if(key0=0) /0 delay(); if(key0=0) xshuju(sz0); delay(); while(!key0); num=0; jsab(); leijixiaoshudian(); if(key1=0) /1 delay(); if(key1=0) xshuju(sz1); del
8、ay(); while(!key1); num=1; jsab(); leijixiaoshudian(); if(key2=0) /2 delay(); if(key2=0) xshuju(sz2); delay(); while(!key2); num=2; jsab(); leijixiaoshudian(); if(key3=0) /3 delay(); if(key3=0) xshuju(sz3); delay(); while(!key3); num=3; jsab(); leijixiaoshudian(); if(key4=0) /4 delay(); if(key4=0) x
9、shuju(sz4); delay(); while(!key4); num=4; jsab(); leijixiaoshudian(); if(key5=0) /5 delay(); if(key5=0) xshuju(sz5); delay(); while(!key5); num=5; jsab(); leijixiaoshudian(); if(key6=0) /6 delay(); if(key6=0) xshuju(sz6); delay(); while(!key6); num=6; jsab(); leijixiaoshudian(); if(key7=0) /7 delay(
10、); if(key7=0) xshuju(sz7); delay(); while(!key7); num=7; jsab(); leijixiaoshudian(); if(key8=0) /8 delay(); if(key8=0) xshuju(sz8); delay(); while(!key8); num=8; jsab(); leijixiaoshudian(); if(key9=0) /9 delay(); if(key9=0) xshuju(sz9); delay(); while(!key9); num=9; jsab(); leijixiaoshudian(); if(ke
11、y10=0) /加 delay(); if(key10=0) xshuju(sz10); delay(); fuhao=1; xiaoshu=0; num=0; fuhao1=1; while(!key10); if(key11=0) /減 delay(); if(key11=0) xshuju(sz11); delay(); fuhao=1; xiaoshu=0; num=0; fuhao2=1; while(!key11); if(key12=0) /乘 delay(); if(key12=0) xshuju(sz12); delay(); fuhao=1; xiaoshu=0; num=
12、0; fuhao3=1; while(!key12); if(key13=0) /除 delay(); if(key13=0) xshuju(sz13); delay(); fuhao=1; xiaoshu=0; fuhao4=1; num=0; while(!key13); if(key15=0)/小數(shù)點 delay();if(key15=0)xiaoshu=1;xshuju(sz15);delay();while(!key15); if(key16=0) /開根號 delay();if(key16=0)xshuju(0xe8);delay();fuhao5=1;fuhao=1;while(
13、!key16); void jsab()/存儲兩個輸入數(shù)if(fuhao=0)a=a*10+num;elseb=b*10+num;void fenli() /計算后的結(jié)果分離,以便于顯示if(q=0&q=10&q=100&q1000)m=q/100;n=q%100/10;s=q%10;void jisuanxs() /計算顯示 if(key14=0)delay();if(key14=0)xzhiling(0x80+0x40);if(q=0)xshuju(szq);delay();sheji();if(q=10&q=100&q0;j-)c=c*0.1;a=a*c;q=(int) a;t=(int
14、)(a/0.01);h=t%100/10;f=t%10;if(h!=0)|(f!=0)/判斷小數(shù)部分不為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs();xshuju(sz15);delay();xshuju(szh);delay();xshuju(szf);delay();xzhiling(0x0c);else /小數(shù)部分為0時,顯示xzhiling(0x80+0x40);fenli();jisuanxs(); if(cishu1=0) q=a;xzhiling(0x80+0x40);fenli();jisuanxs();delay(); ql(); vo
15、id jiafa()/加法計算部分 if(key14=0) delay();if(key14=0)if(cishu1!=0)|(cishu2!=0) for(j=cishu1;j0;j-)c=c*0.1;a=a*c; for(p=cishu2;p0;p-)d=d*0.1;b=b*d;q=(int)(a+b);t=(int)(a+b)/0.01);h=t%100/10;f=t%10;if(h!=0)|(f!=0)/判斷小數(shù)部分不為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs();xshuju(sz15);delay();xshuju(szh);delay();
16、xshuju(szf);delay();xzhiling(0x0c);else/小數(shù)部分為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs(); if(cishu1=0)&(cishu2=0) q=a+b;xzhiling(0x80+0x40);fenli();jisuanxs();delay(); ql(); void jianfa() /減法計算部分 if(key14=0) delay();if(key14=0)if(cishu1!=0)|(cishu2!=0) for(j=cishu1;j0;j-)c=c*0.1;a=a*c; for(p=cishu2;p
17、0;p-)d=d*0.1;b=b*d;q=(int)(a-b);t=(int)(a-b)/0.01);h=t%100/10;f=t%10;if(h!=0)|(f!=0) /判斷小數(shù)部分不為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs();xshuju(sz15);delay();xshuju(szh);delay();xshuju(szf);delay();xzhiling(0x0c);else /小數(shù)部分為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs(); if(cishu1=0)&(cishu2=0) q=a-b;xz
18、hiling(0x80+0x40);fenli();jisuanxs();delay(); ql(); void chengfa() /乘法計算部分 if(key14=0) delay();if(key14=0)if(cishu1!=0)|(cishu2!=0) for(j=cishu1;j0;j-)c=c*0.1;a=a*c; for(p=cishu2;p0;p-)d=d*0.1;b=b*d;q=a*b;t=(int)(a*b)/0.01);h=t%100/10;f=t%10;if(h!=0)|(f!=0)/小數(shù)部分不為0時顯示xzhiling(0x80+0x40);fenli();jisu
19、anxs();xshuju(sz15);delay();xshuju(szh);delay();xshuju(szf);delay();xzhiling(0x0c);else /小數(shù)部分為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs(); if(cishu1=0)&(cishu2=0) q=a*b;xzhiling(0x80+0x40);fenli();jisuanxs();delay(); ql(); void chufa() /除法計算部分 if(key14=0) delay();if(key14=0)if(cishu1!=0)|(cishu2!=0)
20、for(j=cishu1;j0;j-)c=c*0.1;a=a*c; for(p=cishu2;p0;p-)d=d*0.1;b=b*d;q=a/b;t=(int)(a/b)/0.01);h=t%100/10;f=t%10;if(h!=0)|(f!=0)/小數(shù)部分不為0時顯示xzhiling(0x80+0x40);fenli();jisuanxs();xshuju(sz15);delay();xshuju(szh);delay();xshuju(szf);delay();xzhiling(0x0c);else /小數(shù)部分為0時顯示xzhiling(0x80+0x40);fenli();jisuan
21、xs(); if(cishu1=0)&(cishu2=0) q=a/b;t=(int)(a/b)/0.01);/小數(shù)部分保留兩位h=t%100/10; /分離小數(shù)部分f=t%10;if(key14=0)delay();if(key14=0)if(h!=0)|(f!=0)xzhiling(0x80+0x40);fenli();jisuanxs();xshuju(sz15);delay();xshuju(szh);delay();xshuju(szf);delay();xzhiling(0x0c);elsexzhiling(0x80+0x40);fenli();jisuanxs();delay();ql(); /小數(shù)分離顯示部分if(b=0) /分母為0時,顯示enrro表示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度特種設(shè)備安全檢驗合同
- 江蘇省東臺市實驗初中2025屆中考試題猜想生物試卷含解析
- 2025年商業(yè)銀行服務(wù)項目可行性研究報告
- 《碳基載體催化劑的制備及電化學(xué)性能研究》
- 2025屆江西省宜春市第九中學(xué)中考五模生物試題含解析
- 病理練習(xí)試題
- 《基于3S的快速交通對城市近郊綠地影響及對策研究》
- 2024版物業(yè)服務(wù)續(xù)約協(xié)議模板版B版
- 家庭健康飲食與瘦身文化與習(xí)慣的影響
- 學(xué)校物業(yè)服務(wù)的未來發(fā)展趨勢預(yù)測
- 2025年湖南出版中南傳媒招聘筆試參考題庫含答案解析
- 2025年度商用廚房油煙機(jī)安裝與維護(hù)服務(wù)合同范本3篇
- 2024年03月恒豐銀行2024年春季招考畢業(yè)生筆試歷年參考題庫附帶答案詳解
- 網(wǎng)絡(luò)安全系統(tǒng)運維方案
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之14:“6策劃-6.3變更的策劃”(雷澤佳編制-2025B0)
- 2024年特厚板行業(yè)現(xiàn)狀分析:中國特厚板市場占總銷售量45.01%
- 2025年中國地質(zhì)調(diào)查局烏魯木齊自然資源綜合調(diào)查中心招聘19人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 中國兒童重癥監(jiān)護(hù)病房鎮(zhèn)痛和鎮(zhèn)靜治療專家共識2024解讀
- 音樂老師年度總結(jié)5篇
- 2024版商標(biāo)許可使用合同與商標(biāo)授權(quán)協(xié)議3篇
- 學(xué)生學(xué)情分析報告范文
評論
0/150
提交評論