郭天祥51单片机开发教程学习(3)

点亮第一个数码管

书中P49例子

#include <reg52.h>

#define uint unsigned int   //宏定义
#define uchar unsigned char   //宏定义

sbit dula = P2 ^ 6;  //U1锁存器的锁存端
sbit wela = P2 ^ 7;  //U2锁存器的锁存端

//延时
void sleep(uint delay)
{
    uint i, j;

    for(i = delay; i > 0; i--)
    {
        for(j = 100; j > 0; j--);
    }
}

void main()
{
    wela = 1;   //打开U2锁存端
    P0 = 0xfe;
    wela = 0;    //关闭U2锁存端

    dula = 1;   //打开U1锁存端
    P0 = 0x7f;
    dula = 0;    //关闭U1锁存端

    while(1);   //程序停止
}

点亮全部数码管

书中P50例子

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int   //宏定义
#define uchar unsigned char   //宏定义

sbit dula = P2 ^ 6;  //U1锁存器的锁存端
sbit wela = P2 ^ 7;  //U2锁存器的锁存端

//延时
void sleep(uint delay)
{
    uint i, j;

    for(i = delay; i > 0; i--)
    {
        for(j = 100; j > 0; j--);
    }
}

void main()
{
uchar num;
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};        //共阴极数码管编码表

    wela = 1;   //打开U2锁存端
    P0 = 0xc0;
    wela = 0;    //关闭U2锁存端

    while(1)
    {
        for (num = 0; num < 16; num++)
        {
            dula = 1;   //打开U1锁存端
            P0 = table[num];
            dula = 0;    //关闭U1锁存端
            sleep(500);
        }
    };
}

数码管的电路原理图看起来挺复杂,还有点亮原理略显晦涩,暂时未做深究。
待以后有需要的时候,再深入学习。

显示数字

书中P52例子

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int   //宏定义
#define uchar unsigned char   //宏定义

sbit dula = P2 ^ 6;  //U1锁存器的锁存端
sbit wela = P2 ^ 7;  //U2锁存器的锁存端

//延时
void sleep(uint delay)
{
    uint i, j;

    for(i = delay; i > 0; i--)
    {
        for(j = 100; j > 0; j--);
    }
}

void main()
{
    uchar delay = 1;
    uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //共阴极数码管编码表

    while(1)
    {
        dula = 1;   //打开U1锁存端
        P0 = table[1];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xfe;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);

        dula = 1;   //打开U1锁存端
        P0 = table[2];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xfd;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);

        dula = 1;   //打开U1锁存端
        P0 = table[3];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xfb;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);

        dula = 1;   //打开U1锁存端
        P0 = table[4];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xf7;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);

        dula = 1;   //打开U1锁存端
        P0 = table[5];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xef;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);

        dula = 1;   //打开U1锁存端
        P0 = table[6];
        dula = 0;    //关闭U1锁存端
        P0 = 0xff;   // 送位选数据前,关闭所有显示。
        wela = 1;   //打开U2锁存端
        P0 = 0xdf;   //送位选数据
        wela = 0;    //关闭U2锁存端
        sleep(delay);
    };
}

file

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
IOS免越狱自动化测试群:691997586
Auto.js学习交流①群:291981338
EasyClick学习交流①群:737066890
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。 6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » 郭天祥51单片机开发教程学习(3)

企业级大数据智能营销管理系统

了解详情