我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1123|回复: 0

两位数码管循环显示00~99的实验

[复制链接]

该用户从未签到

133

主题

2418

回帖

6591

积分

二级逆天

积分
6591

社区居民社区劳模原创达人最爱沙发忠实会员终身成就奖优秀斑竹奖

QQ
发表于 2015-3-19 13:53:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
现在让我们用实验板上的两个数码管来做一个循环显示00~99数字的实验,先来完成必要的硬件部分,数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同,并且相应的0~9的显示代码也正好相反。
  首先我们来介绍两位共阳数码管的单片机驱动方法,电路如下图:
  

                               
登录/注册后可看大图

                               
登录/注册后可看大图

  网友可以看到:P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
  因为要显示两位不同的数字,所以必须用动态扫描的方法来实现,就是先个位显示1毫秒,再十位显示1毫秒,不断循环,这样只要扫描时间小于1/50秒,就会因为人眼的视觉残留效应,看到两位不同的数字稳定显示。  下面我们再介绍一种共阴数码管的单片机驱动方法,电路如下图:
  

                               
登录/注册后可看大图

  网友可以看到:+5V通过1K的排阻直接给数码管的8个段位供电,P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,相应的位可以吸入电流。单片机的P0口输出的数据相当于将数码管不要显示的数字段对地短路,这样数码管就会显示需要的数字。
  网友可以看到,共阴数码管的硬件更简单,所以在批量生产时,硬件开销小,节省PCB面积,减少焊接工作量,降低综合成本,所以采用共阴数码管更有利于批量生产,现在销售的试验板都是采用共阴数码管了。
  以下是用AT89C51实验板的两位数码管显示00~99依次循环的汇编语言程序
  a_bit equ 20h ;数码管个位数存放内存位置
  b_bit equ 21h ;数码管十位数存放内存位置
  temp equ 22h ;计数器数值存放内存位置
  star: mov temp,#0 ;初始化计数器,从0开始
  stlop: acall display;调用显示子程序
  inc temp;对计数器加1
  mov a,temp
  cjne a,#100,next ;判断计数器是否满100?
  mov temp,#0;满100就清零重新开始
  next: ljmp stlop;不满就循环执行
  ;显示子程序
  display: mov a,temp ;将temp中的十六进制数转换成10进制
  mov b,#10 ;10进制/10=10进制
  div ab
  mov b_bit,a ;十位在a
  mov a_bit,b ;个位在b
  mov dptr,#numtab ;指定查表启始地址
  mov r0,#4
  dpl1: mov r1,#250 ;
  dplop: mov a,a_bit ;取个位数
  MOVC A,@A+DPTR ;查个位数的7段代码
  mov p0,a ;送出个位的7段代码
  clr p2.7 ;开个位显示
  acall d1ms ;显示162微秒
  setb p2.7;关闭个位显示,防止鬼影
  mov a,b_bit ;取十位数
  MOVC A,@A+DPTR ;查十位数的7段代码
  mov p0,a ;送出十位的7段代码
  clr p2.6 ;开十位显示
  acall d1ms ;显示162微秒
  setb p2.6;关闭十位显示,防止鬼影
  djnz r1,dplop ;循环执行250次
  djnz r0,dpl1 ;循环执行250X4=1000次
  ret
  ;2+2X80=162微秒,延时按12MHZ计算
  D1MS: MOV R7,#80
  DJNZ R7,$
  RET
  ;实验板上的7段数码管0~9数字的共阴显示代码
  numtab: DB 0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
  end
  ;如果是共阳数码管的显示代码
  numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

每日签到,有金币领取。


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表