LED七段数码管数字钟1
七段数码管的工作原理

七段数码管的工作原理数码管是一种常见的电子显示装置,由七个发光二极管组成。
每个发光二极管代表一个数字,通过控制其发光状态来显示相应的数字。
数码管的工作原理如下:1. 极性:数码管的两个引脚分别为正极和负极。
正极连接到电源的正电压,一般为3.3V或5V。
负极则连接到晶体管驱动器或控制板的相应引脚。
2. 控制晶体管:数码管内部的发光二极管需要通过晶体管进行驱动才能发光。
晶体管根据输入的信号控制其导通或截断,从而控制对应的发光二极管是否发光。
3. 共阴极和共阳极:数码管可以分为共阴极和共阳极两种类型。
共阴极的数码管,负极对应的是所有LED共连接的一根引脚,而正极则是控制每个发光二极管的引脚。
共阳极的数码管则相反。
4. 逻辑高和低:数码管的驱动通常使用逻辑信号控制。
逻辑高(通常为3.3V或5V)表示该发光二极管导通,发光;逻辑低(通常为0V)表示该发光二极管截断,不发光。
5. 输入信号:控制数码管显示的输入信号可以是来自于微控制器、时钟发生器或计数器等。
通过改变输入信号的状态和频率,可以实现不同的数字显示。
6. 多位数码管:如果需要显示多位数字,则可以通过多个数码管的分段共用实现。
每个数码管依次显示一个数字的对应段,通过快速切换显示,使得人眼看到的是多位数字。
7. 刷新率:数码管的刷新率指的是完成一个完整显示周期所需要的时间。
刷新率较高可以减轻人眼的闪烁感,提高显示的稳定性。
综上所述,七段数码管通过控制每个发光二极管的导通与截断来显示相应的数字。
通过逻辑信号、输入信号和刷新率的控制,可以实现不同数字的动态显示。
led数码管显示原理

led数码管显示原理LED数码管是一种常见的显示器件,它在很多电子产品中都有广泛的应用,比如电子钟、计数器、温度计等。
它能够以数字形式显示各种信息,因此在现代生活中扮演着非常重要的角色。
那么,LED数码管的显示原理是怎样的呢?接下来,我们就来详细介绍一下。
首先,LED数码管是由七段共阳(或共阴)LED组成的。
每个数字都由七段LED组成,这七段LED分别代表了数字显示器的七个段,分别是A、B、C、D、E、F、G。
这些段可以通过不同的组合来显示不同的数字和字母。
其次,LED数码管的显示原理是通过控制不同的LED段的亮灭来显示不同的数字和字母。
比如,要显示数字“0”,就需要点亮A、B、C、D、E、F这六个段,而要显示数字“1”,就只需要点亮B、C这两个段,其他的段则不需要点亮。
通过这种方式,就可以实现LED数码管的数字显示功能。
此外,LED数码管的显示原理还涉及到了数码管的驱动电路。
数码管的驱动电路通常由数码管驱动芯片和微控制器组成。
数码管驱动芯片负责控制LED段的亮灭,而微控制器则负责向数码管驱动芯片发送显示数据。
通过这种方式,就可以实现对LED数码管的数字显示控制。
另外,LED数码管的显示原理还包括了亮度控制和颜色控制。
LED数码管的亮度可以通过控制LED的电流来实现,而LED的颜色则可以通过LED的材料和结构来实现。
一般来说,LED数码管的亮度和颜色是可以通过外部电路进行控制的,这样就可以根据实际需要来调节LED数码管的显示效果。
总的来说,LED数码管的显示原理是通过控制不同的LED段的亮灭来显示不同的数字和字母,同时还涉及到了数码管的驱动电路、亮度控制和颜色控制等方面。
通过对LED数码管的显示原理进行深入的了解,我们可以更好地应用和控制LED数码管,从而实现更多样化的显示效果。
希望本文的介绍对大家有所帮助,谢谢阅读!。
七段数码管

