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

问题描述

单片机时钟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();
}

}

解决方案

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

时间: 2024-09-10 20:23:20

单片机时钟C语言程序 烧进去数码管乱跳。。的相关文章

c语言-关于AT89C51单片机数字时钟的设计C语言程序warning问题

问题描述 关于AT89C51单片机数字时钟的设计C语言程序warning问题 本人新手,还希望各位大大帮忙看下怎么解决 Build target 'Target 1' assembling STARTUP.A51... linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) *** WARNING L2: REFERENCE MADE TO UN

单片机烧写程序问题-flash magic 烧写程序烧写不进去

问题描述 flash magic 烧写程序烧写不进去 _FLASH magic 烧写程序时出现unable to connect at zhe specified baud rate,try reducing zhe baud rate .reset zhe hardware into ISP mode again.目前波特率 设置为9600,减小波特率也不行,目前的测试有: 1.电源电压+5V,正常 2.复位正常为低,烧写程序时按住为高 3.EA为VCC+5V 4.晶振起振 5.擦除时测量PC

if语句-keil编译无误,把程序烧到单片机上后,不满足某个else if条件也会执行相应语句

问题描述 keil编译无误,把程序烧到单片机上后,不满足某个else if条件也会执行相应语句 keil编译无误,把程序烧到单片机上后,不满足else if((P2&0x0D)==9)这个条件也会执行相应语句 #include "C8051F020.h" /* P20控制直行,P22控制左行,P23控制右行 */ void Delay() { int i,j; for(i=1000;i>0;i--) for(j=1000;j>0;j--) ; } void Rese

关于单片机旋转POV显示C语言程序的错误

问题描述 关于单片机旋转POV显示C语言程序的错误 #include #define uint unsigned int #define uchar unsigned char uchar code buffer[]= //*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*// { 0x10,0x60,0x02,0x8C,0x20,0x18,0x08,0x08,0x88,0x7F,0x88,0x08,0x28,0x18,0x08,0x00, //沈 0x04,0x04,0x7E

c语言 c++ 单片机-51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序。谢谢了

问题描述 51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序.谢谢了 51单片机利用两个外部中断(和一个定时器)计算两个中断的时间间隔的C语言程序.谢谢了 .万分感谢... 解决方案 具体的哪个单片机?代码需要整个写好么? 解决方案二: http://zhidao.baidu.com/link?url=qpZQDUaPuGYd69ZgYe3bESTSAS7vjc0XO7puc-KtYMWVkxwtMbh5xTkWI5GbvvHT6Eb3WKFhqIfbl7HtGBGZV

《例说51单片机(C语言版)(第3版)》一1.2 8051基础知识

1.2 8051基础知识 例说51单片机(C语言版)(第3版)"89S51"源自Intel公司的MCS-51系列,而目前所采用的8x51并不仅限于Intel公司所生产的,反倒是以其他厂商所发行的兼容芯片为主,如Atmel公司的89C51/89S51系列,其价格便宜,质量稳定,开发工具齐全,早就被学校或培训机构所接受. 在此先介绍8x51的基本知识,包括基本结构.引脚.基本电路及51系列等,其中很多数据最好要熟记,本书也会提供许多快速背记的技巧,让读者能在极短的时间里记住40个引脚.基本

《例说51单片机(C语言版)(第3版)》——1-2 8051基础知识

1-2 8051基础知识 "89S51"源自Intel公司的MCS-51系列,而目前所采用的8x51并不仅限于Intel公司所生产的,反倒是以其他厂商所发行的兼容芯片为主,如Atmel公司的89C51/89S51系列,其价格便宜,质量稳定,开发工具齐全,早就被学校或培训机构所接受. 在此先介绍8x51的基本知识,包括基本结构.引脚.基本电路及51系列等,其中很多数据最好要熟记,本书也会提供许多快速背记的技巧,让读者能在极短的时间里记住40个引脚.基本电路等. 1-2-1 8x51的结构

c51 程控 滤波-C51单片机程控滤波器的程序

问题描述 C51单片机程控滤波器的程序 #include #include "i2c.h" #include "delay.h" #include "display.h" #include "key.h" #define AddWr 0x90 #define AddRd 0x91 sbit P00=P0^0; sbit P01=P0^1; sbit P02=P0^2; sbit P03=P0^3; sbit P04=P0^4;

c语言 封装 运行-C语言程序如何在别人电脑上运行的问题

问题描述 C语言程序如何在别人电脑上运行的问题 我编写了一个小程序,一道选择测试的题目.写完后,拷贝了bug文件中的exe程序.运行exe程序后,可以输入数据.问题是最后出现结果后一闪而过,程序就跳出了.请问有什么办法可以清楚的显示结果,不跳出程序? 解决方案 程序结束前用下面两行代码 getchar(); getchar(); 第一行用于"吃掉"你输入你的数据末尾的'n',但它并不需要送给任何变量. 第二个用于等待用户输入一个字符,这样程序就需要等待这一操作发生才会结束. 解决方案二