C51 动态数码管 个人笔记
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 动态数码管 个人笔记的更多相关文章
- C51 静态数码管 个人笔记
显示器介绍 单片机系统中常用的显示器有: LED(Light Emitting Diode):发光二极管显示器 LCD(Liquid Crystal Display)液晶显示器 TFT 液晶显示器等. ...
- SSH的本地、远程、动态端口转发实验笔记
SSH端口转发 SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务.这一 ...
- c# 动态调用WCF方法笔记!
//动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...
- Android动态加载学习笔记(一)
前言 上周五DPAndroid小分队就第二阶段分享内容进行了讨论,结果形成了三个主题:性能优化.动态加载.内核远离.我选择的是第二项——动态加载.在目前的Android开发中,这一部分知识还是比较流行 ...
- 点分治&&动态点分治学习笔记
突然发现网上关于点分和动态点分的教程好像很少……蒟蒻开篇blog记录一下吧……因为这是个大傻逼,可能有很多地方写错,欢迎在下面提出 参考文献:https://www.cnblogs.com/LadyL ...
- Chapter12(动态内存)--C++Prime笔记
1.分配再静态或栈内存中的对象由编译器自动创建销毁. 2.C++中动态内存的管理是通过 new:前者为对象非配空间并返回一个指向该对象的指针. delete:接受一个动态对象的指针,摧毁该对象,并释放 ...
- 关于C# DropDownList 动态加载数据笔记
今天在处理一个导游注册的页面,其中需要填写地址以及该地址下所有旅行社,地址区级以上都是用下拉列表实现,具体地址街道等手动填写.在填写区县之后,该区县下的所有旅行社也需要动态加载. 后台代码 DataT ...
- C++学习 之 指针及动态内存分配(笔记)
1. 指针 1.1 指针的含义: 简单来说,指针是存储内存地址的变量.当我们声明了一个指针变量后,使用该指针时系统会根据指针内的地址索引内存块,读取内存内的值.指针因为是用来存地址的,所以一般固定长度 ...
- Note -「动态 DP」学习笔记
目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...
随机推荐
- hdu 1178 Heritage from father (推导)
题意: 有一个金币堆的金字塔,最上层就有一个金币,以后的i层都是边长为i的实心三角形,给你层数,问:一共有多少个金币?(用科学计数法表示,并且保留两位小数) 解题思路: 根据题意可知求出1*n+2*( ...
- QT5每日一学(三) QT登陆对话框
一.使用设计模式创建界面 1.新建Qt Widgets Application,项目名称为login,类名和基类保持MainWindow和QMainWindow不变. 2.完成项目创建后,向项目中添加 ...
- 2018年全国多校算法寒假训练营练习比赛(第五场):A题:逆序数(树状数组or归并排序)
题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.比如一个序列为4 5 1 3 2, 那么这个序列 ...
- HttpURLConnection教程
1.Class Overview An URLConnection for HTTP (RFC 2616) used to send and receive data over the web. Da ...
- jmeter(二)元件的作用域与执行顺序
1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...
- sed简单脚本练习
sed脚本的执行顺序可以简记为:Read,Execute,Print,Repeat(读取,执行,打印,重复)简称REPR 分析脚本的执行顺序: l 读取一行到模式空间(sed内部的一个临时缓存,用于存 ...
- IIS7 网站发布
选择“网站” 添加网站
- 多个文本框点击复制 zClip (ZeroClipboard)有关问题
<script type="text/javascript" src="js/jquery.min.js"$amp;>amp;$lt;/script ...
- AJPFX解析关于编码ansi、GB2312、unicode与utf-8的区别
大家平时遇到乱码问题是否有自己的一套解决方案?这篇文章就是介绍一下常用的编码方式关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本 ...
- 【Hibernate】对应各种数据库的方言