| 网站首页 | 精品文章 | 下载中心 | 本站教程 | 邮购须知 | 电子商城 | 网站简介 | 常见问题集锦 | 
您现在的位置: 单片机启点网 >> 本站教程 >> 原创教程 >> 本站教程正文 用户登录 新用户注册
[组图]启点单片机实验板教程三:数码管显示         ★★★ 【字体:
启点单片机实验板教程三:数码管显示
作者:姜再留    本站教程来源:本站原创    点击数:    更新时间:2004-10-03

     现在我们一起来做第二个实验:数码管显示实验。我们用实验板上的两只数码管循环显示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:

;///////////////////////////////////////////    
;本程序源代码由单片机启点网创作完成.                
;单片机启点网,让更多人学习单片机更容易.         
;第一网址----www.mcu99.com                     
;第二网址----www.e-onnet.com          
;站长:姜再留                            
;email-------mcu99@163.com    
;用动态扫描的方式驱动数码管
;/////////////////////////////////////////// 

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 3fh,30h,6dh,79h,72h,5bh,5fh,31h,7fh,7bh

end

;如果是共阳数码管的显示代码
numtab: DB 30H,0FCH,0A2H,0A4H,06CH,25H,21H,0BCH,20H,24H

程序B:

;///////////////////////////////////////////    
;本程序源代码由单片机启点网创作完成.                
;单片机启点网,让更多人学习单片机更容易.         
;第一网址----www.mcu99.com                     
;第二网址----www.e-onnet.com          
;站长:姜再留                            
;email-------mcu99@163.com    
;用按钮控制数码管的显示
;/////////////////////////////////////////// 

程序C:

 

本站教程录入:江在流    责任编辑:江在流 
  • 上一篇本站教程: 没有了

  • 下一篇本站教程:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关本站教程
  • DS18B20智能温度控制器(汇编

  • AT24C02串行E2PROM的读写

  • 红外线遥控器解码程序

  • 红外线遥控器声光测试器

  • 单片机和PC机串口通讯试验

  • 单片机倒计时定时器

  • 单片机演奏音乐实验

  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)