扫盲教程:深入浅出讲解单片机控制单只数码管循环显示0~F
最近有好多小伙伴留言说,我发的项目很难,他们都是刚入门的,希望我写一些入门级的教程,那么今天我就从硬件和软件两个方面来给大家讲一下最基本也是十分重要的电路 单片机驱动数码管显示电路。
要弄清楚单片机控制数码管显示字符的原理我们首先要知道:三个概念
单片机:通俗的讲单片机是一种集成电路芯片,利用一些特殊工艺把许多不同功能的模块集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。单片机可以烧进程序,然后从不同的IO口输出规定的电平信号。
七段数码管(如下图):
数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。一般的七段数码管拥有七个发光二极管(三横四纵)用以显示十进制0至9的数字外加小数点,也可以显示英文字母 A 至 F(b、d 为小写,其他为大写)。现时大部分的七段数码管会以斜体显示。
好了,上面是单片机和数码管的概念,下面说一下单片机的工作原理:
一个单片机要想能正常工作必须满足它工作的最小系统,这个最小系统包括,电源电路,晶振电路,复位电路等,当电源电路给单片机正常供电后,在上电的一瞬间会给复位电容充电从而完成上电复位的动作。单片机复位结束后,我们把需要控制数码管显示的代码烧进单片机,这时候单片机就会根据写的代码从不同的IO口输出不同的电平,从而控制七段数码管每一段的亮灭,而达到显示不同数字的目的。
好了说了半天理论了,下面我们开始实践一下吧!
首先用PROTEUS仿真软件画好单片机最小系统和LED数码管驱动原理图:本项目中用STC89C52
把程序烧进去以后,数码管开始从0到F显示,适当调整源代码参数可以修改显示不同的数字和不同的时间间隔。
51单片机参考源代码如下:
/*单只数码管循环显示0~F 作者 科技小伟1*/
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
code uint8 LED_CODE[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E};
void delay(uint16 x)
{
uint16 i,j;
for(i = x; i > 0; i --)
for(j = 114; j > 0; j --);
}
void main()
{
uint8 i = 0;
while(1)
{
for(i = 0; i < 16; i ++) //i = (i + 1) % 16
{
P0 = LED_CODE[i];
delay(500);
}
}
}
好了以上就是单片机控制数码管显示的全部内容了,本文从软件和硬件两个角度分别讲解,如果有任何意见或者需要设计文件 欢迎留言或者私信,如果你也对单片机感兴趣,那么快点行动起来吧!我们下期再见!
你理解单片机中数值的含义吗?
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机。运行中也仅能处理数字信号。
单片机只能识别二进制数,也就是高低电平1与0。但当数值太大时,用1和0来表示程序中的数值时显得太繁锁了,于是便用十六进制来表示。这样表示起来方便,通用,
为了让单片机按照我们的要求来工作,就必须对它赋予指令也就是编写程序,在程序中同一个数值会因应用的位置不一样,而理解含义就不一样。
如下面程序1中用十六进制表示的0x00和定时程序2赋初值时用0(0=0x00)表示的初值。它们在不同程序中所表示的意义也不一样,理解起来也就不能用同一种思维方式去理解。
1:
void main()
{ p1=0x00;
while(1)
void DelayMS()
{ uchar i;
while(10)
for(i=0;i<120;i+ +);
}
p1=!p1;
}
2:
void timer_init()
{
TMOD=0x01;
TH0=(65536-0)/256;
TL0=(65536-0)%256;
TR0=1;
}
在上面程序1中,0x00表示一种状态,即表示单片机P1口八位都是低电位0,而不是表示为等于零无意义。
在程序2中,初值赋为零,则表示整个定时为65.536ms,是该定时方式的最大值,而初值0则仅表示该值为零,没有任何意义。
在单片机学习中,数值的表示方法是学习中应引起注意的细节,若不注意,有时因何而错,都分辨不清。
相关问答
单片机中0x d0,表示什么意思?每个数字和字母代表的意思麻烦解...[最佳回答]0X表示十六进制.也就是十六进制的d0,一位十六进制可以用四位二进制表示,所以换成二进制是110100000X表示十六进制.也就是十六进制的d0...
单片机 里边的 0x 40是什么意思?若用十六进制转换,并不是想要的效果,好像是0?这个0x40本身就是十六进制的,以0x开头的就表示这个数字是十六进制的,等同于以H结尾的,比如0x40=40H,它们是一样的,知道了么?这个0x40本身就是十六进制的,以0x...
单片机 C语言 中0x fc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xf...[最佳回答]0x表示十六进制的意思,就是后面两位数是十六进制的数
51 单片机 1602液晶屏 0x 0c和 0x 06是什么意思,为什么这么表示?你说的是在给1602初始化的时候,要写两个命令字,0x0c和0x06就是两个命令字。前面的0x是表示为十六进制数。你说的是在给1602初始化的时候,要写两个命令字,0x0c...
单片机中0x 8C代表什么?0x是C语言中16进制数的表示方法。0x8c表示的数实际上是-74(8c的各位取反再加1),而-74转换成两字节整型数并在计算机中表示时就是0xff8c(对0074各位取反...
单片机中 的 0x f4是什么意思?在单片机中,0xf4通常是一个十六进制数,表示一个8位二进制数的数值。具体0xf4代表的含义要根据其上下文来确定,因为在单片机中0xf4可能是一个指令码、寄存器的...
单片机 符号公式?单片机是一种集成电路,使用内部存储器来存储指令和数据,通过对这些指令的执行来控制外部设备。在单片机的各种指令中,往往会涉及到特定的符号和公式。以下是...
单片机0x bf是什么意思?就是p1=10101111,0x代表十六进制,需要四位二进制组成,0000就是0,0001是1,0010是2,0011是3...1010是10用a表示,1011是11用b表示,1111是15用...
单片机 tmod= 0x 10是什么意思?TMOD是MCS51单片机用来设定内部定时/计数器的工作方式的特殊功能寄存器。TMOD=0x16,意思是:T1设定为定时方式1,T0设定为计数方式2。TMOD是MCS51单片机用来设...
51 单片机 TCON= 0x 01脚?看来你对C51不太熟悉,可以看一些关于C51基本编程的书TCON=0x01就是简单的赋值操作.TCON是51单片机内部定时器控制的特殊功能寄存器(sfr),将它赋值为0x01是说...