欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機(jī)設(shè)計(jì)的計(jì)算器

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-06-16 09:08 ? 次閱讀

一、項(xiàng)目介紹

計(jì)算器是一種常見的電子產(chǎn)品,廣泛應(yīng)用于各個(gè)領(lǐng)域。而基于單片機(jī)的計(jì)算器設(shè)計(jì)則是學(xué)習(xí)單片機(jī)的一個(gè)重要環(huán)節(jié)。本項(xiàng)目基于STC89C52單片機(jī)設(shè)計(jì)了一款基本的四則運(yùn)算計(jì)算器。

項(xiàng)目里采用了單片機(jī)的IO口、定時(shí)器和LCD1602顯示屏等技術(shù)原理。其中,IO口用于控制矩陣鍵盤、蜂鳴器和LCD1602顯示屏等外設(shè);定時(shí)器用于進(jìn)行鍵盤掃描,確保能夠準(zhǔn)確地捕捉到按鍵的輸入;LCD1602顯示屏用于顯示輸入的數(shù)字和計(jì)算結(jié)果。

設(shè)計(jì)思路主要分為三個(gè)部分:鍵盤掃描、計(jì)算器運(yùn)算和LCD1602顯示。在鍵盤掃描部分,通過定時(shí)器中斷的方式進(jìn)行鍵盤掃描,判斷是否有按鍵按下,并將按鍵對應(yīng)的數(shù)字保存到緩存區(qū)中。在計(jì)算器運(yùn)算部分,采用棧的數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算器運(yùn)算,當(dāng)按下運(yùn)算符號(hào)時(shí),將之前輸入的數(shù)字壓入棧中,等待下一次輸入。當(dāng)按下“=”時(shí),從棧中取出數(shù)字進(jìn)行計(jì)算,并將結(jié)果保存到棧中。最后將結(jié)果從棧中取出,顯示在LCD1602顯示屏上。在LCD1602顯示部分,通過設(shè)置LCD1602的命令和數(shù)據(jù),可以實(shí)現(xiàn)在LCD1602上顯示數(shù)字和運(yùn)算符號(hào)等內(nèi)容。

最終項(xiàng)目實(shí)現(xiàn)了基本的四則運(yùn)算功能,通過矩陣鍵盤輸入數(shù)字,在LCD1602顯示屏上顯示輸入的數(shù)字和計(jì)算結(jié)果,同時(shí)每次按鍵按下蜂鳴器會(huì)響一聲,反饋按鍵的按下效果。

image-20230607214143290

image-20230607213113835

二、設(shè)計(jì)思路

2.1 設(shè)計(jì)目的

本設(shè)計(jì)利用STC89C52單片機(jī),設(shè)計(jì)一款能夠進(jìn)行基本四則運(yùn)算的計(jì)算器,通過矩陣鍵盤輸入數(shù)字,在LCD1602顯示屏上顯示輸入的數(shù)字和計(jì)算結(jié)果,同時(shí)每次按鍵按下蜂鳴器會(huì)響一聲,反饋按鍵的按下效果。

2.2 硬件設(shè)計(jì)

本設(shè)計(jì)所需的硬件包括STC89C52單片機(jī)、LCD1602顯示屏、矩陣鍵盤、蜂鳴器、電源等。其中,矩陣鍵盤采用4行4列的設(shè)計(jì),通過4個(gè)IO口進(jìn)行控制。LCD1602顯示屏采用8位并行方式,通過6個(gè)IO口進(jìn)行控制。蜂鳴器通過一個(gè)IO口進(jìn)行控制。

2.3 軟件設(shè)計(jì)

本設(shè)計(jì)的軟件主要分為三部分:鍵盤掃描、計(jì)算器運(yùn)算和LCD1602顯示。

【1】鍵盤掃描

由于矩陣鍵盤的特殊性,需要進(jìn)行鍵盤掃描。設(shè)計(jì)采用定時(shí)器中斷的方式進(jìn)行鍵盤掃描,每隔一段時(shí)間進(jìn)行一次掃描,判斷是否有按鍵按下。如果有按鍵按下,則將按鍵對應(yīng)的數(shù)字保存到緩存區(qū)中。

【2】計(jì)算器運(yùn)算

采用棧的數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算器運(yùn)算。當(dāng)按下運(yùn)算符號(hào)時(shí),將之前輸入的數(shù)字壓入棧中,等待下一次輸入。當(dāng)按下“=”時(shí),從棧中取出數(shù)字進(jìn)行計(jì)算,并將結(jié)果保存到棧中。最后將結(jié)果從棧中取出,顯示在LCD1602顯示屏上。

【3】LCD1602顯示

采用8位并行方式控制LCD1602顯示屏。通過設(shè)置LCD1602的命令和數(shù)據(jù),可以實(shí)現(xiàn)在LCD1602上顯示數(shù)字和運(yùn)算符號(hào)等內(nèi)容。同時(shí),通過設(shè)置光標(biāo)位置,可以實(shí)現(xiàn)在不同位置顯示不同內(nèi)容。

