找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3434|回复: 12
收起左侧

单片机流水和按键控制(中断)

[复制链接]
ID:124824 发表于 2016-6-3 09:24 | 显示全部楼层 |阅读模式
使用单片机最小系统实现对2个独立的8段LED数码管进行控制,掌握其电路连接方式,能够正确选择LED数码管类型,并控制实现LED数码管功能点亮,要求至少包含两个8段独立LED1和LED2,使其能够正常显示工作,显示内容为数字流水灯。
file:///C:/Users/Dell/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg     file:///C:/Users/Dell/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
图2.2 8段1位LED数码管
充分利用单片机的中断机制,使数码管LED1直接实现数字流水显示,而另一个数码管LED2根据案件控制,进行多组内容的切换显示变换效果,要求使用至少4个按键来控制显示切换,需要设计出多组显示的至少4组显示内容。

(1)单片机可以选择AT89C51或者AT89C52单片机。
(2)在LED控制时,合理选择共阴极或者共阳极,并对其电路进行合理设计。
(3)对LED1或者LED2控制时,至少使用4个按键进行组合控制显示4组不同的内容,内容设计随意,但不得重复。
(4)设计程序,完成LED1数字流水灯和LED2按键控制功能。

回复

使用道具 举报

ID:123289 发表于 2016-6-3 19:56 | 显示全部楼层
1,数码管 一个段的电流在3-20mA,通常取10mA,8个段全亮时,共同极上有80mA.
2,AT89C51的引脚的IO低电平时可以吸收24mA,而高电平却不能提供超过4mA的电流(更精确请查手册)
3,所以建议:采用共阳的LED,这个可以直接驱动!用P1.0-P1.7接LED的A,B,C,D,E,F,G,H的8个段,并串接8个电阻(每脚一个)。
4,多个LED可以用扫描显示的方式进行显示,即每个时刻只显示一个LED,其它的LED不显示,快速的切换各个LED(通过对阳极的供电与否),由于人眼有视觉残留,所以看不出来是逐个显示的。所以将每个LED的A与A,B与B……H与H并在一齐。

评分

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

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2016-6-3 20:18 | 显示全部楼层
本帖最后由 yzwzfyz 于 2016-6-3 22:38 编辑

5、共阳极必须分别驱动,又因为最大驱动电流是80mA,所以需要加三极管放大电流,这里可以用NPN的三极管:如5551,9013等等。采用射极跟随器的接法:三极管的B接IO口,如P3.x;E接LED的阳极,C可以直接接电源5V.
两个LED用两个端口,两个三极管,多个LED类推。
注意:P0口是OC输出,无驱动能力,不能直接用。如果必须用P0口,需要加上拉电阻。
6、电阻的计算:设LED的红色,其管压降为1.4V(绿色为1.7V,建议查手册),IO口低电平电压取0.3V,小计压损为1.4+0.3=1.7V。共阳的扩流三极管基极压降0.7V,IO输出高电平取4.5V。这样加在电阻上的电压为:
4.5-0.7-1.7=2.1V。所以R=2.1V/10mA=210欧(串在P1口上的8个电阻)。如果LED的段的合成的(多个串)请自行修正。
回复

使用道具 举报

ID:124951 发表于 2016-6-3 20:22 | 显示全部楼层
沙发一个。。不错不错
回复

使用道具 举报

ID:123289 发表于 2016-6-3 20:35 | 显示全部楼层
本帖最后由 yzwzfyz 于 2016-6-3 22:46 编辑

显示软件部分:
1、取N个RAM单元(编号X0至Xn-1)对应存放N个LED的显示内容(这里是0亮1灭,共阳LED)。
2、取一个单元做计数器K,从0至N-1循环计数,分别对应显示N个LED。
3、做一个时间中断(如5ms中断一次),每次将K+1,同时做如下动作:(注:当K=N时清K=0。)
4、当K=0时让第0个LED的阳极为1;其余LED的阳极为0,并将X0中的数据送入P1口,即显示第0个LED。以此类推:当K=n-1时让第n-1个LED的阳极为1;其余LED的阳极为0,并将Xn-1中的数据送入P1口,即显示第n-1个LED。注意:一定要先关所有的阳极,再开某一个阳极,否则会有切换闪动。

评分

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

查看全部评分

回复

使用道具 举报

ID:123289 发表于 2016-6-3 20:38 | 显示全部楼层
如此每次中断间隔5ms会切换一个LED显示,人眼是看不出来的。
切换动作在时间中断中进行。
而改变显示的内容,则在主程序中进行,也只是改变X0至Xn-1的数据而矣,很简单。
回复

使用道具 举报

ID:124824 发表于 2016-6-6 08:40 | 显示全部楼层
我主要想知道一下具体的程序,我程序不太好
回复

使用道具 举报

ID:125375 发表于 2016-6-6 11:09 | 显示全部楼层
歹毒里找找
回复

使用道具 举报

ID:124824 发表于 2016-6-6 11:10 | 显示全部楼层
歹毒是什么????
回复

使用道具 举报

ID:124824 发表于 2016-6-6 11:10 | 显示全部楼层

歹毒是什么???
回复

使用道具 举报

ID:124824 发表于 2016-6-6 11:11 | 显示全部楼层

歹毒是什么??
回复

使用道具 举报

ID:63317 发表于 2016-6-7 06:04 | 显示全部楼层

是不是百度啊
回复

使用道具 举报

ID:123289 发表于 2016-6-7 12:02 | 显示全部楼层
程序你自己写,这样你才会真正的学好单片机。运行成功且达成目的后,再对照一下,上面我有列出的,看看是否一样。

写程序不难,按照程序开发规则一句句写就是了。
难是的对完成任务的构思(画出框图、逻辑),这才是编程序的真谛!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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