⑴ 51單片機怎麼用按鍵控制一個數碼管,按一下顯示一個數字,順序顯示
1、首先,要把代碼寫好,點亮數碼管。
⑵ 單片機按鍵控制數碼管顯示
你有原理圖沒?
設置三個標志位,全局變數,需要在倒計時中斷里改變狀態的。
程序流程是:
主程序流程:
上電初始化(設置LED狀態,設置定時器相關寄存器參數,設置三個標志位狀態)--->
死循環(判斷標志位是否容許按鍵有效,然後判斷是否有按鍵按下,轉入響應的子程序處理段)
定時器中斷任務:
判斷是否到15秒,到了就置位標志位。
⑶ 《單片機應用技術》期末考試 數碼管顯示按鍵次數
數碼管顯示按鍵次數
通過按下按蘆源鍵在數碼管上顯示按下陪讓態的次數,進行1-10次的計數,當按下第十次的時候,歸零。
一滑凳,結構圖
二,程序
#include "reg52.h"
sbit C1 = P2^7;
sbit C2 = P2^6;
sbit C3 = P2^5;
sbit C4 = P2^4;
sbit SW1 = P3^4;
sbit SW2 = P3^3;
unsigned char SMGNoDot_CA[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
unsigned char s1=0, s2=0;
void DelaySMG(unsigned char t)
{
while(t--);
}
void DisPlaySMG_Bit(unsigned char pos, unsigned char dat)
{
P0 = 0xff;
switch(pos)
{
case 1:
C1 = 1; C2 = 0; C3 = 0; C4 = 0;
break;
case 2:
C1 = 0; C2 = 1; C3 = 0; C4 = 0;
break;
case 3:
C1 = 0; C2 = 0; C3 = 1; C4 = 0;
break;
case 4:
C1 = 0; C2 = 0; C3 = 0; C4 = 1;
break;
}
P0 = dat;
}
void DisPlaySMG()
{
DisPlaySMG_Bit(1, SMGNoDot_CA[s1]);
DelaySMG(100);
DisPlaySMG_Bit(2, 0xbf);
DelaySMG(100);
DisPlaySMG_Bit(3, 0xbf);
DelaySMG(100);
DisPlaySMG_Bit(4, SMGNoDot_CA[s2]);
DelaySMG(100);
}
void Scan_Keys()
{
if(SW1 == 0)
{
DelaySMG(200);
if(SW1 == 0)
{
while(SW1 == 0)
{
DisPlaySMG();
}
s1++;
if(s1 == 10)
{
s1 = 0;
}
}
}
if(SW2 == 0)
{
DelaySMG(200);
if(SW2 == 0)
{
while(SW2 == 0)
{
DisPlaySMG();
}
s2++;
if(s2 == 10)
{
s2 = 0;
}
}
}
}
void main()
{
while(1)
{
DisPlaySMG();
Scan_Keys();
}
}
三,流程圖
⑷ 51單片機用4個按鍵,每個按鍵被按下都會使數碼管顯示一個數值
5. [問答題] [技能題畫10配線圖寫出程序]按下按鈕S1,數碼管顯示1;按下按鈕S2,數碼管顯示2;按下按鈕S3,數碼管顯示3;按下按鈕S4,數碼管顯示4;能互相直接切換。按下停止按鈕後,數碼管熄滅。。
⑸ 51單片機怎樣用鍵盤控制數碼管顯示
51單片機怎樣用鍵盤控制數碼管顯示的方法。
如下參考:
1.首先,編寫代碼並點亮數碼管。
⑹ 51單片機c語言設計,按鍵控制數碼管,依次按下顯示0到9循環
假設你的是共陽極數碼管,P0接數碼。按鍵接P2^0;
#include<reg52.h>
typedef unsinged int uint;
sbit key=P2^0;
unsigned char tab[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void denay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--)
}
void main()
{
uchar a;
while(1)
{
P0=tab[a];
if (key1==0)
{delay(10);
if(key==0)
{
while(!key1);
a++;
if(a==10) a=0;
}
}
}
⑺ 單片機 按鍵(採用獨立式按鍵)按下一次,讓液晶第一位顯示的數碼加1,顯示範圍0~9
程序清單如下:
#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'
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
};//延時N毫秒
void DelayNms( uint N ) // 利用x、y作簡單的自減運算,消耗單片機指令周期,達到延時的目的
{
uint x,y;
for( x=N; x>0; x-- )
for( y=110; y>0; y-- );
}
//數碼管顯示 // 顯示方式為動態掃描,視覺暫留原理
void Display( uchar Num ) // *p指向Main函數中的數組ShowNum的首地址
{
P0 = DataChar[ Num ]; // 向P0賦段碼值
DelayNms(2); // 短暫的延時
P0 = 0x00; // 讓數碼管熄滅,否則會造成數字重疊
}
void main( void )
{
while(1)
{
if( Key == 0 )
{
DelayNms(30);
if( Key == 0 )
{
Count += 1;
Count = (Count>9)? 0 : Count;
}
while( !Key );
}
Display( Count );
}
}