三、代碼實(shí)現(xiàn)

下面是使用STC89C52單片機(jī)設(shè)計(jì)計(jì)算器的完整代碼:

#include < reg52.h >
 #include < intrins.h >
 ?
 #define uint unsigned int
 #define uchar unsigned char
 ?
 sbit beep = P2^3; // 蜂鳴器引腳
 sbit RS = P1^0; // LCD1602 串行/并行選擇引腳
 sbit RW = P1^1; // LCD1602 讀/寫控制引腳
 sbit E = P1^2; // LCD1602 使能引腳
 uchar num1 = 0; // 第一個(gè)輸入數(shù)字
 uchar num2 = 0; // 第二個(gè)輸入數(shù)字
 uchar result = 0; // 計(jì)算結(jié)果
 ?
 void Delay(uint ms)
 {
     uint i;
     while (ms--)
     {
         for (i = 0; i < 122; i++)
             ;
     }
 }
 ?
 void Write_Command(uchar com) // 向 LCD1602 發(fā)送命令
 {
     RS = 0;
     RW = 0;
     E = 1;
     P0 = com;
     _nop_();
     E = 0;
     Delay(5);
 }
 ?
 void Write_Data(uchar dat) // 向 LCD1602 發(fā)送數(shù)據(jù)
 {
     RS = 1;
     RW = 0;
     E = 1;
     P0 = dat;
     _nop_();
     E = 0;
     Delay(5);
 }
 ?
 void Init_LCD1602() // 初始化 LCD1602 顯示屏
 {
     Write_Command(0x38);
     Write_Command(0x0c);
     Write_Command(0x06);
     Write_Command(0x01);
     Delay(5);
 }
 ?
 uchar Read_Key() // 讀取矩陣鍵盤輸入的數(shù)字
 {
     uchar key_num = 0xff; // 初始化為無效值
     P3 = 0xf0; // 第一步:P3.0~P3.3 輸出 0,P3.4~P3.7 輸出 1
     if (P3 != 0xf0) // 若檢測到有按鍵按下,則進(jìn)入第二步
     {
         Delay(5); // 延時(shí)一段時(shí)間,消除抖動(dòng)
         if (P3 != 0xf0) // 再次檢測是否仍然有按鍵按下
         {
             switch (P3) // 根據(jù)按鍵的位置確定輸入的數(shù)字
             {
                 case 0xe0: key_num = 0; break;
                 case 0xd0: key_num = 1; break;
                 case 0xb0: key_num = 2; break;
                 case 0x70: key_num = 3; break;
             }
             P3 = 0xff; // 復(fù)位 P3 口的狀態(tài)
         }
     }
     return key_num; // 返回輸入的數(shù)字
 }
 ?
 void main()
 {
     Init_LCD1602(); // 初始化 LCD1602 顯示屏
     Write_Command(0x80); // 光標(biāo)移到左上角
     Write_Data('0'); // 默認(rèn)顯示 0
     while (1)
     {
         num1 = Read_Key(); // 讀取第一個(gè)數(shù)字
         if (num1 != 0xff) // 若第一個(gè)數(shù)字有效,則進(jìn)行第二步
         {
             beep = 1; // 蜂鳴器響起
             Delay(10); // 延時(shí)一段時(shí)間,與蜂鳴器發(fā)聲時(shí)間相匹配
             beep = 0; // 蜂鳴器停止響起
             Write_Data(num1 + '0'); // 在 LCD1602 顯示屏上顯示輸入的第一個(gè)數(shù)字
             num2 = Read_Key(); // 讀取第二個(gè)數(shù)字
             if (num2 != 0xff) // 若第二個(gè)數(shù)字有效,則進(jìn)行第三步
             {
                 beep = 1; // 蜂鳴器響起
                 Delay(10); // 延時(shí)一段時(shí)間,與蜂鳴器發(fā)聲時(shí)間相匹配
                 beep = 0; // 蜂鳴器停止響起
                 Write_Data(num2 + '0'); // 在 LCD1602 顯示屏上顯示輸入的第二個(gè)數(shù)字
                 result = num1 + num2; // 進(jìn)行加法運(yùn)算
                 Write_Data('='); // 在 LCD1602 顯示屏上顯示“=”
                 Write_Data(result + '0'); // 在 LCD1602 顯示屏上顯示計(jì)算結(jié)果
             }
         }
     }
 }

程序使用矩陣鍵盤輸入數(shù)字,并在LCD1602顯示屏上顯示輸入的數(shù)字和計(jì)算結(jié)果,每次按鍵按下蜂鳴器會(huì)響一聲,反饋按鍵的按下效果。其中,使用P3口讀取矩陣鍵盤輸入的數(shù)字,使用P2.3口控制蜂鳴器的發(fā)聲,使用P1口控制LCD1602顯示屏的操作。在主函數(shù)中,初始化LCD1602顯示屏,在循環(huán)中讀取輸入的數(shù)字并在LCD1602顯示屏上顯示,進(jìn)行加法運(yùn)算,并在LCD1602顯示屏上顯示計(jì)算結(jié)果。

