数码管显示从1开始计数三位(51单片机)

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,bai,shi,ge;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar bai,uchar shi,uchar ge);
void delay(uint z);
void init();

void main()
{
init();//初始化程序
while(1)
{
if(aa==20)
{
aa=0;
temp++;
if(temp==100)
{
temp=0;
}
bai=temp/100;
shi=temp%100/10;
ge=temp%10;

}
display(bai,shi,ge);
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;

}
void init()
{
wela=0;
dula=0;
temp=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar bai,uchar shi,uchar ge)
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff; //消影
wela=1;
P0=0xfe;
wela=0;
delay(5);

dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);

dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);

}

时间: 2024-10-10 17:11:00

数码管显示从1开始计数三位(51单片机)的相关文章

第3讲 数码管显示

一. 数码管显示原理 我们最经常使用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其它的基本同样.所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形.数码管又分为共阴极和共阳极两种类型,事实上共阴极就是将八个LED的阴极连在一起,让其接地,这样给不论什么一个LED的还有一端高电平,它便能点亮.而共阳极就是将八个LED的阳极连在一起.其原理图例如以下. 当中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电

AVR第6课:数码管显示

这一节我们将讲解数码管的使用,由于原理在学51单片机的时候已经学习过,在这里只需要利用前面学习的对AVR单片机的IO口操作方式就可以自己写练习题了. 下面的数码管是共阳极数码管. 代码:显示从0到9. /* *author:ChenLu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BI

51单片机第三弹---数码管显示

先把定义拉过来: LED数码管是由多个发光二极管封装在一起组成"8"字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极.LED数码管常用的段数一般为7段,有的另加一个小数点 .LED数码管根据LED的接法不同,分为共阴和共阳两类 . 贴原理图 其实就两点 :由于板子上有8个数码管,而每个数码管有8段,称选择显示哪一个数码管的东西为位选,称单个数码管显示数字几的东西为段选,位选由P2.2  p2.3 p2.4 控制 数码管IO口为P0 对于每一个数码管,显示数字几只要控制

单片机与控制实验(1)——数码管显示

一.实验目的和要求 初步学习和掌握MCS-51的体系结构和汇编语言,了解Keil编程环境和程序下载工具的使用方法.了解数码管输出的原理及编程方式. 二.实验设备 单片机测控实验系统 STC-ISP程序下载工具 Keil开发环境 三.实验内容 使用MCS-51汇编语言编写程序,完成如下功能: 1. 使用三个数码管显示十进制数值(001~999,可任意设置): 2. 每隔1秒,该数值自动减一,直到归零; 3. 归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置): 4. 每隔1秒,新

4位共阳数码管 显示数字,调节亮度,时钟调时,

/*************************************************** 程序名:   4位共阳数码管驱动程序 编写时间: 2015年11月14日 硬件支持: STC12C4052AD 接口说明: 点扫描   数码管是 字段  管脚  MCU IO口 a 13脚  P1.0 b  9脚  P1.1 c  4脚  P1.2 d  2脚  P1.3 e  1脚  P1.4 f 12脚  P1.5 g  5脚  P1.6 dp 8脚  P1.7 1位 14脚  P3.0

7段数码管显示驱动代码

数码管显示进行简单的介绍,数码管显示原理在数电中已经给出了比较详细的介绍,我就不赘述了,因为我们用的是至芯的开发板,其上的数码管显示模块采用的是共阳极的数码管,为低电平有效,0-F的显示码依次为:    数码管的输入有3个位选和8个段选给出,位选信号sel来控制哪个数码管先亮,段选信号seg来控制数码管显示什么,位选本来应该是有6个的但是为了节约资源,采用了3-8译码器将6根线减少到3根,节约了FPGA的引脚资源. 因为人眼有一个视觉载留,所以60HZ来扫描的时候,数码管会让人眼觉得是同时点亮,

基于小脚丫的ADC081S101 电压采集595数码管显示

RTL结构图 采集模块运用SPI 通讯 MISO方式收集数据 module ad_collect(input sddata,input rst_n,output reg cs,output reg sclk,input clk,output [7:0]seg_data,output done); reg [7:0]cnt;reg[4:0]state;reg[7:0]data;reg rdone; [email protected](posedge clk or negedge rst_n ) b

STM32F103的数码管显示(1)

先来tm1629数码管驱动,网上看了一大堆,主要是共阴极的居多,共阴极操作简单,控制的数码管较少,共阳极的控制的数码管多,可是需要转换转换 TM16290.H #ifndef __TM1629_H#define __TM1629_H #define TM1_STB_PIN GPIO_Pin_0#define TM1_STB_PORT GPIOF #define TM1_DIO_PIN GPIO_Pin_2#define TM1_DIO_PORT GPIOF #define TM1_CLK_PIN

51单片机 数码管的显示与译码器

共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display[]={0x88,0x83,0xA6,0xC1,0x86,0x8E} 共阴极数组0~9:display[]={0x3F,0x06,0x5B,0x4F,0x6E,0x6D,0x7D,0x07,0x7F,0x6F} 共阴极数组A~F:display[]={0x77,0x7C,0x59,0x3E,0x79,0x71} 共阴.两组四