版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include msp430x14x.h#include double r;#include duoxiangshi.h#define RS_1 P3OUT|=BIT0#define RS_0 P3OUT&=BIT0#define RW_1 P3OUT|=BIT1#define RW_0 P3OUT&=BIT1#define E_1 P3OUT|=BIT2#define E_0 P3OUT&=BIT2#define DATA P4OUT#define data_dir P4DIR#define KEYDIR P5DIR#define KEYOUT P5OUT#define KEYIN P5I
2、N#define led P2OUT#define LED1 P2DIR=0XFF;#define uchar unsigned char#define uint unsigned intchar table116=1;char table216= ;char flag;int flag1;/*延時(shí)*/void delay(void) unsigned int i,j; for(i=0;i50;i+) for(j=0;j10;j+) ; /*消抖延時(shí)*/void delay_key(void) int i,j; for(i=0;i500;i+) for(j=0;j100;j+) ; void
3、delayms(uchar ms) int i,j; for(i=0;ims;i+) for(j=0;j157;j+);int key_column_scan() int a; P5DIR = 0xff; P5OUT = 0x0f; P5DIR = 0X00; a = P5IN; switch(a) case 0x8f:return 4; case 0x4f:return 3; case 0x2f:return 2; case 0x1f:return 1; int key_line_scan() int a,column,key=-1,line; P5DIR = 0xff; P5OUT = 0
4、xf0; P5DIR = 0X00; a = P5IN; if(a!=0xf0) column = key_column_scan(); switch(a) case 0xf8:line=4;break; case 0xf4:line=3;break; case 0xf2:line=2;break; case 0xf1:line=1;break; key=(line-1)*4+column; delay_key(); /延時(shí)消抖 for(;) P5DIR = 0xff; /軟件消抖 P5OUT = 0xf0; P5DIR = 0X00; a = P5IN; if(a=0xf0) break;
5、return key;/給LCD1602寫命令void write_com(uchar com) RS_0; RW_0; E_0; DATA=com; E_1; delayms(5); E_0; /給LCD1602寫數(shù)據(jù)void write_data(uchar data) RS_1; RW_0; E_0; DATA=data; E_1; delayms(5); E_0; /初始化LCD1602void lcd_init() data_dir=0xff; P3DIR|=BIT0+BIT1+BIT2; write_com(0x38); /設(shè)置16*2顯示,雙行,5*7點(diǎn)陣 write_com(0
6、x01); /清屏 write_com(0x06); /字符進(jìn)入模式;屏幕不動(dòng),字符后移 write_com(0x0f); /顯示開,光標(biāo)開,光標(biāo)閃爍 write_com(0x80); /在指定位置顯示字符串void lcd_string(uchar r,uchar c,uchar *str) /r表示行數(shù),C表示在R行的第幾位,*str表示輸入的字符串 uchar i=0; uchar DDRAM=0x80,0xc0; /LCD1602兩行的起始地址 write_com(DDRAMr|c); /設(shè)置顯示的起始位置 for(i=0;stri&i16;i+) /輸出字符串 write_data(
7、stri); for(;i16;i+) write_data( ); /一行不足時(shí)用空格填充int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; int key,m,i=0; flag=0; flag1=0; lcd_init(); while(1) key=key_line_scan(); if(key!=-1) switch(key) case 1:write_data(7);table1+i=7;break; case 2:write_data(8);table
8、1+i=8;break; case 3:write_data(9);table1+i=9;break; case 4: write_data(+);write_com(0x80+i); while(1) key=key_line_scan(); if(key!=-1) if(key=4) flag1+; if(flag1%4=0) write_data(+);write_com(0x80+i); else if(flag1%4=1) write_data(-);write_com(0x80+i); else if(flag1%4=2) write_data(*);write_com(0x80+
9、i); else if(flag1%4=3) write_data(/);write_com(0x80+i); else if(key!=4) if(flag1%4=0) write_data(+);table1+i=+;flag1=0; else if(flag1%4=1)write_data(-);table1+i=-;flag1=0; else if(flag1%4=2) write_data(*);table1+i=*;flag1=0; else if(flag1%4=3) write_data(/);table1+i=/;flag1=0; switch(key) case 1:wri
10、te_data(7);table1+i=7;break; case 2:write_data(8);table1+i=8;break; case 3:write_data(9);table1+i=9;break; case 5:write_data(4);table1+i=4;break; case 6:write_data(5);table1+i=5;break; case 7:write_data(6);table1+i=6;break; case 8: if(flag=0)write_data(#);table1+i=#;break; else write_data();table1+i
11、=;break; case 9:write_data(1);table1+i=1;break; case 10:write_data(2);table1+i=2;break; case 11:write_data(3);table1+i=3;break; case 12: if(flag=0)lcd_string(1,0,shift );flag=1;write_com(0x80+i);break; else lcd_string(1,0,);flag=0;write_com(0x80+i);break; case 13: if(flag=0)write_data(0);table1+i=0;
12、break; else write_data();table1+i=(;break; case 14: if(flag=0)write_data(.);table1+i=.;break; else write_data();table1+i=);break; case 15:write_data(=);table1+i=;break; case 16: if(flag=0)write_com(0x80+i-1);i-; else WDTCTL=0X00; if(table1i=) cal(table1); sprintf(table2,%lf,r); lcd_string(1,6,table2
13、); break; break; case 5:write_data(4);table1+i=4;break; case 6:write_data(5);table1+i=5;break; case 7:write_data(6);table1+i=6;break; case 8: if(flag=0)write_data(#);table1+i=#;break; else write_data();table1+i=;break; case 9:write_data(1);table1+i=1;break; case 10:write_data(2);table1+i=2;break; ca
14、se 11:write_data(3);table1+i=3;break; case 12: if(flag=0)lcd_string(1,0,shift );flag=1;write_com(0x80+i);break; else lcd_string(1,0,);write_com(0x80+i);flag=0;break; case 13: if(flag=0)write_data(0);table1+i=0;break; else write_data();table1+i=(;break; case 14: if(flag=0)write_data(.);table1+i=.;bre
15、ak; else write_data();table1+i=);break; case 15:write_data(=);table1+i=;break; case 16: if(flag=0)write_com(0x80+i-1);i-; else WDTCTL=0X00; if(table1i=) cal(table1); sprintf(table2,%g,r); lcd_string(1,6,table2); duoxiangshi.h/*=*函數(shù)名:多項(xiàng)式運(yùn)算*函數(shù)功能描述:實(shí)現(xiàn)多項(xiàng)式運(yùn)算*參數(shù):char型數(shù)組*返回值:double結(jié)果=*/#include#include#inc
16、ludevoid cal(char a) int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0; char nibo20=0,zhan215=0;/存放運(yùn)算符 double x,n,l,z=0,zhan315=0,0;/暫存結(jié)果 typedef struct double d1; int d2; dd; typedef struct dd data20; int top; zhan1;/存儲(chǔ)數(shù)據(jù) zhan1 *num; num=(zhan1 *)malloc(sizeof(zhan1); num-top=0; while(ai!=) if(ai=0)&(ai=0&aj=9) j
17、+; j-; for(k=i;k=0&aj=9) j+;/轉(zhuǎn)出小數(shù)點(diǎn)后的連續(xù)數(shù)字 j-; for(k=i;kdata+num-top.d1=x;/將x保存在zhan1里的結(jié)構(gòu)體組中,根據(jù)zhan1里的top值決定結(jié)構(gòu)體組中的哪一個(gè),保存在結(jié)構(gòu)體的d1里,top+1 num-datanum-top.d2=+cnt;/根據(jù)棧中的top值,將datatop中的d2賦值cnt,cnt加1cnt決定為第幾個(gè)數(shù) nibo+t1=0+num-datanum-top.d2; nibot1+1=0; /如果是數(shù)字那么就保存到結(jié)構(gòu)體里 的dd數(shù)組里的 第二個(gè)成員里 else if(ai=() zhan2+t2=a
18、i;/存儲(chǔ)( i+;/讀下一個(gè)字符 else if(ai=) j=t2;/j位于當(dāng)前。棧2中未存儲(chǔ)運(yùn)算符的位置 while(zhan2j!=()/查找前半個(gè)括號(hào) nibo+t1=zhan2j;/記錄()之間所有的運(yùn)算符 nibot1+1=0; j-; t2=j-1;/t2位于前半個(gè)括號(hào)的前一個(gè)位置 i+; else if(ai=+) while(t20&zhan2t2!=()/將+前的運(yùn)算符存入nibo nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=-) if(ai-1=$) a0=0; i=0; else if(a
19、i-1=() ai-1=0; ai-2=(; i=i-2; t2-; else while(t20&zhan2t2!=() nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=*|ai=/) while(zhan2t2=*|zhan2t2=/|zhan2t2=|zhan2t2=#) nibo+t1=zhan2t2; nibot1+1=0; t2-; zhan2+t2=ai; i+; else if(ai=|ai=#) while(zhan2t2=|zhan2t2=#) nibo+t1=zhan2t2; nibot1+1=0
20、; t2-; zhan2+t2=ai; i+; /開始計(jì)算 while(t20) /將棧2中所有的運(yùn)算符存入nibo中 nibo+t1=zhan2t2; nibot1+1=0; t2-; j=1;t3=0; while(j=0&niboj!=&niboj!=#)/ for(i=1;itop;i+) if(int)(niboj-0)=num-datai.d2) m=i; break; zhan3+t3=num-datam.d1; else if(niboj=+) zhan3t3-1=zhan3t3-1+zhan3t3; t3-; else if(niboj=-) zhan3t3-1=zhan3t
21、3-1-zhan3t3; t3-; else if(niboj=*) zhan3t3-1=zhan3t3-1*zhan3t3; t3-; else if(niboj=/) zhan3t3-1=zhan3t3-1/zhan3t3; t3-; else if(niboj=) zhan3t3-1=pow(zhan3t3-1,zhan3t3); t3-; else if(niboj=#) zhan3t3=sqrt(zhan3t3); j+; r=zhan3t3; malloc.h/*alloc.hmemory management functions and variables.Copyright (
22、c) Borland International 1987,1988All Rights Reserved.*/#if _STDC_#define _Cdecl#else#define _Cdeclcdecl#endif#ifndef _STDDEF#define _STDDEF#ifndef _PTRDIFF_T#define _PTRDIFF_T#ifdefined(_LARGE_) | defined(_HUGE_) | defined(_COMPACT_)typedef longptrdiff_t;#elsetypedef intptrdiff_t;#endif#endif#ifndef _SIZE_T#define _SIZE_Ttypedef unsigned size_t;#endif#endif#if
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒橙子榨汁課程設(shè)計(jì)
- 機(jī)械手擦玻璃課程設(shè)計(jì)
- 白族民居彩繪課程設(shè)計(jì)
- 硬件課程設(shè)計(jì)論文范文
- 2025年圓管涵采購(gòu)合同
- 2025版綠色礦山建設(shè)采石場(chǎng)承包合同模板3篇
- 2025年度合同金額追加及合作期限延長(zhǎng)及服務(wù)內(nèi)容拓展協(xié)議3篇
- 用人單位聘用員工合同2025年
- 工程項(xiàng)目建設(shè)居間合同2025年
- 2025版家電銷售與品牌推廣合同模板3篇
- 康復(fù)評(píng)定試題及答案
- 屋頂光伏發(fā)電項(xiàng)目EPC工程總承包售后服務(wù)保證措施
- 2022-2023學(xué)年廣東省深圳市鹽田區(qū)六年級(jí)上學(xué)期期末英語(yǔ)試卷
- 24秋國(guó)家開放大學(xué)《勞動(dòng)關(guān)系與社會(huì)保障實(shí)務(wù)》形考任務(wù)1-4參考答案
- 部編版歷史初二上學(xué)期期末試題與參考答案(2024-2025學(xué)年)
- 2024-2025學(xué)年外研版小學(xué)四年級(jí)上學(xué)期期末英語(yǔ)試卷及解答參考
- 國(guó)際貿(mào)易實(shí)務(wù)(雙語(yǔ))學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年HOP重大事故預(yù)防-人與組織安全績(jī)效手冊(cè)
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 2024年中國(guó)非標(biāo)測(cè)試設(shè)備市場(chǎng)調(diào)查研究報(bào)告
- 2024年江蘇蘇州幼兒師范高等??茖W(xué)校招考聘用教師及專職輔導(dǎo)員7人高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
評(píng)論
0/150
提交評(píng)論