8段led管构成一个数字。

开发板上共有8个数字。

每个数字有一个使能端(段选引脚)

每个数字的位选端(选择8段led管哪些亮,即构成什么图案)并联在一起

轮流点亮不同数字,速度很快,视觉暂留,从而形成8个数字同时亮的效果

#include <reg51.h>
typedef unsigned int u16;
typedef unsigned char u8; #define DIG P0
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4; //共阴的表
u8 code ledSegment [9] = { 0x3f , 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0xe6
}; void delay(u16 i)
{
while(i--);
} void DigDisplay()
{
u8 i; for(i=0;i<8;i++)
{
//段选,使能8个数码管中的某一个
//38译码器输出端和动态数码管段选端短接
switch(i)
{
case (0): //段选选中第一个动态数码管,(共阴,J16^1是公共阴极,输出低电平)
LSA = 0; //J15(38译码器输出)和J16(数码管输入)用短接片短接
LSB = 0; //故J15^1即38译码器输出端Y0与J16^1相同,为低电平
LSC = 0; //因此38译码器输入端为000(由真值表知A0是低位,A2是高位)
break;
case (1): LSC = 0;LSB = 0;LSA = 1;break;
case (2): LSC = 0;LSB = 1;LSA = 0;break;
case (3): LSC = 0;LSB = 1;LSA = 1;break;
case (4): LSC = 1;LSB = 0;LSA = 0;break;
case (5): LSC = 1;LSB = 0;LSA = 1;break;
case (6): LSC = 1;LSB = 1;LSA = 0;break;
case (7): LSC = 1;LSB = 1;LSA = 1;break;
}
//--位选,选择被使能的数码管中,哪几段点亮,(显示什么数字)
//P0端口控制动态数码管的8个位选引脚J12
DIG = ledSegment[i]; // 共阴,高电平有效
delay(200); //短暂延时1ms (去掉或改变时间长度可能会变亮变暗)
DIG = 0x00;
}
}
void main(void)
{
while(1)
{
DigDisplay();
}
}

C51 动态数码管 个人笔记的更多相关文章

  1. C51 静态数码管 个人笔记

    显示器介绍 单片机系统中常用的显示器有: LED(Light Emitting Diode):发光二极管显示器 LCD(Liquid Crystal Display)液晶显示器 TFT 液晶显示器等. ...

  2. SSH的本地、远程、动态端口转发实验笔记

    SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一 ...

  3. c# 动态调用WCF方法笔记!

    //动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...

  4. Android动态加载学习笔记(一)

    前言 上周五DPAndroid小分队就第二阶段分享内容进行了讨论,结果形成了三个主题:性能优化.动态加载.内核远离.我选择的是第二项——动态加载.在目前的Android开发中,这一部分知识还是比较流行 ...

  5. 点分治&&动态点分治学习笔记

    突然发现网上关于点分和动态点分的教程好像很少……蒟蒻开篇blog记录一下吧……因为这是个大傻逼,可能有很多地方写错,欢迎在下面提出 参考文献:https://www.cnblogs.com/LadyL ...

  6. Chapter12(动态内存)--C++Prime笔记

    1.分配再静态或栈内存中的对象由编译器自动创建销毁. 2.C++中动态内存的管理是通过 new:前者为对象非配空间并返回一个指向该对象的指针. delete:接受一个动态对象的指针,摧毁该对象,并释放 ...

  7. 关于C# DropDownList 动态加载数据笔记

    今天在处理一个导游注册的页面,其中需要填写地址以及该地址下所有旅行社,地址区级以上都是用下拉列表实现,具体地址街道等手动填写.在填写区县之后,该区县下的所有旅行社也需要动态加载. 后台代码 DataT ...

  8. C++学习 之 指针及动态内存分配(笔记)

    1. 指针 1.1 指针的含义: 简单来说,指针是存储内存地址的变量.当我们声明了一个指针变量后,使用该指针时系统会根据指针内的地址索引内存块,读取内存内的值.指针因为是用来存地址的,所以一般固定长度 ...

  9. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

随机推荐

  1. 深入理解Android

    http://blog.csdn.net/innost/article/details/47254381

  2. Tree POJ - 174

    点分模板题 都快改的跟题解一模一样了2333333 #include<cstdio> #include<cstring> #include<algorithm> u ...

  3. js中toFixed重写

    在测试原生的toFixed发现,它在个浏览器上表现不一致,并且有些值在保留小数时得到的结果并不是想要,如在chrome下测试: 所以针对toFixed方法不准的问题,我们进行方法改造: 主要思路是:对 ...

  4. 468 Validate IP Address 验证IP地址

    详见:https://leetcode.com/problems/validate-ip-address/description/ Java实现: class Solution { public St ...

  5. Android开发学习--MVP模式入门

    1.模型与视图完全分离,我们可以修改视图而不影响模型2.可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部3.我们可以将一个Presenter用于多个视图,而不需要改变Pr ...

  6. Android学习笔记(八) CheckBox和RadioGroup

    一.CheckBox 1.CheckBox的常用方法: boolean isChecked() :返回当前CheckBox的选中状态 void setChecked(boolean isChecked ...

  7. Elasticsearch の 查询类型

    查询类型SearchType Es中一共有四种查询类型:QUERY_AND_FETCH.QUERY_THEN_FETCH.DFS_QUERY_AND_FETCH.DFS_QUERY_THEN_FETC ...

  8. webpack3.0版本的一些改动

    npm install --save / npm install -S 项目发布上线之后还会依赖用到的插件,没有这些插件,项目不能运行 npm install --save-dev / npm ins ...

  9. MAC加域重复跳出---"talagent"想使用“本地项目” 的钥匙串

    很简单的解决办法,就是把以前的钥匙串给删掉就好 (重要提示:这个方法,以前所有程序自动记录密码都会丢掉,safari的自动填充,QQ自动登录,imessages 的等等) 1.打开Finder -&g ...

  10. 编写图形界面下的Java Swing程序,接受用户输入的两个数据为上下限,然后输出上、下限之间的所有素数。(结果部分每行显示10个数据)

    这个代码我整体写的比较简单,读者可以简单参考一下,对人家题目要求略微修改了一下,多加了一个“置空”按钮.下图为我设计的界面 运行程序后的截图请看我后面的截图: package com.wangshil ...