`
yunchow
  • 浏览: 317802 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

单片机数码管显示数字递增

阅读更多
  让单片机的数码管显示的数从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 ++;
}
分享到:
评论

相关推荐

    单片机控制数码管显示

    设计内容:(1)通过按键控制一位数码管显示不同的数字,完成数字设置。其中,一个按键完成数字“加”控制,另一个按键完成数字“减”控制,数字在0~99之间变化。常按“加键”2秒以上,数字自动在0~99之间变化;常...

    单片机4*4键盘程序(0~9以及删除键 递增 递减键)并可数码管显示

    程序实现0~9 数字按键 删除键 递增递减键的功能 并在数码管上显示

    51单片机按键控制数码管增减

    两位数码管采用十进制,最大显示值是99,最小显示值是00, 按下S1后,数码管的数值自动增1;(00—99) ...按下S3时,数码管停止递增或递减,并显示当时的数值; 数码管数值自动增、减时间间隔T 0.5S。

    如何用51单片机数码管实现跑马灯功能?

    基于51单片机学习板。用S1键作为控制跑马灯的方向按键,S5键作为控制跑马灯方向的加速度按键,S9键作为控制跑马灯方向的减速度按键,S13键作为控制跑马灯方向的启动或者暂停按键。记得把输出线P0.4一直输出低电平,...

    计数器在fpga实验版上实现4位7段数码管动态显示,数字递增

    在fpga实验版上实现4位7段数码管动态显示,数字递增

    外中断(按键)控制数码管显示

    本文给大家分享了外中断(按键)控制数码管显示的代码。

    8只数码管滚动显示数字串51单片机PROTEUS仿真-10.rar

    程序将所有待显示的数码 10,10,10,10...最后一行代码递增取值起点k,因为取值起点在双重循环后递增,也就是在同一组数字刷新显示若干遍,形成一小段延时后递增,从而产生滚动显示效果。 资料包含程序源文件和仿真源文件

    51单片机控制数码管动态显示程序

    说明: 驱动四位一体数码管动态显示数字,可方便的移植到其它程序中。 例如:1、硬件改为三位一体或二位一体数码管,只需修改Display_Scan()函数COM个数。 2、本例中,采用了共阴数码管,如果用在共阳数码管,只...

    基于51单片机计数0~99设置

    基于51单片机计数器程序代码编写,驱动数码管显示0~99,程序代码基于C语言

    控制数码管增减系统

    单片机控制数码管增减系统,00到99显示范围C语言程序

    数字0~20循环递增显示或循环递减显示。数字显示间隔时间0.5秒。

    数字显示间隔时间0.5秒。  方法1: 按键控制。键1为自增显示模式键、键2为自减显示模式键, 键3为启动键,键4为停止键。  方法2:通过串行通信口向串行终端发布显示信息(0~3),通过串行终端发送操作命令字:0-...

    EEPROM.rar_STC 数码管_STC单片机EEPROM_jtag_stc eeprom

    该程序实现了对STC单片机的EEPROM的操作。每隔0.5秒钟,单片机对EEPROM进行一次 ... 确认试验是否成功:电源上电后,数码管的值在递增,观察值。关闭电源,待几秒后上电, 数码管显示的值会从断电钱的那个值开始显示

    51单片机的4*4键盘程序

    线反转法的51单片键盘的C语言程序,希望对大家有所帮助

    以定时报警器设计为例详解单片机项目设计思路.pdf

    选用MCS-51系列AT89S51单片机作为微控制器,选择两个四联的共阴极数码管组成8位显示模块,由于AT89S51单片机驱动能力有限,采用两片74HC244实现总线的驱动,一个74HC244完成位控线的控制和驱动,另一个74HC244完成...

    matlab学习

    mugege6第六个数码管显示1 mugege7数码管依次点亮以十六进制依次递增 mugege8一三五数码管依次递增,p3^2口中断一号二极管点亮 mugege9 hello megege10数码管从左向右依次以十六进制递增 mugege11数码管和灯同时依次...

    4×4矩阵键盘键值显示

    键盘值是我自己定的,和原键盘不提一致,可以自己修改程序 从上到下,从右到左键值递增 附加电路原理图

    单片机矩阵键盘应用并显示

    单片机矩阵键盘应用,采用外部中断的方式检测按键并实现数码管递增显示

    基于单片机的秒表课程设计.doc

    摘要 本设计的数字电子秒表系统采用AT89S52单片机为中心器件,利用其定时器/计数器定 时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬 件有机地结合起来,使得系统能够实现LED显示...

    单片机课程设计报告(数字温度计).doc

    课题:基于单片机的数字温度计设计 1 方案设计 2 系统的硬件设计 3.1 主控制器 3.2 显示电路 3.3 温度传感器工作原理 3.4 温度传感器接口电路 3 系统的软件设计 3.1 程序 3.2 温度测量 3.3 数码管显示 4 系统的测试...

    《手把手教你学51单片机》程序资料

    6_t4:作业题4,在lesson6_3多位数字显示的基础上不显示高位的0,所在章节6.6 6_t5:作业题5,变更lesson6_3的正计数为倒计数,所在章节6.6 lesson7 (第7章): 7_1:基于数码管计时程序的静态变量演示,所在章节...

Global site tag (gtag.js) - Google Analytics