当前位置:文档之家› Arduino 数码管LED屏驱动

Arduino 数码管LED屏驱动

Arduino 数码管LED屏驱动
Arduino 数码管LED屏驱动

Arduino数码管LED屏驱动

今天测试数码管LED屏驱动,用某产品的一个共阴极的LED屏,根据电路图做数码管LED 屏的检测。

代码写得有些冗长,有好几种驱动的方法,这里只是其中一种最直接的方案,抽空要做个更有效率的调用和驱动的方案。

[plain]view plaincopy

1.//设置阴极接口

2.int d1=1;

3.int d2=2;

4.int d3=3;

5.int d4=4;

6.int d5=5;

7.int d6=6;

8.int d7=7;

9.//设置阳极接口

10.int a=8;

11.int b=9;

12.int c=10;

13.int d=11;

14.int e=12;

15.int f=13;

16.int g=A0;

17.int h=A1;

18.

19.void setup()

20.{

21.pinMode(d1,OUTPUT);

22.pinMode(d2,OUTPUT);

23.pinMode(d3,OUTPUT);

24.pinMode(d4,OUTPUT);

25.pinMode(d5,OUTPUT);

26.pinMode(d6,OUTPUT);

27.pinMode(d7,OUTPUT);

28.pinMode(a,OUTPUT);

29.pinMode(b,OUTPUT);

30.pinMode(c,OUTPUT);

31.pinMode(d,OUTPUT);

32.pinMode(e,OUTPUT);

33.pinMode(f,OUTPUT);

34.pinMode(g,OUTPUT);

35.pinMode(h,OUTPUT);

36.digitalWrite(a,LOW);

37.digitalWrite(b,LOW);

38.digitalWrite(c,LOW);

39.digitalWrite(d,LOW);

40.digitalWrite(e,LOW);

41.digitalWrite(f,LOW);

42.digitalWrite(g,LOW);

43.digitalWrite(h,LOW);

44.digitalWrite(d1,HIGH);

45.digitalWrite(d2,HIGH);46.digitalWrite(d3,HIGH);

47.digitalWrite(d4,HIGH);

48.digitalWrite(d5,HIGH);

49.digitalWrite(d6,HIGH);

50.digitalWrite(d7,HIGH);

51.}

52.

53.void loop()

