数码管显示学号

要求:使用数码管显示学号411-03

C51单片硬件电路相关模块:

一.数码管显示模块:

        LED1~8端接138译码器的右端,由138译码器的P2_2,P2_3,P2_4三个管口控制,即接在MCU的P2_2,P2_3,P2_4上面,当P2_2,P2_3,P2_4为111时,最左端数码管可以开始工作,P2_2,P2_3和 P2_4为110时,左边第二个数码管可以工作。

二.74HC245芯片:

        由于P0端给的电流比较小,不足以支持数码管足够的亮度,故通过74HC245对电流放大使其达到足够的电流大小

三.138译码器

四.MCU模块       

数码管显示学号_第1张图片

数码管显示学号_第2张图片

数码管显示学号_第3张图片

主函数如下:

#include 
#include 
#include"Delay.h"
#include"NiXie.h"

void main()
{
	while(1)
	{
		NiXie(1,4);    //第 1 个数码管输出 4
		NiXie(2,1);    //第 2 个数码管输出 1,下面类比
		NiXie(3,1);
		NiXie(4,10);
		NiXie(5,0);
		NiXie(6,3);	
	}
	
}

 Delay延时函数头文件

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

 Delay延时函数:延时以1ms为单位的xms个循环(在12.000MHZ下的单片机)

void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
	 	i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}

}

  NiXie数码显示函数头文件

#ifndef __NiXie_H__
#define __NiXie_H__

#include 

void NiXie(unsigned char Loction,Num);

#endif

   NiXie数码显示函数C文件

#include 
#include 
#include "Delay.h"

unsigned char Table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};	  //0~9,-

void NiXie(unsigned char Loction,Num)
{
	switch(Loction)
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
        //当为111时,138译码器右端输出0111 1111,Y7的非为0低电平,LED8可以工作
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
        //接下如上
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=Table[Num];
    //P0输出相应的数组元素
    //数组元素对应的八位二进制接在74HC245输入上,74HC245放大输出在abcdefg和dp上
    //共阴dp接低电平0时使用可以工作
    //数码管点亮对应的二极管组成数字
	Delay(1);
	P0=0x00;
    //数码管工作时  位选 段选 位选 段选....
    //在操作中间过程中,由于单片机太快,上一段的数据会串到下一段数据中去
    //如果没有一次清零使全部LED灯管熄灭,那么在LED灯闪烁时容易造成串数据 
    //经过清零可以  完成  消影
}

共阳极数码管编码表:

unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

共阴极数码管编码表:

unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

你可能感兴趣的:(C51单片机,c++,c语言,开发语言)