找回密码
 立即注册

QQ登录

只需一步,快速开始

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

89c52单片机数码管的动态显示,求思路

[复制链接]
跳转到指定楼层
楼主
ID:894603 发表于 2021-3-21 14:35 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现

一:流水灯从D1开始到D8依次延时1s并保持常亮,同时数码管从左到右依次显示“520-1314”并保持常亮,此时打开蜂鸣器,2s后关闭蜂鸣器,同时流水灯再从D1到D8依次延时1s并依次熄灭,同时数码管从左到右依次熄灭,2s后循环上述程序。
二:数码管首先显示00-00 延时1s左右,秒自动加1,显示变成 00-01,依次自加,直到00-59,1s 以后变成 01- 00。然后秒继续自加当时间到达59-59之后,再来一秒,显示又从00-00开始。每次跳秒的时候蜂鸣器叫一下,尝试使数码管在常亮的情况下使用蜂鸣器。延时时间1s精确度不做要求
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:390416 发表于 2021-3-21 17:54 | 只看该作者
数码管开辟一个缓存空间,根据缓存里面的数字,找到对应的字模包括黑屏,这样 你需要在什么位置、什么时间点、显示什么东西,都跟数码管的代码无关。这样可以更方便程序的移植。建议你看看 人人学会单片机 的资料,

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:139866 发表于 2021-3-23 17:04 | 只看该作者
流水灯用一组IO口控制,8个数码管数码管用一组io口控制段选,一组控制位选,动态刷新数码管就能达到1的效果;开个计时器,计数在计时器里,控制在main里,就能达到2的效果

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:332444 发表于 2021-3-23 17:13 | 只看该作者
回复

使用道具 举报

5#
ID:207421 发表于 2021-3-23 18:11 | 只看该作者
如果是STC89C52单片机,led接在P2口,低电平点亮,那么初始化P2=0XFF;  此时用>>1的方法,是不是就把led依次点亮了,并保持亮了呢。
数码管结构分:
段 (由abcdefgh 8个LED组成的图形,如1,2,3,4,5,6,7,8,9,A,B,C,D,E,F等等图形)和  位 (其实就是数码管的共阳或共阴的公共点)。数码管极性分:共阴(位共低电平),共阳(位共高电平)
如果是共阳数码管,那么位就是阳极(电源正极或单片机IO输出高电平),段就是8个LED的阴极,如果把段接到P1口(abcdefgh->P10~P17),P1=0X00; 数码管就是显示一个8,并且右下角有个小数点。如果要显示一个8,不显小数点,那么就是给h段一个高电平,P1=0x80;(1000 0000),一个数码管显示8的数码管就亮了。代码实现就是:
P37=1;// (接通数码管位电源) P1=0X80;// (给段数据显示8) 。然后延时一下,保持数码管亮1MS左右,P37=0;//位关闭,消除鬼影。

要其它数码管亮起来,根据数码管数量就不停地重复上面的代码,每个数码管都会显示8。
不同的IO控制不同的位为1就显示对应的一位数码管,给段不同的数据,那么数码管就显示不同的图形了。


共阳数码管.jpg (39.78 KB, 下载次数: 46)

共阳数码管

共阳数码管

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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