51微控制器要求按鍵顯示按一下顯示數字

時間 2021-09-10 12:10:58

1樓:農凌柏

數碼管分共陽和共陰 我這裡給你舉個七段共陽數碼管的例子吧。

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8 ,0x80,0x90,0x88,0x83 ,0xc6,0xa1,0x86,0x8e

數碼管是有8個管子構成的 具體的圖編號你可以在網上搜到

我現在寫的0xc0 代表數碼管的0 ,後面類推 對應從0-f 的編碼

程式編碼要和硬體設計相結合 這個程式是把七段數碼管的a-g 接到p0^0-p0^6口

沒有加按鍵消抖程式 有需要可以去網上搜搜就是加個延時

#include //包含標頭檔案,一般情況不需要改動,

//標頭檔案包含特殊功能暫存器的定義

sbit buzzer = p1^0;//定義蜂鳴器到p1.0口

sbit key1 = p1^1; //按鍵1

sbit key2 = p1^2; //按鍵2

sbit key3 = p1^3; //按鍵3

sbit key4 = p1^4; //按鍵4

sbit key5 = p1^5; //按鍵5

sbit key6 = p1^6;//按鍵6

p0=0x00; //設定p0口輸出都是低電平

buzzer = 1;//設定蜂鳴器 輸出為高電平 此時不響 (蜂鳴器+接5v -接微控制器口,中間串個電阻限流)

/*-------------- 主函式 ----------*/

void main (void)

if(key == 2)

if(key == 3)

if(key == 4)

if(key == 5)

if(key == 6)}

2樓:宋桓公

首先你要判斷按鍵是否按下,一旦按鍵按下,你就檢測按鍵是否彈起,一旦彈起就顯示這個數。

3樓:dou王帥

這個真是很簡單啊 新手都覺得很簡單哦

51微控制器怎麼用按鍵控制一個數碼管,按一下顯示一個數字,順序顯示

4樓:小丑魚啦

用p0口控制共陰數碼管,具體程式如下:

#include"stc15.h"

sbit y1=p4^4;

sbit y2=p4^5;

sbit k1=p3^3;

sbit k2=p3^2;

char led7coderight=;

void delay(int x)

} void main()

;    //延時去抖

if(k1==0)     //再判斷是否按下;      //n加1

if(n==10) //如果n等於10,n為0}while(k1==0); //等待按鍵鬆開//延時去抖

if(k2==0)     //再判斷是否按下if(n<0)   //如果n小於0,n為9}while(k2==0);    //等待按鍵鬆開  } }y2=1;y1=1;

p2=led7coderight[n];          //將段碼送p0口

y2=0;y1=0;}}

設計一個微控制器輸入顯示系統,要求每按一下按鍵數碼管顯示資料加1(數碼管初始值為0,9加1 後顯示0)。

5樓:沈偉棟

程式清單如下:

#include < reg51.h >// 51微控制器標頭檔案

#define uchar unsigned char // 巨集定義

,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count );}}

擴充套件資料

8051微控制器具有如下功能:

8位cpu·4kbytes程式儲存器(rom) (52為8k)

128bytes的資料儲存器(ram) (52有256bytes的ram)

32條i/o口線·111條指令,大部分為單位元組指令

21個專用暫存器

2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)

一個全雙工序列通訊口

外部資料儲存器定址空間為64kb

外部程式儲存器定址空間為64kb

邏輯操作位定址功能·雙列直插40pindip封裝

單一+5v電源供電

cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;

rom:用以存放程式、一些原始資料和**;

i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出

t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。

6樓:匿名使用者

#include < reg52.h >   // 嵌入51微控制器標頭檔案

#define uchar unsigned char // 巨集定義,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count ); }}

求51微控制器c語言程式設計,要求我每按一下按鈕a顯示器上的數就加1,按一下按鈕b顯示器清零。要求c語言程式!

7樓:匿名使用者

if(a==0) //a 按下後讓連線數碼管的埠顯示1

if(b==0) //b按下後讓數碼管不顯示

51微控制器用4個按鍵,每個按鍵被按下都會使數碼管顯示一個數值

要求用微控制器控制數碼管顯示0-f。按一下按鍵,數碼管的顯示數字加一。

8樓:

請你參考:

**如下:

#include

sbit button=p3^0;

unsigned char code segcode=;void delayms(unsigned int x)void main()} }

希望對你有所幫助!!!

微控制器按鈕設定按一下加1另按鍵按一下減1求幫忙編寫程式

include define uchar unsigned char define uint unsigned intsbit k1 p1 4 sbit k2 p1 5 uchar data k1state uchar data k2state uint data num,ntmp uchar co...

問一下51微控制器I O埠預設是高電平,請問這是輸入還是輸出

我也是枕頭 以at89s52微控制器為例 他的 io 通訊狀態本身並不能設定為輸入或者輸出狀態 其中的 p0口 為匯流排式設計 電路形式 為 集電極開路 也就是說它的內部開關只能將 p0的io連線到gnd上 而不能連線到 vcc上 當向p0 寫 0 時 io口將連線到 gnd 而向p0寫 1 時 i...

有人能幫我改一下這個51微控制器C語言程式嗎 O O

void delay uchar getkey void 獲取按鍵狀態 主函式 void main void else gps flag 0 rev stop 0 rev no else else gps flag 0 rev stop 0 rev no void timer0 void inter...