实验二 GPIO口输出实验②(数码管显示)
一、 实验目的
学习单片机GPIO口(如P0、P2口)输出功能和数码管的使用方法(静态扫描和动态扫描)
二、 实验要求
利用8位数码管显示自己学号的后8位(P0为数码管段码值的输出口、P2为数码管位选值的输出口)。
三、 实验原理图
如下图a1
四、 实验内容:
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为实验现象。
|