找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21231|回复: 0
收起左侧

51单片机控制数码管显示程序 (STC89C52RC)

[复制链接]
ID:101489 发表于 2016-1-3 00:51 | 显示全部楼层 |阅读模式
51单片机控制数码管显示程序 (STC89C52RC)
本文针对虾米I代单片机开发板

观察单片机实物图,在左上角,共有6个数码管,从左至右DS6-DS1。怎样控制它们显示字母或数字呢。当然是查开发板原理图。

从原理图可知,6个数码管是共阳极接法,+V电源接到6个PNP三极管,三极管集电极接到数码管,基极通向74HC138译码器。DS6-DS1对应于译码器的LEDS5-LEDS1。在同一时间,只能启用一个数码管,启用哪个数码管由译码器控制。

查译码器部分电路可知,译码器的Y0-Y6对应于LEDS0-LEDS6。译码器的控制,我们在关于LED跑马灯程序中已经讲过了。如果要让左边第一只数码管启用,译码器控制代码如下:

sbit enableG1 = P1^3;
sbit enableG2 = P1^4;

sbit selectC = P1^2;
sbit selectB = P1^1;
sbit selectA = P1^0;

//74HC138译码器
void hc138()
{
        enableG1 = 1;
        enableG2 = 0;

        selectC = 1;
        selectB = 0;
        selectA = 1;
}

在这块板子上,数码管的abcdefg dp分别对应于P0的8个IO口。共阳数码管的特点是低电平0点亮,高电平1关闭。我们采用一次给P0 byte 赋值的办法,设定数码管的显示内容。

下面我们试着写出共阳数码管的真值表。这是一个很好的想像练习。一定要在脑子里想像并计算出真值,千万不要到纸上去写或画,要知道想像练习比单纯的知识重要得多,想像力提高了,智力就提高了,以后学习任何知识都会更加快。

1. 想像出数码管的样子,及相应部位的字母: abcdefg dp
2. 想像出显示数字0的数码管
3. 在想像中写出数字0的二进制值,从高位写起,也就是从dp 到a
   要亮的小灯,写0,不亮的写1
   dp = 1 表示小数点,不用亮
   g  = 1 中间那横不用亮
   f  = 0 左边上面一竖要亮
   e  = 0 左边下面一竖要亮
   d  = 0 下面横要亮
   e  = 0 右下竖要亮
   b  = 0 右上竖亮
   a  = 0 上面横亮

   二进制的1100 0000,我们分成二部分转化成16进制,1100也就是8+4=12,10进制的12就是16进制的C,0000换算成16进制还是0。于是得到C0H。我们只要把P0设成C0H,就能显示我们想要的数字0.

下面就是完整代码:

#include <reg52.h>

sbit enableG1 = P1^3;
sbit enableG2 = P1^4;

sbit selectC = P1^2;
sbit selectB = P1^1;
sbit selectA = P1^0;

//74HC138译码器
void hc138()
{
        enableG1 = 1;
        enableG2 = 0;

        selectC = 1;
        selectB = 0;
        selectA = 1;
}



/**
   共阳数码管真值表

   0 C0H    1 F9H
   2 A4H    3 B0H
   4 99H    5 92H
   6 82H    7 F8H
   8 80H    9 90H   
   A 88H    b 83H
   C C6H    d A1H
   E 86H    F 8EH
**/
void turnDigitalLED()
{
         while(1)
        {
                 P0 = 0xC0;
        }
}

int main(void)                 
{        
        hc138();        
        turnDigitalLED();

        return 0;
}








回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表