C51单片机用数码管如何显示0~9?
任务描述
某企业承担了一个LED数码显示设计任务;他们要求单片机控制一个数码管显示0→1→2→3→4→5→6→7→8→9,每个状态停留1秒。请你们用C51单片机设计其控制系统并调试运行。
仿真视频
C51单片机|数码管显示0~9
硬件电路原理图
电路原理图
C语言程序
#include<reg51.h>//包含头文件reg51.h
void delay1s();//延时函数声明
unsigned char LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管0~9的段码数组
void main()//主函数
{
unsigned char i;
TMOD=0X10;
while(1)
{
for(i=0;i<10;i++)//for循环10次
{
P1=LED[i];//从P1端口输出数码管的段码
delay1s();//延时1s
}
}
}
void delay1s()//延时函数
{
unsigned char i;
for(i=0;i<20;i++)
{
TH1=0X3C;
TL1=0xb0;
TR1=1;
while(!TF1);
TF1=0;
}
}
扫盲教程:深入浅出讲解单片机控制单只数码管循环显示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 -9 怎么表示?在单片机程序中,数字通常有二进制,十进制和十六进制三种表示法,以数字9为例:二进制写成00001001B,B就是二进制的意思,注意,这个字母不能缺少!十进制写...在...
基于51 单片机 的游戏程序设计1.基本功能实现如下游戏规则:(1)...[最佳回答]你的功能都可帮实现的
单片机0- 59秒怎么改成倒计时?将单片机的计数器从59开始倒计时至0,然后重新从59开始倒计时,如此不断循环即可实现0-59秒的倒计时。可以使用定时器来控制计数器的计时和重置。同时,可以用LED...
单片机 编程实现 0--- 20秒计时器,并用proteus软件设计硬件电路?AJMPOVERM33:djnzr3,TIME1;2毫秒循环执行250次,时间约0.5秒CPLP1.0;使LED每1秒闪烁一次djnzr2,AB1;循环执行120...
单片机 试题解答1.当CPU响应外部中断0后,PC的值是(A)A.0003HB...[最佳回答]一,选择题1.当CPU响应外部中断0后,PC的值是(A)A.0003HB.2000HC.000BHD.3000H2.当MCS-51复位时,下面说法准确的是(A)A.PC=0000HB....
在 单片机 C语言中一个字母,一个数字各占几个字节 - 小红薯A4...这个得看你给它定义的几个字节。字母a-z,数字0-9都是占一个字节。置于一个数值就是另一回事了,你可以定义:char一个字节,int两个字节,long四个字节...
在 单片机 C语言中一个字母,一个数字各占几个字节 - 倩北鼻 ...字母占一个字节,数字不同的格式不一样,char一个字节,int两个字节,long四个字姐,字母a-z,数字0-9都是占一个字节。置于一个数值就是另一回事了,你可...
单片机 的I/O口是什么意思?-ZOL问答讨论回答(9)I/O是input/output的缩写,即输入输出端口。每个设备都会有一个专...LCD_1602_RW=0;//这句话你忘写了,液晶数据也不进去的。。write_1602...
单片机 没接底座可不可以烧录程序?-ZOL问答不明白的问的,对于简单的51单片机,最起码要有一个晶振电路才可以烧录程序。你说的底座不知道是不是IC插槽?那个是方便单片机的装卸。只要有单片机,其对应脚有...
AT89S51 单片机 内部集成哪些外围功能部件?程定时...3、32个外部双向输入/输出(I/O)口;4、2个中断优先级、2层中断嵌套中断;5、5个中断源;6、2个16位可编程定时器/计数器;7、2个全双工串行通信口;...