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 ...
随机推荐
- Bryce1010的操作系统课程设计
https://download.csdn.net/download/fire_to_cheat_/10221003 上面是课程设计的代码,下载需要一些积分. 1.作业调度 2.磁盘调度 常见的磁盘调 ...
- border-1px的实现(stylus)
当样式像素一定时,因手机有320px,640px等.各自的缩放比差异,所以设备显示像素就会有1Npx,2Npx.为保设计稿还原度,解决就是用media + scale. // stylus语法 bor ...
- 利用正则将xml数据解析为数组
function xml_to_array( $xml ) { $reg = '/<(\w+)[^>]*>([\x00-\xFF]*)<\/\1>/'; if(preg_ ...
- 点击后打开QQ临时会话
1.QQ官方提供的代码.如果没有加好友需要加好友才能聊天,也可以到这里http://shang.qq.com/v3/index.html 开通一个服务,同样可以实现临时会话. <a href=& ...
- 12.1Java-构造方法
一.构造方法 作用:在new的同时对成员变量赋值,给对象的属性初始化赋值格式:权限 方法名(参数列表){}方法的名字,必须和类的名字完全一致,大小写一致构造方法不许写返回值类型,如void,int 构 ...
- 2017团体程序设计天梯赛大区赛 L3-3 球队“食物链”
思路: 状压dp. 实现: #include <iostream> #include <cstdio> #include <cstring> using names ...
- JS filters-table简单过滤-Version 1
初级版本: 输入框可检索,空格检索忽略 radio点击后会过滤 最后的两个输入框可根据age范围检索过滤 三个单独的功能,不能协同工作 <!DOCTYPE html> <html&g ...
- Farseer.net轻量级开源框架 中级篇:BasePage、BaseController、BaseHandler、BaseMasterPage、BaseControls基类使用
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: UrlRewriter 地址重写 下一篇:Farseer.net轻量级开源框架 中 ...
- (二)Redis for 阿里云公网连接
目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis 阿里云目前仅支持内网连接Redi ...
- python中break、continue 、exit() 、pass终止循环的区别
python中break.continue .exit() .pass区分 1.break:跳出循环,不再执行 Python break语句,就像在C语言中,打破了最小封闭for或while循环. b ...