




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 / 6 文档可自由编辑打印苏 州 大 学 实 验 报 告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管 LED 实验 一实验目的理解 8 段数码管的基本原理,理解 8 段数码管的显示和编程方法,理解 4 连排共阴极 8段数码管 LG5641AH 与 MCU 的接线图。 二实验内容理解 8 段数码管原理,运行与理解各子程序,编制一个 4 连排 8 段数码管程序,MCU的 PTA7-PTA4 接各 LED 的位选线(自左到右),PTB7-PTB0 接 LED 的数据线 hgfedcba,在4 连排 8 段数码管显示 MCU 复位后的开始到现在的运行时间。由于只有四
2、个数码管,所以只显示 MCU 运行到目前为止的分钟和秒,当计时达到一个小时,就重新从 00:00 开始计时。另外,也可以通过 PC 方的串口通信程序,指定计时的开始值。 三实验过程(一)原理图(二)接线图图 8-2 数码管外形agdfecbh图 8-1 数码管(a)共阴极GNDabcdefgdp(b) 共阳极Vccabcdefgdp图 8-3 MCU 与 4 连排 8 段数码管的连接agdfecbhagdfecbhagdfecbhagdfecbhabfCS0CS1 CS2cdeghCS3123456789101112PTC3PTB6PTB2PTB7PTB3PTB41K1K1K1KPTB1PTC
3、2PTC1PTB5PTB0PTC02 / 6 文档可自由编辑打印(三)基本原理8 段数码管一般由 8 个发光二极管(Llight-emitting diode,LED)组成,每一个位段就是一个发光二极管。一个 8 段数码管分别由 a、b、c、d、e、f、g 位段,外加上一个小数点的位段 h(或记为 dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。有时数码管不需要小数点,只有 7 个位段,称 7 段数码管。共阴极 8 段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使 a 段发光,则在 a 段加上高电平即可。共阳极的 8 段数码管则相反,在
4、相应的位段加上低电平即可使该位段发光。 四编程(一)流程图(二)所用寄存器名称及其各个位程序中没有使用与 LED 显示相关的控制和状态寄存器,仅仅使用了通用 I/O 口 A 口和 B 口。(三)主要代码段1汇编方式:数码管 LED 显示的主程序部分代码MainInit: /复位后程序从此开始执行 /系统初始化 SEI /关中断 /1.堆栈初始化为 RAM 最高端 LDHX #RAMEndAddr /HX=#RAMEndAddr TXS /HX-1-SP图 8-4 数码管 LED 显示流程图(及其中断子程序)开始SCI 初始化子程序头文件和声明1 ?人工复位结束开放 SCI 接收中断、定时器 1
5、 溢出中断,开放总中断等待定时器溢出中断事件的发生开始结束定时器初始化子程序计时值的秒加 1秒达到 60 则清零,分钟值加 1分钟达到 60 则清零等待 SCI 接收中断事件的发生开始结束把当前计时值改变为接收到的计时初始值取得计时初始值3 / 6 文档可自由编辑打印 /2.系统初始化 JSR MCUInit /初学时跳过此处 /3.串行口初始化 JSR SCIInit /4.定时器 1 初始化 JSR Timer1Init /调定时器 1 初始化子程序 BSET #5,SCC2 /设置接收中断允许 CLI /开中断 /LED 口初始化 LDA #0 xff STA LEDdata_D /数据
6、口为输出到 LED STA LEDcs_D /位选口为输出到 LED /给 Time0-2时分秒赋初值 0、0、0 (?多一个 0-1 即可) LDA #$0 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 上显示 L
7、EDbuf 中的 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 /恢复数据地址4 / 6 文档可自由编辑打印 PULH AIX #1 /指向下一个数据 DBNZ 1,SP,LE
8、DShow AIS #1 JMP MainLoop数码管 LED 显示的中断子程序部分代码/Timer1Int:定时器 1 溢出中断子程序-*/功能:给内存单元 Time0-2(时分秒)赋值 */入口:无 */出口:无 */-*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 /分
9、钟数未增加到 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 */-*SCIRec
10、INT: SEI /关总中断 PSHH /保护 H LDA #$03 LDHX #Time JSR SCIReN /接收 3 字节数据 PULH /恢复 H CLI /开总中断 RTI /中断返回2C 语言方式:5 / 6 文档可自由编辑打印数码管 LED 显示的主程序部分代码/主函数void main() INT8U i,j; DisMCUInt(); /禁止总中断 MCUInit(); /芯片初始化 SCIInit(); /串行口初始化 Timer1Init(); /定时器初始化 EnSCIReInt(); /开放 SCI 接收中断 EnT1OverflowInt(); /开放 Timer
11、1 溢出中断 T1SC &= (1TSTOPBit); /允许定时器 1 计数 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,tim
12、e2 / 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+;
13、 /秒加 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+;6 / 6 文档可自由编辑打印 if(time0 != 24) goto exit; /时未增加到 24,转 exit time0 = 0; /时增加到 24,清 0exit:T1SC&= (1TOFBit); /清除定时器溢出标志位 EnMCUInt()
14、;五实验问答(根据实验指导书所列举的问题)1驱动 LED 数码管有哪些方法?答:用单片机驱动 LED 数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据。动态显示需要 CPU 时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的 CPU 时间多。 2LED 静态显示和动态显示方式各有什么优缺点?答:静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据。静态显示数据稳定,占用很少的 CPU 时间。动态显示需要 CPU 时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的 CPU 时间多。这两种显示方式各有利弊,静态显示虽然数据稳定,占用很少的 CPU 时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的 CPU 时间多,但使用的硬件少,能节省线路板空间。 3在本自编程序中,让第二个数码管的小数点仿照电子时钟 1 秒钟闪烁一下,只要改一处,能行吗?答:可以。只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水果罐头加工中的食品安全文化建设与员工素质教育考核试卷
- 石棉云母矿选矿厂经济效益分析考核试卷
- 矿产勘查中的地质信息技术应用考核试卷
- 海上旅客运输企业内部审计与风险管理考核试卷
- 稀土金属矿选矿厂环境管理体系构建与运行考核试卷
- 新材料与新技术改变世界的力量考核试卷
- 化学矿的绿色高效利用技术研究考核试卷
- 生态保护工程生态用水保障考核试卷
- 肉类加工设备选用与调试考核试卷
- 高效噪声治理及施工环境保护服务协议
- 广州医学院攻读临床医学专业学位研究生培养方案
- 经导管主动脉瓣置换术(TAVR)患者的麻醉管理
- 2024-2030年中国预付卡和礼品卡行业市场发展趋势与前景展望战略分析报告
- 国能辽宁北票 200MW 风力发电项目地质灾害危险性评估报告
- 《中电联团体标准-220kV变电站并联直流电源系统技术规范》
- 桥梁博士毕业设计电子版
- MOOC 犯罪心理学-西南政法大学 中国大学慕课答案
- 家族信托与家族财富传承
- 杭港地铁施工培训课件
- 电能质量技术监督培训课件
- 丰富多彩的课间活动课件
评论
0/150
提交评论