AT98C51单片机数码管显示0.0秒到9.9秒循环计时C语言程序

作者&投稿:可泡 (若有异议请与网页底部的电邮联系)
汇编语言写AT98C51单片机数码管显示0.0秒到9.9秒循环计时程序~

只是循环显示数字?

不需要按键控制?

用下面的电路可以吗?

http://hi.baidu.com/do_sermon/item/a30d88dbc3404148ddf9be99

#include#include#define u16 unsigned int#define u8 unsigned char/*********************************************************/u8 ds[2]; //数码管显示缓存//共阴code u8 w[]={~0x01,~0x02,~0x04,~0x08};//位码code u8 d[]={~0xc0,~0xf9,~0xa4,~0xb0,~0x99,~0x92,~0x82,~0xf8,~0x80,~0x90,};//断码void dispaly(){//显示函数static u8 a;if(++a>2)a=0;P0=~0xff;P2=w[a];P0=d[ds[a]];}/****************************************/void init()//初始化函数{ TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;EA=1; ET0=1;}/***********************************/u16 js_ms=0;u8 count=0;//计数void main()//主函数{init();//系统初始化TR0=1; //定时器开始计时while(1){ ds[0]=count/10%10;ds[1]=count%10;}}/****************************/void timer0() interrupt 1//1ms定时器{ TH0=(65536-1000)/256;//重载初值TL0=(65536-1000)%256;dispaly();//显示if(++js_ms>=1000){js_ms=0;if(++count>59)count=0;}}

#include<reg51.h>
#define uchar unsigned char
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
unsigned char times=0,sec=0,sec01,scanled;
unsigned char disdat[2];
void dischg()
{
disdat[0]=sec01;
disdat[1]=sec;
}
void t0isr() interrupt 1 //秒计时
{
TR0=0;
TH0=0x3c;
TL0=0xb0;
TR0=1;
times++;
if(times>=2)
{
times=0;
sec01++;
if(sec01>=10)
{
sec01=0;
sec++;
if(sec>=10)sec=0;
}
}
dischg();
}
void t1isr() interrupt 3 //显示
{
TR1=0;
TH1=0xec;
TL1=0x78;
TR1=1;
switch(scanled)
{
case 0:
P2=~0x01;
P0=ledtab[disdat[5]];
break;
case 1:
P2=~0x02;
P0=ledtab[disdat[4]];
break;
default:break;
}
scanled++;
scanled%=2;
}
main()
{
TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
TH1=0xec;
TL1=0x78;
EA=1;
TR1=1;
ET0=1;
ET1=1;
sec=0;
scanled=0;
dischg();
while(1);
}


叙永县19546106408: 51单片机,数码管循环显示0 - 9,当每按一次中断,数码管显示0,延时一段时间后恢复之前中断时的显示 -
海研塞兰: 单片机有很多种,编程要根据不同单片机进行. 编程思想为: main{ 设置单片机上与数码管相连的引脚为输出, 设置单片机中断接口(即中断按钮)的中断控制寄存器里的中断使能, 设置整体中断使能, 循环子程序xunhuan(); 显示0到9, } ...

叙永县19546106408: AT98C51单片机数码管显示0.0秒到9.9秒循环计时C语言程序 -
海研塞兰: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9 unsigned char times=0,sec=0,sec01,scanled; unsigned char disdat[2]; void dischg() { disdat[0]=sec01; disdat[1]=sec; } ...

叙永县19546106408: 51单片机数码管显示'0'不断的闪烁为什么? -
海研塞兰: 删掉不必要的代码,将你的主程序直接改为下面的形式即可,请仔细理解段位锁存的意义 void main () { P1=0xfe; LATCH2=1; LATCH2=0; P1=0x3f; LATCH1=1; LATCH1=0; while (1); }

叙永县19546106408: 51单片机实现数码管每一位,显示数字增加一,显示结果只有最低位显示为0.求高手解答 -
海研塞兰: 展开全部#include #include#define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uint num,aa; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x5e,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(...

叙永县19546106408: 急求:单片机上电时数码管显示“0”,编写C51语言程序 利用单片机的外部中断0(P3.2)功能实现当按下 -
海研塞兰: #include#define uchar unsigned char; uchar distab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; uchar flag; sbit key=P3^2; void ext0() interrupt 0 { flag=1; } main() { IT0=1; EA=1; EX0=1; P1=distab[0];...

叙永县19546106408: 用单片机89C51实现数码管的显示,要求0 - F任意按下一个键,用4个数码管显示它的二进制值,并滚动显示 -
海研塞兰: 这个很容易,我不给你程序,给你 个建议吧,设置是十六个键,设一个变量'i'每个键按下要存储'i'值,分别为0000,0001......1111.按下k1之后判断前面所存储的值是多少然后给显示出来 显示数码应该会的吧,用动态扫描数码管,四个就可以了,k2更好办,按k2之后执行将i值清零.这个是入门,入门之后你就会喜欢编程了

叙永县19546106408: 51单片机频率测量的数码管显示问题,也可能是程序有问题,显示为0,哪位高手帮我看看,谢谢 -
海研塞兰: 改改下列函数:void smg(void) { P0 = shu[z % 10]; P2 = wei[3]; delay(4900); P2 = 255; P0 = shu[(z / 10) % 10]; P2 = wei[2]; delay(4900); P2 = 255; P0 = shu[(z / 100) % 10]; P2 = wei[1]; delay(4900); P2 = 255; P0 = shu[(z / 1000) % 10]; P2 = wei[0]; ...

叙永县19546106408: AT89c51单片机程序控制两个数码管显示00 - 59秒表的程序要怎么编啊? -
海研塞兰: display(second)子函数与两个数码管的连接方式有关 void main(void )//主程序 { TMOD=0x01;// 定时器1工作方式一 ET0=1; EA=1; TH0=(65536-10000)/256;//定时10ms TL0=(65536-10000)%256; TR0=0;//上电先不启动 while(1) { if(key1==0)//判...

叙永县19546106408: 用51单片机并行口设计显示一个数码的电路,使数码管循环显示“0”~“F”. -
海研塞兰: 这是共阳极的数码管,至于你要显示0~F这个在编程实现

叙永县19546106408: 51单片机数码管显示问题 -
海研塞兰: 采用这种方式一般都是所谓的动态扫描显示,往往不止一个数码管.一个数码管8段加一个公共端需要9根口线才能完全显示任意数字,为了节省IO口线,就利用了人眼视觉驻留的原理(就像电影胶片每秒24帧,连续起来播放你觉得没有任何间断...

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