Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68505
  • 博文数量: 10
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-18 15:18
文章分类

全部博文(10)

文章存档

2011年(1)

2007年(9)

我的朋友
最近访客

分类:

2007-04-16 13:25:07

实验 4  100位计数器的实现
1.实验目的
掌握七段LED显示器的动态显示方式,使用户学会如何使用数码管。
   2. 实验设备及器件
     PC机                 一台
         51-3.0型单片机实验板     一块
   3. 实验内容
编写一段程序,用P0口输出段码,P2口控制位选,使用数码管实现1到100的计数器显示。
4. 实验步骤
① 使用排线将P0口和段码驱动输入J7相连,并将P2口和  位选控制J8相连。如图11所示原理图。
② 先编写一个延时程序。
③ 将数码管显示的程序编写完整并调试运行。
④ 用下载线连接实验板和PC 机,把代码下到单片机实验板,                  查看结果。
5. 实验参考程序

 ABIT EQU 20H         ;个位数存放处
 BBIT EQU 21H          ;十位数存放处
TEMP EQU 22H          ;计数器寄存器

 START:MOV TEMP,#0   ;初始化计数器
 STLOP:ACALL DISPLAY
        INC TEMP
        MOV A,TEMP
        CJNE A,#100,NEXT ;=100重来
        MOV TEMP,#0
    NEXT:LJMP STLOP
;显示子程序
;====================================================
DISPLAY: MOV A,TEMP ;将temp中的十六进制数转换成10进制
         MOV B,#10   ;10进制/10=10进制
         DIV AB
         MOV BBIT,A ;十位在a
         MOV ABIT,B ;个位在b

         MOV DPTR,#TAB ;指定查表启始地址
         MOV R0,#4
    DPL1:MOV R1,#250 ;显示1000次
   DPLOP:MOV A,ABIT ;取个位数
         MOVC A,@A+DPTR ;查个位数的7段代码
         MOV P0,A ;送出个位的7段代码
         CLR P2.0 ;开个位显示
         ACALL D1MS ;显示1ms

         SETB P2.0
         MOV A,BBIT ;取十位数
         MOVC A,@A+DPTR ;查十位数的7段代码
         MOV P0,A ;送出十位的7段代码
         CLR P2.1 ;开十位显示
         ACALL D1MS ;显示1ms
         SETB P2.1
         DJNZ R1,DPLOP ;100次没完循环
         DJNZ R0,DPL1 ;4个100次没完循环
         RET
;1MS延时(按12MHZ算)
;====================================================
    D1MS:MOV R7,#80
         DJNZ R7,$
         RET
 ;7段数码管各划的数字排列表
;====================================================
     TAB:DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0F8h,80h,90h
           ;不带小数点0 1 2 3 4 5 6 7 8 9
         END

淘宝网

阅读(1227) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~