簡易加減運算器的制作----數字電路設計(含proteus仿真)

簡易加減運算器的制作

一、功能要求—基本功能

1、自制0-9按鍵,在一個LED數碼管上穩定地顯示當前按下的值。(基本功能)

2、增加+、=兩個按鍵,實現0-9兩個一位數的加法運算,同時在兩位LED上穩定地顯示運算結果。(擴展功能1)

3、再增加一個-按鈕,實現0-9兩個一位數的減法運算,同時在兩位LED上穩定地顯示運算結果。(擴展功能2)

功能一實現

對于在LED數碼管上顯示數字最合適的就是74hc48。

74LS48是BCD至七段解碼器,用于顯示以二進制編碼的十進制格式解碼的數字。7 段是一種基于 7 個 LED 的小型設備,用于表示從 0 到 9 的單個數值。每個 7 段有七個輸入引腳,用于點亮七個段中的單個 LED。每次制作單個數字時,某些特定引腳應該有電源輸入。

74LS48解碼器簡介

為了實現特殊模式,可以使用邏輯門,但也可以使用IC 74LS48來控制 7 段。它有17個與門、4個或非門、6個非門和8個與非門。這些所有門的組合使 IC 具有 4 個輸入和 7 個輸出引腳。輸出引腳在單個輸出中生成兩個 BCD 數字,這在 7 段上形成一個數字。該IC有4個輸入引腳,總共有16種組合,但前10種組合用于產生7段輸出,其余的將被視為無效狀態。該 IC 是基于 TTL 的設備,因此可以由任何 TTL 設備或微控制器控制。它僅用于控制共陰極七段。

引腳配置
名稱引腳
B引腳 1IC 74LS48有4個輸入引腳,引腳1代表IC 4位輸入數據的第三位。
C引腳 2引腳2代表IC的4位輸入數據的第二位。
LT’引腳 3引腳 3 稱為燈測試引腳。它用于使所有輸出引腳為高電平以測試所有 7 段 LED。這是一個低電平有效引腳。
BI’/BRO’引腳 4引腳 4 將用作復位引腳。如果引腳 4 為低電平狀態,則不會有任何輸出。它是一個低電平有效引腳,它將使所有輸出狀態為低電平。
RBI’引腳 5引腳 5 稱為紋波消隱輸入引腳。它在多個 7 段的情況下使用來清除不必要的零。
D引腳 6引腳6代表IC的4位輸入數據的MSB。
A引腳 7引腳7代表IC的4位輸入數據的LSB。
GND引腳 8GND 引腳用作接地引腳。它用于使接地共用,以使 IC 能夠與其他 TTL 設備和微控制器一起工作。
e引腳 9引腳 9 至引腳 15 將用作輸出引腳。他們將給出輸出信號來控制 7 段。引腳順序為 a、b、c、d、e、f 和 g。每個字母代表7段LED上的字母。
d引腳 10
c引腳 11
b引腳 12
a引腳 13
g引腳 14
F引腳 15
VCC引腳 16引腳 16 用于向 IC 供電以使其正常工作。
工作原理

在 IC 74LS48 中,輸出取決于輸入。主要輸入引腳有四個,有助于在特定輸入數據上生成固定輸出狀態。在4位二進制數字中,十進制的0用0000表示,十進制的9用1001表示,并且從1到8的所有值也都有固定的4位二進制代碼。當IC上有0到9的輸入時,輸出值將根據共陰極7段。這是因為 IC 是為執行該功能而設計的。如果使用7段IC,我們需要根據給定的電路連接7段IC。

原理圖

左上方的四個數字輸入對應BDC碼

進一步完善

如需完整符合題目一的要求就需要有矩陣鍵盤轉BCD碼的數字電路。

結合給定得元件需要用到74HC147

74hc147是一個10線-4線優先編碼器。它通常用于將多個輸入信號(如開關或傳感器輸出)轉換成較少的輸出線,以便于處理。它能夠識別多個激活輸入中的最高優先級信號,并將其編碼為二進制形式的輸出。

最終設計的原理圖如下,此時全部符合題意。

二、擴展功能1

增加+、=兩個按鍵,實現0-9兩個一位數的加法運算,同時在兩位LED上穩定地顯示運算結果。(擴展功能1)

對于數字電路的加法運算和給定的元器件綜合分析,我們使用74hc283。

74hc283這是一個4位二進制加法器,用于執行兩個4位二進制數的加法運算。它包括進4位輸入和輸出,可以用于構建更大的加法器系統。

