微机原理实验四 LED数码管显示实验.docx

上传人:b****5 文档编号:7517810 上传时间:2023-05-11 格式:DOCX 页数:3 大小:16.93KB
下载 相关 举报
微机原理实验四 LED数码管显示实验.docx_第1页
第1页 / 共3页
微机原理实验四 LED数码管显示实验.docx_第2页
第2页 / 共3页
微机原理实验四 LED数码管显示实验.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理实验四 LED数码管显示实验.docx

《微机原理实验四 LED数码管显示实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验四 LED数码管显示实验.docx(3页珍藏版)》请在冰点文库上搜索。

微机原理实验四 LED数码管显示实验.docx

微机原理实验四LED数码管显示实验

微机原理实验四LED数码管显示实验

      微机实验余成驹光电1202班U201214134  实验名称  LED数码管显示实验指导教师  专业班级  姓名  学号  联系方式      一实验要求:

  实验四LED数码管显示实验  实验目的:

理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,  能够编写数码管显示驱动程序;熟悉接口程序调试方法。

  实验内容:

利用C8051F310单片机控制数码管显示器基本要求:

  利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

提高要求:

  在数码管上显示0→199计数,计数间隔为秒。

  二、设计思路  1基本要求:

  对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。

采用查询方式进行定时。

,作为位选信号来一直选择末位数码管输出信号。

再利用R0作为相对寻址来储存数据并赋值给A。

通过MOVCA,@A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

  2提高要求:

  微机实验余成驹光电1202班U201214134  依然对信号频率八分频,对定时器进行48分频,通过P0,6,进行位控选择数码管输出,定时器定时,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。

        三、资源分配  1基本要求:

  :

  位选信号端口:

  位选信号端口P1:

  输出段码数据R0:

  存放显示数据  DPTR:

  指向段码数据表首  2提高要求:

  :

  位选信号端口:

  位选信号端口P1:

  输出段码数据DPTR:

  指向段码数据表首  R3,R6,R7:

分别储存第三第二第一位数码管数据    四、流程图  1基本要求            2提高要求:

  主程序  微机实验余成驹光电1202班U201214134  延时程序微机实验余成驹光电1202班U201214134  接--2提高要求:

  动态扫描程序    中断程序      微机实验余成驹光电1202班U201214134  五、源代码    1基本要求:

  ORG0000HLJMPMAIN  ORG0100HMAIN:

  LCALLInit_DeviceMOVSP,#40H  MOVDPTR,#TAB  ;将DPTR地址指向表头  MOVTMOD,#01H  ;定时器采用T0定时方式一MOVTH0,#06H  ;定时器赋予初值MOVTL0,#0C6H  CLR  ;选择末位数码管CLR    START:

  MOVR0,#00H  ;赋初值0CLRA  MOVCA,@A+DPTR;查表输出MOVP1,A  SETBTR0  ;定时器开始工作HERE:

  JNBTF0,HERE;等待溢出CLRTR0CLRTF0  MOVTH0,#06H;重新赋予初值MOVTL0,#0C6H  CJNER0,#0FH,NEXT;等待末位数码管到FSJMPSTARTNEXT:

  INCR0  ;R0加一MOVA,R0  MOVCA,@A+DPTR  MOVP1,A  ;P1输出SETBTR0  SJMPHERE  ;踏步

  

      微机实验余成驹光电1202班U201214134  org1000h  TAB:

DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0HDB0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH  ;------------------------------------;-GeneratedInitializationFile--;------------------------------------$include()  publicInit_Device  INITSEGMENTCODE  rsegINIT  ;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:

  anlPCA0MD,  #0BFh  movPCA0MD,  #000h  ret  Timer_Init:

  movCKCON,  #002h  ret  Port_IO_Init:

  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Push-Pull,Digital  ;-Unassigned,Open-Drain,Digital  微机实验余成驹光电1202班U201214134  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  ;-Unassigned,Open-Drain,Digital  movP1MDOUT,#0FFh  movP2MDOUT,#0C0h  movXBR1,  #040h  ret  ;Initializationfunctionfordevice,;CallInit_DevicefromyourmainprogramInit_Device:

  lcallPCA_Init  lcallTimer_Init  lcallPort_IO_Init  ret  END  2提高部分:

  ORG0000H  LJMPSTART    ORG000BH  LJMPTI00  ORG0300HSTART:

  LCALLInit_Device  MOVR3,#00H  ;百位数码管赋予初值MOVR6,#00HMOVR7,#01HMOV61H,#40HMOV62H,#80H  SETBET0  SETBEA  ;十位数码管赋予初值;个位数码管赋予初值  ;开外中断T0  MOV60H,#00H  ;设置位控码  MOVTMOD,#01H;选择定时器T0方式一  微机实验余成驹光电1202班U201214134    MOVTH0,#131  MOVTL0,#99MAIN:

  LJMPDISP  ;跳入动态输出子程序MAIN1:

  LCALLCOUNTERAJMPMAIN  ;重新扫描  ;=================动态输出子程序==================DISP:

  MOVSP,#30H  ;设置堆栈指针MOVR1,#60H  ;位选指针赋初值  MOVP1,#00H  ;灯全灭;=================LD0:

  MOVA,@R1  ;取出位选码  ANLP0,#3FH  ;将P0端口高两位置零  ORLP0,A  ;输出位选信号MOVA,R7  ;取出段选码MOVDPTR,#TAB  ;DPTR指向段选码表第一个数据  MOVCA,@A+DPTR;查表,取出段选码MOVP1,A  ;输出段选码LCALLDL1MS  ;延时1ms,灯亮1msMOVP1,#00H  ;灯全灭    INCR1  ;位选指针加一MOVA,@R1  ;取出位选码  ANLP0,#3FH  ;将P0端口高两位置零  ORLP0,A  ;输出位选信号MOVA,R6  ;取出段选码MOVDPTR,#TAB  ;DPTR指向段选码表第一个数据  MOVCA,@A+DPTR;查表,取出段选码MOVP1,A  ;输出段选码LCALLDL1MS  ;延时1ms,灯亮1ms  ;定时器赋予初值  微机实验余成驹光电1202班U201214134  MOVP1,#00H  ;灯全灭  INCR1  MOVA,@R1  ;取出位选码  ANLP0,#3FH  ;将P0端口高两位置零  ORLP0,A  ;输出位选信号MOVA,R3  ;取出段选码MOVDPTR,#TAB  ;DPTR指向段选码表第一个数据  MOVCA,@A+DPTR;查表,取出段选码MOVP1,A  ;输出段选码LCALLDL1MS  ;延时1ms,灯亮1msMOVP1,#00H  ;灯全灭LJMPMAIN1  ;返回主程序  ;===============延时1ms子程序=============  ORG0050HDL1MS:

MOVR4,#4D1:

NOP  MOVR5,#253DJNZR5,$DJNZR4,D1RET      ;延时程序通过R4,R5实现    ORG0100HCOUNTER:

  SETBTR0  RET  ;中断程序TI00:

  MOVTH0,#133;中断程序重新赋予初值  MOVTL0,#99  INCR7    ;个位加一;重新将个位归零  CJNER7,#0BH,S1;判断个位是否进位  MOVR7,#01H  CJNER6,#00H,S2;判断此时十位是否显示  ;定时器开启  微机实验余成驹光电1202班U201214134  MOVR6,#01H;若不显示则开启显示S2:

  INCR6    ;十位加一  CJNER6,#0BH,S1;判断十位是否进位  CJNER3,#00H,S3;判断百位是否显示  MOVR3,#01HS3:

  INCR3    ;百位加一;十位重新归零  ;如果到200则数码管全熄灭;踏步停止  MOVR6,#01H  MOVP1,#00H  SJMP$S1:

  RETI      ORG0200H  ;===============段选码表==============;  TAB:

DB00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H;  $include()  publicInit_Device  INITSEGMENTCODE  rsegINIT  ;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:

  anlPCA0MD,  #0BFh  movPCA0MD,  #000h  ret  Timer_Init:

  movCKCON,  #002h  ret      ;中断返回  CJNER3,#03H,S1;判断百位是否到2

  

  

  

  

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2