七段L务一:用指针式万用表识别共阴极共阳极数码管 选档:R×10K 红表笔接3或8脚,黑 表笔接同侧任一管脚 测量值 阻值小 阻值大 类型 注意万用表选档调零 方法 黑表笔接3或8脚,红 表笔接同侧任一管脚 阻值小 阻值大
七段LED数码管 任务二:选用共阴极数码管,依次点亮a~g 段和小数点,记录引脚排列
思考数字0~9与各段LED导通对应关系?
6与9有两种显示方式。
七段LED数码管 4)LED数码管的识别
万用表判断数码管好坏及类别 • 选档调零R×10K • 黑表笔接公共端(管脚3、8),红表笔任接另一端,阻 值较小,调换两表笔测量阻值很大-----共阳极,反之共 阴极 • 一一判断每段LED管可知好坏
5、布置作业
挑出共阳极LED数码管,试显示数字0-9
七段LED数码管
七段LED数码管
七段LED数码管
1、引入新课
1、红绿灯路口的时间显示 2、数码电子钟 3、生活中还有哪些方面用到数码管
2、讲授新课 一、LED数码管的结构、原理
LED数码管由8段发光二极管组成。其中7段组成“8” 字,1段组成小数点。通过不同的组合,可用来显示数 字0~9及符号“.”
1)LED数码管的外形结构
a 管脚号 结 论 : b c d e f g h 公共端 3、8
注意共阴极数码管点亮 单段的方法。
七段LED数码管 任务三:练习显示数字0~9,上台演示显示小组号
数字 发光段 0 1 2 3 4 5 6 7 8 9
无译码驱动,多段同时点亮
七段LED数码管
4、课堂小结
1、七段LED数码管点亮原理 2、七段LED数码管类型识别方法 3、七段LED数码管显示数字0-9的方法
七段LED数码管 2)LED数码管的内部结构 有共阴极和共阳极两种(公共端:3、8管脚 )
七段数码显示器

七段数码显示器七段数码显示器是微机系统常用的输出设备。
发光二极管,即LED是由半导体材料制成的PN结,在正向偏置时会发光,具有工作电压低、体积小、寿命长、响应快等优点。
常用的颜色有红、绿、黄。
发光二极管的正向压降为2.2V~2.6V,工作电流为5~10mA,其发光亮度基本与工作电流成正比。
因此在使用发光二极管时,必需串限流电阻。
发光二极管可工作于脉冲状态,在平均电流相同的状况下,脉冲工作状态比直流工作状态的亮度增加约20%。
发光二极管可以单个的形式使用,也可将几个发光二极管封装在一起,依据封装的外形有七段数码显示器、米字型显示器和点阵式显示器等不同的形式。
当发光二极管导通时,点亮相应的笔划或点。
掌握这些发光二极管的亮与暗,即可显示不同的字符或符号。
多个发光二极管封装在一起的七段数码显示器按其连接形式可分为共阳显示器和共阴显示器。
图1所示为共阳和共阴的七段显示器,在显示器中除了显示数字必需的七段笔画外,还供应了小数点。
共阳显示器的阳极连接在一起,此时对阳极供应一正电压,通过限流电阻掌握其阴极为高电平或是低电平来打算其暗或是亮。
共阴显示器的阴极连在一起,此时可将阴极接地,通过限流电阻掌握其阳极为高电平或是低电平来打算其亮或是暗。
图1七段数码显示器采纳七段数码显示器显示的字型受到显示器本身结构的限制。
因此,在显示比较简单的字符、汉字或图形时,可采纳点陈显示的方法。
点阵显示器将发光二极管排列成肯定的矩阵,由这些发光二极管的亮与暗来产生字符或图形。
图2为一个5 X 7的发光二极营点阵,它有5列、7行。
每一列的阴极连在一起。
同时每一行的阳极连在一起,掌握行列信号的电平可显示不同的字符,甚至汉字和图形。
图2点阵显示器。
LED七段数码管数字钟

设 计 题 目: LED 七段数码管数字钟 学 院 名 称: 计算机科学与工程学院 专 业: 计算机科学与技术 班 级: 05计1 姓 名: 丁 琳 指导教师姓名: 白凤娥 指导教师职称: 教 授设 计 成 绩: 评 阅 教 师: 评 阅 日 期:2008年 12月 日微机原理与接口技术课程设计报告JIANGSU TEACHERS UNIVERCITY OF TECHNOLOGY目录一、设计任务书 (3)二、设计题目 (3)三、设计方案 (3)四、硬件原理 (4)1.七段数码管显示 (4)2.键盘扫描显示 (5)3.8253计数器和8259中断 (6)4.硬件连接 (6)五、程序流程图及程序清单 (7)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (30)一、设计任务书《微机原理及接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,我们就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,会使我们学会系统地综合运用所学的理论知识,提高我们在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
通过课程设计实践,不仅要培养我们的实际动手能力,检验我们对本门课学习的情况,更要培养我们在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
培养我们实事求是和严肃认真的工作态度。
通过设计过程,要求我们熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使我们得到微机开发应用方面的初步训练。
集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
七段共阴数码管电子钟PLC程序设计原理

