数码管的静态显示与动态显示
学习数码管的静态与动态显示,首先要清楚,同一个时刻,单片机只能使能一个数码管。
动态显示:轮流点亮数码管,利用人眼的视觉暂留现象,造成多个数码管被点亮的视觉体验。
静态显示:可理解为非动态显示,即不会轮番点亮数码管。在多个数码管的显示中,静态显示的意义不大。
记住:100Hz无闪烁!!!
只要刷新频率大于100Hz,即刷新时间小于10ms,就可以做到无闪烁,这也是动态扫描的硬性指标。
静态显示的演示代码:
#include
//数码管静态显示
unsigned char code LedChar[10]={//数码管显示的数字0~9
0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned char cnt = 0;
unsigned char sec = 0;
sbit DigitalTube = P1^0;;
void main()
{
//点亮数码管
DigitalTube = 0;
//设置定时器
TMOD = 0X01;
TH0 = 0XB8;
TL0 = 0X00;
TR0 = 1;
while(1)
{
P0 = LedChar[sec];
if(TF0 == 1)
{
TF0 = 0;
TH0 = 0XB8;
TL0 = 0X00;
cnt++;
if(cnt>=50)
{
cnt = 0;
sec++;
if(sec>=10)
{
sec = 0;
}
}
}
}
}
动态显示的演示代码
#include
//数码管动态显示
unsigned char code LedChar[10]={//数码管显示的数字0~9
0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned char flag ;
sbit DigitalTube1 = P1^0;
sbit DigitalTube2 = P1^1;
void main()
{
TMOD = 0X01;
TH0 = 0Xe7b8;
TL0 = 0X0000;
TR0 = 1;
flag = 0;
while(1)
{
if(flag == 0)
{
DigitalTube1 = 0;
DigitalTube2 = 1;
P0 = LedChar[1];
}
else if(flag == 1)
{
DigitalTube1 = 1;
DigitalTube2 = 0;
P0 = LedChar[2];
}
if(TF0 == 1)
{
TF0 = 0;
TH0 = 0Xe7b8;
TL0 = 0X0000;
flag = !flag;
}
}
}
动态显示效果图:
关键字:51单片机 动态显示
引用地址:
#51单片机#数码管静态与动态显示
推荐阅读最新更新时间:2024-11-13 09:19
51单片机外部中断产生条件
最近在做单片机外部中断实验的时候以为忘记产生中断的条件,于是查找了大学时代的教材和一些关于单片机的书籍,结果发现里面都没有相关的介绍。接着我有在AT89S52的中英文手册中查找了相关内容也没有找到相关的说明。最后不得已百度了一下,找到了答案如下: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下降沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下降沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
[单片机]
8051单片机实战分析(以STC89C52RC为例) | 10 - 外部中断的使用
1 中断系统结构 以下这张图是从中断引脚到中断入口所经过的通道: 从图中不难看出INT0与INT1是中断引脚,其中经过了TCON、IE、IP这些寄存器,因此我们在写程序时得把这些寄存器功能配置好,CPU才会按照我们的想法只执行!下面分别对这些寄存器进行介绍(稍微了解一下即可,忘记的时候再查)。 1.1 TCON寄存器 TCON(Timer Control Register),中文叫定时器/计数器控制寄存器,TCON寄存器是用于中断触发方式设置以及中断标志。 各寄存器位的作用如下: TCON寄存器位 作用 1.2 IE寄存器 IE(Interrupt Enable),中文叫中断允许寄存器,它的作用是控制所有中
[单片机]
51单片机与蓝牙模块连接
不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。 此次学习用到模块是HC-06蓝牙模块,如下图: 该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试
[单片机]
HD4478U显示LCD与51单片机驱动程序
#include SST89x5x4.H #include absacc.h #include intrins.h sbit LCDRSPIN = P3^7; sbit LCDRWPIN = P3^6; sbit LCDEPIN = P2^6; #define UCHAR unsigned char void delay(unsigned int i) { UCHAR j; for(i; i 0; i--) for(j = 200; j 0; j--); } /////////////////////////////// //控制LCD unsigned char XPOS,YPOS; //测
[单片机]
51单片机的外部中断触发方式
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中
[单片机]
基于51单片机和ADC0808 ADC0809的自动数字电压表设计
前言: 之前讲过基于数码管显示的自动数字电压表,接下来讲一下基于LCD1602显示的相关设计,分别利用的是TI公司的ADC0808和ADC0809。 硬件和软件设计 基于51单片机+ADC0808+LCD1602 测试电压范围为2.1~25V(超出这个范围,程序会卡死),精度<0.05 仿真图如下: 部分代码如下: #include AT89X52.H #define LEDDATA P0 #define v20_on {s3=0;s2=0;s1=1;} //宏定义不同量程,不同的开关状态 #define v2_on {s3=0;s2=1;s1=0;} #define v02_on {s3=1;s2=0;s
[单片机]
51单片机(二十七)—— 蜂鸣器播放音乐
1、实验原理介绍 蜂鸣器是电路中经常使用的发声器件,我们一般使用蜂鸣器发出“嘀嘀”的声音,用它作为提示音。有没有想过用蜂鸣器还可以播放音乐呢?这显然是件很有意思的事情。 本文使用蜂鸣器来播放音乐。为了深入了解此实验的原理,先介绍一下音乐的基础知识,音乐中的每个音调都有其固定的音高,简谱记谱法由7个基本唱名组成,它们分别用1、2、3、4、5、6、7表示。每个唱名对应固定的音高。由声学角度看,音高不同,发声物体振动的频率就不一样。 下图为钢琴键盘的一部分,图中的C4键对应的就是简谱唱名的中音1,左侧为这个唱名对应的声波的振动频率。由此可以向上和向下推出其它唱名的频率。 要想使蜂鸣器发出不同的声音就必须通过PWM波来驱动蜂鸣
[单片机]
MCS-51单片机存储器扩展
主要内容: 第八部分 MCS-51单片机存储器扩展(1) 1、 概述 2、 系统总线及总线构造 3、 读写控制、地址空间分配和外部地址锁存器 4、 程序存储器EPROM的扩展 重点:系统总线及总线构造 存储器地址空间分配 外部地址锁存器74LS373 典型的外扩存储器的接口电路 难点:存储器地址空间分配 第8部分 MCS-51单片机扩展存储器的设计 8.1 概述 片内的资源如不满足需要,需外扩存储器和I/O功能部件:系统扩展问题,内容主要有: (1)外部存储器的扩展(外部存储器又分为外部程序存储器和外部数据存储器) (2) I/O接口部件的扩展。 本章介绍MCS – 51单片机如何扩展外部存储器,I/O接口部件
[单片机]