第五节 七段数码管地使用.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五节 七段数码管地使用

第五节 数码管的使用 5.1 数码管简介 同学们!相信你的流水灯也做的不错了吧,现在能玩出几种花样了?但是工程师们设计这么一个单片机,并不是只为了让它做流水灯的,那样也太浪费点了吧 ... ^_^??数码管的一种是半导体发光器件,7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,它的外观。 图5-1 5.2 数码管的显示原理 数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,接正5伏电源而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,要将其接地而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),8个LED图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED的亮灭来显示数字。那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1~10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。注意,3脚和8脚是连通的,这两个都是公共脚。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码即0x3f;共阳数码管的字符编码即0xc0。可以看出两个编码的各位正好相反。如图 图5-4 那么,一位数码管要显示字符0~F,则对应的编码如表2所示。 一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。 一般情况下,为了计算或取码的方便,我们把a-dp依次接到单片机某个口上的Px.0--Px.7上。x表示0,1,2,3其中的一个。这样我们只要给某个口,赋一个值,则相应的LED段就被点亮,但是在硬件连接上要注意了:单片机可能不能直接驱动LED,所以我们可以通过控制三级管的导通或截止,来控制LED的亮与灭!… P”菜单,从“元件库”中选取元件。依次添加其他元件。其名称和位置见下表。 元件名称 Category Sub-Category Results AT89C52 Microprocessor ICs 8051 Family AT89C52 7SEG-MPX1-CA(注1) Optoelectronics 7-Segment Displays 7SEG-MPX1-CA RX8(注2) Resistors Resistor Packs RX8 RESPACK-8(注3) Resistors Resistor Packs RESPACK-8 注1:7SEG表示7段数码管(Proteus还提供了14段和16段数码管) MPX1表示1位(Proteus还提供了2位、4位、6位和8位数码管) CA表示共阳极(CC表示共阴极) 注2:RX8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内。在这里是作为限流电阻来使用的。 注3:RESPACK-8表示电阻排,它实际相当于8个电阻并排摆放在一个容器内,但是这8个电阻的一段是连接在一起作为公共端的。在这里是作为P0口的上拉电阻来使用的。 依次从备选元件库中摆放器件,连线,画出仿真电路图,如图5-5所示。 图5-5 注意:在Proteus中,实际上,51单片机是不需要晶振、复位电路和电源就可以仿真的,因此,为了方便我们教学,以后,我们将不再画上述51的外围电路。 5.3.2程序的设计 1.新建一个keil项目,并命名为“SEG7_1”并添加一个名为“main.c”的源代码文件,然后键入如下代码。如代码5.1所示。 //代码5.1 #include reg52.h #define SegPort P0 //定义数码管连接的端口 #define uchar unsigned char //宏定义 将unsigned char 替换为较为简单的uchar写法 #define uint unsigned int //宏定义 将unsigned int 替换为较为简单的uint写法 //用一个数组来定义字符0~f共阳极数码管编码 uchar code seg7ca[]={ 0xc0,0xf9,0xa4,0xb0,//0~3 0x99,0x92,0x82,0xf8,//4~7 0x80,0x90,0x88,0x83,//8~b 0xc6,0xa1,0x86,0x8e //c~f }; //延时函数ms毫秒 void D

文档评论(0)

vshoulrengb3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档