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. Bryce1010的操作系统课程设计

    https://download.csdn.net/download/fire_to_cheat_/10221003 上面是课程设计的代码,下载需要一些积分. 1.作业调度 2.磁盘调度 常见的磁盘调 ...

  2. border-1px的实现(stylus)

    当样式像素一定时,因手机有320px,640px等.各自的缩放比差异,所以设备显示像素就会有1Npx,2Npx.为保设计稿还原度,解决就是用media + scale. // stylus语法 bor ...

  3. 利用正则将xml数据解析为数组

    function xml_to_array( $xml ) { $reg = '/<(\w+)[^>]*>([\x00-\xFF]*)<\/\1>/'; if(preg_ ...

  4. 点击后打开QQ临时会话

    1.QQ官方提供的代码.如果没有加好友需要加好友才能聊天,也可以到这里http://shang.qq.com/v3/index.html 开通一个服务,同样可以实现临时会话. <a href=& ...

  5. 12.1Java-构造方法

    一.构造方法 作用:在new的同时对成员变量赋值,给对象的属性初始化赋值格式:权限 方法名(参数列表){}方法的名字,必须和类的名字完全一致,大小写一致构造方法不许写返回值类型,如void,int 构 ...

  6. 2017团体程序设计天梯赛大区赛 L3-3 球队“食物链”

    思路: 状压dp. 实现: #include <iostream> #include <cstdio> #include <cstring> using names ...

  7. JS filters-table简单过滤-Version 1

    初级版本: 输入框可检索,空格检索忽略 radio点击后会过滤 最后的两个输入框可根据age范围检索过滤 三个单独的功能,不能协同工作 <!DOCTYPE html> <html&g ...

  8. Farseer.net轻量级开源框架 中级篇:BasePage、BaseController、BaseHandler、BaseMasterPage、BaseControls基类使用

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: UrlRewriter 地址重写 下一篇:Farseer.net轻量级开源框架 中 ...

  9. (二)Redis for 阿里云公网连接

    目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis 阿里云目前仅支持内网连接Redi ...

  10. python中break、continue 、exit() 、pass终止循环的区别

    python中break.continue .exit() .pass区分 1.break:跳出循环,不再执行 Python break语句,就像在C语言中,打破了最小封闭for或while循环. b ...