当前位置: 首页 > news >正文

单片机学习3——数码管

数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点,共计8段。因此,我们对它编程的时候,刚好是用一个字节。

数码管的显示方式:

1)静态显示;

2)动态显示;

#include<reg52.h>sbit dula = P2^6;
sbit wela = P2^7;void main()
{P0=0x3F;dula=1;dula=0; 	//锁住段显P0=0xFE;wela=1;wela=0;	    //锁住位显while(1);
}

选择仿真:

硬件仿真调试:

 

我们使用了数组,将共阴极的数码管的真值表,下标正好对应的是数码管的显示数值,这样就不用记真值表了。

#include<reg52.h>
#define uchar unsigned charsbit dula = P2^6;
sbit wela = P2^7;uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void main()
{P0=0xF0;wela=1;wela=0;	    //锁住位显P0=table[0];dula=1;dula=0; 	//锁住段显while(1);
}

需要掌握锁存器的功能。

让1/3/5位的数码管从0到1循环显示。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned intsbit dula = P2^6;
sbit wela = P2^7;uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint);void main()
{while(1){P0=0xEA;wela=1;wela=0;	    //锁住位显P0=table[0];dula=1;dula=0; 	//锁住段显0delay(1000);P0=table[1];dula=1;dula=0; 	//锁住段显1delay(1000);}
}void delay(uint x)
{for(i=x;i>0;i--){for(j=120;j>0;j--);}
}

 

然后是使用for循环语句将所有的数码管都从0到F都进行循环显示。

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned intsbit dula = P2^6;
sbit wela = P2^7;uchar num=0;uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint);void main()
{while(1){
//		P0=table[0];
//		dula=1;
//		dula=0; 	//锁住段显0
//		delay(1000);
//		P0=table[1];
//		dula=1;
//		dula=0; 	//锁住段显1
//		delay(1000);for(num=0;num<16;num++){P0=table[num];dula=1;dula=0;P0=0xEA;wela=1;wela=0;	    //锁住位显delay(1000);  //延迟1秒}}
}void delay(uint x)
{  uint i;uint j;for(i=x;i>0;i--){for(j=120;j>0;j--);}
}

关键字code,没有加code的时候,定义的变量都放在单片机的RAM中,在程序中可以随意去改变这些变量的值。但是还有一种数据,在程序中使用,却不会改变它的值。定义这种数据的时候,可以加一个code关键字进行下修饰。这个数据会存储到程序空间的Flash中。这样可以大大节省单片机的RAM的使用量。

共阳极数码管的真值表:

unsigned char code table[]={
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

http://www.lryc.cn/news/245715.html

相关文章:

  • 数据库表结构导出成Excel或Word格式
  • School training competition ( Second )
  • 深度解析 Docker Registry:构建安全高效的私有镜像仓库
  • leetcode 不同的二叉搜索树
  • 通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul
  • 大数据预处理技术
  • 跳表的学习记录
  • 电子学会C/C++编程等级考试2022年09月(二级)真题解析
  • 如何使用nginx部署静态资源
  • lua的gc原理
  • redis作为缓存详解
  • 231127 刷题日报
  • 【Linux】vim-多模式的文本编辑器
  • Ubuntu 启用 root 用户
  • 手摸手Element-ui路由VueRoute
  • 探究Kafka原理-5.Kafka设计原理和生产者原理解析
  • 浅谈C#在unity应用中的工厂模式
  • 卷积神经网络(Inception-ResNet-v2)交通标志识别
  • 网易云音频数据如何爬取?
  • 97、Text2NeRF: Text-Driven 3D Scene Generation with Neural Radiance Fields
  • 【C++】多态(上) 多态 | 虚函数 | 重写 | final、override | 接口继承与实现继承 | 抽象类
  • 国内怎么投资黄金,炒黄金有哪些好方法?
  • springboot实现数据脱敏
  • uniapp实现多时间段设置
  • uni-app - 去除隐藏页面右侧垂直滚动条
  • 一次简单的 Http 请求异常处理 (请求的 url 太长, Nginx 直接返回 400, 导致请求服务异常)
  • spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置
  • C#8.0中新语法“is {}“的介绍及使用
  • 编译器设计01-入门概述
  • SpringBoot封装Elasticsearch搜索引擎实现全文检索