求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99

作者&投稿:并饰 (若有异议请与网页底部的电邮联系)
20分求c51单片机驱动三位8段数码管显示0.00-9.99,c语言程序。~

#include
unsigned char temp[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}
unsigned char table[3];
unsigned int num;
void display(unsigned int num)
{
table[0] = temp[num / 100]
table[1] = temp[num / 10 % 10 ] | 0x80;
table[2] = temp[num % 10]

}
void main()
{
EA = 1;
TMOD |= 0x21;
TH0 = 0xfc;
TL0 = 0x18;
ET0 = 1;
TR0 = 1;
while(1)
{
display(num);
}
}

void timer0() interrupt 1//定时为2ms
{
static unsigned char i = 0;
static unsigned int j = 0;
TH0 = 0xfc;
TL0 = 0x18;
j++;
if(i < 3)
{
P2 = 0xf8;
P1 = 0x00;
P2 = ~(1 << i);
P1 = table1[i];
i++;
}
else
i = 0;
if(j >= 1000)
{
num++;
if(num > 999)
num = 0;
j = 0;
}
用的是共阴极数码管,定时器延时,不会出现数码管抖动现象
定时器自动加,会从0.00-9.99自动显示,9.99以后又清0.00

程序是刚做的,没测试过,你试试,能用再给分吧。P0口是位选,P2口段选。

#include

unsigned int bittime=0;
unsigned char bitdisplay = 0;

unsigned char mg=0,ms=0;
unsigned char Tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,
0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};

void timer0(void) interrupt 1
{

TH0=0xF0;
TL0=0x60;

switch(bitdisplay)
{
case 0:P2=Tab[mg];P0=0xFE;break;
case 1:P2=Tab[ms];P0=0xFD;break;
}
bitdisplay++;
bittime++;
if(bitdisplay>=2) bitdisplay=0;
if(bittime>=500)
{
bittime=0;
mg++;
if(mg>9) {mg=0;ms++;}
if(ms>9) ms=0;
}
}

void main(void)
{
TMOD=0x01;
TH0=0xF0;
TL0=0x60;
TR0=1;

EA=1;
while(1);
}

两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示。

给你提供一个两位数码管00~99循环加法计数的CC语言程序。

程序中,采用了软件延时的方法,每半秒自动加1。

#include<reg52.h>

unsigned char count=0;

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码

void delay500ms(); //延时子程序声明

void display(unsigned char X); //显示子程序声明

void main()

{

while(1)

{

delay500ms();

count++;

if(count>=100)count=0;

display(count);

}

}

void delay500ms()

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=200;j>0;j--)

for(k=248;k>0;k--);

}

void display(unsigned char X)

{

P0=table[X/10];

P2=table[X%10];

}



硬件连接图先发给我,不然P 口不好定.

驱动二位数码管,先给数码管的端口(如是使用P0口连接)输入一个值,再延时30MS后,再改变另一位数码管的选择位,再往P0口输出数据就OK了,记得给分哦

//================数码延时T=(N*8+7)/3==============================================
void delay(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++);
}

//================数码管4位显示==============================================
void disp(unsigned char *str,unsigned char T)
{
unsigned char i,buf;
buf=0xfe;//1111 1110
for(i=0;i<2;i++)
{
P4=buf;
P0=*(str+i);
delay(T);
buf=(buf<<1)|0x01;//保证每一次只选择一个数码管
}
}
//=========================================================================

无图无真相!要有对应的电路原理图,才能知道怎么编写驱动程序。


请问怎么用单片机控制三位数码管,让它显示一个值?需要用到驱动吗?
用不着驱动,思路就是他们说的那样,先让一个数码管亮,可以让它延时5毫秒,然后让第二个数码管亮,依次进行。。。由于余辉的效果看起来是同时亮的

51单片机驱动4位一体共阴极数码管,位码驱动如图。p2为高时三极管导通...
太麻烦啦。如下图 如果非要加反相,还不如把三极管换成非门,74HC04,见下图,很简单。其实,最简单的,就是P2口直接做位驱动,省掉很多的麻烦,这不过就是一个仿真图吗,不必要与实物相同的。但是,位码要变成0有效,与共阴数码管的位完全相符了。这个仿真多简单啦。

用单片机能否同时驱动LCD1602和数码管?或者单片机能否不用附加其他驱...
可以,不过有限制,数码管最好不超过8位。具体如下:P0、P2口驱动数码管,采用共阳的数码管比较好。P1、P3口连接LCD1602;D0~D7接P1.0~P1.7,P3接控制脚。数码管用中断处理显示,其它的字符处理在正常的循环中处理。控制LCD时,要处理好时间关系。如果出现中断处理,中断时间不能过长,否则可能会...

2个4位共阳数码管直接和51单片机IO口连接,亮度偏暗的原因
最坏的结果是烧坏单片机。而用I\/O驱动数码管的七段还免强维持,因单片机低电平时的输出电流比高电平时大很多。但不提倡直接用I\/O驱动数码管,不论是公共端还是七段的控制端,而都要用一片驱动电路来连接。用74LS244和74HC244(同相驱动),或74LS240,74HC240(反相驱动)等都可以。

单片机开发板上为什么要用三极管驱动数码管?
数码管不能工作 原因:51系列单片机(如果你用的是的话)的输出方式为强下拉\/弱上拉,一看这名字就知道,高电平输出电流很小,所以数码管会很暗。举个例子,最简单的流水灯实验电路为VCC接限流电阻,然后接各个发光二极管,再接单片机的控制引脚,一切正常。现在,你把限流电阻接VCC那端断开,改接到...

