单片机AT89C52八段数码管从0到F的显示
- 格式:doc
- 大小:22.50 KB
- 文档页数:2


八段数码管显示实验实验一八段数码管显示实验一、实验目的:1、介绍数码管动态显示的原理。
2、介绍74ls164拓展端口的方法。
二、实验要求:利用实验仪提供更多的表明电路,动态显示一行数据。
三、实验电路:这里只是表明草图,详尽原理参看第一章的1.1.15“8155键显出模块”。
四、实验说明:1、本实验仪提供更多了8段码数码管led表明电路,学生只要按地址输入适当数据,就可以同时实现对显示器的掌控。
表明共计6十一位,使用动态方式表明。
8段数码管就是由8155的pb0、pb1经74ls164“串转并”后输入获得。
6十一位位码由8155的pa0口输入,经ua2021逆向驱动后,挑选适当表明位。
74ls164是串行输入并行输出转换电路,串行输入的数据位由8155的pb0控制,时钟位由8155的pb1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74ls164中,向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输入地址为0e102h,时钟位输入地址为0e102h,位选通输入地址为0e101h。
本实验牵涉至了8155i0/ram拓展芯片的工作原理以及74ls164器件的工作原理。
六、实验步骤:1、将keil仿真器上40芯排线一端和实验箱上51cpu板上的40芯排针连接起来,将仿真器相连接的usb或串口线与pc机对应的usb或串口连接起来,关上实验箱电源。
2、进入keil软件界面,点击项目/打开项目在c:\keil\uv2\次1服务设施实验例程中挑选实验一,内有asm和c51两种程序,步入asm文件夹关上led项目文件进入如图所示界面页面“调试/启动/暂停调试”,步入调试界面,页面“调试/运转”可以看见8段数码管交错表明0—七、实验程序:outbitequ0e101h;位掌控口clk164equ0e102h;段控制口(接164时钟位)dat164equ0e102h;段控制口(接164数据位)inequ0e103h;键盘读入口ledbufequ60h;显示缓冲numequ70h;显示的数据delaytequ75h;org0000hljmpstartledmap:;八段管表明码db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hdelay:;延时子程序movr7,#0delayloop:djnzr7,delayloopdjnzr6,delayloopretdisplayled:movr0,#ledbufmovr1,#6;共6个八段管movr2,#00100000b;从左边已经开始表明loop:movdptr,#outbitmova,#00hmovx@dptr,a;第一关所有八段管mova,@r0movb,#8;送164dlp:rlcamovr3,amovacc.0,canla,#0fdhmovdptr,#dat164movx@dptr,amovdptr,#clk164orla,# 02hmovx@dptr,aanla,#0fdhmovx@dptr,amova,r3djnzb,dlpmovdptr,#outbitmova,r2movx@dptr,a;显示一位八段管movr6,#1calldelaymova,r2;表明下一位rramovr2,aincr0djnzr1,loopmovdptr,#outbitmova,#0movx@dptr,a;关所有八段管retstart:movdptr,#0e100hmova,#03hmovx@dptr,amovsp,#40hmovnum,#0mloop:incnummova,nummovb,amovr0,#ledbuffillbuf:mova,banla,#0fhmovdptr,#ledmapmovca,@a+dptr;数字转换成显示码mov@r0,a;显示在码填入显示缓冲incr0incbcjner0,#ledbuf+6,fillbufmovdelayt,#30dispagain:calldisplayled;显示djnzdelayt,dispagainljmpmloopend。
实验二查表程序实现LED数字显示一、实验要求通过拨码开关表示16进制数0—F,利用LED数码管显示该数字。
包括硬件电路和程序设计。
二、实验目的理解8段LED数码管的显示原理和LED显示的转化方法,学习查表程序的设计。
三、实验原理图2-1 8段LED数码管显示原理和笔画分布由电路图2-2可以看出,这里需要通过传送指令将P1口拨码开关的状态读入累加器A,利用查表指令转换为LED数码管的显示笔画代码,再传送到P2口驱动数码管。
所谓显示代码就是根据该数字的笔画确定LED数码管中8个笔画段a—h中的哪些段点亮,如数字1要求点亮笔画b和c。
我们可以根据数字与笔画的对应关系列出各数字的笔画代码真值表如表2-1所示,在每个数字需点亮的笔画处填入1,不需要点亮的位填入0,然后转换为16进制数就是该数字的显示代码。
若采用共阳极LED,则由于是0点亮,显示代码也就不同,笔画真值表与表2-1相反。
显然,若各笔画连接的口线不同,显示代码也不同。
图2-2 通过LED数码管显示数字电路图表2-1 LED笔划显示真值表(共阴)有了代码表,还需要通过查表程序将数字转换为显示代码。
查表程序一般是将表格中数据顺序放置在程序存储器的某个区域中,形成一数据表。
程序中需要查表时,将表格首地址送入数据指针DPTR,即使DPTR指向表格首地址,在A中放入待查表格项的序号,例如要显示2,利用“MOVC A,@A+DPTR”指令,即以(A+DPTR)为地址,将数据表中第2字节的表格项数据5BH取出放入A,从而实现查得2的显示代码5BH,然后送端口P2驱动笔画段显示出数字2。
四、实验步骤1.在Proteus ISIS中设计硬件电路(参考图2-2)(1)选择电路元器件并放入原理图编辑区:单片机:AT89C52。
一位共阴极数码管:7SEG-COM-CAT-GRN。
8位拨码开关:DIPSWC_8。
接地:Ground(Terminal模型中)。
(2)参考图2-2完成原理图。
目录一.前言 (2)二.设计任务和要求 (2)2.1 设计目的 (2)2.2 设计意义 (3)三.总原理图及及主要模块的流程图 (3)3.1七段数码管的字型代码表 (3)3.2 主要流程图 (6)四.实验步骤: (7)五.程序汇编代码如下 (8)六.程序调试过程及运行结果 (11)七.结论与心得 (15)单片机八段数码管显示课程设计一.前言单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
从上世纪70年代第一批单片机问世,短短二三十年时间,单片机技术已经成为计算机技术的一个重要分支,广泛运用到工业控制、仪器、仪表、消费产品,汽车、办公自动化和通信等领域。
因此,单片机技术已经成为电子、测控、自动化、通信等许多工科专业学生的必备技能。
我用AT89C51芯片来设计一个简单的数码管显示。
此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:单片机,AT89C51,数码管目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
硬件实验十 八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示三、实验线路及连线四、实验说明1.本实验仪提供了6 位8段码LED 显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。
此处X 是由KEY/LED CS 决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线连线 连接孔1 连接孔2 1 KEY/LED_CS CS0七段数码管的字型代码表如下表:五、程序框图程序代码OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h ;ljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;Loop:mov dptr, #OUTBITmov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEGmovx @dptr,amov dptr, #OUTBITmov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0MLoop:inc Nummov a, Nummov b, amov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0DispAgain:call DisplayLED ;djnz DelayT,DispAgain ljmp MLoopend硬件实验十一 键盘扫描显示实验一、实验要求在硬件实验十的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。