freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于stc89c52rc單片機(jī)的簡易計(jì)算器設(shè)計(jì)(編輯修改稿)

2024-07-11 02:11 本頁面
 

【文章內(nèi)容簡介】 dis_buff。 void Delay1(uint x) { uint i,j。 for(i=0。ix。i++) for(j=0。j112。j++) 。 } uchar KeyScan(void) { uchar temp=0。 key=0。 KEYDATA=0xf0。 Delay1(1)。 temp=KEYDATA。 temp=tempamp。0xf0。 temp=~((temp4)|0xf0)。 if(temp==1)key=0。 else if(temp==2)key=1。 else if(temp==4)key=2。 else if(temp==8)key=3。 else key=16。 KEYDATA=0x0f。 Delay1(1)。 temp=KEYDATA。 temp=tempamp。0x0f。 temp=~(temp|0xf0)。 25 if(temp==1)key+=12。 else if(temp==2)key+=8。 else if(temp==4)key+=4。 else if(temp==8)key+=0。 else key=16。 if(key16) dis_buff=key。 return dis_buff。 } uchar KeyDown(void) { uchar keyFlag。 uchar temp。 KEYDATA=0xf0。 if(KEYDATA!=0xf0) { temp=KEYDATA。 Delay1(200)。 if(temp==KEYDATA) keyFlag=1。 else keyFlag=0。 } else keyFlag=0。 return keyFlag。 } include include define uchar unsigned char define uint unsigned int sbit rs=P2^5。 sbit rw=P2^6。 sbit e=P2^7。 26 sbit bf=P0^7。 void delay1ms(void) { uchar i,j。 for(i=0。i10。i++) for(j=0。j33。j++) 。 } void delay(uchar n) { uchar i。 for(i=0。in。i++) delay1ms()。 } uchar BusyTest(void) { bit result1。 rs=0。 rw=1。 e=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result1=bf。 e=0。 return result1。 } void WriteCommand(uchar mand) { while(BusyTest()==1)。 rs=0。 rw=0。 e=0。 _nop_()。 _nop_()。 P0=mand。 _nop_()。 27 e=1。 _nop_()。 e=0。 } void WriteAddress(uchar addr) { WriteCommand(addr|0x80)。 } void WriteData(uchar d) { while(BusyTest()==1)。 rs=1。 rw=0。 e=0。 _nop_()。 P0=d。 e=1。 _nop_()。 e=0。 } void LcdInit(void) { delay(15)。 WriteCommand(0x38)。 delay(5)。 WriteCommand(0x38)。 delay(5)。 WriteCommand(0x38)。 delay(5)。 WriteCommand(0x06)。 delay(5)。 WriteCommand(0x01)。 delay(5)。 WriteCommand(0x0c)。 delay(5)。 28 WriteCommand(0x0e)。 delay(5)。 } include define uchar unsigned char define uint unsigned int uchar position=0x00。 uchar string[30]。 //存放輸入的表達(dá)式 uchar code warn[]={ERROR}。 uchar code num[]={39。q39。,39。739。,39。439。,39。139。,39。039。,39。839。,39。539。,39。239。,39。=39。,39。939。,39。639。,39。339。,39。s39。,39。k39。,39。c39。,39。j39。}。 uchar Curtime[7]={50,15,13,7,5,1,8}。 uchar opr[15]。 //操作符 int opt[15]。 //操作數(shù) uchar iopt,iopr。 //記錄操作數(shù)和操作符數(shù)組的下標(biāo) bit flag=0。 //標(biāo)記是否輸入“(”操作符 循環(huán)嵌套 long result=0。 uchar pp。 //記錄表達(dá)式的字符位置 bit equal=0。 //標(biāo)記是否開始計(jì)算 int op=0。//用來記錄合成的數(shù)值 bit normal=1。//用來記錄是否正常,正常就進(jìn)行運(yùn)算,否則停止運(yùn)算 uchar operate。//用來標(biāo)記操作數(shù)和操作符的堆棧 bit equalFlag=0。//用來標(biāo)記等號是否按下,按下之后為 1 相當(dāng)于清屏 uchar shift=0。 //shift 鍵 sbit m1=P3^7。 sbit m2=P3^6。 sbit m3=P3^5。 //用來標(biāo)識 shift 鍵是否按下,按下則滅 uchar pzp=0。//用來保存修改狀態(tài)下等號的位置 uchar WriteAddress(uchar addr)。 uchar WriteData(uchar d)。 uchar WriteCommand(uchar mand)。 29 void LcdInit()。 uchar KeyDown(void)。 uchar KeyScan(void)。 void Init(void) { int i。 position=0x00。 for(i=0。i30。i++) string[i]=39。a39。 flag=0。 pp=0。 equal=0。 normal=1。 shift=0。 opr[0]=0。 iopt=0。 iopr=0。 pzp=0。 op=0。 } void DisplayNumble(long numble) //顯示結(jié)果,把結(jié)果轉(zhuǎn)換為字符串形式在輸出 { uchar numx[8]={39。a39。,39。a39。,39。a39。,39。a39。,39。a39。,39。a39。,39。a39。,39。a39。}。 uchar i=1,j=0x42。 LcdInit()。 WriteCommand(0x0c)。//關(guān)光標(biāo)顯示 WriteAddress(0x40)。 WriteData(39。=39。)。 if(numble0) { WriteAddress(0x41)。 30 WriteData(39。39。)。 numble=0numble。 } if(numble==0) {WriteAddress(0x42)。 WriteData(0+0x30)。 } else{ while(numble0) { numx[i]=numble%10。 i++。 numble=numble/10。 } i=i1。 while(numx[i]!=39。a39。) { WriteAddress(j++)。 WriteData(numx[i]+0x30)。 i。 } }} void DisplayError(void) //顯示錯誤 {uchar i。 i=0。 normal=0。 while(warn[i]!=39。\039。) { WriteAddress(0x40+i)。 WriteData(warn[i])。 i++。} } void Calculate(void) //計(jì)算 {int m。 switch(opr[iopr]%10) {case 0:flag=1。break。 case 1:m=opt[iopt]+opt[iopt]。opt[iopt++]=m。 break。 31 case 2:m=opt[iopt2]opt[iopt1]。iopt=iopt2。opt[iopt++]=m。 break。 case 3:m=opt[iopt]*opt[iopt]。opt[iopt++]=m。 break。 case 4:m=opt[iopt2]/opt[iopt1]。 if(opt[iopt1]==0) DisplayError()。 else {iopt=iopt2。 opt[iopt++]=m。} break。 }} void InsertOpr(uchar operate)reentrant {if(operate/10opr[iopr]/10||operate==10) opr[++iopr]=operate。 else { if(iopr!=0) { Calculate()。 } if(operate==15) {iopr。 if(flag==0) { InsertOpr(operate)。 } else flag=0。 //用來使遞歸結(jié)束 } else {if(iopr==0) iopr+=1。 opr[iopr]=operate。 }}} uchar KeyChar(void) {uchar ch。 uchar n=KeyScan()。 32 if(shift!=2) {switch(n) {case 0:if(shift==0)ch=39。q39。 //q 表示清除 else ch=39。w39。break。 //w 表示修改 case 12:shift=(shift+1)%3。ch=39。m39。break。 case 13:if(shift==0)ch=39。(39。 else ch=39。)39。break。 case 14:if(shift==0)ch=39。*39。 else ch=39。/39。break。 case 15:if(shift==0)ch=39。+39。 else ch=39。39。break。 default:ch=num[n]。break。 }}else ch=39。t39。 return ch。} void WriteNum(uchar num,uchar add) //顯示數(shù)字 {WriteAddress(add)。 WriteData(num/10+0x30)。 WriteAddress(add+1)。 WriteData(num%10+0x30)。 } void Display() {WriteNum(Curtime[6],0x00)。 WriteAddress(0x02)。 WriteData(39。39。)。 WriteNum(Curtime[4],0x03)。 WriteAddress(0x05)。 WriteData(39。39。)。 WriteNum(Curtime[3],0x06)。 WriteAddress(0x09)。 WriteData(39。D39。)。 33 WriteAddress(0x0a)。 WriteData(39。a39。)。 WriteAddress(0x0b)。 WriteData(39。y39。)。 WriteNum(Curtime[5],0x0d)。 WriteNum(Curtime[2],0x44)。 WriteAddress(0x46
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1