标题: 51单片机GPIO口输出实验程序 8位七段数码管显示学号 [打印本页]

作者: 547012012    时间: 2019-4-24 00:09
标题: 51单片机GPIO口输出实验程序 8位七段数码管显示学号
实验二  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为实验现象。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1