設計思路
  • 根據進位信號和輸出信號的邏輯表達式(74HC283邏輯圖)以及真值表示例,結合行為級、數據流建模即可實現74HC283的四位二進制進位全加器的功能。
  • 進位信號和輸出信號等邏輯表達式(74HC283邏輯圖)

image-20231210155024610

  • 74HC283的真值表示例

image-20231210155145868

邏輯符號

image-20231210155333838

  • A 3 A 2 A 1 A 0 A_3A_2A_1A_0 A3?A2?A1?A0?:四位二進制加數。
  • B 3 B 2 B 1 B 0 B_3B_2B_1B_0 B3?B2?B1?B0?:四位二進制加數。
  • S 3 S 2 S 1 S 0 S_3S_2S_1S_0 S3?S2?S1?S0?:和數。
  • C ? 1 C_{-1} C?1?:低位來的給 A 0 A_0 A0?的進位信號。
  • C 0 C_0 C0? A 3 B 3 A_3B_3 A3?B3?向高位的進位信號

此時只需要將第一問輸入的數字的BCD碼分別接入兩個AB進行加法運算,輸出的BCD碼繼續在共陰極數碼管上顯示即可。

原理圖

進一步完善

此時如需完整符合題意需要,需要再加入+號與=號兩個按鍵。

等于好相當于最后的開關,打開開關顯示減法的結果。原理圖如下:

?

二、擴展功能2

再增加一個-按鈕,實現0-9兩個一位數的減法運算,同時在兩位LED上穩定地顯示運算結果。(擴展功能2)

關于減法功能其與加法的電路實現思路幾乎一致,只是需要將被減數的BCD碼進行取反加一(即補碼)進行加法運算的結果就是減法運算。

思路圖如下

image-20231210162617173

設計的最終原理圖如下:

最終完善

需要進一步進行+和-還有等于的操作,即為+和-進行選擇是否進行別減數的補碼操作,加法就是不進行,減法就是進行補碼操作,最總=號進行數碼管加減法的結果顯示。

最終原理圖如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211987.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React中每次渲染都會傳入一個新的props.children到子組件?

傳入props.children后, 為什么會導致組件的重新渲染? 問題描述 在 react 中, 我想要對組件的渲染進行優化, 遇到了一個非常意思的問題, 當我向一個組件中傳入了 props.children 之后, 每次父組件重新渲染都會導致這個組件的重新渲染; 它看起來的表現就像是被memo包…

MTU與MSS

MTU:一個網絡包的最大長度,以太網中一般為1500各字節。 MSS:除去頭部之后,一個網絡包所能容納的TCP數據的最大長度。 應用程序調用write后,將要發送的數據被交給TCP/IP協議棧進行。 協議棧不關心應用的數據內容&…

四:爬蟲-Cookie與Session實戰

四:Cookie與Session實戰 ? 在瀏覽網站的過程中,我們經常會遇到需要登錄的情況,有些頁面只有登錄之后才可以訪問。在登錄之后可以連續訪問很多次網站,但是有時候過一段時間就需要重新登錄。還有一些網站,在打開瀏覽器…

c語言歸并排序(詳解)

歸并排序是一種分治算法,它將列表分割成較小的子列表,然后遞歸地對子列表進行排序,最后將這些子列表合并以產生已排序的列表。基本概念包括: 分割:將列表分割成較小的子列表,直到子列表的長度為1或0。排序…

Leetcode—219.存在重復元素II【簡單】

2023每日刷題&#xff08;五十三&#xff09; Leetcode—219.存在重復元素II 實現代碼 class Solution { public:bool containsNearbyDuplicate(vector<int>& nums, int k) {unordered_map<int, int> m;int n nums.size();for(int i 0; i < n; i) {if(m…

vs的生成事件error MSB3073

生成事件設置位于&#xff1a;項目-》屬性-》生成事件&#xff1b; 生成事件有&#xff1a;生成前事件、鏈接前事件、生成后事件 以生成前事件為例&#xff1a;可以用于一些庫文件的配置 COPY ..\dll\*.* .\bin\ MKDIR .\bin\libx COPY ..\dll\libx\*.* .\bin\libx這里是在開…

[Decipher@mailfence.com].faust勒索病毒數據怎么處理|數據解密恢復

導言&#xff1a; 在數字世界的邊緣&#xff0c;[support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust、[backupsairmail.cc].faust、[Deciphermailfence.com].faust勒索病毒如同黑暗的幽靈&#xff0c;威脅著我們珍貴的數字財產。本…

漏洞復現-大華dss struts2-045表達式注入漏洞(附漏洞檢測腳本)

