收藏 分销(赏)

实验八-数码管LED实验报告.pdf

上传人:精*** 文档编号:1269540 上传时间:2024-04-19 格式:PDF 页数:7 大小:153.76KB 下载积分:6 金币
下载 相关 举报
实验八-数码管LED实验报告.pdf_第1页
第1页 / 共7页
实验八-数码管LED实验报告.pdf_第2页
第2页 / 共7页


点击查看更多>>
资源描述
第 1 页苏 州 大 学 实 验 报 告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管 LED 实验 一实验目的理解 8 段数码管的基本原理,理解 8 段数码管的显示和编程方法,理解 4 连排共阴极 8段数码管 LG5641AH 与 MCU 的接线图。二实验内容理解 8 段数码管原理,运行与理解各子程序,编制一个 4 连排 8 段数码管程序,MCU的 PTA7-PTA4 接各 LED 的位选线(自左到右),PTB7-PTB0 接 LED 的数据线 hgfedcba,在4 连排 8 段数码管显示 MCU 复位后的开始到现在的运行时间。由于只有四个数码管,所以只显示 MCU 运行到目前为止的分钟和秒,当计时达到一个小时,就重新从 00:00 开始计时。另外,也可以通过 PC 方的串口通信程序,指定计时的开始值。三实验过程(一)原理图(二)接线图图 8-2 数码管外形agdfecbh图 8-1 数码管(a)共阴极GNDabcdefgdp(b)共阳极Vccabcdefgdp第 2 页(三)基本原理8 段数码管一般由 8 个发光二极管(Llight-emitting diode,LED)组成,每一个位段就是一个发光二极管。一个 8 段数码管分别由 a、b、c、d、e、f、g 位段,外加上一个小数点的位段 h(或记为 dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。有时数码管不需要小数点,只有 7 个位段,称 7 段数码管。共阴极 8 段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使 a 段发光,则在 a 段加上高电平即可。共阳极的 8 段数码管则相反,在相应的位段加上低电平即可使该位段发光。四编程(一)流程图图 8-3 MCU 与 4 连排 8 段数码管的连接agdfecbhagdfecbhagdfecbhagdfecbhabfCS0CS1 CS2cdeghCS3123456789101112PTC3PTB6PTB2PTB7PTB3PTB41K1K1K1KPTB1PTC2PTC1PTB5PTB0PTC0第 3 页(二)所用寄存器名称及其各个位程序中没有使用与 LED 显示相关的控制和状态寄存器,仅仅使用了通用 I/O 口 A 口和 B 口。(三)主要代码段1汇编方式:数码管 LED 显示的主程序部分代码MainInit:/复位后程序从此开始执行 /系统初始化 SEI /关中断 /1.堆栈初始化为 RAM 最高端 LDHX#RAMEndAddr /HX=#RAMEndAddr TXS /HX-1-SP /2.系统初始化 JSR MCUInit /初学时跳过此处 /3.串行口初始化 JSR SCIInit /4.定时器 1 初始化 JSR Timer1Init /调定时器 1 初始化子程序 BSET#5,SCC2 /设置接收中断允许 CLI /开中断 /LED 口初始化 LDA#0 xff STA LEDdata_D /数据口为输出到 LED STA LEDcs_D /位选口为输出到 LED /给 Time0-2时分秒赋初值 0、0、0 (?多一个 0-1 即可)LDA#$0图 8-4 数码管 LED 显示流程图(及其中断子程序)开始SCI 初始化子程序头文件和声明1?人工复位结束开放 SCI 接收中断、定时器 1 溢出中断,开放总中断等待定时器溢出中断事件的发生开始结束定时器初始化子程序计时值的秒加 1秒达到 60 则清零,分钟值加 1分钟达到 60 则清零等待 SCI 接收中断事件的发生开始结束把当前计时值改变为接收到的计时初始值取得计时初始值第 4 页 STA Time STA Time+1 STA Time+2 /程序总循环入口MainLoop:/LEDbuf0-3中放入要显示的数字 /分 LDA Time+1 CLRH LDX#10 DIV STA LEDbuf PSHH PULA STA LEDbuf+1 /秒 LDA Time+2 CLRH LDX#10 DIV STA LEDbuf+2 PSHH PULA STA LEDbuf+3 /在 4 位共阴极 LED 上显示 LEDbuf 中的 4 个数据(只允许 0-9)MOV#%11111110,I1 /初始位选信号(共阴极情况)/MOV#4,I2 /显示个数 AIS#-1 LDA#4 STA 1,SP LDHX#LEDbufLEDShow:PSHH /保护数据地址 PSHX LDX,X /数据 LDA I1 /位选信号 JSR LEDShow1 /显示一个数据 LDA I1 /变动位选信号 SEC ROLA STA I1 /延时 LDHX#10 JSR Delay_ms PULX /恢复数据地址 PULH AIX#1 /指向下一个数据 DBNZ 1,SP,LEDShow AIS#1 JMP MainLoop数码管 LED 显示的中断子程序部分代码/Timer1Int:定时器 1 溢出中断子程序-*/功能:给内存单元 Time0-2(时分秒)赋值 */入口:无 */出口:无 */-*第 5 页Timer1Int:SEI /关总中断 PSHH /保护 H INC Time+2 /秒数加 1 LDA Time+2 CMP#60 BNE Timer1Int_1 /秒数未增加到 60,转 LDA#0 /秒数增加到 60,清 0 STA Time+2 INC Time+1 /分钟数加 1 LDA Time+1 CMP#60 BNE Timer1Int_1 /分钟数未增加到 60,转 LDA#0 /分钟数增加到 60,清 0 STA Time+1 INC Time /小时数加 1 LDA Time CMP#24 BNE Timer1Int_1 /小时数未增加到 24,转 LDA#0 /小时数增加到 24,清 0 STA TimeTimer1Int_1:LDA T1SC BCLR#TOFBit,T1SC /清除定时器溢出标志位 PULH /恢复 H CLI /开总中断 RTI/SCIRecINT:SCI 接收中断子程序-*/功能:接收 3 字节基准时分秒放入内存单元 Time0-2*/入口:无 */出口:Time0-2 */-*SCIRecINT:SEI /关总中断 PSHH /保护 H LDA#$03 LDHX#Time JSR SCIReN /接收 3 字节数据 PULH /恢复 H CLI /开总中断 RTI /中断返回2C 语言方式:数码管 LED 显示的主程序部分代码/主函数void main()INT8U i,j;DisMCUInt();/禁止总中断 MCUInit();/芯片初始化 SCIInit();/串行口初始化 Timer1Init();/定时器初始化 EnSCIReInt();/开放 SCI 接收中断 EnT1OverflowInt();/开放 Timer1 溢出中断 T1SC&=(1TSTOPBit);/允许定时器 1 计数第 6 页 EnMCUInt();/开放总中断 LEDdata_D=0 xff;/数据口为输出 LEDcs_D=0 xff;/位选口为输出 /给时分秒赋值初始化 time0=0;/时 time1=0;/分 time2=0;/秒 while(1)/LED 显示分和秒 LEDShowNum(0,time1/10);for(j=0;j250;j+);/延时 LEDShowNum(1,time1%10);for(j=0;j250;j+);/延时 LEDShowNum(2,time2/10);for(j=0;j250;j+);/延时 LEDShowNum(3,time2%10);for(j=0;j250;j+);/延时 数码管 LED 显示的中断程序部分代码#pragma interrupt_handler isrSCIRe void isrSCIRe(void)DisMCUInt();/禁止总中断 SCIReN(3,time);/接收时分秒 3 个字节的数据 EnMCUInt();/开放总中断#pragma interrupt_handler isrTimer1void isrTimer1(void)DisMCUInt();time2+;/秒加 1 if(time2!=60)goto exit;/秒未增加到 60,转 exit time2=0;/秒增加到 60,清 0,分加 1 time1+;if(time1!=60)goto exit;/分未增加到 60,转 exit time1=0;/分增加到 60,清 0,时加 1 time0+;if(time0!=24)goto exit;/时未增加到 24,转 exit time0=0;/时增加到 24,清 0exit:T1SC&=(1TOFBit);/清除定时器溢出标志位 EnMCUInt();五实验问答(根据实验指导书所列举的问题)1驱动 LED 数码管有哪些方法?答:用单片机驱动 LED 数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据。动态显示需要 CPU 时刻对显第 7 页示器件进行数据刷新,显示数据有闪烁感,占用的 CPU 时间多。2LED 静态显示和动态显示方式各有什么优缺点?答:静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据。静态显示数据稳定,占用很少的 CPU 时间。动态显示需要 CPU 时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的 CPU 时间多。这两种显示方式各有利弊,静态显示虽然数据稳定,占用很少的 CPU 时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的 CPU 时间多,但使用的硬件少,能节省线路板空间。3在本自编程序中,让第二个数码管的小数点仿照电子时钟 1 秒钟闪烁一下,只要改一处,能行吗?答:可以。只要在定时器的中断处理程序中,该小数点类似小灯,每次对点电平取反的语句,即可达到该效果。4LED 要显示的数字如果较多,那么要占用 MCU 较多的 I/O 引脚。想一想,为了节约引脚,可以芯片扩充,那么 4 个引脚最多能扩充出几个引脚?答:4 个引脚最多能扩充出 16 个引脚。六实验小结通过该实验实习,了解如何用单片机的来控制 LED 的显示,理解 8 段数码管的基本原理以及显示和编程方法。学会了用“位选线扫描法”来控制 4 连排共阴极 8 段数码管的显示。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服