54.{

55.//缺水

56.digitalWrite(d7,LOW);

57.digitalWrite(a,HIGH);

58.digitalWrite(b,HIGH);

59.delay(500);

60.//低水位

61.digitalWrite(a,LOW);

62.digitalWrite(b,LOW);

63.digitalWrite(c,HIGH);

64.digitalWrite(d,HIGH);

65.delay(500);

66.//定时关机

67.digitalWrite(c,LOW);

68.digitalWrite(d,LOW);

69.digitalWrite(e,HIGH);

70.digitalWrite(f,HIGH);

71.digitalWrite(g,HIGH);

72.delay(500);

73.//温度十位8

74.digitalWrite(d7,HIGH);

75.digitalWrite(d1,LOW);

76.digitalWrite(e,LOW);

77.digitalWrite(f,LOW);

78.digitalWrite(g,LOW);

79.digitalWrite(a,HIGH);

80.delay(300);

81.digitalWrite(a,LOW);

82.digitalWrite(b,HIGH);

83.delay(300);

84.digitalWrite(b,LOW);

85.digitalWrite(c,HIGH);

86.delay(300);

87.digitalWrite(c,LOW);

88.digitalWrite(d,HIGH);

89.delay(300);

90.digitalWrite(d,LOW);

91.digitalWrite(e,HIGH);

92.delay(300);

93.digitalWrite(e,LOW);

94.digitalWrite(f,HIGH);

95.delay(300);

96.digitalWrite(f,LOW);

97.digitalWrite(g,HIGH);

98.delay(300);

99.digitalWrite(a,HIGH);

100.digitalWrite(b,HIGH);

101.digitalWrite(c,HIGH);

102.digitalWrite(d,HIGH);

103.digitalWrite(e,HIGH);

104.digitalWrite(f,HIGH);

105.delay(300);

106.//温度个位8

107.digitalWrite(d1,HIGH);

108.digitalWrite(d2,LOW);

109.digitalWrite(b,LOW);

110.digitalWrite(c,LOW);

111.digitalWrite(d,LOW);

112.digitalWrite(e,LOW);

113.digitalWrite(f,LOW);

114.digitalWrite(g,LOW);

115.digitalWrite(a,HIGH);

116.delay(300);

117.digitalWrite(a,LOW);

118.digitalWrite(b,HIGH);

119.delay(300);

120.digitalWrite(b,LOW);

121.digitalWrite(c,HIGH);

122.delay(300);

123.digitalWrite(c,LOW);

124.digitalWrite(d,HIGH);

125.delay(300);

126.digitalWrite(d,LOW);

127.digitalWrite(e,HIGH);

128.delay(300);

129.digitalWrite(e,LOW);

130.digitalWrite(f,HIGH);

131.delay(300);

132.digitalWrite(f,LOW);

133.digitalWrite(g,HIGH);

134.delay(300);

135.digitalWrite(a,HIGH);

136.digitalWrite(b,HIGH);

137.digitalWrite(c,HIGH);

138.digitalWrite(d,HIGH); 139.digitalWrite(e,HIGH); 140.digitalWrite(f,HIGH); 141.delay(300);

142.//温符号度

143.digitalWrite(d2,HIGH); 144.digitalWrite(a,LOW); 145.digitalWrite(b,LOW); 146.digitalWrite(c,LOW); 147.digitalWrite(d,LOW); 148.digitalWrite(e,LOW); 149.digitalWrite(f,LOW); 150.digitalWrite(g,LOW); 151.digitalWrite(h,HIGH); 152.digitalWrite(d1,LOW); 153.delay(500);

154.//睡眠符号

155.digitalWrite(d1,HIGH); 156.digitalWrite(d2,LOW); 157.delay(500);

158.//小时十位8

159.digitalWrite(d2,HIGH); 160.digitalWrite(d3,LOW); 161.digitalWrite(b,LOW); 162.digitalWrite(c,LOW); 163.digitalWrite(d,LOW); 164.digitalWrite(e,LOW); 165.digitalWrite(f,LOW); 166.digitalWrite(g,LOW); 167.digitalWrite(a,HIGH); 168.delay(300);

169.digitalWrite(a,LOW); 170.digitalWrite(b,HIGH); 171.delay(300);

172.digitalWrite(b,LOW); 173.digitalWrite(c,HIGH); 174.delay(300);

175.digitalWrite(c,LOW); 176.digitalWrite(d,HIGH); 177.delay(300);

178.digitalWrite(d,LOW); 179.digitalWrite(e,HIGH); 180.delay(300);

181.digitalWrite(e,LOW); 182.digitalWrite(f,HIGH); 183.delay(300);184.digitalWrite(f,LOW);

185.digitalWrite(g,HIGH);

186.delay(300);

187.digitalWrite(a,HIGH);

188.digitalWrite(b,HIGH);

189.digitalWrite(c,HIGH);

190.digitalWrite(d,HIGH);

191.digitalWrite(e,HIGH);

192.digitalWrite(f,HIGH);

193.delay(300);

194.//小时个位8

195.digitalWrite(d3,HIGH);

196.digitalWrite(d4,LOW);

197.digitalWrite(b,LOW);

198.digitalWrite(c,LOW);

199.digitalWrite(d,LOW);

200.digitalWrite(e,LOW);

201.digitalWrite(f,LOW);

202.digitalWrite(g,LOW);

203.digitalWrite(h,LOW);

204.digitalWrite(a,HIGH);

205.delay(300);

206.digitalWrite(a,LOW);

207.digitalWrite(b,HIGH);

208.delay(300);

209.digitalWrite(b,LOW);

210.digitalWrite(c,HIGH);

211.delay(300);

212.digitalWrite(c,LOW);

213.digitalWrite(d,HIGH);

214.delay(300);

215.digitalWrite(d,LOW);

216.digitalWrite(e,HIGH);

217.delay(300);

218.digitalWrite(e,LOW);

219.digitalWrite(f,HIGH);

220.delay(300);

221.digitalWrite(f,LOW);

222.digitalWrite(g,HIGH);

223.delay(300);

224.digitalWrite(a,HIGH);

225.digitalWrite(b,HIGH);

226.digitalWrite(c,HIGH);

227.digitalWrite(d,HIGH);

228.digitalWrite(e,HIGH);

229.digitalWrite(f,HIGH);

230.delay(300);

231.//冒号

232.digitalWrite(a,LOW);

233.digitalWrite(b,LOW);

234.digitalWrite(c,LOW);

235.digitalWrite(d,LOW);

236.digitalWrite(e,LOW);

237.digitalWrite(f,LOW);

238.digitalWrite(g,LOW);

239.digitalWrite(h,HIGH);

240.delay(500);

241.//分钟十位8

242.digitalWrite(d4,HIGH);

243.digitalWrite(d5,LOW);

244.digitalWrite(b,LOW);

245.digitalWrite(c,LOW);

246.digitalWrite(d,LOW);

247.digitalWrite(e,LOW);

248.digitalWrite(f,LOW);

249.digitalWrite(g,LOW);

250.digitalWrite(a,HIGH);

251.delay(300);

252.digitalWrite(a,LOW);

253.digitalWrite(b,HIGH);

254.delay(300);

255.digitalWrite(b,LOW);

256.digitalWrite(c,HIGH);

257.delay(300);

258.digitalWrite(c,LOW);

259.digitalWrite(d,HIGH);

260.delay(300);

261.digitalWrite(d,LOW);

262.digitalWrite(e,HIGH);

263.delay(300);

264.digitalWrite(e,LOW);

265.digitalWrite(f,HIGH);

266.delay(300);

267.digitalWrite(f,LOW);

268.digitalWrite(g,HIGH);

269.delay(300);

270.digitalWrite(a,HIGH);

271.digitalWrite(b,HIGH);

272.digitalWrite(c,HIGH);

273.digitalWrite(d,HIGH);

274.digitalWrite(e,HIGH);

275.digitalWrite(f,HIGH);

276.delay(300);277.//分钟个位8

278.digitalWrite(d5,HIGH);279.digitalWrite(d6,LOW);280.digitalWrite(b,LOW);281.digitalWrite(c,LOW);282.digitalWrite(d,LOW);283.digitalWrite(e,LOW);284.digitalWrite(f,LOW);285.digitalWrite(g,LOW);286.digitalWrite(a,HIGH);287.delay(300);

288.digitalWrite(a,LOW);289.digitalWrite(b,HIGH);290.delay(300);

291.digitalWrite(b,LOW);292.digitalWrite(c,HIGH);293.delay(300);

294.digitalWrite(c,LOW);295.digitalWrite(d,HIGH);296.delay(300);

297.digitalWrite(d,LOW);298.digitalWrite(e,HIGH);299.delay(300);

300.digitalWrite(e,LOW);301.digitalWrite(f,HIGH);302.delay(300);

303.digitalWrite(f,LOW);304.digitalWrite(g,HIGH);305.delay(300);

306.digitalWrite(a,HIGH);307.digitalWrite(b,HIGH);308.digitalWrite(c,HIGH);309.digitalWrite(d,HIGH);310.digitalWrite(e,HIGH);311.digitalWrite(f,HIGH);312.delay(300);313.//全亮

314.digitalWrite(a,HIGH);315.digitalWrite(b,HIGH);316.digitalWrite(c,HIGH);317.digitalWrite(d,HIGH);318.digitalWrite(e,HIGH);319.digitalWrite(f,HIGH);320.digitalWrite(g,HIGH);321.digitalWrite(h,HIGH);322.digitalWrite(d1,LOW);323.digitalWrite(d2,LOW);

324.digitalWrite(d3,

LOW);325.digitalWrite(d4,LOW);326.digitalWrite(d5,LOW);327.digitalWrite(d6,LOW);328.digitalWrite(d7,LOW);329.delay(500);330.//全灭

331.digitalWrite(a,LOW);332.digitalWrite(b,LOW);333.digitalWrite(c,LOW);334.digitalWrite(d,LOW);335.digitalWrite(e,LOW);336.digitalWrite(f,LOW);337.digitalWrite(g,LOW);338.digitalWrite(h,LOW);339.digitalWrite(d1,HIGH);340.digitalWrite(d2,HIGH);341.digitalWrite(d3,HIGH);342.digitalWrite(d4,HIGH);343.digitalWrite(d5,HIGH);344.digitalWrite(d6,HIGH);345.digitalWrite(d7,HIGH);346.delay(500);347.}

