找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6083|回复: 89
收起左侧

单片机数码管显示如何消除多余地址的空运行?

  [复制链接]
ID:460466 发表于 2019-2-18 06:27 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 海阔天空8 于 2019-2-25 10:58 编辑

   存储器实现7段数码管0-9的循环显示只需要10个地址就够了,而0000-1111共16个地址将会有6个无效地址的空运行。如何消除这6个地址的空运行呢?
    这个问题单片机是如何实现的?    可能单片机和存储器的数据,地址运行是不一样的?不知道单片机两个地址运行时间间隔是如何调节长短的?我觉得存储器可以用地址累加周期和“空地址”来调节?
    看来”单片机空地址“是个子虚乌有的伪命题了??我用的存储器地址,数据关系可是存在这个问题的呀?
    “单片机数码管显示如何消除多余地址的空运行?”----这个问题我基本解决了,用的74LS20----接成四输入与门。还是回到最初问题:不用电脑,编程器,烧录器如何给单片机(89C2051)输入程序(电平高低0和1)麻烦低效那是另一回事。
回复

使用道具 举报

ID:94031 发表于 2019-2-18 10:22 | 显示全部楼层
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。
回复

使用道具 举报

ID:460466 发表于 2019-2-18 12:16 来自手机 | 显示全部楼层
xuyaqi 发表于 2019-2-18 10:22
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。

我也是这么想的,刚刚实验基本成功。就是及时复位的意思吧?我用的是继电器常闭触点,可不可以用开关三极管完成?强行复位。待实验,,,,
回复

使用道具 举报

ID:460466 发表于 2019-2-18 12:17 来自手机 | 显示全部楼层
本帖最后由 海阔天空8 于 2019-2-18 13:15 编辑
xuyaqi 发表于 2019-2-18 10:22
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。

你这个括号里的A我估计是16进制的10吧?

评分

参与人数 1黑币 +4 收起 理由
shuisheng60 + 4 经过判断强行再显示0就可以了!又双双了!

查看全部评分

回复

使用道具 举报

ID:466578 发表于 2019-2-18 16:34 | 显示全部楼层
海阔天空8 发表于 2019-2-18 12:16
我也是这么想的,刚刚实验基本成功。就是及时复位的意思吧?我用的是继电器常闭触点,可不可以用开关三极 ...

楼主的硬件基础应该不错,可以尝试玩玩可编程逻辑芯片(cpld),加个比较器就可以实现当地址=1010实现强行复位地址的功能
回复

使用道具 举报

ID:140371 发表于 2019-2-18 18:35 | 显示全部楼层
本帖最后由 a0931727149 于 2019-2-18 19:40 编辑

要用單片機來實現7段數碼管顯示0-9的內容絕對不是10個記憶空間那樣這是我用我用的編譯器(keil)編譯(AT89C2051)驅動P1得到 75 90 XX
用共陰7段顯示器 單片機的震盪頻率10HZ應該可以
75 90 3f 7段顯示器顯示字型內容 0
75 90 06 7段顯示器顯示字型內容 1
75 90 5b 7段顯示器顯示字型內容 2
75 90 4f 7段顯示器顯示字型內容 3
75 90 66 7段顯示器顯示字型內容 4
75 90 6d 7段顯示器顯示字型內容 5
75 90 7d 7段顯示器顯示字型內容 6
75 90 07 7段顯示器顯示字型內容 7
75 90 7f 7段顯示器顯示字型內容 8
75 90 6f 7段顯示器顯示字型內容 9
02 00 00 跳躍到顯示0 的位址
一般單片機的震盪頻率不會這樣低,而在一個7段顯示器顯示字型內容 之後需要加一段延時之後在顯示下一組內容





评分

参与人数 2黑币 +85 收起 理由
zhengchong60 + 5 你是说清楚了,可他却晕了
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:460466 发表于 2019-2-19 09:08 | 显示全部楼层
xuyaqi 发表于 2019-2-18 10:22
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。

