實驗二 GPIO口輸出實驗②(數碼管顯示)
一、 實驗目的
學習單片機GPIO口(如P0、P2口)輸出功能和數碼管的使用方法(靜態掃描和動態掃描)
二、 實驗要求
利用8位數碼管顯示自己學號的后8位(P0為數碼管段碼值的輸出口、P2為數碼管位選值的輸出口)。
三、 實驗原理圖
如下圖a1
a1.png (127.19 KB, 下載次數: 81)
下載附件
2019-4-24 00:11 上傳
四、 實驗內容:
1. 硬件連接
JP10<->J12、JP11<->J16
2. 實驗代碼
//實驗二實驗要求:8位共陽數碼管顯示學號后八位
#include"STC15.h"
typedef unsignedchar u8;
typedef unsignedint u16;
u8 codeSEG_Code[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
u8 codeBit_Code[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u8Student_number[]={6,0,1,5,4,0,2,4};
void Pin_Mode(void);
voidSEG7_1Bit_Display(u8 num,u8 Position);
voidDelay_nms(u16 nms);
void main(void)
{
u8 i=0;
Pin_Mode();
while(1)
{
SEG7_1Bit_Display(Student_number[i++],8-i);
Delay_nms(1);
i=i%8;
}
}
voidPin_Mode(void)
{
P0M1=0x00;P0M0=0x00;
P2M1=0x00;P2M0=0x00;
}
voidSEG7_1Bit_Display(u8 num,u8 Position)
{
P2=0xff;
P0=~SEG_Code[num];
P2=Bit_Code[Position];
}
voidDelay_nms(u16 nms) //??65535nms
{
u16 i,t;
for(i=0;i<nms;i++)
{
for(t=0;t<1080;t++);
}
}
2.實驗現象:
8位數碼管顯示自己學號的后8位(P0為數碼管段碼值的輸出口、P2為數碼管位選值的輸出口)。
圖a2為實驗現象。
a2.jpg (143.58 KB, 下載次數: 61)
下載附件
2019-4-24 00:11 上傳
|