计划采用机器视觉来检测,自动鉴别出断笔,笔段亮度差异较大等质量检验问题。

数码管显示动态数字 单片机报告

目录 一、设计题目 (2) 二、设计目的 (2) 2.1设计目的要求 (2) 2.2 系统设计意义 (2) 三、系统硬件图 (3) 四、程序流程图 (3) 五、系统说明与分析 (4) 5.1系统主要组成部分 (4) 5.2 单片机最小系统部分 (4) 5.2.1 MCS-51系列单片机概述 (4) 5.2.2 MCS-51系列单片机的并行I/O口 (5) 5.2.3 MCS-51系列单片机的工作方式和时序 (8) 5.3串行转并行部分 (10) 5.3.1 74ls164的概述 (10) 5.3.2 74ls164的功能 (15) 5.4数码显示部分 (16) 5.4.1概述 (16) 5.4.2 LED数码管引脚结构 (16) 5.4.3 LED数码管显示原理 (17) 5.4.4 LED数码管的驱动方式 (17) 5.5电路板的制作 (18) 5.6 系统连线说明分析 (19) 六、源程序 (20) 七、总结 (22) 八、参考文献 (23)

一、设计题目 通过51系列单片机的串行口和74ls164显示0~9十个数字。 二、设计目的 该单片机最小应用系统设计目的及要求如下: 2.1设计目的要求 1、通过本次实验,掌握单片机串行口的扩展功能; 2、通过对单片机的使用和编程,了解单片机的应用编程; 3、搭建单片机最小应用系统,进一步加深对单片机应用的理解,提高处理实际问题的能力和独立分析思考的能力; 4、掌握单片机汇编编程技术中的设计和分析方法; 5、学会使用并熟练掌握电路绘制软件Protel99SE(或DXP); 6、掌握电路图绘制及PCB图布线技巧。 2.2 系统设计意义 1、在系统掌握单片机相应基础知识的前提下,熟悉单片机最小应用系统的设计方法及系统设计的基本步骤。 2、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计。 3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。 4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。 5、用AT89S51,74ls164设计出题目所要求的数字显示,实现循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。 6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。

基于8255的8LED显示的动态显示器

南京邮电大学 学年第学期 课程设计实验报告 题目基于8255的8LED显示的动态显示器专业通信工程 学号 姓名 指导老师 实验日期年月日

题目:基于8255的8LED显示的动态显示器 一,实验目的和要求 1,Proteus软件的MCS51单片机仿真学习 2,根据提供的参考工程,在proteus平台自己重新设计实验电路所需要的电器原理图,并在此基础上编写相对应的程序,实现其功能,学习proteus软件的使用,其中包括原理图器件的选取,原理图的电气连接,程序的编写编译以及运行,并能查出其错误等。 基本要求: 1. 用数码管正常显示数字“12345678”。 2. 通过按键可改变显示方式。 3. 设计显示屏的动态效果,用10个按键,每键对应一种滚动技术。 4. 基于8255口是指显示和键盘都由8255的IO口控制 发挥部分: 1 设计所有动作的联合效果。 2 设计二个变速按键,可多级改变滚动速度。 3 设计一台魔术电子钟,采用自动变换,随机组合,数据每10秒变换一次。 动态显示格式: 1 静止 2 整体闪烁 3 单字闪烁 4 整体向前、向后滚动 5 单字移动 6 两边向中间压缩 7 中间向两边扩张 8 上下压缩 9 文字上下滚动 10组合动作(每一字符执行上述一个动作,并同时运动) 二,实验仪器 微型计算机 三,实验原理 基于8255的8LED显示的动态显示器,是由8255a做键盘控制口连接c51,并驱动8位7段数码管实现相应显示功能。具体的,c51,p1口直接进行led数码管的位控制;p2口经74HC573译码后控制8255a的片选与内部奇存器选择;p0口连接8255a的D端口,并由它的PA口驱动7段led, PB口连接键盘,并做为I/O口与c51通信,以实现相应显示变化。 四,基本原件及其原理 单片机微型计算机简称单片机,是指在一块芯片体上集成了中央处理器CPU、随机存