单片机89c52如何控制多个数码管?
1.用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示。2.用P3口的4位接一个BCD译码器控制数码管的段码,再P3口的3位接一个3-8译码器来控制数码管的位进行动态扫描。3.用P3口的两根串行线接串并转换IC,来驱动数码管。

用单片机编程时用什么驱动数码管,用74LS138可以吗?怎么驱动
数码管需要的电流不是很大除了p0口需接10K上拉电阻外其余口都可直接驱动 当然你觉得亮度不够可以选用74HC244或74HC245驱动芯片有很多驱动数码管都没问题

51单片机怎么用一个按键控两个数码管,按一下改变两个数字的显示速度_百 ...
include<reg51.h> define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar number,dat,dattop=10,cnt=0;sbit keyu=P1^0;sbit keyd=P1^1;void t0isr() interrupt 1 { TH0...

STC89c51RC 单片机可以直接驱动7段数码管吗
用单片机直接驱动数码管当然不行了,特别是共阴数码管就更不行了。解决方法 1,换成共阳数码管,单片机可以直接驱动,点亮数码管是低电平有效,STC单片机引脚的灌电流比较大,驱动数码管没有问题。但是驱动共阴数码管是用高电平驱动的,拉电流却很小的。2,还想用共阴数码管,那只好在P2口加一片同相...

关于51单片机用三极管驱动数码管,最近的一块心病,跪求!!
在数字电路中所谓的三极管驱动,全部是用三极管的开关特性,首先你的接法是正确的,单片机选通某一个片选端时,给对应三极管基极一个高电平,该三极管导通处于饱和区,反之低电平三极管处于截止区。三极管的这种用法在数字电路中相当多的,只要是数字信号,那么它就是一个开关,无一例外。

大竹县14778583668: 求用单片机驱动数码二级管的C语言程序,要求二级管显示00~99
伏欣盐酸: <p>两位数码管显示00~99,无需采用数码管扫描,通常采用静态显示.</p> <p>给你提供一个两位数码管00~99循环加法计数的CC语言程序.</p> <p>程序中,采用了软件延时的方法,每半秒自动加1.</p> <p>#include<reg52.h></p> <p>...

大竹县14778583668: 请求一段单片机控制数码管的C语言编程 -
伏欣盐酸: 展开全部#include#define uchar unsigned char#define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar num; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x7d,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//我用的是573 还有延时也很...

大竹县14778583668: 求用51单片机接两个数码管,0 - 99动态显示程序(用C语言) -
伏欣盐酸: #include #define uchar unsigned char #define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; void delay(uint x) { uchar i; while(x--)for(i=0;i<120;i++); } void main() { uchar i; P0 = 0x00; P2 = 0x00; while(1)...

大竹县14778583668: 单片机驱动数码管C程序 -
伏欣盐酸: 额...这个问题...首先要我们要分析一下74LS164的工作方式,是有一出一,还是有1出0..还是全一出1.了解了工作方式后 我们先要将单片机与之相连的管脚进行初始化.全设成输出.然后在程序里进行置位是置1还是置0.在点数码管的时候要看清楚你...

大竹县14778583668: 求一个能点亮数码管和发光二极管的单片机程序 -
伏欣盐酸: #include//头文件sbit d1=P1^0; //P1^0口接二极管的阴极,电源接阳极 (注意加限流电阻1K)void main(){while(1) //大循环{ d1=0; //点亮二极管 P2=0x00; //P2口接数码管的a,b,c,d,e,f,g,dp 另外的两个GND接地就行}}不知道你看明白了没

大竹县14778583668: 高手帮忙解释一段c语言程序啊,我在学单片机,这段示例程序可以让数码管和led灯亮,详细解释啊 -
伏欣盐酸: 解释如下#include "reg52.h" //调用52内码 void delay(void); //声明延迟 void main() //主函数 { unsigned char i; //定义i为无符号字符型,即8位长度 while(1) // 一直循环下面{}内的内容 { for(i=0;i<8;i++) //8次 { P0 = ~(1<<i); //将1向左边移动i位...

大竹县14778583668: 求一个简单的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解释和Proteus 仿真电路图. -
伏欣盐酸: /***程序仿真用89c52 数码管用共阳极数码管 P0口段选,P3.0和P3.1位选 定时器2用法见百度“T2CON”***/ #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code num[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf...

大竹县14778583668: 求高手修改单片机C语言程序:0~59秒计数器;1个独立按键控制,2个数码管显示 -
伏欣盐酸: //注意;P0口要加上拉电阻 .#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char sbit KEY=P1^0; uchar aa,num,num1,flag; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,...

大竹县14778583668: 51单片机接74ls164驱动数码管的C程序 -
伏欣盐酸: c里面有移位语句,不过不能循环移位,要实现循环移位的话还得自己写程序实现,没有直接实现循环移位的语句的,我刚做过74ls595的,这两个芯片应该完全一样的吧,都是实现串转并,你参考一下吧,程序是控制数码管0到9循环显示,电路...

大竹县14778583668: 跪求 MSP430单片机控制数码管显示时间的C语言程序 -
伏欣盐酸: /*********************************************************164串行输出段码:P4.4 U164CP P4.5 U164D138输出位选 P4.3选通138 P4.0对应138A P4.1对应138A P4.2对应138A*********************************************************/ void disp(void) { unsigned ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网