2、代码写完后,要确认原先写好的代码是不是正确的。
3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。
4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。
5、这里改成的是代表数字0的代码,如图所示。
6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。
原理上是可行的,但是有多余的设计,你的6只4511任何时间都在干同样的事情,为什么你不直接只用一个来做,怕驱动电流不够?反正你是做动态扫描的,74HC138每次只让18只数码管中的一只点亮,带1只数码管用1只4511驱动电流足够的啦,把所有数码管的段码引脚都并接在1只4511上即可。其实都上FPGA了还搞那么复杂的外围干嘛,7+18个端口直接驱动18只数码管就可以了,最多加一些缓冲元件扩流。解决方法:试验数码管上显示数字( 单片机直接实现位选 共阴极) 。
解决方式:
连接方法:P0与J12 用8PIN排线连接 P1与JP16 用排线连接 。
代码:
#include<reg52h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
unsigned int code dbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
unsigned int code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
void main()
{
while(1)
{
P1=dbit[4];
P0=num[9];
}
}
位定义
#include<reg52h>
#include<intrinsh>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
void main()
{
while(1)
{
LSA=0;
LSB=0;
LSC=0;
P0=num[6];
delay(2);
LSA=1;
LSB=0;
LSC=0;
P0=num[6];
delay(2);
}
}
//让八个数码管全部亮并且从0~9循环
#include<reg52h>
#include<intrinsh>
#define uint unsigned int
#define uchar unsigned char
uchar num;
uchar wnum=0x00;
uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段选,选择要显示的数字
//uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位数码管
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
void main()
{
P1=wnum;
while(1)
{
for(num=0;num<10;num++)
{
P0=dbit[num];
delay(500);
}
}
}数码管的显示分为两种方式:一种静态显示,一种动态显示。
以8个数码管显示“12345678”为例,说明如下:
静态显示:8个数码管同时点亮,显示的内容就是“12345678”。这种方式比较“笨”,容易理解,但是占用的资源较多。因一个数码管有7个段,电路则包含1个公共端和7个笔画端,要显示一个数字,需要8个电平输入控制口,8个数码管就需要88=64个。显然,这种方式不适合显示多位数。
动态显示:8个数码管依次显示,首先第1个显示“1”其余7个不点亮,然后第2个显示“2”其余7个不显示……依此类推,循环显示1至8位数字。由于人的眼睛识别闪烁的频率是有范围的,当8个数码管循环显示的频率足够高,人眼观察不到单个数码管的间断点亮,看到的现象是第1个数码管一直显示“1”,第2个一直显示“2”……第8个一直显示“8”,因此实现8个数码管显示不同的内容。动态显示相比静态显示占用的电平控制端口要少很多,因不同的数码管之间可以公共端口,例如7个笔画端共用,则只需要7个笔画端+8个公共端,15个端口即可。通常数码管显示都是采用的动态显示方式。
以上,不知道说清楚了没?~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)