7段数码管驱动芯片,7279原理与应用

HD7279A的原理与应用 作者:河北科技大学电气信息学院王改名赫苏敏王忠杰 摘要:详述一种专用的智能键盘和LED控制芯片HD7279A的工作原理、工作时序及其控制指令;介绍HD7279A与CPU及键盘显示器的接口电路,并给出实际接口电路的程序实例和实际应用中的注意事项。 关键词:HD7279A 接口电路接口程序 HD7279A硬件电路图HD7279A是一种管理键盘和LED显示器的专用智能控制芯片。它能对8位共阴极LED显示器或64个LED发光管进行管理和驱动,同时能对多达8×8的键盘矩阵的按键情况进行监视,具有自动消除键抖动并识别按键代码的功能,从而可以提高CPU工作的效率。HD7279A和微处理器之间采用串行接口,其接口电路和外围电路简单,占用口线少,加之它具有较高的性能价格比,因此,在微型控制器、智能仪表、控制面板和家用电器等领域中日益获得广泛的应用。 一、引脚说明与接口电路 279A的硬件电路如图1所示,它共有28个引脚。 RC引脚用于连接HD7279A的外接振荡元件,其典型值为R=1.5k?,C=15pF。RESET为复位端。该端由低电平变成高电平并保持25ms即复位结束。通常,该端接+5V即可。DIG0~DIG7分别为8个LED管的位驱动输出端。SA~SG分别为LED数码管的A段~G段的输出端。DP为小数点的驱动输出端。HD7279A片内具有驱动电路,它可以直接驱动1英吋及以下的LED数码管,使外围电路变得简单可靠。 DIG0~DIG7和SA~SG同时还分别是64键盘的列线和行线端口,完成对键盘的监视、译码和键码的识别。在8×8阵列中每个键的键码是用十六进制表示的,可用读键盘数据指令读出,其范围是00H~3FH。 HD7279与微处理器仅需4条接口线,其中CS为片选信号(低电平有效)。当微处理器访问HD7279A(读键号或写指令)时,应将片选端置为低电平。DATA为串行数据端,当向HD7279A 发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。CLK为数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。KEY为按键信号输出端,在无键按下时为高电平;而有键按下时此引脚变为低电平并且一直保持到键释放为止。(图1 HD7279A硬件电路图,点击下载) 二、电特性 表1所列为HD7279A的电特性。 参数符号测试条件最小值典型值最大值 电源电压Vcc/V . 4.5 5.0 5.5 工作电流Icc/mA 不接LED . 3 5 工作电流Icc/mA LED全亮, ISEG=10mA. 60 100 逻辑输入高电平Vih/V . 2.0 . 5.5 逻辑输入低电平Vil/V . 0 . 0.8 按键响应时间Tkey/ms 含去抖时间10 18 40 KEY引脚输入电流Iki/mA . . . 10 KEY引脚输出电流IKO/mA . . . 7 表 1

用51单片机、8255、138、373等实现数码管显示按键数值的程序

姓名专业

学号 2013年10月28日 随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。 单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。 单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。

课题要求: 用51单片机、8255、138、373等实现数码管显示按键数值的程序 各芯片资料: 1.8255芯片资料如下 用8255A可编程器件扩展并行接口 8255: 有三个八位的并行口:PA、PB、PC。 有三种工作方式:方式0,方式1,方式2。 逻辑结构图: 包含四个部分:●三个并行数据输入输出端口 ●两个工作方式控制电路

●一个读写逻辑控制电路 ●八位总线缓冲器 ⑴.三个并行数据输入输出端口:A口;B口;C口 一般,A口,B口作为数据输入输出端口, C口作为控制/状态信息口,可以分为两个部分,分别与A口和B口配合使用,作为控制信息输出或状态信息输入。⑵.工作方式控制电路 工作方式控制电路有两个:A组控制和B组控制电路, A组控制用来控制A口和C口的上半部分PC7——PC4; B组控制用来控制B口和C口的下半部分PC3——PC0; 两组控制电路具有一个控制命令寄存器,用来接收来自 CPU的数据(控制字),以决定芯片的工作方式,或对 C口按位进行清“0”或者置“1”。 ⑶.总线缓冲器 三态双向八位缓冲器,作为微处理器数据总线与8255之间的接口,用来传送命令、数据及状态信息。 ⑷.读写逻辑控制电路 读写逻辑控制电路接受CPU来的控制信号:读、写、地址及复位信息,根据控制信号的要求,将数据读出,送往CPU,或者将CPU来的信息写入端口。 引脚说明: CS:片选信号,低电平有效,表示芯片被选中;

数码管译码芯片驱动和单片机IO口介绍

