

這篇主要帶大家了解一下如何對藍橋杯單片機開發板的數碼管進行基本操作,大家可以看一下電路圖,這里不再對74HC138譯碼器和74HC573鎖存器做講解,可以參考藍橋杯單片機----LED指示燈的基本控制里面的內容,

設計內容:
1.數碼管從左到右依次點亮;
2.數碼管全部點亮后,從左到右依次熄滅,

#include<stc15f2k60s2.h>
#define uchar unsigned char //定義無符號字符型別uchar
#define uint unsigned int //定義無符號整型型別uint
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//數字0~9,“-”,“關”
uchar yi,er,san,si,wu,liu,qi,ba; //定義字符型變數yi,er,san,si,wu,liu,qi,ba,當作數碼管顯示控制變數
void delayms(int ms); //延時函式
void allinit(); //初始化函式
void display1(uchar yi,uchar er); //第一、二段數碼管函式
void display2(uchar san,uchar si); //第三、四段數碼管函式
void display3(uchar wu,uchar liu); //第五、六段數碼管函式
void display4(uchar qi,uchar ba); //第七、八段數碼管函式
void SMG_init(); //數碼管顯示程式
void main()//主函式
{
allinit(); //初始化函式
yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;//上電讓數碼全部熄滅
while(1)
{
SMG_init();
display1(yi,er); //第一、二段數碼管函式
display2(san,si); //第三、四段數碼管函式
display3(wu,liu); //第五、六段數碼管函式
display4(qi,ba); //第七、八段數碼管函式
}
}
void SMG_init() //數碼管顯示程式
{
uchar k; //定義無符號字符型變數k
for(k=0;k<8;k++)
{
P2=0XC0;P0=~(0XFE<<k);P2=0XFF;P0=0X00;delayms(500); //段選全部點亮狀態下,讓數碼管位選移位選中,延時0.5秒
}
for(k=0;k<8;k++)
{
P2=0XC0;P0=(0XFE<<k);P2=0XFF;P0=0X00;delayms(500); //段選全部點亮狀態下,讓數碼管位選移位關閉,延時0.5秒
}
}
void delayms(int ms)//延時函式
{
uint i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}
void allinit()//初始化函式
{
P2=0XA0;P0=0X00; //關閉蜂鳴器繼電器
P2=0X80;P0=0XFF; //關閉所有LED燈
P2=0XC0;P0=0XFF; //選中所有數碼管段選
P2=0XFF;P0=0XFF; //關閉所有數碼管
}
void display1(uchar yi,uchar er)//第一、二段數碼管函式
{
P2=0XC0;P0=0X01; //選中第一個數碼管段選
P2=0XFF;P0=tab[yi]; //讓第一個數碼管顯示yi指向的值
delayms(1); //延時1ms
P2=0XC0;P0=0X02; //選中第二個數碼管段選
P2=0XFF;P0=tab[er]; //讓第一個數碼管顯示er指向的值
delayms(1); //延時1ms
}
void display2(uchar san,uchar si)//第三、四段數碼管函式
{
P2=0XC0;P0=0X04; //選中第s三個數碼管段選
P2=0XFF;P0=tab[san]; //讓第一個數碼管顯示san指向的值
delayms(1); //延時1ms
P2=0XC0;P0=0X08; //選中第四個數碼管段選
P2=0XFF;P0=tab[si]; //讓第一個數碼管顯示si指向的值
delayms(1); //延時1ms
}
void display3(uchar wu,uchar liu)//第五、六段數碼管函式
{
P2=0XC0;P0=0X10; //選中第五個數碼管段選
P2=0XFF;P0=tab[wu]; //讓第一個數碼管顯示wu指向的值
delayms(1); //延時1ms
P2=0XC0;P0=0X20; //選中第六個數碼管段選
P2=0XFF;P0=tab[liu]; //讓第一個數碼管顯示liu指向的值
delayms(1); //延時1ms
}
void display4(uchar qi,uchar ba)//第七、八段數碼管函式
{
P2=0XC0;P0=0X40; //選中第七個數碼管段選
P2=0XFF;P0=tab[qi]; //讓第一個數碼管顯示qi指向的值
delayms(1); //延時1ms
P2=0XC0;P0=0X80; //選中第八個數碼管段選
P2=0XFF;P0=tab[ba]; //讓第一個數碼管顯示ba指向的值
delayms(1); //延時1ms
P2=0XC0;P0=0X80; //選中第八個數碼管段選
P2=0XFF;P0=0XFF; // 熄滅數碼管
}
![]()
數碼管的基本操作
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275785.html
標籤:其他
上一篇:Spark SQL CLI部署CentOS分布式集群Hadoop上方法
下一篇:宿舍員工組網
