
博主用的這個主板通過CPLD實作類似3-8譯碼器功能來控制四位數碼管,至于段選和位選這些不是很清楚,之后內容會補充
以下代碼實作四位數碼管的最高位,閃爍顯示0和1
1 #include<reg52.h> //包含頭檔案,一般情況不需要改動, 2 #include <absacc.h> 3 #define SEG1 XBYTE[0xffec] 4 #define SEG2 XBYTE[0xffed] 5 #define SEG3 XBYTE[0xffee] 6 #define SEG4 XBYTE[0xffef] 7 #define uchar unsigned char //頭檔案包含特殊功能暫存器的定義 8 void delay100ms(unsigned char num); 9 //共陽 10 uchar code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //0-9 11 0x88,0x83,0xc6,0xa1,0x86,0x8e,//A-F 12 0x7f//點 13 }; 14 15 16 17 /*------------------------------------------------ 18 四位數碼管使用 19 ------------------------------------------------*/ 20 void main (void) 21 { 22 uchar x=0x3; 23 bit flag=0; 24 SEG1=SEG2=SEG3=SEG4=0xff;//全滅 25 while(1) 26 { 27 flag=1; 28 SEG1=smg[flag]; 29 delay100ms(5); 30 flag=0; 31 SEG1=smg[flag]; 32 delay100ms(5); 33 } 34 } 35 //延時函式 36 void delay100ms(unsigned char num) 37 { 38 unsigned char n,m; 39 for(;num;num--) 40 { 41 for(n=500;n;n--) 42 { 43 for(m=500;m;m--); 44 } 45 } 46 }四位數碼管使用
0-9999 計數器
1 #include<reg52.h> //包含頭檔案,一般情況不需要改動, 2 #include <absacc.h> 3 #define SEG1 XBYTE[0xffec] 4 #define SEG2 XBYTE[0xffed] 5 #define SEG3 XBYTE[0xffee] 6 #define SEG4 XBYTE[0xffef] 7 #define uchar unsigned char //頭檔案包含特殊功能暫存器的定義 8 void delay100ms(unsigned char num); 9 //共陽 10 uchar code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 //0-9 11 }; 12 unsigned int count; 13 /*------------------------------------------------ 14 四位數碼管 0-9999 15 ------------------------------------------------*/ 16 void main (void) 17 { 18 bit flag=0; 19 SEG1=SEG2=SEG3=SEG4=0xff;//全滅 20 21 if(count>9999) 22 { 23 count=0; 24 } 25 while(1) 26 { 27 SEG4 = smg[count%10]; 28 SEG3 = smg[count/10%10]; 29 SEG2 = smg[count/100%10]; 30 SEG1 = smg[count/1000%10]; 31 count++; 32 delay100ms(5); 33 } 34 } 35 //延時函式 36 void delay100ms(unsigned char num) 37 { 38 unsigned char n,m; 39 for(;num;num--) 40 { 41 for(n=500;n;n--) 42 { 43 for(m=500;m;m--); 44 } 45 } 46 }0-9999計數器
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/254651.html
標籤:其他
下一篇:gho、wim、esd的區別
