找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9325|回复: 3
打印 上一主题 下一主题
收起左侧

四位七段数码管动态显示,求程序

[复制链接]
跳转到指定楼层
楼主
弄了好久就是无法显示

只要显示一个百位数就好了,比如125。
简单的编程就好了
不加锁存器的
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:102357 发表于 2016-1-8 09:00 | 只看该作者
我这里有个例程,你看看吧

#include<reg52.h>                 //52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义

#define uchar unsigned char          //将unsigned char定义为uchar,简化输写。提高编程速度
#define uint  unsigned int          //将unsigned char定义为uint,简化输写。提高编程速度

uchar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,           //共阴的数码管段选.将值送给P2口
                                   0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80,0x00}; //数值''0-F'   '-'   '熄灭'
uchar code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};                   //位选,0-7位数码管

void delay(uint time);

void main()
{
        uchar i;                        //定义一个无符号字符变量。
        while(1)                        //做一个死循环,让程序永远在while下面的大括号里面运行。
        {
                for(i=0;i<8;i++)        //for语句判断条
                {
                        P1=wema[i];                //表达式为假时执行括号里面语句。为真时,执行下一句。
                        P2=duma[i+1];        //要显示1-8.取值从1开始
                        delay(270);            //修改此处的时间,可以明显感觉到动态扫描的原理。时间定的太长会有明显闪烁。
                }                                        //参考值270,可以换成500试试。感觉一下。更改值后,要重新编译生成HEX文件才有效。
        }
}

void delay(uint time)
{
        while(--time);                //当time的值为非0时,执行空语句。当time为0时,跳出while语句。
}
回复

使用道具 举报

板凳
ID:86857 发表于 2016-1-8 09:23 | 只看该作者
这个图 就直接用io口输出 不用限流吗?
回复

使用道具 举报

地板
ID:102114 发表于 2016-1-9 08:46 来自手机 | 只看该作者
先静态的显示调试某一位看位选是高电平还是低电平选中,另外,你只有四个数码管,不能同时扫描八个数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表