免責聲明 文章中涉及的漏洞均已修復&#xff0c;敏感信息均已做打碼處理&#xff0c;文章僅做經驗分享用途&#xff0c;切勿當真&#xff0c;未授權的攻擊屬于非法行為&#xff01;文章中敏感信息均已做多層打馬處理。傳播、利用本文章所提供的信息而造成的任何直接或者間接的…

【webpack】初始化

webpack 舊項目的問題下一代構建工具 Vite 主角 &#xff1a;webpack安裝webpack1&#xff0c;mode的選項2&#xff0c;使用source map 精準定位錯誤行數3&#xff0c;使用watch mode(觀察模式)&#xff0c;自動運行4&#xff0c;使用webpack-dev-server工具&#xff0c;自動刷…

Linux_CentOS_7.9配置oracle sqlplus、rman實現上下按鍵切換歷史命令等便捷效率功能之簡易記錄

配置oracle sqlplus以及rman可以上下按鍵切換歷史命令等便捷效率功能 設置前提是已經yum安裝了rlwrap軟件具體軟件下載及配置參考文章http://t.csdnimg.cn/iXuVK su - oracleVim .bash_profile ## 文件中增加如下的別名設置 ---------------- alias sqlplusrlwrap sqlplus…

c++的算術生成算法

#include<numeric>//算術生成算法頭文件 要加的頭文件#include<numeric> accumulate 是 C 標準庫中的一個算法函數&#xff0c;用于計算給定范圍內的數值之和&#xff0c;它位于 <numeric> 頭文件中。它的函數原型如下&#xff1a; template <class In…

Matlab之帶時區的日期時間數據和不帶時區的日期時間數據相互轉換方法

使用datetime和datetimezone函數 通過使用datetime和datetimezone函數&#xff0c;可以將帶時區的日期時間數據轉換為不帶時區的數據&#xff0c;或者將不帶時區的日期時間數據轉換為帶時區的數據。這樣可以滿足坐標區的配置要求。 1、將帶時區的日期時間數據轉換為不帶時區的…

理解IoC容器初始化

問題&#xff1a;當自己面試或者背誦八股文時&#xff0c;會背到各種各樣的spring底層的東西&#xff0c;自己越看越迷糊。 OS&#xff1a;不知道兄弟們是不是也會這樣&#xff1f;如果大家沒有說明我太菜了。 原因&#xff1a;就是自己學的框架越來越多&#xff0c;很多框架…

?types --- 動態類型創建和內置類型名稱?

目錄 動態類型創建 標準解釋器類型 附加工具類和函數 協程工具函數 源代碼: Lib/types.py 此模塊定義了一些工具函數&#xff0c;用于協助動態創建新的類型。 它還為某些對象類型定義了名稱&#xff0c;這些名稱由標準 Python 解釋器所使用&#xff0c;但并不像內置的 int …

代碼規范及開發工具

代碼規范及開發工具&#xff1a; 前端&#xff08;vscode、idea&#xff09;: JavaScript規范&#xff1a; 1. 谷歌開源項目風格指南&#xff1a;JavaScript 、TypeScript篇 https://zh-google-styleguide.readthedocs.io/en/latest/google-typescript-…

P8625.生命之樹

求最大的子樹之和 維護包含當前節點的最大子樹之和就好了 #include<bits/stdc.h> using namespace std; using ll long long; const int N 1e610; ll w[N]; vector<int>g[N]; ll f[N]; ll res;ll dfs(int u,int father){f[u] w[u];for(auto &t:g[u]){if(tf…

2023.12.10 homework

五年級一元一次方程

C語言作業6

1.聯合體也會完全浪費空間 2.在結構體中 注意好偏移量和實際是第幾個的區別 那個對齊數是和偏移量有關的 (就用我之前的那個就行了) 3. 字節序 才有大小端

參數占位符#{}和${}

#是預處理而$是直接替換 Mybatis在處理#{}時&#xff0c;會將SQL中的#{}替換成占位符&#xff1f;&#xff0c;再使用preparedStatement的set方法來賦值。而Mybatis在處理 時&#xff0c;是將 {}時&#xff0c;是將 時&#xff0c;是將{}直接替換成變量的值 我們分別使用#{}和…

Redis AOF源碼解析

本文取3.0版本分析&#xff08;各個版本差異很大&#xff0c;4.0以上才有aof和rdb混合模式&#xff09; 觸發時機 1、bgrewriteaofCommand函數觸發&#xff0c;即在Redis server服務上運行bgrewriteaof命令。 1-1、當前已經有 AOF 重寫的子進程正在執行&#xff0c;重復執行bg…