2023年实验八数码管LED实验报告_第1页
2023年实验八数码管LED实验报告_第2页
2023年实验八数码管LED实验报告_第3页
2023年实验八数码管LED实验报告_第4页
2023年实验八数码管LED实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称:数码管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方的串口通信程序,指定计时的开始值。三.实验过程(一)原理图(b)共阳极Vcc(b)共阳极Vccabcdefgdp(a)共阴极gndabcdefgdpaagdfecbh图8-2数码管外形图8-1数码管图8-2数码管外形图8-1数码管(二)接线图aagdfecbhagdfecbhagdfecbhagdfecbhabfCS0CS1CS2cdeghCS3123456789101112PTC3PTB6PTB2PTB7PTB3PTB41K1K1K1KPTB1PTC2PTC1PTB5PTB0PTC0图8-3图8-3MCU与4连排8段数码管的连接(三)基本原理8段数码管一般由8个发光二极管(Llight-emittingdiode,LED)组成,每一个位段就是一个发光二极管。一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。根据公共端所接电平的高低,可分为共阳极和共阴极两种。有时数码管不需要小数点,只有7个位段,称7段数码管。共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:要使a段发光,则在a段加上高电平即可。共阳极的8段数码管则相反,在相应的位段加上低电平即可使该位段发光。四.编程(一)流程图开始开始SCI初始化子程序头文献和声明定期器初始化子程序开放SCI接受中断、定期器1溢出中断,开放总中断结束人工复位1?SCI初始化子程序头文献和声明定期器初始化子程序开放SCI接受中断、定期器1溢出中断,开放总中断结束人工复位1?开始开始把当前计时值改变为接受到的计时初始值结束开始等待SCI接受中断事件的发生取得计时初始值把当前计时值改变为接受到的计时初始值结束开始等待SCI接受中断事件的发生取得计时初始值分钟达成60则清零分钟达成60则清零计时值的秒加1秒达成60则清零,分钟值加1结束等待定期器溢出中断事件的发生计时值的秒加1秒达成60则清零,分钟值加1结束等待定期器溢出中断事件的发生图8-4数码管LED显示流程图(及其中断子程序)(二)所用寄存器名称及其各个位程序中没有使用与LED显示相关的控制和状态寄存器,仅仅使用了通用I/O口A口和B口。(三)重要代码段1.汇编方式:数码管LED显示的主程序部分代码……MainInit:://复位后程序从此开始执行//系统初始化SEI//关中断//1.堆栈初始化为RAM最高端LDHX#RAMEndAddr//HX=#RAMEndAddrTXS//HX-1->SP//2.系统初始化JSRMCUInit//初学时跳过此处//3.串行口初始化JSRSCIInit//4.定期器1初始化JSRTimer1Init//调定期器1初始化子程序BSET#5,SCC2//设立接受中断允许CLI//开中断//LED口初始化LDA#0xffSTALEDdata_D//数据口为输出到LEDSTALEDcs_D//位选口为输出到LED//给Time[0-2]"时分秒"赋初值0、0、0(?多一个0-1即可)LDA#$0STATimeSTATime+1STATime+2//程序总循环入口MainLoop://LEDbuf[0-3]中放入要显示的数字//分LDATime+1CLRHLDX#10DIVSTALEDbufPSHHPULASTALEDbuf+1//秒LDATime+2CLRHLDX#10DIVSTALEDbuf+2PSHHPULASTALEDbuf+3//在4位共阴极LED上显示LEDbuf中的4个数据(只允许0-9)MOV#%11111110,I1//初始位选信号(共阴极情况)//MOV#4,I2//显示个数AIS#-1LDA#4STA1,SPLDHX#LEDbufLEDShow:PSHH//保护数据地址PSHXLDX,X//数据LDAI1//位选信号JSRLEDShow1//显示一个数据LDAI1//变动位选信号SECROLASTAI1//延时LDHX#10JSRDelay_msPULX//恢复数据地址PULHAIX#1//指向下一个数据DBNZ1,SP,LEDShowAIS#1JMPMainLoop……数码管LED显示的中断子程序部分代码……//Timer1Int:定期器1溢出中断子程序----------------------*//功能:给内存单元Time[0-2](时分秒)赋值*//入口:无*//出口:无*//--------------------------------------------------------------------*Timer1Int::SEI//关总中断PSHH//保护HINCTime+2//秒数加1LDATime+2CMP#60BNETimer1Int_1//秒数未增长到60,转LDA#0//秒数增长到60,清0STATime+2INCTime+1//分钟数加1LDATime+1CMP#60BNETimer1Int_1//分钟数未增长到60,转LDA#0//分钟数增长到60,清0STATime+1INCTime//小时数加1LDATimeCMP#24BNETimer1Int_1//小时数未增长到24,转LDA#0//小时数增长到24,清0STATimeTimer1Int_1:LDAT1SCBCLR#TOFBit,T1SC//清除定期器溢出标志位PULH//恢复HCLI//开总中断RTI//SCIRecINT:SCI接受中断子程序---------------------------*//功能:接受3字节基准时分秒放入内存单元Time[0-2]*//入口:无*//出口:Time[0-2]*//---------------------------------------------------------------------*SCIRecINT::SEI//关总中断PSHH//保护HLDA#$03LDHX#TimeJSRSCIReN//接受3字节数据PULH//恢复HCLI//开总中断RTI//中断返回……2.C语言方式:数码管LED显示的主程序部分代码……//主函数voidmain(){INT8Ui,j;DisMCUInt();//严禁总中断MCUInit();//芯片初始化SCIInit();//串行口初始化Timer1Init();//定期器初始化EnSCIReInt();//开放SCI接受中断EnT1OverflowInt();//开放Timer1溢出中断T1SC&=~(1<<TSTOPBit);//允许定期器1计数EnMCUInt();//开放总中断LEDdata_D=0xff;//数据口为输出LEDcs_D=0xff;//位选口为输出//给时分秒赋值初始化time[0]=0;//时time[1]=0;//分time[2]=0;//秒while(1){//LED显示分和秒LEDShowNum(0,time[1]/10);for(j=0;j<250;j++);//延时LEDShowNum(1,time[1]%10);for(j=0;j<250;j++);//延时LEDShowNum(2,time[2]/10);for(j=0;j<250;j++);//延时LEDShowNum(3,time[2]%10);for(j=0;j<250;j++);//延时}}数码管LED显示的中断程序部分代码……#pragmainterrupt_handlerisrSCIRevoidisrSCIRe(void){DisMCUInt(); //严禁总中断SCIReN(3,time);//接受时分秒3个字节的数据EnMCUInt();ﻩ//开放总中断}#pragmainterrupt_handlerisrTimer1voidisrTimer1(void){DisMCUInt();time[2]++;//秒加1if(time[2]!=60)gotoexit;//秒未增长到60,转exittime[2]=0;//秒增长到60,清0,分加1time[1]++;if(time[1]!=60)gotoexit;//分未增长到60,转exittime[1]=0;//分增长到60,清0,时加1time[0]++;if(time[0]!=24)gotoexit;//时未增长到24,转exittime[0]=0;//时增长到24,清0exit:T1SC&=~(1<<TOFBit);//清除定期器溢出标志位EnMCUInt();}……五.实验问答(根据实验指导书所列举的问题)1.驱动LED数码管有哪些方法?答:用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再管,直到下一次显示数据需要更新时再传送一次新数据。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论