“掌握數(shù)碼管的靜態(tài)、動態(tài)顯示原理及編程方法。--不是綜合案例”
實現(xiàn)數(shù)碼管的靜態(tài)及動態(tài)顯示:
效果1(靜態(tài)顯示):6位數(shù)碼管循環(huán)顯示數(shù)字0~F;
效果2(動態(tài)態(tài)顯示):6位數(shù)碼管同時顯示數(shù)字1~6;
效果3(按鍵檢測):用中斷或查詢方式進行按鍵檢測,實現(xiàn)數(shù)碼管顯示值的加減,最大值為65535;
01電路圖
我們的電路圖如下:
02效果
代碼如下:
/************
時間:2023/04/26
作者:顧
效果1(靜態(tài)顯示):6位數(shù)碼管循環(huán)顯示數(shù)字0~F;
**************/
#include < reg51.h >
//*****聲明函數(shù)和變量、引腳的定義
#define u8 unsigned char
#define u16 unsigned int
u8 Table_cc[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
/*****延時函數(shù)********************
時間:2023年4月26日
功能:延時110*10 = 1100μs = 1.1ms
**********************************/
void Delay(u16 k){
u16 i,j;
for(i=0;i< k;i++)
for(j=0;j< 1100;j++);
}
/*****顯示函數(shù)****************
時間:2023年4月26日
功能:
數(shù)碼管顯示函數(shù)
********************************/
void Display(u16 n){
//顯示秒個位
P1 = 0XC0; //1100 0000
P2 = Table_cc[n];
Delay(100);
}
/*****主函數(shù)****************
時間:2023年4月26日
********************************/
void main(){
u8 i;
while(1){
for(i=0;i< 16;i++)
{
Display(i);
}
}
}
03效果2
代碼如下:
方法一
/************
時間:2023/04/26
作者:顧
效果2(動態(tài)態(tài)顯示):6位數(shù)碼管同時顯示數(shù)字1~6;(30分)
**************/
#include < reg51.h >
//*****聲明函數(shù)和變量、引腳的定義
#define u8 unsigned char
#define u16 unsigned int
u8 t[6]= {17,17,17,17,17,17};
u8 Table_cc[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x00
};
/*****延時函數(shù)********************
時間:2023年4月26日
功能:延時110*10 = 1100μs = 1.1ms
**********************************/
void Delay(u16 k){
u16 i,j;
for(i=0;i< k;i++)
for(j=0;j< 110;j++);
}
/*****顯示函數(shù)****************
時間:2023年4月26日
功能:
數(shù)碼管顯示函數(shù)
********************************/
void Display(u8 h,u8 m,u8 s){
P1 = 0Xff;
P2 = Table_cc[s%10];
P1 = 0Xdf; // 1101 1111
Delay(10);
P1 = 0Xff;
P2 = Table_cc[s/10];
P1 = 0Xef; // 1110 1111
Delay(10);
P1 = 0Xff;
P2 = Table_cc[m%10];
P1 = 0Xf7; // 1111 0111
Delay(10);
P1 = 0Xff;
P2 = Table_cc[m/10];
P1 = 0Xfb; // 1111 1011
Delay(10);
P1 = 0Xff;
P2 = Table_cc[h%10];
P1 = 0Xfd; // 1111 1101
Delay(10);
P1 = 0Xff;
P2 = Table_cc[h/10];
P1 = 0Xfe; // 1111 1110
Delay(10);
}
/*****主函數(shù)****************
時間:2023年4月26日
********************************/
void main(){
while(1){
Display(12,34,56);
}
}