數位管基礎:
- 數位管由八個發光二極管組成成“8“字型,按極性分為共陰極數位管(陰極連結在一起)和共陽極數位管(陽極連接配接在一起)。本實驗采用的是共陽極,若要亮,則相應位置0,即為低電平。
- 可以通過給數位管引腳置值來控制亮和滅,顯示不同的圖案,如下圖所示 共陽極數位管再進行取反操作便可以顯示相同的圖案。
一.靜态數位管實驗
1.電路原理圖
2.說明:實驗中使用P0口控制,用排線接P0口和JP3.讓數位管依次顯示0-9。
3.源代碼如下:
/***********************************************
> File Name: 靜态數位管
> Author: pengshp
> Mail: [email protected]
> Date: 2015年 7 月 17 日
*************************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_DIG P0
uchar code DIG_CODE[]={,,,,,
,,,,};//顯示0-9的值
void Delay(uchar);
void main()
{
uchar i;
while()
{
for(i=;i<;i++) //依次顯示0-9
{
GPIO_DIG=~DIG_CODE[i];
Delay(); //延時處理
}
}
}
void Delay(uchar x)
{
uint a,b;
for(a=x;a>;a--)
{
for(b=;b>;b--)
{
}
}
}
備注:程式中的code關鍵字表示将資料存儲在程式存儲空間(Flash)中,以節約RAM的空間,存儲的資料隻能讀不能寫入。
二.動态數位管(不帶譯碼器)
1.電路原理圖
2.說明
- 本實驗通過控制八個數位管分别顯示0-7個數字,使用的數位管為共陰極,即要亮時把相應位置1,輸出高電平。接線為JP10(P0)接JP12,JP8接JP16右排(注意:有金屬觸電的一排朝右),再把JP165斷開。
3.源代碼如下
/**************************************
>File Name: 動态數位管顯示
> Author: pengshp
> Mail: [email protected]
> Date: 2015年 7 月 17 日
***************************************/
#include<reg51.h>
#define GPIO_DIG P0 //段選
#define GPIO_PLACE P1 //位選
#define uchar unsigned char
#define uint unsigned char
uchar code DIG_PLACE[] = {,,,,
,,,};//位選控制 查表的方法控制
uint code DIG_CODE[] = {,,,, //0、1、2、3
,,,, //4、5、6、7
,,,, //8、9、A、B
,,,};//C、D、E、F
uchar DisplayDate[]=; //存放要顯示的8位數字
void DigDisplay();
void main()
{
uchar i;
for(i=;i<;i++)
{
DisplayDate[i]=DIG_CODE[i];
}
while()
{
DigDisplay();
}
}
void DigDisplay()
{
uchar i;
uint j;
for(i=;i<;i++)
{
GPIO_PLACE = DIG_PLACE[i]; //發送位選,控制要亮的數位管
GPIO_DIG = DisplayDate[i]; //發送段碼,顯示相應的數字
j = ; //掃描間隔時間設定
while(j--);
GPIO_DIG = ; //消隐
}
}