8051引脚 现在我们介绍8051单片机引脚及功能,8051系列各种芯片的引脚是相互兼容的,8051、8751、8031引脚均40脚双列直插封装形式。当然,不同芯片之间引脚也略有差异。8051单片机是高性能单片机,因受到引脚数目限制,所以不少引脚具有第二功能,各引脚功能简要说明如下: V CC(40脚)电源端+5V V SS(20脚)接地端365小站制作 时钟电路引脚XTAL2(18引脚)接外部晶体和微调电容。在8051片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需要采用外部时钟电路时,该引脚输入外时钟脉冲要检查8051的振荡电路是否正常工作,可用显波器查看XTAL2端是否有脉冲输出。 时钟电路引肢XTAL1(19)接部晶体的微调电容的另一端。在片内它是振荡电路反相放大器输入端。在采用外部时钟时,该引脚必须接地。 RST(9脚)RST是复位信号端,高电平有效。当此输入端保持2个机器周期,即时4个时钟振荡周期的高电平时,就可以完成复位操作。RST引脚的第二个功能就是VPD,即备用电源输入端。当主电源V CC发生故障,降低到规定值,就会将+5V电源自动接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,以使电源正常后能继续工作。365小站制作 ALE(30脚)地址锁存允许端。当8051正常上电后,ALE引脚不断向外输出正脉冲信号,此频率为振荡器频率FOSC的1/6。CPU访问片外存储器时,ALE输出信号作为锁存8位地址的控制信号。在CPU访问片外数据存储器时,会丢失一个脉冲。平时不访问片外存储器时,ALE也会以1/6的振荡频率固定输出正脉冲,因而ALE 信号可以用来作定时信号。如果你想检查一下8051的好坏,只需要用显波器查看ALE端是否有脉冲信号输出。ALE驱动能力为8个LS型TTL。此引脚第二功能是PROG,用于片内带有4KEPROM编程脉冲输入端。 PSEN(29脚)程序存储器允许输出信号端。在访问片外程序存储器时,此端定时输出脉冲作为读片外程序存储器的选通信号。此引脚接EPROM的OE端,PSEN端有效,即允许读出片外EPROM中的指令码。CPU在外部EPROM 取指期间,PSEN信号在每个机器周期中再次有效。PSEN端同样可驱动8个ST型TTL。要检查一个8051系统上电后CPU能否正确到EPROM中读取指令,也可以用显波器查看PSEN有无脉冲输出,若有,证明基本是工作正常。 EA(31脚)外部程序存储器地址允许端。当EA引脚接高电平时,CPU访问片内EPROM并执行内部程序存储器中的指令,但在程序计数器PC的值超过OFFFH时,将自动转向执行片外程序存储器内的程序。当EA引脚接低电平时,CPU只访问外部EPROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM的8031,外扩EPROM必须将EA接地。如使用有片内ROM的8051,外扩EPROM时,EA也要接地。P0口(32-39脚)P0口是一个漏极开路的8位准双向I/0口。作为漏极开路的输出端口,每位能驱动8个LS

8255和led数码管显示-微机原理(精)

data segment ioport equ 2400h io8255a equ ioport+008h io8255b equ ioport+00bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah,'Input a num (0--9h:',0dh,0ah, '$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ; 使 8255的 A 口为输出方式mov al,80h ;10000000B ,控制字 PA 以方式 0输出out dx,al zby: mov dx,offset mesg1 ; 显示提示信息 mov ah,09h int 21h mov ah,01 ; 从键盘接收字符 int 21h

cmp al,'0' ; 是否小于 0 jl exit ; 如若小于 0,则跳转到 exit 退出程序 cmp al,'9' ; 是否大于 9 jg exit ; 如若大于 9,则跳转到 exit 退出程序 sub al,30h ; 将所得字符的 ASCII 码减 30H ,数字键 ascii 码同数值转换 mov bx,offset led ;bx 为数码表的起始地址 xlat ; 求出相应的段码 mov dx,io8255a ; 从 8255的 A 口输出 out dx,al jmp zby ; 转 zby exit: mov ah,4ch ; 返回 DOS int 21h code ends end start 动态显示 : data segment ioport equ 0c800h-0280h io8255a equ ioport+28ah io8255b equ ioport+28bh

实验2:8255七段数码管静动态显示

微机实验报告书 学号:姓名:班级: 同组名单:实验日期: 2012.12.21 实验题目:七段数码管的静态显示 实验目标:掌握数码管显示数字的原理 (功能:键盘输入一位十进制数字(0~9),用七段数码管显示。) 解题思路: 1.静态显示:按图 10(a)连接好电路,将8255的A口PA0-PA6分别与七段 数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp 接地。编程从键盘输入一位十进制数字,在七段数码管上显示出来。 2.动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱 动输入端S1,S0接8255C口的PC1,PC0。编程在两个数码管上显示“56”。程序框图:静态显示见图11(a),动态显示见图11(b)。

关键问题分析(静态显示): 1、按键判断和程序结束判断 按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。用以下程序即可: cmp al,'0' jl exit ; jl,条件转移指令,即在小于时转移 cmp al,'9' jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。 2、七段码显示。

实验指导书中给出了七段码的字型代码。这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。前提是必须将七段码字型编成数码表以字符串的形式写进程序中。 3、数字键ASCII码与数值间的转换。 因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现: sub al,30h 程序清单: 静态显示: data segment ioport equ 0c800h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov al,80h ;10000000B,控制字PA以方式0输出 out dx,al zby: mov dx,offset mesg1 ;显示提示信息 mov ah,09h int 21h mov ah,01 ;从键盘接收字符 int 21h cmp al,'0' ;是否小于0 jl exit ;如若小于0,则跳转到exit退出程序 cmp al,'9' ;是否大于9 jg exit ; 如若大于9,则跳转到exit退出程序 sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换 mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码 mov dx,io8255a ;从8255的A口输出 out dx,al jmp zby ;转zby exit: mov ah,4ch ;返回DOS

