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...