我是在“数据输出”的其中一个端口在数据输出完成后设置成高电平这个高电平信号使继电器常闭触点断开一下,强迫地址回零的。应该没问题呀?可是实际上不知这个端口哪来的“干扰高电平信号”在设定高电平信号到来之前就使地址复位了??还没找到原因,,,,,,,,
回复

使用道具 举报

ID:94031 发表于 2019-2-19 11:03 | 显示全部楼层
海阔天空8 发表于 2019-2-18 12:17
你这个括号里的A我估计是16进制的10吧?

对,2进制 1010 就是16进制0x0A.
回复

使用道具 举报

ID:94031 发表于 2019-2-19 11:12 | 显示全部楼层
海阔天空8 发表于 2019-2-19 09:08
我是在“数据输出”的其中一个端口在数据输出完成后设置成高电平这个高电平信号使继电器常闭触点断开一下 ...

这是软件应该完成的工作,怎么用上了继电器,要用软件思维。
回复

使用道具 举报

ID:460466 发表于 2019-2-19 12:55 | 显示全部楼层
xuyaqi 发表于 2019-2-19 11:12
这是软件应该完成的工作,怎么用上了继电器,要用软件思维。

我要懂软件还用这笨办法吗?就是个开关的问题(说到底还是0和·1的问题)。给地址计数电路加一个脉冲信号
回复

使用道具 举报

ID:478073 发表于 2019-2-19 14:08 | 显示全部楼层
路过,来转转!好像又将话说没了
回复

使用道具 举报

ID:460466 发表于 2019-2-19 18:12 | 显示全部楼层
佛云 发表于 2019-2-18 16:34
楼主的硬件基础应该不错,可以尝试玩玩可编程逻辑芯片(cpld),加个比较器就可以实现当地址=1010实现强行复 ...

当地址是任何数时强制复位还比较困难,理论上多输入与门应该可以,但太麻烦。我想留出一位数据输出专当复位信号(高电平)结果失败了,,,,,,
回复

使用道具 举报

