一個簡單的小程序!!!
廢話不多說,上代碼,如果有看不懂的歡迎評論提問,附效果圖&&原理圖!!!// Header:
// File Name: 按鍵控制數碼管循環顯示
// Author: hhhmxk
// Date: 2020.10.25 21:20
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit key = P3^4;
sbit w1 = P3^0;
sbit w2 = P3^1; // 數碼管位選端口
#define dx P2 // 數碼管段選端口
u8 code seg_tab[] = {
0x40, 0x79, 0x24, 0x30, 0x19,
0x12, 0x02, 0x78, 0x00, 0x10
}; // encode
void display(u8 num);
void delay_ms(u16 num);
void main()
{
u8 count;
count = 0;
while(1)
{
if(key == 0)
{
delay_ms(10);
if(key == 0)
{
count = count==60? 0 : count+1;
while(!key); // 松手檢測
}
}
display(count);
}
}
void display(u8 num)
{
u8 shiwei, gewei; // 數字的十位 個位
shiwei = num/10; //取模 34/10 = 3
gewei = num%10; //取余 34%10 = 4
w1 = 1; //高位位選
dx = seg_tab[shiwei] | 0x80; //去掉后面的小點 下面同理
delay_ms(2);
w1 = 0;
w2 = 1; //低位位選
dx = seg_tab[gewei] | 0x80;
delay_ms(2);
w2 = 0;
}
void delay_ms(u16 num)
{
u16 x, y;
for(x = num; x > 0; x--)
for(y = 110; y > 0; y--);
}
08e66f6a358c681df79f3e17c627c8b5a8b577e2.gif (1.06 MB, 下載次數: 32)
下載附件
2020-11-21 12:26 上傳
|