单片机时钟C语言程序 烧进去数码管乱跳。。

#include
#define uchar unsigned char
#define uint unsigned int

sbit duan=P2^6;
sbit wei=P2^7;

sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint shi=12,fen=12,miao=12,shig,shis,feng,fens,miaog,miaos;
uchar num,nop=0;

void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

void display()
{

duan=1;

P0=table[miaog];
duan=0;
P0=0x00;
wei=1;
P0=0xdf;
wei=1;
delay(1);

duan=1;
P0=table[miaos];
duan=0;
P0=0x00;
wei=1;
P0=0xef;
wei=0;
delay(1);

duan=1;
P0=table[feng];
duan=0;
P0=0x00;
wei=1;
P0=0x77;
wei=0;
delay(1);

duan=1;
P0=table[fens];
duan=0;
P0=0x00;
wei=1;
P0=0x7b;
wei=0;
delay(1);

duan=1;
P0=table[shig];
duan=0;
P0=0x00;
wei=1;
P0=0xfd;
wei=0;
delay(1);

duan=1;
P0=table[shis];
duan=0;
P0=0x00;
wei=1;
P0=0xfe;
wei=0;
delay(1);

}

void shige()
{
miaog=miao%10;
miaos=miao/10;
feng=fen%10;
fens=fen/10;
shig=shi%10;
shis=shi/10;
}

void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}
}

void key()
{
nop=0;
if(key1==0)
{
delay(10);
nop++;
//while(!key1);
if(key1==0)
{
delay(10);
nop++;
//while(!key1);
if(key1==0)
{
delay(10);
nop++;
//while(!key1);
}
}
}

if(nop==1&&key2==0) //时+
{
delay(10);
if(key2==0)
{
shi++;
if(shi==24)
{
shi=0;
while(!key2);
}
}
}

if(nop==1&&key3==0) //时-
{
delay(10);
if(key3==0)
{
shi--;
if(shi==0)
{
shi=24;
while(!key3);
}
}
}

if(nop==1&&key2==0)
{
delay(10);
if(key2==0)
{
fen++;
if(fen==60)
{
fen=0;
while(!key2);
}
}
}

if(nop==1&&key3==0)
{
delay(10);
if(key3==0)
{
fen--;
if(fen==0)
{
fen=60;
while(!key3);
}
}
}

if(nop==1&&key2==0)
{
delay(10);
if(key2==0)
{
miao++;
if(miao==60)
{
miao=0;
while(!key2);
}
}
}

if(nop==1&&key3==0)
{
delay(10);
if(key3==0)
{
miao--;
if(miao==0)
{
miao=60;
while(!key3);
}
}
}

}

void main()
{
TMOD=0x11;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;

EA=1;
ET0=1;
TR0=1;

while(1)
{
shige();
key();
display();
}

}

0

2个回答

你的显示程序明显有问题,你仔细检查一下数码管位选怎么操作的,你最好把你的接线图发上来看看!

0