ID:460466 发表于 2019-2-19 18:15 | 显示全部楼层
a0931727149 发表于 2019-2-18 18:35
要用單片機來實現7段數碼管顯示0-9的內容絕對不是10個記憶空間那樣這是我用我用的編譯器(keil)編譯(AT89C20 ...

我觉得存储器很容易做到呀。地址变换频率可调
回复

使用道具 举报

ID:460466 发表于 2019-2-19 18:18 | 显示全部楼层
本帖最后由 海阔天空8 于 2019-2-25 08:28 编辑
xuyaqi 发表于 2019-2-18 10:22
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。

当程序显示完以后给地址累加一个复位回零信号(断开累加脉冲)地址就自动回零了,想得听海,为什么实际行不通呀?还没找到原因,,,,,,,,,,利用4输入与门初步解决了”强制复位“,如图:
   ”下拉电阻“阻值很重要,TTL电路的H,L电位好像是2V以上0.8V以下,和CD4520对接要调整到这个范围吧?我是根据手头元件瞎鼓捣!见笑了,,,,,,,
IMG_20190223_074319.jpg
回复

使用道具 举报

ID:460466 发表于 2019-2-19 18:23 | 显示全部楼层
a0931727149 发表于 2019-2-18 18:35
要用單片機來實現7段數碼管顯示0-9的內容絕對不是10個記憶空間那樣這是我用我用的編譯器(keil)編譯(AT89C20 ...

我是把7段笔画ABCDEFG和8个LED由左到右1234567对应起来设置数据的。
回复

使用道具 举报

ID:140371 发表于 2019-2-19 19:50 | 显示全部楼层
海阔天空8 发表于 2019-2-19 12:55
我要懂软件还用这笨办法吗?就是个开关的问题(说到底还是0和·1的问题)。给地址计数电路加一个脉冲信号

AT89C2051燒錄程式碼是不需要地址計數器,因為它是自動遞增,忘掉你之前需要設定地址內容...你手工燒錄器搞定了嗎?可以燒錄一個記憶單元了嗎?可以燒錄3個記憶單元嗎?要可以燒錄多個連續內容你的手工燒錄器才是可以用......
衷心的給你一個建議既然手工燒錄器搞不定...何不將燒錄的工作交給燒錄器...優點是不會誤動作....
用買的燒錄器.配上燒錄器驅動軟件....也是可以手動編輯燒錄到AT89c2051的內容的....這樣是不是比你搬動指撥開關來的容易一些,而且較不易出錯,,,,
燒錄器軟件非常容易學的...不出幾分鐘就會用了.....


回复

使用道具 举报

ID:96682 发表于 2019-2-20 05:03 | 显示全部楼层
海阔天空8 发表于 2019-2-19 12:55
我要懂软件还用这笨办法吗?就是个开关的问题(说到底还是0和·1的问题)。给地址计数电路加一个脉冲信号

这个编程方法反倒最考验基本功编程器还得自个弄,这两者不具备说啥都是空话

回复

使用道具 举报

ID:460466 发表于 2019-2-20 07:06 来自手机 | 显示全部楼层
佛云 发表于 2019-2-18 16:34
楼主的硬件基础应该不错,可以尝试玩玩可编程逻辑芯片(cpld),加个比较器就可以实现当地址=1010实现强行复 ...

冬闲户外活动少,就一片89C2051解闷吧。几十年就玩动不了它!死不瞑目!看来没有外援不行,高人一语就能点破梦中人!,,,,,,,
回复

使用道具 举报

ID:460466 发表于 2019-2-20 07:10 来自手机 | 显示全部楼层
关键就是7590后的差别。020000,我还没解决呢!没找到那个“复位脉冲”
回复

使用道具 举报

ID:460466 发表于 2019-2-20 07:17 来自手机 | 显示全部楼层
wc86110 发表于 2019-2-20 05:03
这个编程方法反倒最考验基本功编程器还得自个弄,这两者不具备说啥都是空话

编程器硬件电路倒不是什么问题,现在就是有现成的编程器我也不会用。手动输入明白了编程器就是水到渠成的事。我想编程器的出现是在单片机之后吧?不知什么原因我非要倒着走呢?倒行逆施,,,,,,
回复

使用道具 举报

ID:460466 发表于 2019-2-20 07:23 来自手机 | 显示全部楼层
a0931727149 发表于 2019-2-19 19:50
AT89C2051燒錄程式碼是不需要地址計數器,因為它是自動遞增,忘掉你之前需要設定地址內容...你手工燒錄器搞 ...

我这存储器可能有2的11次方个单元吧?数据输出端口只有8位。每个单元(地址)输入数据(0或1)组合不是问题了。只是地址强制复位还做不到,,,,,,,,
回复

使用道具 举报

ID:460466 发表于 2019-2-20 10:52 来自手机 | 显示全部楼层
佛云 发表于 2019-2-18 16:34
楼主的硬件基础应该不错,可以尝试玩玩可编程逻辑芯片(cpld),加个比较器就可以实现当地址=1010实现强行复 ...

请告知加个比较器的复位原理好吗?谢谢。
回复

使用道具 举报

ID:474677 发表于 2019-2-20 12:21 | 显示全部楼层
楼主把IO理解为地址是错误的,单片机送到数码管的不应该理解为地址而是码段数据,所以不存在有多余地址的说法,只是有些码段信号组合通常没有意义罢了,不存在浪费的问题,如果你愿意可以利用它来表达其他的含义,只是别人看不懂罢了!
回复

使用道具 举报

ID:460466 发表于 2019-2-20 15:36 来自手机 | 显示全部楼层
iofree 发表于 2019-2-20 12:21
楼主把IO理解为地址是错误的,单片机送到数码管的不应该理解为地址而是码段数据,所以不存在有多余地址的说 ...

IO是什么?输入输出口吗?地址是存储数据的呀?
回复

使用道具 举报

ID:460466 发表于 2019-2-20 17:50 | 显示全部楼层
iofree 发表于 2019-2-20 12:21
楼主把IO理解为地址是错误的,单片机送到数码管的不应该理解为地址而是码段数据,所以不存在有多余地址的说 ...

    听不懂宁的意思。
    我是说存储器的地址和数据,地址一一直累加运行(8位或4位二进制数),有的程序用不了那么多地址数,像0-9LED数码循环显示只需要10个地址就够了,地址如果不强制复位将会有6个地址空运行。
回复

使用道具 举报

ID:401564 发表于 2019-2-20 22:29 | 显示全部楼层
实现7段数码管0-9的循环显示只需要10个地址就够了
地址空运行
IO是什么
比较器的复位原理
地址变换频率可调
每天才能看到楼主在创造新名词,我差点感觉我对电子一无所知了!
回复

使用道具 举报

ID:460466 发表于 2019-2-21 06:03 来自手机 | 显示全部楼层
xuyaqi 发表于 2019-2-18 10:22
当1001显示完后,要显示1010(A)时,经过判断强行再显示0就可以了。

    把数据输出端口留出一位专做(程序输出完成后)高电平强制复位怎么不行呀?实验多次偶尔可以?
   只好考虑可预置数计数复位方式。
回复

使用道具 举报

ID:474677 发表于 2019-2-21 10:08 | 显示全部楼层
海阔天空8 发表于 2019-2-20 17:50
听不懂宁的意思。
    我是说存储器的地址和数据,地址一一直累加运行(8位或4位二进制数),有的程 ...

前面说过了单片机送给数码管的不是地址而是码段数据,你理解为地址是错误的,所以就会钻进牛角尖里出不来,要数码管循环显示0-9很简单,用一个for函数轮流送0-9的码段数据到数码管就行了,不存在什么强制地址复位的问题!
回复

使用道具 举报

ID:460466 发表于 2019-2-21 10:45 来自手机 | 显示全部楼层
Y_G_G 发表于 2019-2-20 22:29
实现7段数码管0-9的循环显示只需要10个地址就够了
地址空运行
IO是什么

哈哈我创造新名词?我连老名词还不懂呢!
回复

使用道具 举报

ID:460466 发表于 2019-2-21 10:50 来自手机 | 显示全部楼层
iofree 发表于 2019-2-21 10:08
前面说过了单片机送给数码管的不是地址而是码段数据,你理解为地址是错误的,所以就会钻进牛角尖里出不来 ...

    对呀!送到数码管的是数据呀!每个地址都有相同或不相同的数据呀。地址按一定的频率累加数据就不断的输出了。这样说对吗?
回复

使用道具 举报

ID:460466 发表于 2019-2-21 12:49 | 显示全部楼层
iofree 发表于 2019-2-20 12:21
楼主把IO理解为地址是错误的,单片机送到数码管的不应该理解为地址而是码段数据,所以不存在有多余地址的说 ...

”楼主把IO理解为地址是错误的“?我还真不明白您这句话的意思,”IO“是什么?我都搞不清!地址是存储数据的地方。这话对吧?输出/输入端口就是您说的”IO"吧?它是存在地址里的数据对吗?
------------我是对存储器而言,单片机我一点不懂呀。
回复

使用道具 举报

ID:460466 发表于 2019-2-21 12:58 | 显示全部楼层
Y_G_G 发表于 2019-2-20 22:29
实现7段数码管0-9的循环显示只需要10个地址就够了
地址空运行
IO是什么

     你好!你挖苦我没关系。可你也给我来点实际的正能量呀!^_^。就说我把“IO"理解为地址吧?我什么时候这样说的呀?
    ”比较器的复位原理“?---------不是我说的呀!我还不明白什么是比较器呢!
    ”地址变换频率可调“,是我说的:我这个存储器累加就是用方波实现的呀!(加到CD4520的第2脚)。方波频率可调不就是地址变化速度可调吗?
   
回复

使用道具 举报

ID:401564 发表于 2019-2-21 19:00 | 显示全部楼层
实现7段数码管0-9的循环显示只需要10个地址就够了(这是错误的,别想当然去认为,你的想法是错误的)
地址空运行(这是错误的,地址就是地址,不会运行)
地址变换频率可调(不存在这个说法,别自己制定游戏规则)
我知道你会找理由来反驳我,但意义何在?你肯定不会认同我所说的,但你的依据是什么呢?
而0000-1111共16个地址将会有6个无效地址,0000-1111你确定这中间只差16个数字吗?0000B-1111B才是。
在问别人一个问题之前,你应该自己制造问题出来,再问别人这个是怎么回事?
你就直接问“单片机数码管显示的原理是什么,本人不懂编程,尽量直白详细点,先谢谢了”
然后就去看别人是怎么回答的,再去查一下相关资料,而不是用自己想当然的想法去反驳别人。
回复

使用道具 举报

ID:460466 发表于 2019-2-22 07:07 来自手机 | 显示全部楼层
Y_G_G 发表于 2019-2-21 19:00
实现7段数码管0-9的循环显示只需要10个地址就够了(这是错误的,别想当然去认为,你的想法是错误的)
地址 ...

^o^~你说你的理我说我得理,我说存储器你说单片机。存储器有地址和数据没错吧?存储器的地址可以用二进制数表示吧?数据端要完成7段数码管0-9的循环显示不是只需要10个地址就够用了吗?二进制数0000-1111是16个地址呀?如果16个地址循环变化对显示0-9是不是有6个地址空运行?
     您只说我的错误,我究竟错在哪呀?
     我“想当然“?0-9显示完了就是有6个地址空运行呀?我想叫他显示完9以后下一个显示0(完成下一个循环),想当然了吗?
回复

使用道具 举报

ID:474677 发表于 2019-2-22 08:39 | 显示全部楼层
海阔天空8 发表于 2019-2-21 10:50
对呀!送到数码管的是数据呀!每个地址都有相同或不相同的数据呀。地址按一定的频率累加数据就不断的输 ...

你脑子里装了太多似是而非自以为是的东西,建议你还是沉下心来找本基础入门的单片机书籍来看看,先把一些最基本的概念搞清楚,比如IO、累加器、寄存器什么的,再老老实实把书上例子代码敲一边,搞懂其中的功能和编程思路,想学新的东西,自己先得把脑子腾空一些才能装得下是不?否则你总用一些想当然的见解来这里抬杠,除了浪费时间是不会有什么进步的。
回复

使用道具 举报

ID:401564 发表于 2019-2-22 10:06 | 显示全部楼层
海阔天空8 发表于 2019-2-22 07:07
^o^~你说你的理我说我得理,我说存储器你说单片机。存储器有地址和数据没错吧?存储器的地址可以用二进制 ...

就只说存储器吧.
地址空运行(这是错误的,地址就是地址,不会运行)没有地址空运行这个说法
0000-1111你确定这中间只差16个数字吗?0000B-1111B才是。
0000-1111一共有1112个数,0000B-1111B一共有16个数.
如果你觉得我是玩文字游戏,那没关系,你记住我的话就可以了:如果你还是这种态度,你永远搞不定入门低端级的数字电路,更不用说单片机了.
看一下35楼的说法,我赞同他的说法.
回复

使用道具 举报

ID:460466 发表于 2019-2-22 10:44 来自手机 | 显示全部楼层
Y_G_G 发表于 2019-2-22 10:06
就只说存储器吧.
地址空运行(这是错误的,地址就是地址,不会运行)没有地址空运行这个说法
0000-111 ...

地址不停的累加数据没有内容输出叫什么?
回复

使用道具 举报

ID:479138 发表于 2019-2-22 10:58 | 显示全部楼层
用74HC154试试,一片可以解4位地址,刚好可以解决你的16个存储单元问题。
回复

使用道具 举报

ID:416978 发表于 2019-2-22 11:10 | 显示全部楼层
加个看门狗
回复

使用道具 举报

ID:460466 发表于 2019-2-22 12:41 来自手机 | 显示全部楼层
李良伟 发表于 2019-2-22 11:10
加个看门狗

是有看门狗这个词,可我根本不懂!谢谢。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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