七段共阴数码管电子钟PLC程序设计原理控制要求:1.用四个七段数码管分别显示“时十位”、“时个位”、“分十位”和“分个位”。
2.用两个发光二极管显示“秒闪烁”。
3.有“预置”和“校对”时间功能。
I/O分配:X0—运行开关,X1—预置按钮;Y0—A,Y1—B,Y2—C,Y3—D,Y4—E,Y5—F,Y6—G;Y7—“秒闪烁”指示;Y13—“时十位”显示,Y12—“时个位”显示,Y11—“分十位”显示,Y10—“分个位”显示。
COM端接线:COM1和COM2(Y0—Y7所对应的公共端)接24V直流电源“+”极,COM3(Y10—Y13所对应的公共端)和COM接24V电源“-”极。
一、总体设计思想为了减少输出点数和接线,可以将四个共阴数码管的阳极都用Y0—Y6来驱动,但让其依次轮班接通;四个数码管的阴极分别用Y10—Y13来同步控制其接通“-”极的时间,以期达到四个数码管轮番显示的目的。
二、具体设计过程1.用两个定时器T0和T1产生秒脉冲,用Y7输出。
2.用计数器C0将秒脉冲变成分脉冲。
3.用位左移指令[SFTL]形成分个位左移码。
4.用位左移指令[SFTL]形成分十位左移码。
5.用位左移指令[SFTL]形成时个位左移码。
6.用位左移指令[SFTL]形成时十位左移码。
7.用位左移指令[SFTL]安排四个数码管轮番接通。
8.将四个位左移码分别译成七段数码管的字显示码,并考虑四个数码管轮番接通问题。
9.将字显示码用Y0—Y6输出。
个位编码表由编码表可得逻辑表达式:M40=(M1+M3+M4+M6+M7+M8+M9+M10)M100M41=(M1+M2+M3+M4+M5+M8+M9+M10)M100M42=(M1+M2+M4+M5+M6+M7+M8+M9+M10)M100M43=(M1+M3+M4+M6+M7+M9)M100M44=(M1+M3+M7+M9)M100M45=(M1+M5+M6+M7+M9+M10)M100M46=(M3+M4+M5+M6+M7+M9+M10)M100M60=(M21+M23+M24+M26+M27+M28+M29+M30)M012M61=(M21+M22+M23+M24+M25+M28+M29+M30)M012M62=(M21+M22+M24+M25+M26+M27+M28+M29+M30)M012 M63=(M21+M23+M24+M26+M27+M29)M012M64=(M21+M23+M27+M29)M012M65=(M21+M25+M26+M27+M29+M30)M012M66=(M23+M24+M25+M26+M27+M29+M30)M012十位编码表由编码表可得逻辑表达式:M50=(M13+M15+M16+M18)M101M51=(M13+M14+M15+M16+M17)M101 M52=(M13+M14+M16+M17+M18)M101 M53=(M13+M15+M16+M18)M101M54=(M13+M15)M101M55=(M13+M17+M18)M101M56=(M15+M16+M17+M18)M101M70=(M33+M35)M103M71=(M33+M34+M35)M103M72=(M33+M34)M103M73=(M33+M35)M103M74=(M33+M35)M103M75=M33*M103M76=M35*M103 输出:Y0=M40+M50+M60+M70Y1=M41+M51+M61+M71Y2=M42+M52+M62+M72Y3=M43+M53+M63+M73Y4=M44+M54+M64+M74Y5=M45+M55+M65+M75Y6=M46+M56+M66+M76AF G BE CD七段共阴数码管。
LED七段数码管数字钟实验报告

