2 ttom1995 TTom1995 于 2015.07.22 19:57 提问

关于单片机的数码管扫描

为什么下面的程序在现实的不是扫描而是有点乱
#include
#define uint unsigned int
#define uchar unsigned char

sbit LE1=P2^0; //位选573锁存器使能
sbit LE2=P2^1; //段选573锁存器使能
void delay (int time)
{
uint i,j;
for (i=0;i<time;i++)
for (j=0;j<50;j++);
}
uchar code dis[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

uchar code step[8]={0x7f,0xbf,0xcf,0xdf,0xf7,0xfb,0xfc,0xfd};
void main ()
{
while (1)
{
uint i;
for (i=0;i<8;i++)
{
P1=step[i];
LE1=1;
LE1=0;
P1=dis[i];
LE2=1;
LE2=0;
delay(8000);
}
}
}

5个回答

CSDNXIAON
CSDNXIAON   2015.07.22 20:00

单片机——数码管
单片机之静态数码管
51单片机--数码管
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Dagegeili
Dagegeili   2015.07.24 16:18

代码这么贴,太乱了。

liu_yp_
liu_yp_   2015.07.24 16:50

你把for循环里的代码改成这样看看
for (i=0;i<8;i++)
{
P1=step[i];
LE1=1;
P1=dis[i];
LE2=1;
delay(8000);
LE1=0;
LE2=0;
}

qq_16924151
qq_16924151   2015.08.06 07:52

这完全不能真正理解你的程序啊

shidizai1993
shidizai1993   2015.08.28 12:39

能明白你的意思 看看锁存器的连接对不对 断选位选的数组编码有没有问题 程序上 P1每次赋值前先置0一下 看看有没有效果

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
单片机:数码管的动态扫描
#include"bsp.h" sbit DUAN = P0^0; sbit WEI = P0^1; unsigned char TABLECA[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; unsigned char TABLECC[16] = {0x3f,0x0
51单片机开发系列三_数码管动态扫描显示
51单片机开发系列三 数码管动态扫描显示 象棋小子    1048272975 数码管由于发光亮度强,指示效果好,非常适合于电梯楼层等数值显示应用中。对于一位数码管,可以采用静态显示,但实际应用中都是需要显示多位数值,数码管模块也只能动态显示,因此笔者在这里简单分析一下数码管动态扫描驱动的实现。
51单片机汇编程序-数码管动态扫描
51单片机汇编程序-数码管的动态扫描 可直接改写
单片机数码管重影和闪烁
单片机数码管重影和闪烁   在进行数码管动态扫描时,经常出现相邻LED某些段位微亮的重影。 产生重影的原因: 由于数码管是由发光管组成的,发光管是有反应时间的,太快就会因为发光管没有来的急放电就要显示下一状态,两种状态叠加显示,就成了重影。’ 其实LED的响应时间在纳秒级,相当快。但是人的眼睛有视觉滞留的特点,所以当你扫描时间太短的时候,某一个段码已经由亮转为暗,但是人的眼睛还没有反应过
6.简易电子钟数码管动态扫描(使用定时器)有调时功能
/*  ***********************************************************************************************  * Cool51  * 51开发板例程  *  *  * 文件名称:“main.c”  * 摘 要:电子表  * 作 者:Rays_ele  *  * 当前版本:1.0  *
PIC单片机-利用Timer2定时器的溢出中断实现动态扫描数码管
编写程序,令数码管的显示顺序为:0123,1230,2301,3012。 数码管显示分静态扫描和动态扫描,动态扫描显示一般分两种方式 1、选用一个数码管位,写断码显示,延时一定的时间,关闭显示,选择下一位,依次类推,完成数码管的多位扫描显示,这种方式比较耗CPU资源。 2、利用定时器,每隔一个固定的时间去选通,写断码,这种方式可以降低CPU的占用时间,同时,每个数码管显示时间固定
8位数码管动态扫描实验原理图
8位数码管动态扫描实验原理图,LED动态扫描电路 protues仿真,特备适合初学者进行学习参考学习。
【程序】STM32F103单片机使用定时器DMA进行全自动8位数码管动态扫描
#include const uint8_t seg8[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; // 数码管0~9段码表 uint16_t segbuf[8][16]; // 共有8个数码管, 点亮每个数码管需要传送16位数据 void delay(void) { uint32_t i; for
数码管动态扫描显示01234567
原理图:8个数码管它的数据线并联接到JP5, 位控制由8个PNP型三级管驱动后由JP8引出。 相关原理:     数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。我们分别把他命名为A,B,C,D,E,F,G,H。      搞懂了这个原理, 我们如果要显示一个数字2, 那么 A,B,G,E,D这5个段的发光管亮就
菜鸟之学习51单片机(六)点亮数码管,动态扫描
首先看看原理图,如下 JPSMG是接+5V P2.0-P2.7,每一个I/O口控制一个数码管,每一个数码管的显示方式由P0口控制,所以P0口和P2口共同控制数码管 再看一下编码 因此,可以写一个数组对数码管0-F的显示, S[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x