本文目錄一覽:
- 1、C語言獨立按鍵按第一下為什麼歸0
- 2、c語言獨立按鍵控制程序複位
- 3、51單片機 ,用C語言編程 通過獨立按鍵控制蜂鳴器和靜態數碼管,
- 4、c語言 獨立按鍵按下計數
- 5、c語言 怎樣用兩個獨立按鍵控制一位數碼管顯示 就是按下其中一個按鍵就加1 按下另一個按鍵就減1 0~9顯示
C語言獨立按鍵按第一下為什麼歸0
if(k==0)
{
i++;
if(i15)
{i=0;}
while((a50)(k==0))
{
delay();
a++;
}a=0;
P0=bl[i];
}
把i++;這行放到 P0=bl[i]; 後面
c語言獨立按鍵控制程序複位
第一,直接使用硬體來複位,將原本要接到P3.3的電平接到硬體複位上,當然需要一定的設計
第二,還是硬體,直接將此電平接到看門狗電路上
第三,軟體,前提是你的單片機支持軟體複位(包括直接複位和內置的看門狗)
51單片機 ,用C語言編程 通過獨立按鍵控制蜂鳴器和靜態數碼管,
1.數碼管前三位顯示一個跑表,從000到999之間以1%秒速度運行,當按下一個獨立鍵盤時跑錶停止,鬆開手後跑表繼續運行。(用定時器設計表)。
code:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit dula = P2^6;
sbit wela = P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num;
uchar bai, shi, ge, flag = 0,t0 = 0;
void delay(uchar z);
void display(void);
void main(void)
{
num = 0;
P3 = 0xff;
TMOD = 0x01;
TH0 = (65536-10000) / 256;
TL0 = (65536-10000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
while(1) {
if(key1 == 0) {
delay(5);
if(key1 == 0) {
flag = 1;
}
while(!key1);
delay(5);
while(!key1);
}
display();
}
}
void display(void)
{
dula = 1;
P0 = table[num / 100];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe;
wela = 0;
delay(1);
dula = 1;
P0 = table[num % 100 / 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0;
delay(1);
dula = 1;
P0 = table[num % 10];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfb;
wela = 0;
delay(1);
}
void delay(uchar z)
{
uchar
c語言 獨立按鍵按下計數
一般是200MS的時間,如果有大部分是按下的就算按下
比如此階段掃描十次的話,7次按下就算按下
或者掃描一次就把結果放入緩存區,緩存區里有十個數,取平均值作為結果
作為按鍵的實際情況
c語言 怎樣用兩個獨立按鍵控制一位數碼管顯示 就是按下其中一個按鍵就加1 按下另一個按鍵就減1 0~9顯示
這個實現是很容易的,定義兩個鍵,一個為加,一個為減,數碼管因為只有一個,所以可以用靜態顯示。程序和模擬圖如下:
#includereg51.h
#define uchar unsigned char
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit keyup=P3^0;
sbit keydn=P3^1;
main()
{
uchar i;
i=0;
while(1)
{
P1=table[i];
if(keyup==0)
{
i++;
while(keyup==0);
}
if(keydn==0)
{
if(i0)i–;
while(keydn==0);
}
i%=10;
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287472.html