数码管动态显示数字

/***********************用译码器*******************************************/ #include #define GPIO_DIG P0 sbit LSA=P2^0; sbit LSB=P2^1; sbit LSC=P2^2; unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴极数码管字型码0~F void Delay10ms(unsigned int c) //误差0us { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } void main() { unsigned char i=0; P2=0x00; //位显示 while(1) { GPIO_DIG=DIG_CODE[i++]; //段显示 Delay10ms(100); //55us GPIO_DIG=0x00;//消隐 P2=(P2+1)%8; if(i==8) i=0; } } /*******************不用译码器****************************************/ #include //--定义使用的IO口--// #define GPIO_DIG P0 //段选 #define GPIO_PLACE P1 //位选 //--定义全局变量--// unsigned char code DIG_PLACE[8] = {

8255和LED数码管显示实验

实验八 8255和LED数码管显示实验 二、实验电路 实验电路如图2及图3所示。 图2 静态显示电路图3 动态显示电路 五、实验项目 1.静态显示:按图2连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。 程序框图、源代码(含注释)及实验结果如下: 1、静态显示 ;0-9程序: data segment ioport equ2400h-280h io8255a equ ioport+288h io8255ctr equ ioport+28bh led db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255ctr ;使8255的A口为输出方式 mov ax,80h out dx,al sss: mov dx,offset mesg1 ;显示提示信息 mov ah,9 int21h mov ah,1;从键盘接收字符 int21h

cmp al,'0' ;是否小于0 jb exit ;若是则退出 cmp al,'9' ;是否大于9 ja exit ;若是则退出 sub al,30h;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码 mov dx,io8255a ;从8255的A口输出 out dx,al jmp sss ;转SSS exit: mov ax,4c00h;返回 int21h code ends end start 2.动态显示(选做):按图3连接好电路,七段数码管段码连接不变,位码驱动输入端S1S0接8255C口的PC1、PC0。编程在两个数码管上显示56。 程序框图、源代码(含注释)及实验结果如下: data segment ioport equ 2400h-280h io8255a equ ioport+288h io8255c equ ioport+28Ah io8255ctr equ ioport+28bh mesg1 db 0dh,0ah,' Press any key to exit!',0dh,0ah,'$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,offset mesg1 ;显示提示信息 mov ah,9 int 21h mov dx, io8255ctr ;将8255设为A口输出 mov al,80h out dx,al loop1: mov dx, io8255a mov al,6Dh out dx,al mov dx, io8255c mov al,2

数码管驱动芯片TM1620『官方最新版』

LED 驱动控制专用电路
一、 概述
TM1620
TM1620 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内 部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优 良,质量可靠。主要应用于VCR、VCD、DVD 及家庭影院等产品的显示屏驱动。
二、 特性说明
? 采用功率CMOS 工艺 ?显示模式(8 段×6 位) ? 辉度调节电路(占空比8 级可调) ? 串行接口(CLK,STB,DIN) ? 振荡方式:内置RC 振荡(450KHz+5%) ? 内置上电复位电路 ? 封装形式:SOP20
三、管脚定义:
https://www.doczj.com/doc/425262570.html,
-1-

LED 驱动控制专用电路
四、管脚功能定义
符号 DIN 管脚名称 数据输入 说明 在时钟上升沿输入串行数据,从低位开始
TM1620
STB
片选
在上升或下降沿初始化串行接口,随后等待接收指 令。STB 为低后的第一个字节作为指令,当处理指 令时, 当前其它处理被终止。 当STB 为高时, CLK 被 忽略 在上升沿读取串行数据,下降沿输出数据 段输出(也用作键扫描),p管开漏输出 位输出,N管开漏输出 5V±10% 接系统地
CLK Seg1~Seg8 Grid1~ Grid6 VDD GND
时钟输入 输出(段) 输出(位) 逻辑电源 逻辑地
▲ 注意:DIO口输出数据时为N管开漏输出,在读键的时候需要外接1K-10K的上拉电阻。本公司推
荐10K的上拉电阻。 DIO在时钟的下降沿控制N管的动作, 此时读数时不稳定, 你可以参考图 (6) , 在时钟的上升沿读数才时稳定。
VCC
芯片内部 电路
10K
DIO
CT
GND
图(1)
五、 显示寄存器地址和显示模式:
该寄存器存储通过串行接口从外部器件传送到TM1620的数据,地址从00H-0AH共11字节单元, 分别与芯片SGE和GRID管脚所接的LED灯对应,分配如下图:
https://www.doczj.com/doc/425262570.html,
-2-

数码管显示变化数字

/*----------------------------------------------- 名称:单个共阳数码管动态显示变化数字 内容:通过循环赋值给P1,让数码管显示特定的字符或者数字 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 unsigned char code dofly_table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; // 显示数值表0-9 void Delay(unsigned int t); //函数声明 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { unsigned char i; //定义一个无符号字符型局部变量i 取值范围0~255 while (1) //主循环 { for(i=0;i<10;i++) //加入for循环,表明for循环大括号中的程序循环执行10次 { P1=dofly_table[i]; //循环调用表中的数值 Delay(60000); //延时,方便观看数字变化 } //主循环中添加其他需要一直工作的程序 } }/*------------------------------------------------ 延时函数,含有输入参数unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 0~65535 ------------------------------------------------*/ void Delay(unsigned int t) { while(--t); }

实验七、数码管动态扫描显示实验

