让单片机的数码管显示的数从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之间变化;常...
程序实现0~9 数字按键 删除键 递增递减键的功能 并在数码管上显示
两位数码管采用十进制,最大显示值是99,最小显示值是00, 按下S1后,数码管的数值自动增1;(00—99) ...按下S3时,数码管停止递增或递减,并显示当时的数值; 数码管数值自动增、减时间间隔T 0.5S。
基于51单片机学习板。用S1键作为控制跑马灯的方向按键,S5键作为控制跑马灯方向的加速度按键,S9键作为控制跑马灯方向的减速度按键,S13键作为控制跑马灯方向的启动或者暂停按键。记得把输出线P0.4一直输出低电平,...
在fpga实验版上实现4位7段数码管动态显示,数字递增
本文给大家分享了外中断(按键)控制数码管显示的代码。
程序将所有待显示的数码 10,10,10,10...最后一行代码递增取值起点k,因为取值起点在双重循环后递增,也就是在同一组数字刷新显示若干遍,形成一小段延时后递增,从而产生滚动显示效果。 资料包含程序源文件和仿真源文件
说明: 驱动四位一体数码管动态显示数字,可方便的移植到其它程序中。 例如:1、硬件改为三位一体或二位一体数码管,只需修改Display_Scan()函数COM个数。 2、本例中,采用了共阴数码管,如果用在共阳数码管,只...
基于51单片机计数器程序代码编写,驱动数码管显示0~99,程序代码基于C语言
单片机控制数码管增减系统,00到99显示范围C语言程序
数字显示间隔时间0.5秒。 方法1: 按键控制。键1为自增显示模式键、键2为自减显示模式键, 键3为启动键,键4为停止键。 方法2:通过串行通信口向串行终端发布显示信息(0~3),通过串行终端发送操作命令字:0-...
该程序实现了对STC单片机的EEPROM的操作。每隔0.5秒钟,单片机对EEPROM进行一次 ... 确认试验是否成功:电源上电后,数码管的值在递增,观察值。关闭电源,待几秒后上电, 数码管显示的值会从断电钱的那个值开始显示
线反转法的51单片键盘的C语言程序,希望对大家有所帮助
选用MCS-51系列AT89S51单片机作为微控制器,选择两个四联的共阴极数码管组成8位显示模块,由于AT89S51单片机驱动能力有限,采用两片74HC244实现总线的驱动,一个74HC244完成位控线的控制和驱动,另一个74HC244完成...
mugege6第六个数码管显示1 mugege7数码管依次点亮以十六进制依次递增 mugege8一三五数码管依次递增,p3^2口中断一号二极管点亮 mugege9 hello megege10数码管从左向右依次以十六进制递增 mugege11数码管和灯同时依次...
键盘值是我自己定的,和原键盘不提一致,可以自己修改程序 从上到下,从右到左键值递增 附加电路原理图
单片机矩阵键盘应用,采用外部中断的方式检测按键并实现数码管递增显示
摘要 本设计的数字电子秒表系统采用AT89S52单片机为中心器件,利用其定时器/计数器定 时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬 件有机地结合起来,使得系统能够实现LED显示...
课题:基于单片机的数字温度计设计 1 方案设计 2 系统的硬件设计 3.1 主控制器 3.2 显示电路 3.3 温度传感器工作原理 3.4 温度传感器接口电路 3 系统的软件设计 3.1 程序 3.2 温度测量 3.3 数码管显示 4 系统的测试...
6_t4:作业题4,在lesson6_3多位数字显示的基础上不显示高位的0,所在章节6.6 6_t5:作业题5,变更lesson6_3的正计数为倒计数,所在章节6.6 lesson7 (第7章): 7_1:基于数码管计时程序的静态变量演示,所在章节...