51单片机数码管显示数字及小数点
51单片机数码管显示(共阴极)
1.先看一下显示的结果:
源代码:
#include <reg51.h>typedef unsigned int u16;
typedef unsigned char u8;u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
u16 num=2021;//要显示的数字
/*延时函数*/
void delay(u16 i)
{ while(i--);
}
/*显示函数*/
void display()
{u16 x = 0;while(1){switch(x){case 0:P2 = 0x0e;P0 = smg[num / 1000];break; //显示2case 1:P2 = 0x0d;P0 = smg[(num % 1000) / 100];break; //显示0case 2:P2 = 0x0b;P0 = smg[(num % 1000) % 100 / 10];break; //显示2case 3:P2 = 0x07;P0 = smg[num % 10]; break; //显示1}delay(100);//延时,增大延时我们可以看到数码管是交替点亮的P0=0x00;//消隐(消隐一定要在延时函数后)x = ++x % 4;//取模,当x=4时,通过与4取模就让x的值重新变回0}
}
/*主函数*/
void main()
{display();
}
2.如何在数码管显示小数点呢?
对与共阴极数码管来说,直接将要显示的数字与0x80相或例如:要想在数码管上显示数字2,对于本电路图来说,直接让P0=0x5b即可; 0x5b=01011011,但怎么显示'2.'呢? 对于共阴极数码管来说,只需要让P0=0x5b | 0x80, 即P0=11011011,即点亮dp位
显示结果:
源代码:
#include <reg51.h>typedef unsigned int u16;
typedef unsigned char u8;u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极
u16 num=2021;//要显示的数字
/*延时函数*/
void delay(u16 i)
{ while(i--);
}
/*显示函数*/
void display()
{u16 x = 0;while(1){switch(x){case 0:P2 = 0x0e;P0 = smg[num / 1000]|0x80;break; //显示2. 只修改了此语句case 1:P2 = 0x0d;P0 = smg[(num % 1000) / 100];break; //显示0case 2:P2 = 0x0b;P0 = smg[(num % 1000) % 100 / 10];break; //显示2case 3:P2 = 0x07;P0 = smg[num % 10]; break; //显示1}delay(100);//延时,增大延时我们可以看到数码管是交替点亮的P0=0x00;//消隐(消隐一定要在延时函数后)x = ++x % 4;//取模,当x=4时,通过与4取模就让x的值重新变回0}
}
/*主函数*/
void main()
{display();
}
一个问题:
之前我是在proteus上进行仿真的,没有进行消隐运行结果也是正确的,但是放到开发板上就有些看不清出,添加消隐处理就正常了.由此我们要知道用proteus仿真的结果正确,但在开发板上运行就不一定正确,大家学习硬件最好还是用实物!!!.
未消隐处理:
消隐处理:
以上就是51单片机数码管显示数字及小数点了,但仅仅以共阴极数码管为例,大家还可以思考一下如何用共阳极数码管实现
proteus中数码管: 7-SEG-MPX4 (CC是共阴极,CA是共阳极)
51单片机数码管显示数字及小数点相关推荐
- 基于51单片机数码管显示
基于51单片机数码管显示 ## 数码管显示原理 数码管(LED Segment Displays)由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们 ...
- 单片机c语言数码管显示5,51单片机数码管显示实验报告(5页)-原创力文档
51单片机数码管显示实验 实验内容: 编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复. C语言程序 #include #de ...
- 51单片机数码管显示60秒倒计时(C语言)
51单片机数码管显示60秒倒计时(C语言) 基于普中51单片机开发板,运用定时器/计数器0和1,实现60秒的倒计时和LED灯0.5s间隔闪烁 文章目录 51单片机数码管显示60秒倒计时(C语言) 前言 ...
- 51单片机数码管显示
一.数码管静态显示 1.原理:数码管无非就是八块发光二极管集成在 了一起,如右图所示,数码管有共阴极 和共阳极数码管之分. 共阴极数码管:将八只发光二极管的负极通过一 根总线连接在了一起 , 然后每只 ...
- c51数码管显示汇编语言,单片机数码管显示数字加减汇编程序
用7SEG-MPX6-CA六位数码管显示 晶振=12MHZ,缓冲单元=30H,31H,32H,一个加一键减一键!没用31,32. MOV R7,#89H MOV DPTR,#TAB MOV 32H,# ...
- 【51单片机快速入门指南】2.2:任意位/任意长度数码管显示数字、小数
目录 源码 Tube.c Tube.h main.c 效果 8位数码管 正整数 负整数 正小数 负小数 6位数码管 正整数 负整数 正小数 负小数 4位数码管 正整数 负整数 正小数 负小数 普中51 ...
- 51单片机数码管滚动显示学号_数协微课 | LED数码管与51单片机应用
遇见工学,学在工学 停课不停学 数协电子组教学微课 它又来了 让我们开始学起来吧! 本期学习内容 LED数码管的结构与工作原理及相关原理图介绍 51单片机的应用:静态数码管显示.动态数码管显示 LED ...
- 51lcd显示光传感器c语言程序,基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例...
基于51单片机1602液晶显示GY-30数字光照传感器BH1750FVI程序实例,系统由GY-30数字光照传感器.51单片机最小系统.1602液晶显示屏组成,电路简单,附件中的程序是实物验证过了的.1 ...
- #普中51开发板# 52单片机数码管显示5201314
74HC138真值表(H高,L 低,倒着数) #include<reg52.h> #include<intrins.h> #define LED P0 typedef unsi ...
- 基于51单片机1602温度显示时钟
基于51单片机LCD1602温度显示时钟 要在1602上显示时间和温度先要了解1602是如何显示的.详情可以参考我之前的文章基于51单片机1602显示 :时间显示可以用时钟芯片DS1302,但是此次我 ...
最新文章
- java和jdbc对应关系,JDBC类型与JAVA类型对应关系
- ASP.NET MVC 2 模型验证
- mysql读取表最后10条数据
- (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据
- python编程少儿游戏编程_少儿编程课堂|python – 用游戏学编程
- 04_NoSQL数据库之Redis数据库:set类型和zset类型
- c++类对象 指针区别
- JAVA WEB开发环境搭建教程
- 验证用户输入的是不是中文名字 淘宝精品案例 元素样式设置的方式 链式编程
- mysql插入日期 vs oracle插入日期
- Spark编译报错:missing or invalid depency detected while loading class file RDDOperationScope.class
- Python 机器学习 利用sklearn构建决策树的实现 2
- Gzip, Bzip2,Xz压缩
- logstash收集TCP端口日志
- 马知恩周义仓编常微分方程定性与稳定性方法部分习题参考解答
- 使用Markdown写幻灯片之Marp
- 完美实现无限饿了么分销的方法——无感预先生成绑定渠道ID
- 修改IE临时文件夹(缓存)路径
- 我的一次创业经历--分享给希望创业的大学生们 .
- Android的主线程与子线程
热门文章
- 基于Matlab的Poisson分布,基于matlab的泊松分布的仿真.doc
- 电容式 指纹识别 android 智能硬件
- JavaScript数据类型 1
- 惠普服务器bios修改ilo,HPE Gen10 Plus iLO5 BIOS设置固定IP地址
- 华为m2青春版android7,华为揽阅m2青春版root方案 ple-703l 机油们嗨起来!
- 初来乍到,还请多多关照
- android+查看root权限管理,如何查看自己的安卓手机有没有Root权限?
- HTML多画面同时播放,视频两个画面同时播放,两个视频放在同一画面|视频左右或上下两个画面...
- 液相色谱柱PHP,浅谈液相色谱柱现代史
- 从零开始写一个RTSP服务器(一)RTSP协议讲解