实验七 数码管动态扫描显示实验 姓名:丁亚芳 专业:通信工程 学号:2011412435 成绩: 一、实验目的 1.掌握keil C51软件与protues 软件联合仿真调试的方法; 2.掌握单片机对数码管的动态显示控制方式; 3.掌握定时器的基本应用及编程方法。 二、实验内容 1.用Proteus 设计一8位数码管动态扫描显示电路。要求利用P0口作数码管的段选线,P1.0~P1.2与74LS138译码器的3个输入端相连,其译码输出Y0~Y7作为数码管的位选线。 2.编写程序,将数字1~8分别显示在8个数码管上,要求显示无闪烁。 3.编写程序,利用Proteus 中的“激励源/DCLOCK/数字类型/时钟”产生频率为1HZ 的方波输出,并利用定时/计数器T1统计脉冲的个数,将统计结果动态实时的显示在数码管上。该脉冲计数电路的基础上自行修改。 三、实验原理及步骤 1.用Proteus 设计数码管动态扫描显示电路; 2.在Keil C51中编写键盘识别程序,编译通过后,与Proteus 联合调试; 3.启动仿真,观察数码管显示是否正确; 4.用Proteus 设计脉冲计数电路,仿真调试、运行程序并查看效果; 5.提高时钟频率(如100KHZ ),观察显示情况。 四、电路设计及调试 (1)动态数码管显示电路设计 P1.0P1.1P1.2 P1.0P1.1P1.2 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51 X1 CRYSTAL FREQ=12MHz C1 22pF C2 22pF R1 800 C3 20uF +5v +5v A 1 B 2C 3 E16E24E35 Y015Y114Y213Y312Y411Y510Y69Y7 7 U2 74LS138 23456789 1RP1 RESPACK-8 +5v +5v

8255a1(七段数码管)

实验4七段数码管 教具、教学素材准备:实验箱,多媒体 教学方法:网络讲授与实作 教学时数:2 一、实验目的 掌握数码管显示数字的原理 二、实验原理和内容 按图22连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动 输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。编程 从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。 三、编程 1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码,位码加反相驱动器,位码输入端高电平选中。 2、七段数码管的字型代码表如下表:

data segment ioport equ 0d400h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah,'Input a num(0--9h):',0dh,0ah,'$' data ends

code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov dx,io8255b;使8255的A口为输出方式mov ax,80h out dx,alsss:mov dx,offset mesg1;显示提示信息mov ah,09h int 21h mov ah,01;从键盘接收字符 int 21h cmp al,'0';是否小于0 jl exit;若是则退出 cmp al,'9';是否大于9 jg exit;若是则退出 sub al,30h;将所得字符的ASCII码减30H mov bx,offset led;bx为数码表的起始地址xlat;求出相应的段码 mov dx,io8255a;从8255的A口输出 out dx,al jmp sss;转SSS exit:mov ah,4ch;返回DOS int 21h code ends end start 教学后记:

8位数码管动态显示电路设计.

电子课程设计 — 8位数码管动态显示电路设计 学院:电子信息工程学院 专业、班级: 姓名: 学号: 指导老师: 2014年12月

目录 一、设计任务与要求 (3) 二、总体框图 (3) 三、选择器件 (3) 四、功能模块 (9) 五、总体设计电路图 (10) 六、心得体会 (12)

8位数码管动态显示电路设计 一、设计任务与要求 1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。 2. 要求在某一时刻,仅有一个LED 数码管发光。 3. 该数码管发光一段时间后,下一个LED 发光,这样8只数码管循环发光。 4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。 5、研究循环地址码发生器的时钟频率和显示闪烁的关系。 二、总体框图 设计的总体框图如图2-1所示。 图2-1总体框图 三、选择器件 1、数码管 数码管是一种由发光二极管组成的断码型显示器件,如图1所示。 U13 DCD_HEX 图1 数码管 数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出 不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个 74LS161计数器 74LS138译码 器 数码管

LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。 2、非门 非门又称为反相器,是实现逻辑非运算的逻辑电路。非门有输入和输出两个端,电路符号如图2所示,其输出端的圆圈代表反相的意思,当其输入端为高电平时输出端为低电平,当其输入端为低电平时输出端为高电平。也就是说,输入端和输出端的电平状态总是反相的。其真值表如表1所示。 图2 非门 表1 真值表 输入输出 A Y 0 1 1 0 3、5V电源 5V VCC电源如图3所示。 图3 5V电源

数码管按键驱动芯片

//***************************************************************************** *************************************************** //TM1639.h //数码管和按键驱动芯片TM1639函数借口和芯片操作相关宏定义 //***************************************************************************** *************************************************** #ifndef _TM1639_H #define _TM1639_H //位使能 #define DIG0 0xc0 #define DIG1 0xc2 #define DIG2 0xc4 #define DIG3 0xc6 #define DIG4 0xc8 #define DIG5 0xca #define DIG6 0xcc #define DIG7 0xce //显示亮度级别 #define LEVEL_OFF 0x80 #define LEVEL_1 0x88 #define LEVEL_2 0x89 #define LEVEL_4 0x8a #define LEVEL_10 0x8b #define LEVEL_11 0x8c #define LEVEL_12 0x8d #define LEVEL_13 0x8e #define LEVEL_14 0x8f //初始化IC端口 void InitTM1639(); //连续传送多个数据 void SeriesInData (unsigned char starAddr,unsigned char *data,unsigned char loop,unsigned char level); //传送一个数据(本质是连续模式) void OneByteInData(unsigned char starAddr,unsigned char *data,unsigned char level); //清楚所有显示数据 void ClearAll(); //读取按键键值 void KeyRead(int *key); //测试模式,内部使用,检验硬件完整性

