基於單片機的四位二進位轉十進位計算顯示程序

2021-01-08 電子產品世界

此程序是根據自己的單片機板子寫的,四位共陽數碼管。

本文引用地址:http://www.eepw.com.cn/article/170906.htm

k1-k4是板子上的4個鍵 用來進行二進位輸入,因為按鍵只有按下和沒有按下兩種狀態,

十進位的數值就顯示在數碼管上.

#include reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar data yy[]={0xff,0xfe,0xfc,0xf8,0xf0,0xfe0,0xc0,0x80,0x00};
uint a;

sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;

sbit P20=P2^0;
sbit P22=P2^2;

sbit wx1=P0^0;
sbit wx2=P0^1;
sbit wx3=P0^2;
sbit wx4=P0^3;

void delayms(uint a)
{
uchar i,j;
for(i=a;i>0;i--)
for(j=110;j>0;j--);
}

void main()
{
while(1)
{
{
if(K1==0)
{
wx1=1;
P1=smg[0];
wx2=0;wx3=0;wx4=0;
P2=yy[0];
}


if(K2==0)
{
wx1=1;
P1=smg[1];
wx2=0;wx3=0;wx4=0;
P2=yy[1];
}


if(K3==0)
{
wx1=1;
P1=smg[2];
wx2=0;wx3=0;wx4=0;
P2=yy[2];
}

if(K4==0)
{
wx1=1;
P1=smg[3];
wx2=0;wx3=0;wx4=0;
P2=yy[3];
}

if(K1==0K2==0)
{
wx1=1;
P1=smg[4];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[4];
delayms(10);
}

if(K1==0K3==0)
{
wx1=1;
P1=smg[5];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[5];
delayms(10);
}

if(K1==0K4==0)
{
wx1=1;
P1=smg[6];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[6];
delayms(10);
}

if(K2==0K3==0)
{
wx1=1;
P1=smg[7];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[7];
delayms(10);
}

if(K2==0K4==0)
{
P20=1;P22=1;
wx1=1;
P1=smg[8];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[8];
delayms(10);
}

if(K3==0K4==0)
{
wx1=1;
P1=smg[9];
delayms(10);
wx1=0;wx2=0;wx3=0;wx4=0;
P2=yy[8];
delayms(10);
}
}
P2=0xff;
}
}

