c语言-关于单片机的数码管扫描

问题描述

关于单片机的数码管扫描

为什么下面的程序在现实的不是扫描而是有点乱
#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);
}
}
}

解决方案

单片机——数码管
单片机之静态数码管
51单片机--数码管

解决方案二:

代码这么贴,太乱了。

解决方案三:

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

解决方案四:

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

解决方案五:

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

时间: 2024-11-03 03:41:21

c语言-关于单片机的数码管扫描的相关文章

单片机时钟C语言程序 烧进去数码管乱跳。。

问题描述 单片机时钟C语言程序 烧进去数码管乱跳.. #include #define uchar unsigned char #define uint unsigned int sbit duan=P2^6; sbit wei=P2^7; sbit key1=P3^4; sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,

求解答-C语言51单片机串口通信程序求教

问题描述 C语言51单片机串口通信程序求教 #include #include #include #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3; bit read_flag=0; void init_serialcomm(void) { SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD

51单片机矩阵键盘的扫描结果返回给主函数的问题

问题描述 51单片机矩阵键盘的扫描结果返回给主函数的问题 主程序是一个交通灯,现在加了个检测功能.就是4个路口,每个路口用10位的拨码开关检测车辆数量,然后判断是否该减少该路口的红灯时间. 现在问题是:我检测了四个路口的按键信息并返回给主程序,但是四个路口的返回数据发生错乱. 例如:假设初始红灯时间设为10s,东西南北按键信息分别是 1,2,3,4.那接下来东西方向红灯应该只有8s(东西两个数据里取最大的),南北红灯应该只有6s. 但实际上东西红灯时间也减少为6s了. 下面是所有程序:[交通灯程

Go语言实现的简单网络端口扫描方法_Golang

本文实例讲述了Go语言实现的简单网络端口扫描方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "net"  "fmt"  "os"  "runtime"  "time"  "strconv" ) func loop(startport, endport int, inport chan int) {   for i :=

单片机 c语言 数组-单片机 c语言 数组lcd1602

问题描述 单片机 c语言 数组lcd1602 求指教:cxdsz[p+1]是 int 类型数组中的一个数值,怎样求出这个数值的位数,或者说就是想在LCD1602上显示出这个数? char array[]="cxdsz[p+1]" ; len=strlen( array ) ; for(q=0;q<=len;q++) LcdWriteData(array[q]): 为什么不行啊? 解决方案 你可以先定义个a=cxdsz[p+1]然后再char array[]=a,这样你就可以把cx

c语言-51单片机C语言编程问题

问题描述 51单片机C语言编程问题 這個程序是這樣的分IN0IN1JP1JP2 JP2為0時常規測試(全顯示格子1格子2)JP2為1時測試模式 當JP2為1時而且JP1為1時進入測試模式1 測試模式1:當IN0為0時顯示pic1;當IN1為0時顯示pic2; 當IN0=0&&IN1=0以及IN0=1&&IN1=1顯示blank 當JP2為1時而且JP1為0時進入測試模式2當IN1接收到一段約為50ms的脈衝將IN0拉高1.5秒如果這1.5秒內IN0有變為0就顯示pic1且持

c语言 c++ 单片机-51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序。谢谢了

问题描述 51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序.谢谢了 51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序.谢谢了 .万分感谢... 解决方案 具体的哪个单片机?代码需要整个写好么? 解决方案二: http://zhidao.baidu.com/link?url=qpZQDUaPuGYd69ZgYe3bESTSAS7vjc0XO7puc-KtYMWVkxwtMbh5xTkWI5GbvvHT6Eb3WKFhqIfbl7HtGBGZV

c语言-C2530单片机问题, 新手初学。寄存器相关

问题描述 C2530单片机问题, 新手初学.寄存器相关 小弟初学单片机,C2530..看了简介直接在网上找的试验在做, 在做 外部中断 试验的时,这个问题我还是搞不懂... ------------- 初始化的时候, P0SEL &= ~0x02; //设定P0_1为一般的IO口 P2SEL &= ~0x01; //设定P2_0为一般的IO口 为何不直接写出结果,也就是说直接写 P0SEL =0x00 //写出结果 P2SEL = 0; //甚至这样写 ------------------

《数据科学:R语言实现》——2.4 扫描文本文件

2.4 扫描文本文件 在之前的教程中,我们介绍了如何使用read.table和read.csv加载数据到R进程中.然而,read.table和read.csv只适用于列数固定,数据不多的情形.为了在数据处理过程中更加灵活,我们会介绍如何使用函数scan从文件中读取数据.准备工作在本教程中,你需要完成之前的教程,并下载snp500.csv到当前目录.实现步骤执行下列步骤,扫描CSV文件中的数据.1.首先,你可以使用函数scan读取snp500.csv中的数据: 运行原理与read.table和re