51单片机静态动态数码管显示
通过此实训了解动态数码管的显示原理,掌握编码方法。共阴极和其阴极数码管的不同之处及常用设计方法。
实训设备
这里使用的377锁存器模块控制的数码管下面就是电路图
显示内容
在显示模块的八位 LED 数码上显示数字,显示格式为:“012345678”,单片机 IO 口模拟芯片时序输出。“8”字形 LED 数码管共 10 个引脚,其中两个引脚为公共电极,这两个公共电极在数码管内部已经连在一起。当数码管为共阳极时,公共端接高电位时数码管选通,才具有点亮的条件。当数
码管为共阴极时则接低电位选通。剩下的八个引脚分别对应数码管上的八个段。下图以共阳极型数码为例加以说明。
单片机 P0.7-P0.0 口接显示模块数码管区的 D7-D0,P2.0 接 CS1 为作段选,P2.1 接 CS2作为位选。P2.2 接 WR 作为写入使能
/*********************************************************************/
云量:勾云鹏
/* 单片机 P0 口(8 位)接显示模块-数码管 D0-D7
CS1---P25
CS2---P26
WR ---P27
/*********************************************************************/
#include <REGX52.H> // AT89S52 标准头文件
#include<intrins.h>// 包含_nop_(); // 大约 1us
sbit CS1=P2^5; //
sbit CS2=P2^6;
sbit WR_S=P2^7;
unsigned char xian[8];
void Delayus(unsigned int time)//延时时间为 1us * x 晶振是 11.0592M
{
unsigned int _y;
for(_y = 0; _y < time; _y++)
_nop_();
}
unsigned char code shuma[]= //段选码
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xff};
/*0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-, ,*/
unsigned char code wei[]={ //位选码
0XFE, //11111110
0XFD, //11111101
0XFB, //11111011
0XF7, //11110111
0XEF, //11101111
0XDF, //11011111
0XBF, //10111111
0X7F, //01111111
};
void smghs(void)
{static unsigned char j;j++;
if(j==8)j=0;
P0=wei[j]; //位选CS2=0;WR_S=0;WR_S=1;
CS2=1;
P0=shuma[xian[j]]; //段选
CS1=0;
WR_S=0;
WR_S=1;
CS1=1;
Delayus(50); //消影
P0=0xff;
CS1=0;
WR_S=0;
WR_S=1;
CS1=1;
}
void main(void)
{
while(1)
{
xian[0]=0; //显示数字“0”
xian[1]=1; //显示数字“1”
xian[2]=2; //显示符号“2
xian[3]=3; //显示数字“3”
xian[4]=4; //显示数字“4”
xian[5]=5; //显示符号“4
xian[6]=6; //显示数字“6”
xian[7]=7; //显示数字“7”
smghs(); //调用数码管子程序
} }
本文含有隐藏内容,请 开通VIP 后查看