你的显示程序明显有问题,你仔细检查一下数码管位选怎么操作的,仔细检查一下

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
基于51单片机的数码管显示时钟电路图与c程序
基于51单片机的数码管显示时钟电路图与c程序 有原理图和PCB 源代码 调试成功,保证好用。
C51单片机实现六位数码管时钟
//六位数码管时钟 //C语言代码: //main.c #include typedef unsigned int UINT ; typedef unsigned char UCHAR ; #define KEY P2 #define KEYMASK 0x07 sbit LE1 = P2^6; //定义位控口 sbit LE2 = P2^7; //定义段控口 UCHAR
数码管电子钟C语言(8个数码管显示时分秒)
51单片机电子钟,采用数码管显示。该设计方法为中断法,时间较精确,可以显示时分秒。
51单片机电子时钟C语言程序
51单片机电子时钟C语言程序 #include<reg52.h>//头文件 #define uchar unsigned char//宏定义 #define uint unsigned int sbit P32=P3^2;//位声明 sbit P36=P3^6; sbit P37=P3^7;
51单片机数字钟数码管显示 含仿真电路图 C程序
51单片机做的数字钟,采用数码管显示 含仿真电路图 C语言编写程序
利用AT89C51单片机采用C语言实现了万年历,可以显示日期,星期,时间等等
利用AT89C51单片机采用C语言实现了万年历,可以显示日期,星期,时间等等
51单片机59秒倒计时例子程序
51单片机59秒倒计时例子程序,利用中断法,有详细注解,蛮有用的~
利用单片机的数码管模拟时钟的显示时间
在八段数码管上显示时间的驱动程序
51单片机数字时钟—源程序+仿真电路(带闹钟)
51单片机数字钟课程设计(带闹钟,还有数字串在数码管上滚动显示的案例),C语言源程序+PROTEUS仿真电路图。
C语言 数码管显示温度计程序
1、4位数码管显示温度。 2、C语言编程。 3、SM8951单片机。 4、18b20温度采集器件。 5、实时温度变化控制。
基于51单片机的6位数码管显示时钟
基于51单片机的 数码管时钟,硬件和模拟都实现了。可设置时间和闹钟,可一键查看闹钟。闹钟时间到蜂鸣器响数码管闪。有问题和帮助就加我,先看备注
【单片机】串口修改数码管时间
串口修改数码管时间
基于AT89C52单片机的万年历protel原理图,用DS1302时钟芯片,用数码管显示
基于AT89C52单片机的万年历protel原理图,用DS1302时钟芯片,用数码管显示,包括通信电路,复位电路,矩阵键盘
数码管显示电子时钟
课堂作业,包含proteus的仿真原理图还有keil编译的代码
初学利用C语言和51单片机制作一个可调节时间和闹钟的keil程序与proteus仿真
初学利用C语言和51单片机制作一个可调节时间和闹钟的keil程序与proteus仿真 本程序与仿真由防灾科技学院 powerless量 大佬和 alpha_LCL璐 (QQ:1143272695)共同学习完成。欢迎讨论。 - 51萌新 - 第一次博客 - 学习记录 - keil - proteus keil代码 /****2018年8月14日凌晨3点37分封档完成****/ ...
STC89C52单片机实用程序示例30个C语言10个汇编语言
STC89C52程序设计示例包含30个最常用的C语言程序主要内容为闪烁灯,流水灯,键盘,1602LCD 4X4矩阵键盘,数码管,中断........... 十个汇编程序 蜂鸣器唱歌,计时器,DS18B20温度传感器,串口测试程序......
51单片机数码管时钟程序
在51单片机上实现数码管时钟程序,程序的开发环境是keil软件。
数码管时钟
使用51单片机控制数码管做一个时-分-秒的时钟电路;包含控制模块、显示模块;所述控制模块与显示模块相连,可控制显示模块显示时钟或日期
单片机时钟实现闹钟功能
void main (void) { unsigned int i = 0; LCD_Init();  LCD_Clear();   Init_INT0(); while(1)         {   LCD_Write_String(6,1,"clock"); if(flag2 == 1) { DelayMs(1);     SPK =! SPK; Display();
KST-51单片机:c语言编程实现数码管动态显示秒表的倒计时
/*60S倒计时*/ /*个位每1S变一次,从0~9*/ /*十位,个位为0的下一秒十位发生变化*/ #include&amp;lt;reg52.h&amp;gt; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4; unsigned char code LedChar[]= { 0xC0...
简易时钟的电路图,程序。可以实现时分秒的计时,通过数码管显示
简易时钟的电路图,程序。可以实现时分秒的计时,通过数码管显示
单片机电子时钟完整版(基于at89c51电子时钟论文,keil程序编写,professional仿真,pcb原理图)
单片机电子时钟完整版(基于at89c51电子时钟论文,keil程序编写,professional仿真,pcb原理图) 目录 摘要 1 第一章 系统设计要求 2 1.1 基本功能 2 1.2 扩展功能 2 第二章 硬件总体设计方案 3 2.1系统功能实现总体设计思路 3 2.2各部分功能实现 4 2.3系统工作原理 5 2.4时钟各功能分析及图解 6 2.4.1电路各功能图解分析 6 2.4.2电路功能使用说明 10 第三章软件总体设计方案 11 3.1 主程序流程图 11 3.2 总中断程序流程 12 3.3控制电路的C语言源程序 16 第四章 课程设计结果分析 23 第五章 总结 24 致谢 25 参考文献 26
数码管电子时钟
数码管电子时钟,单片机C语言程序,keil文件可打开,TXT文本也可以打开
89C51单片机数码管显示
数码管显示分为静态数码管显示和动态数码管显示 学习掌握数码管相关的内容,可以从以下三方面入手: 1.数码管电路图 2.译码器 3.进制转化 直接上图 数码管电路图 数码管电路的接法有共阴和共阳两种,这里采用共阴接法 从其中取出一个数码管进行分析 单个数码管 此处为一个8位的数码管,想要数码管显示出想要的数字,则需要对数码管进行高低电平的设置 1为高电平,0为低电平 分别对 a,b,c,d,e,...
DS1302 时钟 51单片机实现时钟显示
DS1302 具有能计算2100年以前的秒分时……的能力,还有闰年调整功能 主要性能指标: 1、工作电压范围:2.0~5.5V 2、工作电流范围:2.0V时,电流小于200nA,功耗极低 3、TTL兼容 4、采用主电源和备份电源双电源供应 5、两种数据传送方式:单字节传送和多字节传送 6、采用串行数据传送方式 DS1302.h #ifndef DS1302_H #define D...
时钟程序电子时钟将秒数逢60进1取出时、分、秒显示
电子时钟将秒数逢60进1取出时、分、秒显示
51单片机数码管时钟程序,注释详细
本例程适用于共阴数码管 段选锁存器与位选锁存器都接P0
51单片机 时钟程序设计 数码管可闪烁显示数值
/*通过独立键控制调节的时钟。s2控制启动;s3控制暂停;s4控制在暂停的状态下切换时针、分针;s5控制时针、分针的值的增加*/ /* 其中优化完善的功能是:在切换时针、分针的状态下,其数码管能闪烁显示数字*/ #include #include //宏定义 #define uchar unsigned char #define uint unsigned int
51单片机 经典4位数码管显示,带闪烁位
经典4位数码管显示,带闪烁位51单片机 经典4位数码管显示,带闪烁位51单片机 经典4位数码管显示,带闪烁位
数码管显示单片机定时器时钟--适用于蓝桥杯比赛专用开发板CT107D
数码管显示单片机定时器时钟--适用于蓝桥杯比赛专用开发板CT107D
ADC0809基于51单片机的四位数码管驱动原理及c语言程序
介绍了ADC0809与51单片机以及四位数码管的原理图+proteus仿真,附程序代码!定时中断方式产生ADC0809的工作时钟!
四位数码管时钟程序
本代码是用在51单片机上的,材料有51单片机,DS1302芯片,四位数码管。程序可以完美运行。
单片机==矩阵键盘+时钟+键入时间+闹钟(12)
#include <reg52.h> #include <intrins.h> #include "delay.h"//°´key6ÔÝÍ££¬°´¾ØÕó¼üÅ̵Ä1-10¼üÊäÈë0-9£¬11¼ü×óÒÆ£¬12¼üÓÒÒÆ¡£ //ĬÈÏ´ÓСʱ¿ªÊ¼Ð޸ģ¬ÐÞ¸ÄÍêÖ®ºó£¬»á×Ô¶¯Ìøµ½ºóһλ½øÐÐÐ޸ġ£ //ÄÖÖÓÉèÖõÄÊÇ19£º08
用51单片机驱动8位数码管的普通定时器时钟程序,
该程序用c语言编写,简单明了,便于c语言初学者调试,学习。用51单片机驱动8位数码管显示时间。
单片机C语言实现数码管控制
本文分析了数码管的工作原理,并尝试用C51单片机去控制数码管的显示。希望更加深入理解单片机的内部工作原理和C语言的特性。
数码管 单片机 仿真及C语言程序
数码管 单片机 仿真及C语言程序
51用定时器0-100秒计时c语言程序
单片机初学者编写了几个小程序供大家分享 此程序为0-100秒计时器,改变disnum的值可改变计时最终数值
51单片机_DS1302时钟芯片_共阴数码管_时钟实例【中为电子科技工作室】
该文档包括原理图、源代码,系统的介绍了51单片机和DS1302的应用,显示方式为4位共阴时钟数码管,具有调时功能,原理图和源代码都已验证是可用的。
数码管时钟C语言程序
简单的数字钟单片机程序,简单易懂适于入门者
51单片机串口通信控制数码管源代码
51单片机串口通信控制数码管源代码 将发送的数字显示在数码管上