微机原理与接口技术课程设计报告设计题目:七段数码管数字时钟学院:信息科学与技术学院专业:电子信息工程姓名:学号:指导老师:完成日期:2013.12.10摘要该设计题目的主要内容是通过程序设计使LED数码管显示时间,利用接口芯片8255实现。
LED七段数码管数字钟具体完成功能:1.设计并完成LED七段数码管数字钟电路。
2.数字钟显示格式为:HH:MM:SS。
3.具有通过开关能够调整时、分、秒的功能。
目录1.实验内容 (3)2.七段数码管数字钟功能介绍 (3)3.七段数码管数字钟的电路图设计 (3)4.七段数码管数字钟的源程序 (4)5.七段数码管数字钟仿真结果 (9)6.课程设计体会 (10)7.参考文献 (10)1.实验内容通过对接口芯片编程,使七段数码管LED成为一个时钟,来显示时间。
显示时、分、秒。
2.七段LED数码管数字钟的功能介绍通过对接口芯片编程,使七段数码管LED成为一个时钟,来显示时间。
显示时、分、秒。
实验利用8255的B口向LED送显示数据,C口的高六位用来选LED的哪个数码管显示数据。
通过软件定时来响应当秒数达到60次时,调整分钟和小时。
3.七段LED数码管数字钟的电路设计4.七段数码管数字钟的源程序;***************************数据段*********************************DA TA SEGMENTCONT DW 0HSHI DB 23FEN DB 59MIAO DB 56LED D B 2,3,5,7,4,5SEGTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管显示编码DA TA ENDS;*******************************************************************;***************************代码段*********************************CODE SEGMENT ;ASSUME DS:DA TA,CS:CODEIOA EQU 8000H; 端口号表示IOB EQU 8002H;IOC EQU 8004H;IOCON EQU 8006H;START:MOV AL,90H ;1001,0000B 写控制字,选择方式1,端口B、C工作在0方式,输出MOV DX,IOCONOUT DX,ALNOP;***************************主程序*********************************START1:CALL JISHICALL FENJIECALL DISPJMP START1;***************************计时子程序********************************* JISHI:CMP CONT,60JZ NEXTINC CONTJMP RETUNNEXT: MOV CONT,0CMP MIAO,59;JZ NEXT1INC MIAOJMP RETUNNEXT1: MOV MIAO,0CMP FEN,59;JZ NEXT2INC FENJMP RETUNNEXT2: MOV FEN,0CMP SHI,23;JZ NEXT3INC SHIJMP RETUNNEXT3: MOV SHI,0RETUN: RET;***************************分解子程序********************************* FENJIE:MOV AX,0MOV AL,SHIMOV CL,10DIV CLMOV LED,ALMOV LED+1,AHMOV AX,0MOV AL,FENMOV CL,10DIV CLMOV LED+2,ALMOV LED+3,AHMOV AX,0MOV AL,MIAOMOV CL,10DIV CLMOV LED+4,ALMOV LED+5,AHRET;***************************显示子程序*********************************DISP:;***************************时显示********************************* MOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+0XLATMOV DX,IOBOUT DX,ALMOV AL,11011111BMOV DX,IOCOUT DX,ALCALL YSMOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+1XLATMOV DX,IOBOUT DX,ALMOV AL,11101111BMOV DX,IOCOUT DX,ALCALL YS;***************************分显示********************************* MOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+2XLATMOV DX,IOBOUT DX,ALMOV AL,11110111BMOV DX,IOCOUT DX,ALCALL YSMOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+3XLATMOV DX,IOBOUT DX,ALMOV AL,11111011BMOV DX,IOCOUT DX,ALCALL YS;***************************秒显示********************************* MOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+4XLATMOV DX,IOBOUT DX,ALMOV AL,11111101BMOV DX,IOCOUT DX,ALCALL YSMOV AL,11111111BMOV DX,IOCOUT DX,ALLEA BX,SEGTABMOV AL,LED+5XLATMOV DX,IOBOUT DX,ALMOV AL,11111110BMOV DX,IOCOUT DX,ALCALL YSRET;***************************延时子程序********************************* YS: MOV CX,500A1: NOPLOOP A1RET;********************************************************************** CODE ENDSEND START5.仿真结果6.课程设计体会虽然实验课只有那么几次,但是要想完整的做出数字钟还需要自己在课余时间好好去钻研,看着自己的努力成果,心里感到格外的欣慰。
7段数码管共阳极显示段码

