任务描述:
某企业承担了一个LED数码显示设计任务;要求单片机控制一个数码管显示0→1→2→3→4→5→6→7→8→9,每个状态停留1秒。请用单片机设计其控制系统并调试运行。
仿真视频
https://www.bilibili.com/video/BV1g34y1m7tx/
硬件图

元件清单

C语言程序
#include<reg51.h>
void delay1s();
unsigned char LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main()
{
unsigned char i;
TMOD=0X10;
while(1)
{
for(i=0;i<10;i++)
{
P1=LED[i];
delay1s();
}
}
}
void delay1s()
{
unsigned char i;
for(i=0;i<20;i++)
{
TH1=0X3C;
TL1=0xb0;
TR1=1;
while(!TF1);
TF1=0;
}
}
cut-off
#include<reg51.h>
void delay1s();
unsigned char LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void main()
{
unsigned char i;
TMOD=0X10;
while(1)
{
for(i=0;i<10;i++)
{
P1=LED[i];
delay1s();
}
}
}
void delay1s()
{
unsigned char i;
for(i=0;i<20;i++)
{
TH1=0X3C;
TL1=0xb0;
TR1=1;
while(!TF1);
TF1=0;
}
}
关键字:单片机 数码管显示
引用地址:
单片机数码管显示0~9?
推荐阅读最新更新时间:2026-03-25 14:45
51单片机-软件调试查看运行时间
上一讲我们知道“for(i=0;i 30000;i++);”只是延时了大概的一段时间而已,虽然我们可以把30000改变为其他的数(不能超过65535)来取决他的延时持续时间,但我们想要延时1秒似乎有点难测出来。那么这一节我们来教大家如何查看程序代码的执行时间。 步骤1 首先我们需要修改软件中的晶振值为11.0592M,创建工程时默认是24M,我们修改为开发板上所用的晶振值来达到软件仿真接近实际硬件的实验想象。 步骤2 在上一讲的代码中我们先 编译通过 之后点击“Start/Stop Debug Session” 步骤3 接着光标移到21,22行的阴影处点击出来两个红色断点,在之后点击Reset 步骤4 回
[单片机]
《逗比小憨憨51单片机Proteus仿真系列》第26期基于单片机的MAX7221数码管动态显示
源代码: #include reg51.h #include intrins.h sbit Max7221CS = P3^1; sbit Max7221DIN = P3^0; sbit Max7221CLK = P3^2; unsigned char code DisplayBuffer ={0,1,2,3,4,5,6,7}; void WriteMax7221(unsigned char Address,unsigned char Data) { unsigned char i; Max7221CS = 0; for (i=0;i 8;i++) { Max7221CLK = 0; Max7221DIN =
[单片机]
51单片机day2——数码管依次显示实验
/*** *八个八位数码管轮流显示0-9 *顺序:最后一位一次往前递进一位 *数码管接口: * 1.数码管为共阳数码管 * 2.数码管一端由P0口经74HC245芯片链接至数码管a-dp * 3.数码管另一端由P2^2-P2^4连接至74LS138译码器A-C管脚经处理后由74LS138译码器Y0-Y7管脚连接至数码管共阳端 * 原理: * 1.8位数码管内由8个发光二极管组成,一端高电平另一端低电平即可点亮1位数码管 * 2.有八个接口接到8位数码管的一端,8位数码管的另一端统一接正(共阳)/接负(共阴) * 3.单片机控制八个接口拉高/低控制数码管亮/灭组成不同字符 *思路: * 1.每个数码管显示0
[单片机]
《逗比小憨憨51单片机Proteus仿真系列》第7期数码管动态显示实验
源代码: #include reg51.h typedef unsigned char u8; typedef unsigned int u16; u8 code table = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; u8 temp,bai,shi,ge,tt; sbit dula = P2^6; sbit wela = P2^7
[单片机]
单片机实现按键控制数码管动态显示数字0~9:源码详解
引言 随着嵌入式技术的不断普及,单片机在日常生活中扮演着越来越重要的角色。从家用电器、智能家居到工业控制,各种系统都离不开单片机的控制。而数码管作为一种直观显示数字信息的外设,广泛应用于时钟、计数器、温度显示器等设备中。通过按键控制数码管动态显示数字0~9,不仅能够实现用户交互,还可以用于系统状态反馈、设备调试以及教学实验。 本项目旨在利用单片机实现一个按键控制数码管动态显示0~9的系统,通过对按键的扫描和去抖动处理,将按键输入转换为数字显示数据,再通过动态刷新技术在数码管上依次显示0到9的数字,同时支持按键改变显示模式。项目从理论到实践,全面覆盖了单片机外设控制、数码管驱动、按键扫描以及动态显示技术,为嵌入式系统初学者和
[单片机]
51单片机按键控制两位数码管循环显示0~60
// File Name: 按键控制数码管循环显示 // Author: hhhmxk // Date: 2020.10.25 #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8; sbit key = P3^4; sbit w1 = P3^0; sbit w2 = P3^1; // 数码管位选端口 #define dx P2 // 数码管段选端口 u8 code seg_tab = { 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10 }; // e
[单片机]
基于51单片机的四位数字频率计数码管显示设计
仿真原理图: 程序运行图: 部分程序: #include reg52.h #define uchar unsigned char #define uint unsigned int uchar duan ={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码 //uchar wei ={0XEf,0XDf,0XBf,0X7f}; //位的控制端 (开发板) uchar wei ={0X80,0X40,0X20,0X10}; //位的控制端 (仿真) uint z,x,c,v, date; //定义数据类型 uint dispcount=0;
[单片机]
51单片机实现数码管动态显示60~0
硬件电路原理图 元件清单 C语言程序 #include reg51.h unsigned char table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管字符码 void show(unsigned char n); void delay(unsigned int k); void main() { unsigned char i; int j; while(1) { for(i=60;j=60,i 0;i--) while(j--) show(i); } } void show(unsigned char n) { P0=table ; P1
[单片机]