相關焦點

  • 單片機二進位編碼對照
    一、二進位編碼的十進位數: BCD 碼( Binary-Coded Decimal ) 字母與字符的編碼 字母和各種字符( $ 、 # )也必須按特   二進位編碼在計算機中,是採用二進位數。因而,要在計算機中表示的數、字母、符號等都要以特定的二進位碼來表示,這就是二進位編碼。
  • 基於AT89C51單片機的十進位計算器系統設計
    基於AT89C51單片機的十進位計算器系統設計
  • scratch製作「二進位轉十進位」
    我們之前學習並製作過「十進位轉二進位」的小程序:如圖:學生作品1「十進位轉二進位」學生作品2「十進位轉二進位」接下來我們製作「二進位轉十進位」的小程序。位值,初始化為0,用於存儲每一位上的值(十轉二)第n位,初始化為1,用於遍歷二進位字符串。相當於for i in range中的i二進位字符每一位上的值只要看這一位後面有幾位數字,那麼這位的值就是2的幾次方。
  • 嵌入式,單片機編程基礎-二進位
    作為一名嵌入式底層驅動開發人員,或者是單片機的固件編程人員,掌握一些二進位的基本知識是很必要的。首先,我們在看處理器的參考手冊時,看到最多的就是有關寄存器的介紹。我們開發驅動程序,本質上也是設置或讀取這些寄存器。參考手冊介紹寄存器時一般都是以比特位為單位介紹的。
  • 單片機進位轉換
    今天我就給大家講講與計算機有關的「進位轉換」問題。   我們以(25.625)(十)為例講解一下進位之間的轉化問題。 1. 十 > 二  給你一個十進位,比如:6,如果將它轉換成二進位數呢?二 ----> 十  二進位數轉換為十進位數   二進位數第0位的權值是2的0次方,第1位的權值是2的1次方……   所以,設有一個二進位數:0110 0100,轉換為10進位為:
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字110,表達的就是十進位中的6;二進位數字1111,表達的就是十進位中的15。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    計算過程:(1*2+0*2+1*2).(1*2+0*2+1*2)=5.625得出結果:(101.101)2=(5.625)10 大家在做二進位轉換成十進位需要注意的是 1) 要知道二進位每位的權值 2) 要能求出每位的值 從最後一位開始算,依次列為第0、1、2...位 (注意是從第0位開始數的,而不是1)第n位的數(0或1)乘以2的n次方
  • python進位轉換:十進位轉二進位的用法
    dec(十進位)—> bin(二進位)dec(十進位)—> oct(八進位)dec(十進位)—> hex(十六進位)二、十進位我們所熟知的十進位,其實是從 0 開始,數到 9 之後,就跳到
  • 記下這些,十進位轉二進位就這麼簡單
    十進位轉為二進位分為整數部分轉換和小數部分轉換,兩個事不同的情況,下面我們分別講解。一、整數部分的十進位轉為二進位連續用該整數除以2取餘數,然後用商再除以2,直到商等於0為止,最後把各個餘數按相反的順序排序。
  • 一大波 Excel 進位轉換函數來襲,二、八、十、十六進位互轉
    偶然看到某些「老師」教十進位轉二進位,寫了好幾行的巨複雜公式,看得我尷尬癌都犯了。愚公移山精神固然可嘉,但方法絕不可取,若還把此作為「正確方法」傳播,那就是誤人子弟,應該批判了。二進位轉其他:將二進位數轉換為八進位數:BIN2OCT 函數將二進位數轉換為十進位數:BIN2DEC 函數將二進位數轉換為十六進位數:BIN2HEX 函數
  • 為什麼電腦用二進位而不用十進位
    1.由於十進位比二進位多出8個狀態,而計算機是由硬體構成的,多出的狀態需要更多的硬體來完成;2.二進位狀態少,意味著足夠簡單,只需要找到一種硬體能夠「穩定」的兩種狀態即可,能夠一定的條件方便切換。3.由於計算機產生的背景直接原因是因為人類的算力不足,不能夠高速計算,而計算本來基於數學模型的,所以需要一套完備的數學理論,早在19世紀初期,英國數學家喬治·布爾創立了一個學科,叫做布爾代數,而布爾代數中有一部分是邏輯運算,基於Ture和False的數學運算理論,這裡的True和False基於等價性原則,正好可以代表0和1,所以基於二進位計算也有了完美的數學理論支持;4.
  • 二進位轉換為十進位和十進位轉換為二進位的方法
    各位小夥伴們大家好,在之前的文章中小編也介紹了關於二進位轉十進位的方法,這次小編知道了一個更簡單的方法,具體如下:比如我們要把28轉為二進位:,從左往右把二進位數字湊在一起,11100就是28的二進位了。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。2、程序代碼如下:#include<iostream>using namespace std;int main(){int num;char a[39
  • 數據的表示二進位八進位十進位十六進位之間的轉換
    數據的表示1.R進位轉十進位R進位轉十進位使用按權展開法二進位 10100.01 = 1x24+1x22+1x2-2七進位 604.01 = 6x72+4x70+1x7-2十進位 1227 = 1x103+2x102+2x101+7x1002.十進位轉
  • [洛穀日報第79期]二進位與位運算
    我們都知道,計算機是使用二進位進行存儲和計算的。十進位的出現是因為人類有十個手指,比較方便表示十進位;而對於計算機而言,因為計算機要依靠電源,而電源只有通電和斷電兩種情況,所以二進位就成為了計算機的基礎進位。一道送分題對於二進位,似乎更多的考題是在初賽,但複賽也會涉及到一些內容,而且也可以運用在生活中。
  • JAVA-二進位基礎
    一、二進位的概念計算機進位有:二進位、八進位、十六進位進位的基本特點是:每一位置上的數字必須在0-(進位-1)的範圍內,也就是說二進位只能有0、1;八進位為:0-7;十六進位比較特殊為:0-9,A(10) B(11) C(12) D(13) E(14) F(15)進位轉換:1、非十進位轉換十進位:每位數字乘以進位數的權重次方
  • Java二進位和位運算,這一萬字準能餵飽你
    二進位是計算技術中廣泛採用的一種數制。二進位數據是用0和1兩個數字來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」。因為它只使用0、1兩個數字符號,非常簡單方便,易於用電子方式實現。
  • MySQL涉及二進位的運算符:位運算符
    如下:【結論】3|8就是兩個二進位數0011與1000進行按位或的計算,對應的二進位位有一個或兩個為1,運算結果為1,否則為0。所以,3|8的結果是1011,轉化為十進位就是11。同理4|7得到0111,再與1010進行按位或得到1111,即為十進位數字15。
  • 吳國平:除了十進位, 人類文明史上還有哪些進位算法?
    當我們看到像1、25、356……這些耳熟能詳的數字,大家都知道這是學習數學的基礎,代表全世界通用的十進位,即滿十進一,滿二十進二,以此類推。世界通用的十進位,對於現代文明的我們看來是那麼地熟悉自然。在人類文明進程過程中,算法並不是就只有十進位一種,在很多文明體系中出現各種各樣的算法,如二進位、二十進位等等。
  • 你可能不知道,二進位比十進位更簡單
    在世界各文明獨立發展的數學中,出現過二十進位、六十進位、十六進位、十進位等,其中最廣泛採用的數制是十進位。亞里斯多德曾對此分析,可能是因為人有十個手指頭的緣故。直到現在,小朋友們學算術時還經常掰著手指頭算簡單的加減運算。