版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《微机实验》报告实验名称LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。利用末位数码管循环显示数字0-F,显示切换频率为1Hz。2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。定时采用软件查询工作方式,利用JNBTF0,HERE实现。置P0.6和P0.7端口为0,位选信号选定末位数码管。通过MOVCA,@A+DPTR指令,利用顺序查表法取出显示段码数据。寄存器R0自增1,并赋给A以取出下一个显示段码数据。为减短代码长度,利用CJNE指令实现循环结构。当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。三、资源分配1.基础部分P0.6:位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据R5:存放十位显示数据R6:存放百位显示数据P1:输出段码数据DPTR:指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename:test.asm;Decription:末位数码管循环显示数字0-F,显示切换频率为1Hz。;Designedby:陈敬人;Date:2014.11.9;;-GeneratedInitializationFile--;$include(C8051F310.inc)ORG0000H LJMPMAIN ORG1000HMAIN:LCALLInit_Device;设备初始化 MOVSP,#40H ;合理设置堆栈位置 MOVDPTR,#TABLE ;DPTR指向段码数据表首 MOVTMOD,#01H ;定时器T0工作方式1 MOVTH0,#06H ;赋计数初值,定时1s MOVTL0,#0C6H CLRP0.6 ;位选信号,选定末位数码管亮 CLRP0.7 START: MOVR0,#00H MOVA,R0 ;取显示数据 MOVCA,@A+DPTR ;查表取段码数据 MOVP1,A ;送显示数据 SETBTR0 ;启动定时器HERE: JNBTF0,HERE ;等待定时CLRTR0 ;停止定时 CLRTF0 ;溢出位清零 MOVTH0,#06H ;重装计数初值 MOVTL0,#0C6H CJNER0,#0FH,CHANGE;判断数据是否显示完毕,未完则跳转至CHANGE SJMPSTART ;显示完毕,重新开始CHANGE:INCR0 MOVA,R0 ;取下一个显示数据 MOVCA,@A+DPTR ;查表取段码数据 MOVP1,A ;送输出显示数据 SETBTR0 ;重新启动定时器 SJMPHERETABLE:DB0FCH,60H,0DAH;段码数据表DB0F2H,66H,0B6H DB0BEH,0E0H,0FEH,0F6HDB0EEH,3EH,1AHDB7AH,9EH,8EH;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:anlPCA0MD,#0BFhmovPCA0MD,#000hretTimer_Init:movTMOD,#001hmovCKCON,#002hretPort_IO_Init:;P0.0-Unassigned,Open-Drain,Digital;P0.1-Unassigned,Open-Drain,Digital;P0.2-Unassigned,Open-Drain,Digital;P0.3-Unassigned,Open-Drain,Digital;P0.4-Unassigned,Open-Drain,Digital;P0.5-Unassigned,Open-Drain,Digital;P0.6-Unassigned,Open-Drain,Digital;P0.7-Unassigned,Open-Drain,Digital;P1.0-Unassigned,Open-Drain,Digital;P1.1-Unassigned,Open-Drain,Digital;P1.2-Unassigned,Open-Drain,Digital;P1.3-Unassigned,Open-Drain,Digital;P1.4-Unassigned,Open-Drain,Digital;P1.5-Unassigned,Open-Drain,Digital;P1.6-Unassigned,Open-Drain,Digital;P1.7-Unassigned,Open-Drain,Digital;P2.0-Unassigned,Open-Drain,Digital;P2.1-Unassigned,Open-Drain,Digital;P2.2-Unassigned,Open-Drain,Digital;P2.3-Unassigned,Open-Drain,DigitalmovXBR1,#040hretInterrupts_Init:movIT01CF,#021hret;Initializationfunctionfordevice,;CallInit_DevicefromyourmainprogramInit_Device:lcallPCA_InitlcallTimer_InitlcallPort_IO_InitlcallInterrupts_InitretEND2.提高部分;*******************提高部分源代码************************;Filename:0.asm;Decription:三位数码管从0到199依次显示,间隔0.5秒。;Designedby:陈敬人;Date:2014.11.10;;-GeneratedInitializationFile--;$include(C8051F310.inc) ORG0000H LJMPMAIN ORG1000HMAIN: LCALL Init_Device;调用定义语言 MOVSP,#20H;堆栈赋初值 MOVP1,#00H;P1口清零,所有LED管熄灭 MOVTMOD,#01H;设置T0为定时工作方式1 MOVTH0,#85H MOVTL0,#0EEH;定时器T0赋初值 CLRP0.6 CLRP0.7;位选位清零START1:MOVR0,#00H;R0赋初值0(R0存放个位数码管显示值)MOVR5,#00H;R5赋初值0(R5存放十位数码管显示值) MOVR6,#00H;R6赋初值0(R6存放百位数码管显示值) SETBTR0;开启定时器 SJMPDIS;跳转扫描输出子程序HERE:JNBTF0,DIS;判断定时是否溢出,未溢出,则执行扫描输出程序CLRTR0 CLRTF0 MOVTH0,#85H MOVTL0,#0EEH CJNER0,#09H,CHANGE;判断R0是否达到9 SJMPSTART2 CHANGE:INCR0;R0加一 SETBTR0;开启定时器SJMPDIS;跳转扫描输出子程序 ;个位满9,十位加一START2:MOVR0,#00H;R0满10归0INCR5;R5(十位)加一 CJNER5,#0AH,START3;判断十位是否可以向百位进位 MOVR5,#00H;R5(十位)满10归0INCR6;R6(百位)加一 CJNER6,#02H,START3;判断百位是否到2 SJMPSTART1START3:SETBTR0 SJMPDIS ;扫描输出子程序DIS:MOV60H,#00HMOV61H,#40H MOV62H,#80H;设置位选码(前三个数码管) ;MOV63H,#0C0H;第四个数码管MOVR1,#60H;位选码赋R1DISP:MOVP1,#00H;所有LED数码管熄灭LD0:MOVA,@R1ANLP0,#3FH ORLP0,A MOVDPTR,#TABLE0;将表地址赋数据指针 MOVA,R0 MOVCA,@A+DPTR;查表 MOVP1,A;数码管显示 LCALLDL1MS;调用1ms延时 MOVP1,#00H;所有LED数码管熄灭 INCR1;指向下一个LED数码管 MOVA,@R1ANLP0,#3FH ORLP0,A SJMPSELECT;根据十位变化特性选择不同段码表BACK:MOVA,R5 MOVCA,@A+DPTR MOVP1,A LCALLDL1MS MOVP1,#00H INCR1 MOVA,@R1 ANLP0,#3FH ORLP0,A MOVDPTR,#TABLE MOVA,R6 MOVCA,@A+DPTR MOVP1,A LCALLDL1MS MOVP1,#00H SJMPHERESELECT:CJNER6,#01H,ONE;判断百位是否为1MOVDPTR,#TABLE0;当百位为1时十位应该从0开始变化 SJMPBACKONE:MOVDPTR,#TABLE;当百位为0时十位应该从1开始变化SJMPBACK;1ms延时程序DL1MS: MOVR4,#4D1: MOVR7,#253 NOP DJNZR7,$ DJNZR4,D1 RET TABLE0:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6HTABLE:DB00H,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H ;段码数据表 publicInit_DeviceINITSEGMENTCODErsegINIT;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:anlPCA0MD,#0BFhmovPCA0MD,#000hretTimer_Init:movCKCON,#002hretPort_IO_Init:;P0.0-Unassigned,Open-Drain,Digital;P0.1-Unassigned,Open-Drain,Digital;P0.2-Unassigned,Open-Drain,Digital;P0.3-Unassigned,Open-Drain,Digital;P0.4-Unassigned,Open-Drain,Digital;P0.5-Unassigned,Open-Drain,Digital;P0.6-Unassigned,Push-Pull,Digital;P0.7-Unassigned,Push-Pull,Digital;P1.0-Unassigned,Push-Pull,Digital;P1.1-Unassigned,Push-Pull,Digital;P1.2-Unassigned,Push-Pull,Digital;P1.3-Unassigned,Push-Pull,Digital;P1.4-Unassigned,Push-Pull,Digital;P1.5-Unassigned,Push-Pull,Digital;P1.6-Unassig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职园艺技术(果树修剪技术)试题及答案
- 2025年高职(药品经营与管理)药品销售专项测试题及答案
- 2025年中职口腔技术(口腔修复材料选择)试题及答案
- 2025年大学大一(农业电气化与自动化)电力系统分析阶段测试题及答案
- 2025年高职(物联网应用技术)物联网应用案例实务试题及答案
- 2025年中职(旅游管理专业)旅游景区管理试题及答案
- 2025年高职水污染控制技术(治理技术)试题及答案
- 2025年中职(大数据与会计)出纳实务操作试题及答案
- 2025年中职(水族科学与技术)水族养殖阶段测试试题及答案
- 2026年网页设计教学(网页设计方法)试题及答案
- 抹灰层阴阳角方正度控制技术
- 中国特色社会主义知识点总结中职高考政治一轮复习
- 五年级数学下册寒假作业每日一练
- 企业管理的基础工作包括哪些内容
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 铝合金门窗工程技术规范
- 食材配送服务方案投标文件(技术标)
- 室性心律失常
- 《2024消费者金融知识学习偏好及行业宣教洞察报告》
- 横穿公路管道施工方案
- 中国高血压防治指南(2024年修订版)解读课件
评论
0/150
提交评论