在上一篇中,我們已經(jīng)說(shuō)過(guò)了基于51單片機(jī)的簡(jiǎn)單撥號(hào)器,在下邊,我們將寫(xiě)一個(gè)計(jì)算器程序,原理很簡(jiǎn)單,只需要在撥號(hào)器的基礎(chǔ)上,算出撥號(hào)器所表示的數(shù)字,并進(jìn)行計(jì)算即可。
代碼如下;
#include"reg51.h"
#include typedef unsigned char u8; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義 typedef unsigned int u16; sbit LSA=P2^2; //38譯碼器數(shù)碼管位選 sbit LSB=P2^3; sbit LSC=P2^4; sbit k1=P3^1; sbit k2=P3^0; sbit k3=P3^2; sbit k4=P3^3; #define GPIO_KEY P1 #define GPIO_DIG P0 u16 KeyValue; //用來(lái)存放讀取到的鍵值 u16 keyflag,i; //用來(lái)回復(fù)是否有按鍵按下 u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //顯示0~F的值 u16 wei[8]={0}; //用來(lái)存放每一位數(shù)碼管數(shù)字的數(shù)組 /******************************************************************************* * 函 數(shù) 名 : delay * 函數(shù)功能 : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 數(shù) 名 : display * 函數(shù)功能 : 掃描顯示數(shù)碼管 * 輸 入 : 無(wú) * 輸 出 : 無(wú) *******************************************************************************/ void display() { LSA=0; LSB=0; LSC=0; P0=smgduan[wei[0]];delay(50); P0=0x00; LSA=1; LSB=0; LSC=0; P0=smgduan[wei[1]];delay(50); P0=0x00; LSA=0; LSB=1; LSC=0; P0=smgduan[wei[2]];delay(50); P0=0x00; LSA=1; LSB=1; LSC=0; P0=smgduan[wei[3]];delay(50); P0=0x00; LSA=0; LSB=0; LSC=1; P0=smgduan[wei[4]];delay(50); P0=0x00; LSA=1; LSB=0; LSC=1; P0=smgduan[wei[5]];delay(50); P0=0x00; LSA=0; LSB=1; LSC=1; P0=smgduan[wei[6]];delay(50); P0=0x00; LSA=1; LSB=1; LSC=1; P0=smgduan[wei[7]];delay(50); P0=0x00; } /******************************************************************************* * 函 數(shù) 名 : KeyDown * 函數(shù)功能 : 檢測(cè)有按鍵按下并讀取鍵值 * 輸 入 : 無(wú) * 輸 出 : 無(wú) *******************************************************************************/ void KeyDown(void) { char a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f)//讀取按鍵是否按下 { keyflag=1; delay(1000);//延時(shí)10ms進(jìn)行消抖 if(GPIO_KEY!=0x0f)//再次檢測(cè)鍵盤(pán)是否按下 { //測(cè)試列 GPIO_KEY=0X0F; switch(GPIO_KEY) { case(0X07): KeyValue=0;break; case(0X0b): KeyValue=1;break; case(0X0d): KeyValue=2;break; case(0X0e): KeyValue=3;break; } //測(cè)試行 GPIO_KEY=0XF0; switch(GPIO_KEY) { case(0X70): KeyValue=KeyValue;break; case(0Xb0): KeyValue=KeyValue+4;break; case(0Xd0): KeyValue=KeyValue+8;break; case(0Xe0): KeyValue=KeyValue+12;break; } while((a<50)&&(GPIO_KEY!=0xf0)) //檢測(cè)按鍵松手檢測(cè) { delay(1000); a++; } } } } /******************************************************************************* * 函 數(shù) 名 : main * 函數(shù)功能 : 主函數(shù) * 輸 入 : 無(wú) * 輸 出 : 無(wú) *******************************************************************************/ void main() { u16 a=0,b=0,c=0; while(1) { display(); /* 第一個(gè)數(shù)字輸入*/ KeyDown(); if(keyflag==1) { for(i=7;i>0;i--) //輸入一位,數(shù)字向左移動(dòng)一位 {wei[i]=wei[i-1];} wei[0]=KeyValue; keyflag=0; } /*************************加法運(yùn)算****************************/ if(k1==0) { a=wei[0]+wei[1]*10+wei[2]*100+wei[3]*1000+wei[4]*10000+wei[5]*100000+wei[6]*1000000+wei[7]*10000000; //計(jì)算a的值 for(i=0;i<8;i++) wei[i]=0; //對(duì)數(shù)碼管清零 while(1) //輸入第二個(gè)數(shù) { display(); KeyDown(); if(KeyValue==15) break; if(keyflag==1) { for(i=7;i>0;i--) {wei[i]=wei[i-1];} wei[0]=KeyValue; keyflag=0; } } b=wei[0]+wei[1]*10+wei[2]*100+wei[3]*1000+wei[4]*10000+wei[5]*100000+wei[6]*1000000+wei[7]*10000000; //計(jì)算b的值 c=a+b; wei[0]=c%10; //計(jì)算C的各個(gè)位的數(shù)字 wei[1]=c/10%10; wei[2]=c/100%10; wei[3]=c/1000%10; wei[4]=c/10000%10; wei[5]=c/100000%10; wei[6]=c/1000000%10; wei[7]=c/10000000%10; while(1) { display(); } } /*************************減法運(yùn)算****************************/ else if(k2==0) { a=wei[0]+wei[1]*10+wei[2]*100+wei[3]*1000+wei[4]*10000+wei[5]*100000+wei[6]*1000000+wei[7]*10000000; //計(jì)算a的值 for(i=0;i<8;i++) wei[i]=0; //對(duì)數(shù)碼管清零 while(1) { //輸入第二個(gè)數(shù) display(); KeyDown(); if(KeyValue==15) break; //當(dāng)讀到等于號(hào),既,KeyValue=15時(shí),停止輸入
上一篇:51單片機(jī)復(fù)習(xí):8*8led點(diǎn)陣
下一篇:基于51單片機(jī)的貪吃蛇小程序(8*8LED點(diǎn)陣實(shí)現(xiàn))
推薦閱讀
史海拾趣
隨著市場(chǎng)競(jìng)爭(zhēng)的加劇,CMDS意識(shí)到僅僅依靠技術(shù)創(chuàng)新是不夠的,還需要提供差異化的服務(wù)。于是,公司推出了定制化MMIC設(shè)計(jì)服務(wù),根據(jù)客戶的具體需求和應(yīng)用場(chǎng)景,量身定制解決方案。這種服務(wù)模式不僅提高了客戶滿意度,也增強(qiáng)了CMDS的市場(chǎng)競(jìng)爭(zhēng)力。通過(guò)不斷優(yōu)化服務(wù)流程和提高設(shè)計(jì)質(zhì)量,CMDS逐漸在定制化服務(wù)市場(chǎng)上樹(shù)立了良好的口碑。
為了進(jìn)一步拓展業(yè)務(wù)和提升公司的競(jìng)爭(zhēng)力,海芯科技積極尋求與行業(yè)內(nèi)外的合作伙伴建立戰(zhàn)略合作關(guān)系。通過(guò)與上下游企業(yè)的緊密合作,海芯科技成功實(shí)現(xiàn)了產(chǎn)業(yè)鏈的整合和優(yōu)化,進(jìn)一步提升了產(chǎn)品的質(zhì)量和性能。同時(shí),公司還通過(guò)與國(guó)際知名企業(yè)的合作,將先進(jìn)的技術(shù)和管理經(jīng)驗(yàn)引入到公司內(nèi)部,為公司的發(fā)展注入了新的活力。
面對(duì)電子行業(yè)的快速變化和市場(chǎng)競(jìng)爭(zhēng)的加劇,海芯科技始終保持著對(duì)技術(shù)創(chuàng)新的追求和投入。公司不斷引進(jìn)新技術(shù)、新工藝和新材料,對(duì)現(xiàn)有產(chǎn)品進(jìn)行升級(jí)和改進(jìn),同時(shí)也在不斷探索和研發(fā)新的產(chǎn)品和技術(shù)。這些技術(shù)升級(jí)和創(chuàng)新發(fā)展不僅提升了公司的核心競(jìng)爭(zhēng)力,也為公司在未來(lái)市場(chǎng)競(jìng)爭(zhēng)中保持領(lǐng)先地位提供了有力保障。
這五個(gè)故事展示了海芯科技在電子行業(yè)中的發(fā)展歷程和取得的成就。通過(guò)不斷的努力和創(chuàng)新,海芯科技已經(jīng)逐漸成為了電子行業(yè)中的佼佼者,為行業(yè)的發(fā)展做出了積極的貢獻(xiàn)。
為了擴(kuò)大品牌影響力,聯(lián)智積極參與國(guó)際展會(huì)和交流活動(dòng)。例如,公司曾參加2020無(wú)線充電亞洲展,并設(shè)立展位與觀眾進(jìn)行深入交流。這種面對(duì)面的交流方式使聯(lián)智能夠更直接地了解市場(chǎng)需求和行業(yè)動(dòng)態(tài),同時(shí)也為公司提供了展示自身技術(shù)和產(chǎn)品的機(jī)會(huì)。通過(guò)參與國(guó)際展會(huì),聯(lián)智不僅提升了品牌知名度,還建立了廣泛的合作伙伴關(guān)系,為公司未來(lái)的發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
以上五個(gè)故事均基于公開(kāi)資料對(duì)聯(lián)智(Celfras)公司發(fā)展歷程的簡(jiǎn)述,旨在展現(xiàn)公司在電子行業(yè)的成長(zhǎng)和貢獻(xiàn)。每個(gè)故事都盡量保持了客觀性和中立性,避免了對(duì)公司的主觀評(píng)價(jià)。
DEC始終致力于技術(shù)創(chuàng)新和產(chǎn)品研發(fā)。在20世紀(jì)70年代和80年代,DEC推出了一系列具有劃時(shí)代意義的計(jì)算機(jī)產(chǎn)品,如PDP系列計(jì)算機(jī)和VAX系列計(jì)算機(jī)。這些產(chǎn)品在技術(shù)上處于領(lǐng)先地位,受到了市場(chǎng)和客戶的廣泛認(rèn)可。此外,DEC還通過(guò)國(guó)際擴(kuò)張策略,將其業(yè)務(wù)拓展到了全球范圍內(nèi),進(jìn)一步鞏固了其市場(chǎng)地位。
為了更好地服務(wù)于中國(guó)市場(chǎng),F(xiàn)utaba在2002年成立了雙葉電子科技開(kāi)發(fā)(北京)有限公司。該公司專營(yíng)Futaba的全線產(chǎn)品,包括VFD真空熒光顯示管和RC無(wú)線遙控設(shè)備等。這一舉措標(biāo)志著Futaba在全球化布局上邁出了重要一步,也為公司在中國(guó)市場(chǎng)的快速發(fā)展奠定了基礎(chǔ)。北京分公司的成立不僅加強(qiáng)了Futaba與中國(guó)客戶的聯(lián)系,還促進(jìn)了公司在技術(shù)、產(chǎn)品和市場(chǎng)等方面的全方位合作。
今 天碰到一個(gè)客服的同事問(wèn)我電源壽命的問(wèn)題,當(dāng)時(shí)很輕易的把她搪塞過(guò)去了。事后仔細(xì)一想,有以下幾點(diǎn)疑問(wèn),想請(qǐng)大俠們探討下,請(qǐng)不吝賜教: 1;任何物體都是有壽命的!只是長(zhǎng)短的區(qū)別!對(duì)于電源這塊,壽命最長(zhǎng)的,我認(rèn)為是磁性材料, ...… 查看全部問(wèn)答∨ |
|
WM9712驅(qū)動(dòng)的問(wèn)題!請(qǐng)教!!! 平臺(tái)pxa270 在觸摸屏驅(qū)動(dòng)中涉及到操作AC97LINK來(lái)設(shè)置WM9712 其中有一段設(shè)置如下: ReadAC97 (0x4C, &tmp,DEV_TOUCH); //Set GPIO3 for PENDO ...… 查看全部問(wèn)答∨ |
mini2440自己定制了一個(gè)系統(tǒng) 運(yùn)行FMD_ReadSector函數(shù) 失敗!串口提示ERR_DISK_OP_FAIL1 是什么原因? mini2440板子 自己定制了一個(gè)操作系統(tǒng),按照手冊(cè)把 板子自帶的nboot.bin 與自己在PB5.0下定制的Eboot.nb0,nk.bin下載到板子上 從nandflash運(yùn)行串口提示: OEMMultiBINNotify: Download BIN file information: ------------------------------- ...… 查看全部問(wèn)答∨ |
請(qǐng)問(wèn)有人在IXP425上做過(guò)Wince嗎 小弟是新人 沒(méi)有分 請(qǐng)大家見(jiàn)諒 如題,不知道有沒(méi)有大俠做過(guò)這個(gè),如果有能否給個(gè)BSP包 曾經(jīng)在網(wǎng)上找到個(gè)5.0的bsp,但是做出來(lái)連Eboot都啟不了。 希望做過(guò)的大俠們指點(diǎn)1,2. … 查看全部問(wèn)答∨ |
讓你省電 !教 你 怎 么 免 費(fèi) 用 電~~shuzikejiwangye〖數(shù)字科技〗Q Q:1229781074//T E L:~~1 5 1 6 0 0 4 8 1 8 4 聯(lián) 系 人:小 王Q Q:1229781074//T E L:~~1 5 1 6 0 0 4 8 1 8 4 (僅 供 電 工 使 用,嚴(yán) 禁 違 ...… 查看全部問(wèn)答∨ |
先說(shuō)一下我的平臺(tái),硬件是s3c6410,系統(tǒng)wince6.0,OpenGL ES版本1.1,三星提供的dll。 現(xiàn)在說(shuō)一下問(wèn)題,我畫(huà)了幾張圖,發(fā)現(xiàn)遠(yuǎn)的和近的一樣大,沒(méi)有"近大遠(yuǎn)小"的感覺(jué)。查了些資料說(shuō)是應(yīng)該要采用"透視模式"的投影方式,需要用到這樣的一個(gè) ...… 查看全部問(wèn)答∨ |
關(guān)于9054的I/O,內(nèi)存問(wèn)題以及地址映射的問(wèn)題 RT 小弟最近要把9054的datasheet吃透,但是有些問(wèn)題不明白,希望各位大俠幫忙回答一下 1.9054的基地址0~1用于內(nèi)存映射和I/O映射,基地址2~5用作本地地址空間0~3,后面Local寄存器又說(shuō)明本地空間可以映射到I/O或者內(nèi)存中,用I/O活內(nèi)存操作,納秒這 ...… 查看全部問(wèn)答∨ |
TI LED照明知識(shí)(轉(zhuǎn)) 中英文版 現(xiàn)階段節(jié)能已經(jīng)成為一種硬性的要求,不是一種選擇,而其中一部分需要采用環(huán)保綠色的方式去實(shí)現(xiàn)節(jié)能。對(duì)于照明來(lái)說(shuō),我們可以很容易的設(shè)想全球照明提高10%的效率后所帶來(lái)的影響,但是提高100%呢?最近高效率發(fā)光二極管(LED)可能實(shí)現(xiàn)這種效率的改進(jìn), ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 【下載】LAT1466 USB x Device HID Standalone的移植
- 【下載】LAT1488 STM32 USBxDevice MSC standalone移植示例
- 【下載】LAT1482 STM32G0單線串口通信幀錯(cuò)誤問(wèn)題解析
- 【下載】LAT1473 STM32C0 HAL庫(kù)的SPI 驅(qū)動(dòng)導(dǎo)致的Hardfault問(wèn)題分析
- 【下載】LAT1490 兩個(gè)STM32G0 I2C 通信異常的案例分析
- 【下載】LAT1470 SPI傳輸長(zhǎng)度超過(guò)1024時(shí)出現(xiàn)異常的問(wèn)題分析
- STM32一文通(6) 外部中斷
- ESP32玩轉(zhuǎn)MicroPython(一) 燒入固件, 初識(shí)
- ESP32玩轉(zhuǎn)MicroPython(二) 連接WIFI網(wǎng)絡(luò) webperl文件傳輸
- ESP32玩轉(zhuǎn)MicroPython(三) 延時(shí)、計(jì)時(shí) 和GPIO操作
- 玩轉(zhuǎn) ESP32 + Arduino (一) 開(kāi)發(fā)環(huán)境搭建
- 玩轉(zhuǎn) ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時(shí) 脈沖檢測(cè)
- 玩轉(zhuǎn) ESP32 + Arduino (五) platformIO引入類庫(kù) 自開(kāi)發(fā)庫(kù) 串口打印字符串
- 玩轉(zhuǎn) ESP32 + Arduino (六) 硬件定時(shí)器, IIC, SPI
- 玩轉(zhuǎn) ESP32 + Arduino (八) U8G2驅(qū)動(dòng)OLED
- 超快充技術(shù)平權(quán)時(shí)代,要來(lái)了
- 智元機(jī)器人與Physical Intelligence(Pi)達(dá)成戰(zhàn)略合作
- 不到10萬(wàn)塊!特斯拉再次面臨生死狙擊?
- 高階智駕NOA功能解析:技術(shù)架構(gòu)與實(shí)現(xiàn)路徑
- 智能體爆發(fā)元年,誰(shuí)在“無(wú)人區(qū)”繪制地形圖?
- 億緯鋰能大圓柱電池進(jìn)展:良率突破97%
- 500Wh/kg電池競(jìng)速:鋰金屬電池挑戰(zhàn)全固態(tài)共識(shí)?(下)
- 500Wh/kg電池競(jìng)速:鋰金屬電池挑戰(zhàn)全固態(tài)共識(shí)?(上)
- 密歇根大學(xué)突破:低溫充電速度提升500%
- 谷歌發(fā)布Android Auto 14.0更新,界面優(yōu)化并準(zhǔn)備車機(jī)版Gemini AI
- 有獎(jiǎng)直播:當(dāng)智能遇上工業(yè),技術(shù)如何落地?
- 英飛凌開(kāi)發(fā)板618大促:爆款清單揭秘,有好禮!
- 分享、評(píng)論《Vishay光電子博文》盡享精彩好禮!
- 打卡最后一周,解鎖TI汽車解決方案。解鎖的數(shù)量決定獎(jiǎng)品的質(zhì)量!
- 購(gòu)買TI store MSP432P401R LaunchPad 曬單就送禮!
- 似蘭斯馨,一個(gè)老電子工程師的點(diǎn)滴足跡
- 參與TE有獎(jiǎng)活動(dòng), 解鎖智能電表難題啦!
- 【EEWORLD第二十二屆社區(qū)明星人物】暢想十二月明星人物揭曉!
- Digi-key干貨視頻教程來(lái)襲,意見(jiàn)領(lǐng)袖講解疑難設(shè)計(jì)問(wèn)題,帶你突破成長(zhǎng)瓶頸~
- 協(xié)作機(jī)器人實(shí)現(xiàn)了人類與機(jī)器人真正的協(xié)同工作 具有廣闊的市場(chǎng)前景
- 隧道機(jī)器人設(shè)計(jì)是否被選中 還有待觀察
- 機(jī)器人和人工智能的進(jìn)步 帶動(dòng)世界快速變化
- 賽靈思的Liam Madden對(duì)下一代無(wú)線基礎(chǔ)設(shè)施的關(guān)注
- 挑戰(zhàn)英偉達(dá)地位?英特爾20億美元收購(gòu)以色列AI處理器創(chuàng)企
- 續(xù)航可達(dá)1000公里!中國(guó)也有這么牛的電池
- 固態(tài)動(dòng)力電池量產(chǎn)提前
- 年終紀(jì)事2019|動(dòng)力電池(下)——成本
- 年終紀(jì)事2019| 動(dòng)力電池(上)——變局
- 博世打造的「云端電池」,如何讓電動(dòng)車變得更好?