让单片机的数码管显示的数从0开始递增一直到255,然后重新置0,再递增,如此循环.
还是用到了将要显示的数进行百位,十位,个位的分离.
从这篇开始,以后的程序就要注意程序的规范性,与可读性了.源代码如下(已经成功调通):
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit sda = P1^0;
sbit clk = P1^1;
sbit dig1 = P1^2;
sbit dig2 = P1^3;
sbit dig3 = P1^4;
sbit dig4 = P1^ 5;
uchar code table[]={0x7e,0x0c,0xb6,0x9e,0xcc,0xda,0xfa,0x0e,0xfe,0xde};
uchar times;
void init();
void delay(uchar);
void write(uchar);
void display(uchar);
void main()
{
uchar i = 0;
init();
while(1)
{
display(i);
if(times>2)
{
times = 0;
i ++;
if(i==256)
i = 0;
}
}
}
/** 显示一个3位的整数 **/
void display(uchar num)
{
uchar bai,shi,ge;
bai = num/100;
shi = num%100/10;
ge = num%10;
/* 显示个位 */
dig4 = 0;
write(table[ge]);
delay(10);
dig4 = 1;
/* 显示十位 */
dig3 = 0;
write(table[shi]);
delay(10);
dig3 = 1;
/* 显示百位 */
dig2 = 0;
write(table[bai]);
delay(10);
dig2 = 1;
}
/** 程序初始化函数 **/
void init()
{
clk = 0;
times = 0;
TMOD = 0x01; //定时器模式1
TH0 = (65536-50000)/256; //每500毫秒产生一次中断
TL0 = (65536-50000)%256;
TR0 = 1; //开始计时
EA = 1; //打开总中断开关
ET0 = 1;
}
/** 向数据码管写入一个字节数据 **/
void write(uchar u)
{
uchar i;
for(i=0;i<8;i++)
{
clk = 1;
sda = u&0x80;
clk = 0;
u = u<<1;
}
}
/** 延迟函数 **/
void delay(uchar t)
{
uchar x,y;
for(x=t;x>0;x--)
for(y=101;y>0;y--);
}
/** 1号中断 **/
void timer0() interrupt 1
{
TH0 = (65536-50000)/256; //每500毫秒产生一次中断
TL0 = (65536-50000)%256;
times ++;
}
分享到:
相关推荐
单片机数码管动态显示原理 ...动态显示不仅能够节省I/O端口资源,还能实现更为复杂的功能扩展,如译码显示、递增数字显示等。掌握了这些原理和技术,可以帮助开发者更好地进行单片机系统的开发和优化。
单片机数码管0-99秒显示程序:解析与知识点 在电子工程与自动控制领域,单片机因其高集成度、低功耗及灵活的编程能力而被广泛应用于各种场景,包括但不限于数据采集、过程控制、智能仪器仪表、家电控制等。本文将...
标题中的“单片机数码管计数显示”指的是在单片机系统中,利用数码管进行数字显示,并实现计数功能。在这个项目中,我们主要关注的是如何编写C语言程序来控制单片机,以及数码管显示技术。 描述中提到的“用C语言...
在这个设计中,使用51单片机通过汇编语言编程来控制数码管显示,并通过按键进行数字的增减操作。 1. **51单片机**:51系列单片机是微处理器的一种,拥有8位数据总线和16位地址总线,广泛应用于各种嵌入式系统。在这...
综上所述,51单片机数码管动态时钟电路图涉及到的知识点包括数码管的驱动与显示、定时器的运用、晶振的选择、程序设计、按键的处理、电源管理、电路设计的优化等多个方面。掌握这些知识有助于更好地理解和制作基于51...
当检测到P3_1引脚上的按键被按下并释放时,`i`的值会递增,并在达到10后重置回0,这样数码管上的数字就会从0递增到9再回到0,实现了数码管上的数字加一操作。 总结来说,51单片机动态数码管显示技术主要涉及到以下...
在这个项目中,我们将探讨如何利用51单片机的定时器T0的计数功能来实现两位数码管动态显示0到99。这一知识点在嵌入式系统开发、电子设计竞赛以及教学实践中都有广泛的应用。 首先,51单片机的定时器T0是一个可编程...
本项目基于51系列单片机实现对六个数码管的动态显示功能,具体来说,是通过对六个数码管进行循环点亮的方式来展示不同的数字。该程序遵循郭天祥教程中的基本原理和技术要点,适用于学习51单片机基础及其应用开发。 ...
在本项目中,1位数码管用于显示0-9的数值,通过控制7个LED段的亮灭来实现不同的数字显示。 3. **PLC控制LED**:虽然本设计未直接使用PLC,但提到PLC(可编程逻辑控制器)通常用于控制LED显示,它可以存储和执行逻辑...
单片机数码管显示实验 单片机数码管显示实验是计算机科学和电子工程领域中的一个重要实验,旨在让学生了解数码管的显示原理和掌握J*ARM9-2440中的数码管显示编程方法。实验中使用了J*ARM9-2440教学实验箱、ADT1000...
本文将详细讲解基于51单片机的电子时钟数码管显示设计,涵盖硬件电路、软件编程以及项目实现的关键步骤。 51单片机是一种广泛应用的微控制器,因其丰富的资源和易于学习的特点,在电子工程领域中占有一席之地。在这...
在本项目中,我们关注的是如何使用51单片机实现数码管显示0到99的计数功能。这个任务涉及到单片机硬件接口、数字逻辑、C语言编程以及实时操作系统(RTOS)的基础概念。 首先,数码管是一种常见的LED显示设备,通常...
本教程实例“51单片机教程实例17-1个共阳数码管显示变化数字”旨在教授如何利用51单片机驱动共阳极数码管来动态显示变化的数字。以下将详细介绍这一知识点。 首先,我们要理解51单片机的基本结构和工作原理。51...
在电子工程领域,51单片机是一种广泛应用的微控制器,尤其在教学和小型嵌入式系统中。这个项目是关于使用51单片机控制六...通过这个项目,学习者不仅可以掌握51单片机的使用,还能提升对数字显示和实时系统设计的理解。
程序实现0~9 数字按键 删除键 递增递减键的功能 并在数码管上显示
两位数码管采用十进制,最大显示值是99,最小显示值是00, 按下S1后,数码管的数值自动增1;(00—99) ...按下S3时,数码管停止递增或递减,并显示当时的数值; 数码管数值自动增、减时间间隔T 0.5S。
单片机数码管动态显示是单片机编程中常见的应用场景,通常用于实现数字或字符的可视化展示。在提供的实验程序中,使用了8位单片机(从org 00h可以看出),通过P0口(num equ p0)连接一个共阴极的数码管进行动态显示...
本程序中使用的数码管是一种常见的数字显示器件,通常用于显示数字和简单的字母。数码管分为共阴极和共阳极两种类型,本例中的数码管假定为共阴极类型。数码管通过不同的组合点亮其内部的LED灯来显示不同的数字。...
在这个场景中,我们使用单片机来控制四位数码管显示动态变化的数值,从0到999循环递增。以下是关于这个主题的详细知识点: 1. **单片机基础**:单片机是一种集成在单一芯片上的微型计算机,具有处理和控制能力。...
单片机驱动数码管显示0~9是单片机编程中的基本应用之一,通常用于实现数字仪表、计数器等设备的显示功能。本实验主要使用51系列单片机AT89S51,通过C语言编程实现数码管的动态显示。 1. 单片机硬件接口: - AT89...