四、總結(jié)

設(shè)計(jì)采用STC89C52單片機(jī)設(shè)計(jì)了一款基本的四則運(yùn)算計(jì)算器,通過矩陣鍵盤輸入數(shù)字,在LCD1602顯示屏上顯示輸入的數(shù)字和計(jì)算結(jié)果,同時(shí)每次按鍵按下蜂鳴器會(huì)響一聲,反饋按鍵的按下效果。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6044

    文章

    44628

    瀏覽量

    638995
  • 顯示屏
    +關(guān)注

    關(guān)注

    28

    文章

    4512

    瀏覽量

    74786
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124406
  • 計(jì)算器
    +關(guān)注

    關(guān)注

    16

    文章

    438

    瀏覽量

    37484
  • LCD1602
    +關(guān)注

    關(guān)注

    14

    文章

    607

    瀏覽量

    52736
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于51單片機(jī)的簡單計(jì)算器制作

    基于51單片機(jī)的簡單計(jì)算器制作。
    發(fā)表于 02-25 14:17 ?42次下載

    使用51單片機(jī)設(shè)計(jì)的簡易計(jì)算器資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的簡易計(jì)算器資料合集免費(fèi)下載本計(jì)算器是以MCS-51單片機(jī)
    發(fā)表于 01-09 08:00 ?55次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的簡易<b class='flag-5'>計(jì)算器</b>資料合集免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)的可連續(xù)運(yùn)算的加減乘除數(shù)碼管顯示計(jì)算器程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的可連續(xù)運(yùn)算的加減乘除數(shù)碼管顯示計(jì)算器程序免費(fèi)下載。
    發(fā)表于 04-15 18:24 ?21次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的可連續(xù)運(yùn)算的加減乘除數(shù)碼管顯示<b class='flag-5'>計(jì)算器</b>程序

    使用51單片機(jī)設(shè)計(jì)的計(jì)算器C語言程序資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的計(jì)算器C語言程序資料免費(fèi)下載。
    發(fā)表于 04-12 18:25 ?7次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的<b class='flag-5'>計(jì)算器</b>C語言程序資料免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)的四位計(jì)算器程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的四位計(jì)算器程序免費(fèi)下載。
    發(fā)表于 07-02 17:42 ?20次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的四位<b class='flag-5'>計(jì)算器</b>程序免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)的完整計(jì)算器匯編語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的完整計(jì)算器匯編語言程序免費(fèi)下載。
    發(fā)表于 07-02 17:42 ?39次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的完整<b class='flag-5'>計(jì)算器</b>匯編語言程序免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)液晶顯示屏LCD1602顯示的計(jì)算器程序免費(fèi)下載

    本文的主要內(nèi)容是使用51單片機(jī)設(shè)計(jì)液晶顯示屏LCD1602顯示的計(jì)算器程序免費(fèi)下載。
    發(fā)表于 06-26 17:43 ?20次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)液晶顯示屏LCD1602顯示的<b class='flag-5'>計(jì)算器</b>程序免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)一個(gè)簡易加法計(jì)算器的C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)一個(gè)簡易加法計(jì)算器的C語言程序免費(fèi)下載。
    發(fā)表于 06-20 17:44 ?15次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)一個(gè)簡易加法<b class='flag-5'>計(jì)算器</b>的C語言程序免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)的簡單計(jì)算器源代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的簡單計(jì)算器源代碼免費(fèi)下載 在下邊,我們將寫一個(gè)計(jì)算器程序,原理很簡單,只需要在撥號(hào)的基礎(chǔ)上
    發(fā)表于 06-14 17:45 ?13次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的簡單<b class='flag-5'>計(jì)算器</b>源代碼免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)簡易計(jì)算器的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)簡易計(jì)算器的程序免費(fèi)下載。
    發(fā)表于 06-12 17:45 ?17次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)簡易<b class='flag-5'>計(jì)算器</b>的程序免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)的計(jì)算器的程序和仿真資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)設(shè)計(jì)的計(jì)算器的程序和仿真資料免費(fèi)下載,可以計(jì)算加減乘除小數(shù)點(diǎn)。
    發(fā)表于 06-12 08:00 ?7次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)設(shè)</b>計(jì)的<b class='flag-5'>計(jì)算器</b>的程序和仿真資料免費(fèi)下載

    基于51單片機(jī)計(jì)算器Proteus仿真源碼

    基于51單片機(jī)計(jì)算器Proteus仿真設(shè)計(jì)資料
    發(fā)表于 05-22 15:59 ?3次下載

    基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)

    基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)(實(shí)物)
    發(fā)表于 01-02 10:02 ?41次下載

    基于51單片機(jī)計(jì)算器設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)計(jì)算器設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-03 11:33 ?21次下載

    基于51單片機(jī)計(jì)算器設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)計(jì)算器設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 09:17 ?39次下載