7段数码管共阳极显示段码7段数码管是一种常见的显示设备,由7个发光二极管组成,可以显示0到9的数字和一些特殊字符。
它被广泛应用于计算器、计时器、电子钟等各种电子设备中。
在本文中,我们将深入探讨7段数码管共阳极显示段码的原理、应用和优势。
1. 7段数码管共阳极显示段码的原理共阳极是一种显示模式,其中所有的阳极连接在一起,而每个发光二极管的阴极独立控制。
通过施加电压来控制各个发光二极管的亮灭状态,从而显示所需的数字或字符。
共阳极显示具有简单、直观的特点,易于驱动和控制。
2. 7段数码管共阳极显示段码的应用7段数码管共阳极显示段码广泛应用于各种场合。
在计算器中,通过将相应的段码点亮,可以显示输入的数字和计算结果;在计时器中,可以用来显示时间、倒计时和计时器的运行状态;在电子钟中,可以显示时间和日期等信息。
它还常用于电子秤、信号灯、电子温度计等设备中。
3. 7段数码管共阳极显示段码的优势与共阴极显示相比,共阳极显示具有一些独特的优势。
共阳极显示可以直接使用数字逻辑控制芯片来驱动,驱动电路简单,容易实现。
共阳极显示的亮度较高,显示效果鲜明,适合在亮光环境下使用。
共阳极还具有低功耗、长寿命和抗震动等特点,适合于各种工业领域的应用。
4. 7段数码管共阳极显示段码的局限性尽管共阳极显示有诸多优势,但也存在一些局限性。
由于所有阳极连接在一起,所以在显示多位数字时,需要通过时间分时复用的方式实现。
这可能会引入一定的闪烁问题。
由于只能显示有限数量的数字和字符,对于一些特殊需求的显示,可能需要额外的解码器或特殊控制电路。
总结:7段数码管共阳极显示段码是一种常见的显示设备,具有简单、直观、易于驱动和控制的特点。
它在计算器、计时器、电子钟等各种电子设备中广泛应用。
与共阴极显示相比,共阳极显示具有一些独特的优势,如驱动电路简单、亮度高、功耗低、寿命长和抗震动等。
然而,为了显示多位数字,需要通过时间分时复用的方式,可能引入一定的闪烁问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《微机原理综合实验》课程设计学院:机电学院班级: 12机械师姓名:周汉斌学号: 2012095644010 指导老师:覃孟扬目录一、设计任务书.................................. 错误!未定义书签。
二、设计题目 (3)三、设计方案 (3)四、硬件原理 (3)1.七段数码管显示 (3)2.键盘扫描显示 (5)3.8253计数器和8259中断 (5)4.硬件连接 (6)五、程序流程图及程序清单 (6)1.七段数码管显示 (8)2. 键盘扫描显示 (9)3.定时器设计 (12)4.总程序设计 (15)六、调试过程及结果 (29)七、设计总结和体会 (30)八、参考文献 (31)一、设计题目LED七段数码管数字钟:1.设计并完成LED七段数码管数字钟电路。
2.数字钟显示格式为:HH:MM:SS。
3.具有通过键盘能够调整时、分、秒的功能。
二、设计方案本设计采用LAB6000伟福仿真实验箱,利用4MHz脉冲信号源和多级分频电路产生脉冲信号,4MHz脉冲信号经过F/64分频后得到62.5KHz脉冲信号,将脉冲信号传递给8253定时器,定时器每0.000016秒中断一次,在中断服务程序中对中断次数进行计数,0.000016秒计数62500次就是1秒,然后在对秒计数得到分和小时值,并送入显示缓冲区,用总线方式控制数码管显示。
同时,利用实验箱提供的键盘扫描电路和显示电路来调整时、分、秒。
三、硬件原理1.七段数码管显示图1. 七段数码管七段数码管的字型代码表如下表:显示字形g f e d c b a 段码0 0 1 1 1 1 1 1 3fh1 0 0 0 0 1 1 0 06h2 1 0 1 1 0 1 1 5bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fhA 1 1 1 0 1 1 1 77hB 1 1 1 1 1 0 0 7chC 0 1 1 1 0 0 1 39hD 1 0 1 1 1 1 0 5ehE 1 1 1 1 0 0 1 79hF 1 1 1 0 0 0 1 71h表1. 段数码管的字型代码表图2. 八段数码LED显示电路实验箱提供了6位八段数码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
将KEY/LED CS接到CS0上,则实验箱中八位段码输出地址为08004H,位码输出地址为08002H。
2.键盘扫描显示图3. 键盘扫描电路实验箱提供了一个6×4的小键盘,将KEY/LED CS信号接到CS0上,则列扫描地址为08002H,行码地址为08001H。
向列扫描码地址逐列输入低电平,然后从行码地址读回。
如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的时延,防止键盘抖动。
3.8253计数器和8259中断图4. 8253计数器扩展电路图5. 8259中断扩展电路4.硬件连接8253用定时器/计数器1,8253片选接CS4,地址为0C000H,8253时钟源CLK1接分频电路的F/64输出,频器的Fin接4MHz时钟,8253的GATE1接VCC;8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。
显示电路的KEY/LED CS 接CS0,地址为08000H。
四、程序流程图及程序清单通过调查研究,查阅资料,我初步确定系统结构的总体方案,并依此画出了主程序框图:图6. 主程序框图根据主程序框图,要实现电子时钟,必须先实现七段数码管显示、键盘扫描显示、定时器以及将输入的键值转换为显示数据。
为了实现上述四个功能,我又设计了三个子模块的流程图,并完成了相应的程序设计。
1.七段数码管显示图7. 七段数码管显示子程序框图七段数码管显示子程序清单:DisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 00100000b ; 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endp2. 键盘扫描显示图8. 读键输入子程序框图键盘扫描子程序清单:TestKey proc near ; 判断有无键入mov dx, OUTBITmov al, 0out dx, al ; 输出线置为0mov dx, IN_KEYin al, dx ; 读入键状态not aland al, 0fh ; 高四位不用retTestKey endpGetKey proc near ; 读入键码mov ch, 00100000bmov cl, 6KLoop:mov dx, OUTBITmov al, ch ; 找出键所在列not alout dx, alshr ch, 1mov dx, IN_KEYin al, dxnot aland al, 0fhjne Goon_ ; 该列有键入dec cljnz KLoopmov cl, 0ffh ; 没有键按下, 返回 0ffh jmp Exit1Goon_:dec clshl cl, 2 ; 键值 = 列 X 4 + 行mov ch, 4LoopC:test al, 1jnz Exit1shr al, 1inc cldec chjnz LoopCExit1:mov dx, OUTBITmov al, 0out dx, almov ch, 0mov bx, offset KeyTableadd bx, cxmov al, [bx] ; 取出键码mov bl, alWaitRelease:mov dx, OUTBITmov al, 0out dx, al ; 等键释放 mov ah, 10call Delaycall TestKeyjne WaitReleasemov al, blretGetKey endp3.定时器设计图9. 定时中断服务子程序框图定时器设计的程序清单:IEnter proc nearpush axpush dxinc Secondmov al, Secondcmp al, 60jne Exitmov Second, 0inc Minutemov al, Minutecmp al, 60jne Exitmov Minute, 0inc Hourmov al, Hourcmp al, 24jne Exitmov Hour, 0Exit:mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alpop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endpstart proc nearmov ax, datamov ds, axmov Hour, 0mov Minute, 0mov Second, 0climov ax, 0mov ds, axmov al, 76h; 01110110B ; 计数器1,16位,方式3,二进制mov dx, CONTROLout dx, almov ax, 62500mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, MD8255mov dx, CTL8255out dx, almov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0) mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, PA8255out dx, alstiLP: ; 等待中断,并计数。
mov al, Hourmov ah, 0mov cl, 10div clmov ch, ahmov ah, 0mov bx, offset LEDMAPadd bx, axmov al, [bx]mov LEDBuf, almov bx, offset LEDMAPmov al, chmov ah, 0add bx, axmov al, [bx]or al, 80hmov LEDBuf+1, almov al, Minutemov ah, 0mov cl, 10div clmov ch, ahmov ah, 0mov bx, offset LEDMAPadd bx, axmov al, [bx]mov LEDBuf+2, almov bx, offset LEDMAPmov al, chmov ah, 0add bx, axmov al, [bx]or al, 80hmov LEDBuf+3, almov al, Secondmov ah, 0mov cl, 10div clmov ch, ahmov ah, 0mov bx, offset LEDMAPadd bx, axmov al, [bx]mov LEDBuf+4, almov bx, offset LEDMAPmov al, chmov ah, 0add bx, axmov al, [bx]or al, 80hmov LEDBuf+5, alcall DisplayLEDjmp LPstart endp4.总程序设计将上述三个子模块的功能结合起来,把键盘输入的数据转换成十进制,分别赋给Hour、Minute、Second,电子时钟就实现了。