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

正文內容

畢業(yè)設計論文-基于單片機的電子的計算器-資料下載頁

2024-11-14 19:51本頁面

【導讀】本系統(tǒng)可進行簡易的計。算信息,還具有時間校準等功能。該電路采用AT89S52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用3~5V. 本系統(tǒng)硬件部分由AT89S52單片機、LCD1602液晶屏、鍵盤、指示燈系統(tǒng)等部分構成。軟件部分在keil環(huán)境下。用C51語言編寫,包括簡易計算顯示等。展,猶如雨后春筍般的變化。電子產品的更新速度快就不足驚奇了。是比較的常見的電子產品之一。如何使計算器技術更加的成熟,充分利用已有的軟件和硬件。因此設計一款簡單實用的計算器會有很大的實際意義。問題的能力,為單片機應用和開發(fā)打下良好的基礎。計LCD和單片機的接口電路,以及利用單片機對液晶模塊的驅動和操作;AT89S52處理器,配備相應的外設。密度和性能提高很快,其集成密度最高達500萬門/片以上,系統(tǒng)性能可達200MHz??删幊踢壿嬈骷I域中獨占鰲頭。

  

【正文】 LCD_Clear() { while(statuscheck())。 32 clearscreen()。 } //準備工作完成 // //計算器 // uchar pute(uchar key1,i) { signed char m,n=1。 uchar c。 //新讀取的字符 static char act。 //操作符臨時存儲 long result。 //結果 static long num1=0。 //被加數(shù) static long num2=0。 //加數(shù) char str[4][4]={{39。739。,39。839。,39。939。,39。/39。}, {39。439。,39。539。,39。639。,39。*39。}, {39。139。,39。239。,39。339。,39。39。}, {39。c39。,39。039。,39。=39。,39。+39。}}。 //數(shù)字存儲數(shù)組 數(shù)字 當前讀入字符 signed char num[11],add[2]。 // m=(key1amp。0xf0)。 m=m/16。 m=m1。 n=key1amp。0x0f。 n=n1。 c=str[m][n]。 // if((c == 39。+39。)||(c == 39。39。)||(c == 39。*39。)||(c == 39。/39。)) { act=c。 //int atoi(const char *buffer) //將字符串轉換成整形數(shù)返回 num1=atoi(num)。 //memset原 型 //extern void *memset(void *buffer, int c, int count) //把 buffer所指向內存區(qū)域的前 count個字節(jié)設置成字符 c memset(num,39。\039。,11)。 //讀取數(shù)字,清除數(shù)組 33 memset(add,39。\039。,2)。 //清除 } else if(c == 39。=39。) { num2=atoi(num)。 switch(act) { case39。+39。: if(k==0) {result=num1+num2。k++。break。} else {result+=num2。k++。break。} case39。39。: if(k==0) {result=num1num2。k++。break。} else {result=num2。k++。break。} case39。*39。: if(k==0) {result=num1*num2。k++。break。} else {result*=num2。k++。break。} case39。/39。: if(k==0) {result=num1/num2。k++。break。} else {result/=num2。k++。break。} } } else if(c == 39。c39。) { act=0。 num1=num[0]。 num1=num[8]。 memset(num,39。\039。,11)。 memset(add,39。\039。,2)。 34 num1=num[0]。 num1=num[8]。 k=0。 } else { add[0]=c。 strcat(num,add)。 } longdelay(350)。 switch(key1) //顯示部分 { case 0x11: dispcharacter(0,i,39。739。)。i++。break。 case 0x12: dispcharacter(0,i,39。839。)。i++。break。 case 0x13: dispcharacter(0,i,39。939。)。i++。break。 case 0x14: dispcharacter(0,i,39。/39。)。i++。break。 case 0x21: dispcharacter(0,i,39。439。)。i++。break。 case 0x22: dispcharacter(0,i,39。539。)。i++。break。 case 0x23: dispcharacter(0,i,39。639。)。i++。break。 case 0x24: dispcharacter(0,i,39。*39。)。i++。break。 case 0x31: dispcharacter(0,i,39。139。)。i++。break。 case 0x32: dispcharacter(0,i,39。239。)。i++。break。 case 0x33: dispcharacter(0,i,39。339。)。i++。break。 case 0x34: dispcharacter(0,i,39。39。)。i++。break。 case 0x41: clearscreen()。 break。 case 0x42: dispcharacter(0,i,39。039。)。i++。break。 case 0x44: dispcharacter(0,i,39。+39。)。i++。break。 case 0x43: dispcharacter(0,i,39。=39。)。i++。 //輸出結果 // m=result/10000。 if(m!=0 || result == 0) //5位 不為 0 或 結果為 0 { if(result == 0) n=1。 else n=0。 35 dispcharacter(0,i++,m+39。039。)。 } m=result/1000%10。 if(m!=0 || n==0) //4位不為 0 或 存在 5位 dispcharacter(0,i++,m+39。039。),n=0。 m=result/100%10。 if(m!=0 || n==0) //3位不為 0 或 存在 4位 dispcharacter(0,i++,m+39。039。),n=0。 m=result/10%10。 if(m!=0 || n==0) //2位不為 0 或 存在 3位 dispcharacter(0,i++,m+39。039。),n=0。 m=result%10。 if(m!=0 || n==0) //1位不為 0 或 存在 2位 dispcharacter(0,i++,m+39。039。)。 break。 } return i。 } //主函數(shù) // void main() { char key1,i,col=0。 //col 列標 //名字學號數(shù)組 uchar code name[15]={BaiMingRui},num[15]={20202321905}。 //液晶初始化 initLCD()。 //顯示名字 while(name[col]) dispcharacter(0,col,name[col]),col++。 col=0。 //顯示學號 while(num[col]) dispcharacter(1,col,num[col]),col++。 start:initpindata(0)。 P2=0X00。 i=0。 36 scan:key1=key_scan()。 i=pute(key1,i)。 if(key1==0x41) goto start。 else goto scan。 } define uint unsigned int define uchar unsigned char sbit pinRS=P2^0。 sbit pinRW=P2^1。 sbit pinE=P2^2。 define pindata P0 define clearscreen() writeinstruc(0x01) define cursorreturn() writeinstruc(0x02) define inputmode(temp) writeinstruc(temp) //temp取值如下: //0x04:減量方式,不移位 //0x05:減量方式,移位 //0x06:增量方式,不移位 //0x07:增量方式,移位 define dispcontrol(temp) writeinstruc(temp) //temp取值如下: //0x08:顯示關,光標關,閃爍關 //0x0c:顯示關,光標關,閃爍關 //0x0d:顯示開,光標關,閃爍開 //0x0e:顯示開,光標開,閃爍關 //0x0f:顯示開,光標開,閃爍開 define dispshift(temp) writeinstruc(temp) //temp取值如下: //0x10:光標左移 //0x14:光標右移 //0x18:顯示整體左移 //0x1c:顯示整體右移 define functionset(temp) writeinstruc(temp) 37 //temp取值如下: //0x20:4位, 1行, 5*7 //0x24:4位, 1行, 5*10 //0x28:4位, 2行, 5*7 //0x2c:4位, 2行, 5*10 //0x30:8位, 1行, 5*7 //0x34:8位, 1行, 5*10 //0x38:8位, 2行, 5*7 //0x3c:8位, 2行, 5*10 define setCGRAM_Add(address) writeinstruc(0x40|address) define setDDRAM_Add(address) writeinstruc(0x80|address)//短延時 //void shortdelay(uchar i)。 //長延時 //void longdelay(uint i)。 //P2口初始化 //void initP2(bit i)。 //寄存器選擇信號 //void setRS(bit i)。 //讀寫操作控制 //void setRW(bit i)。 //使能信號 //void setE(bit i)。 //讀 BF以及 AC的值 //uint read_BF_AC()。 //判忙 //bit statuscheck()。 //寫指令函數(shù) //void writeinstruc(uint instruc)。 //寫數(shù)據(jù)到 RAM //void writedata(uint data1)。 //從 RAM中讀數(shù)據(jù)函數(shù) //uint readdata(void)。 //顯示程序 X為行號, Y為列號, date為要顯示的數(shù)據(jù) //void dispcharacter(int x,uint y,uint data1)。 //LCD復位函數(shù) //void LCDreset()。
點擊復制文檔內容
公司管理相關推薦

畢業(yè)設計(論文)-基于mc51單片機的簡易計算器設計-資料下載頁

【總結】電》