用51单片机、8255、138、373等实现数码管显示按键数值的程序.(DOC)

姓名 专业 学号 2013年10月28日

随着单片机技术的飞速发展,在其推动下,现代的电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高。 单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。 单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。 课题要求: 用51单片机、8255、138、373等实现数码管显示按键数值的程序

各芯片资料: 1.8255芯片资料如下 用8255A可编程器件扩展并行接口 8255: 有三个八位的并行口:PA、PB、PC。 有三种工作方式:方式0,方式1,方式2。 逻辑结构图: 包含四个部分:●三个并行数据输入输出端口 ●两个工作方式控制电路 ●一个读写逻辑控制电路 ●八位总线缓冲器 ⑴.三个并行数据输入输出端口:A口;B口;C口

一般,A口,B口作为数据输入输出端口, C口作为控制/状态信息口,可以分为两个部分,分别与A口和B口配合使用,作为控制信息输出或状态信息输入。⑵.工作方式控制电路 工作方式控制电路有两个:A组控制和B组控制电路, A组控制用来控制A口和C口的上半部分PC7——PC4; B组控制用来控制B口和C口的下半部分PC3——PC0; 两组控制电路具有一个控制命令寄存器,用来接收来自 CPU的数据(控制字),以决定芯片的工作方式,或对 C口按位进行清“0”或者置“1”。 ⑶.总线缓冲器 三态双向八位缓冲器,作为微处理器数据总线与8255之间的接口,用来传送命令、数据及状态信息。 ⑷.读写逻辑控制电路 读写逻辑控制电路接受CPU来的控制信号:读、写、地址及复位信息,根据控制信号的要求,将数据读出,送往CPU,或者将CPU来的信息写入端口。 引脚说明: CS:片选信号,低电平有效,表示芯片被选中; RD:读操作,低电平有效,控制数据读出; WE:写操作,低电平有效,控制数据写入; A1,A0:地址线, 端口选择信号,用来选择8255内部端口:

数码管_引脚图_驱动芯片

数码管的使用方法 一、工作原理 数码管是一种半导体发光器件,其基本单元是发光二极管。能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。

万联芯城-电子元器件采购网https://www.doczj.com/doc/425262570.html,一直秉承着以良心做好良芯的服务理念,为广大客户提供一站式的电子元器件配单服务,客户行业涉及电子电工,智能工控,自动化,医疗安防等多个相关研发生产领域,所售电子元器件均为原厂渠道进货的原装现货库存。只需提交BOM表,即可为您报价。万联芯城同时为长电,顺络,先科ST等知名原厂的指定授权代理商,采购代理品牌电子元器件价格更有优势,欢迎广大客户咨询,点击进入万联芯城。

二、电气特性 单位数码管有十个管脚,其中有8根是用来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可 接任意一根。为了更清楚介绍,贴图如下:

8255与多位LED数码管的显示

实验2 8255与多位LED数码管的显示实验 一、实验目的 掌握8255A的编程原理与多位LED数码管的显示方法。 二、实验设备 MUT—Ⅲ型实验箱、8086CPU模块。 三、实验内容 把待显示字符的LED代码组成一个七段代码表,存放在存储器中。通过对8255编写程序在多位LED 数码管上显示输出。 1、设计出8255与8086接口对应硬件电路,并完成相应的连接 2、设计出8255与LED数码管的对应硬件接口电路,并完成相应的连接 3、编写程序,在数码管上显示相应字符或数字 4、写出习题部分要求的程序 四、实验原理介绍 本实验用到两部分电路:8255可编程并口电路和LED数码管的显示电路。实验箱数码管采用共阴极形式。 五、实验步骤 1、实验接线 CS0?CS8255 (输出)PA0~PA7? LED-A~LED-DP(段控) (输出)PB0~PB5? LED-1~LED-6(位控) 2、编程并全速或单步运行。 3、全速运行时观察数码管的变化。 六、实验提示 1.8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。本实验中用到8255A 的A口和B口两个端口,A口和B口均作为输出口。实验中,8255A工作于基本输入输出方式(方式 0)。 2.用8255A端口B的PB0~PB5,控制LED的显示位,即8255A的端口B为LED数码显示器 的位控制端口。当B口中一位输出为“0”时,便在相应数码管的阴极加上了低电平,这个数码管就可 以显示数据。但具体显示什么数码,则由另一个端口,即段控制端口决定。段控制端口由6个数码 管共用,因此当CPU送出一个显示代码时,各数码管的阳极都收到了此代码。但是,只有位控制码 中低位对应的数码管才会导通而显示数字,其他管子并不发光。 3.对显示器采用动态扫描法控制显示。所谓动态扫描,就是逐个接通6位LED,把端口A送出 的代码送到相应的位上去显示。此时,8255A的端口A送出的一个七段码,虽然各位LED都能接收 到,但由于端口B只有一位输出低电平,所以只有一个LED的相应段导通显示数字,其他LED不 亮。这样,端口A依次输出LED七段代码,端口B依次选中一位LED,便可以在各位上显示不同 的数据。每个数码管显示数字,并不断地重复显示,由于人的视觉惯性作用,当重复频率达到一定 程度,不断地向8位LED输送显示代码和扫描各位时,就可以实现相当稳定的数字显示。显而易见,

相关主题
文本预览
相关文档 最新文档