數碼管的靜態顯示實驗報告
Ø 數碼管的原理
l 數碼管的構造
數碼管實際是由LED構成用高低電平控制。
有七段數碼管和八段數碼管之分,也有共陰和共陽之分。
七段數碼管是沒有第八段即小數點這一段則八段數碼管有小數點。
共陰數碼管則是把所有陰極相連,共陽則是把所有陽極相連。
此為原理圖。
l 數碼管的邏輯電平
數碼管的顯示是用CPU控制的CPU共給數碼管的高低電平決定了它段位的亮滅,
而51單片機中運用正邏輯即高電平為1,低電平為0.。
Ø 數碼管的靜態顯示具體操作
一
打開原理圖
1.用P0的8個端口控制JP3的端口
2.寫出共陰極字段碼(共陽極直接去反就行,大部分都是用共陰極數碼管)
二
按照接線圖在單片機上接線
三
在Keil中新建項目并加入main.c
在main.c中寫程序
如下:
/**************************************************************************************
*
* 靜態數碼管顯示實驗
***************************************************************************************/
#include "reg52.h" //´定義單片機一些特殊功能
typedef unsigned int u16; //對數據類型定義
typedef unsigned char u8;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
void delay(u16 i)//延時函數
{
while(i--);
}
/*******************************************************************************
* 函數名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
u16 i;
while(1)
{
for(i = 0; i <= 15 ; i++)//循環顯示0~F
{
P0=~smgduan;//對共陰極字段碼去反
delay(60000);//等待1S
P0=0x00;
}
for(i = 15; i >= 0; i--)//循環顯示F~0
{
P0=~smgduan[ i];
delay(60000);
P0=0x00;
}
}
}
Ø KEIL開發環境的調試
CPU中I/O口的高低電平可以通過KEIL的開發環境來調試。
可以具體的觀察高低電平。
|