求各位高手看看,我用单片机做了个时钟,不过时间却越跑越慢,这究竟是怎么回事?哪里出错了???
应该是没电了
COMS电池没电了。。 你电脑是不是用4、5年了?
#include<stdio.h>#include<reg52.h>
int shi1,shi2,fen1,fen2,miao1,miao2,d,n;
unsigned char code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit L1=P3^2; //调分
sbit L2=P3^3; //调时
a=b=c=0;
g=3; //延时值
void delay(int z) //延时程序
{
int x, y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xianshi() //显示程序
{
shi1=a/10;
shi2=a%10;
fen1=b/10;
fen2=b%10;
miao1=c/10;
miao2=c%10;
P2=0x00; //位选
P0=display[miao2]; //显示
delay(g); //延时
P2=0x04;
P0=display[miao1];
delay(g);
P2=0x08;
P0=0x40;
delay(g);
P2=0x0c;
P0=display[fen2];
delay(g);
P2=0x10;
P0=display[fen1];
delay(g);
P2=0x14;
P0=0x40;
delay(g);
P2=0x18;
P0=display[shi2];
delay(g);
P2=0x1c;
P0=display[shi1];
delay(g);
}
void cal() //时钟自加程序
{
if(d==20)
{
c++;
d=0;
if(c>=60) //秒钟数值
{
b++;
c=0;
if(b>=60) //分钟数值
{
a++;
b=0;
if(a>=24) //时钟数值
{
a=0;
}
}
}
}
xianshi();
}
void tiaojie() //时间数值按键调节程序
{
if(L1==0)
{
delay(10);
if(L1==0)
{
a++;
if(a>=23)
{
a=0;
}
}
}
if(L2==0)
{
delay(10);
if(L2==0)
{
b++;
if(b>=59)
{
b=0;
}
}
}
}
void main() //主程序
{
P0=0xff;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=1;
EA=1;
while(1)
{
tiaojie();
cal();
}
}
void int0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
++d;
}
大家的回答不到位啊
#include<stdio.h>
#include<reg52.h>
#define g 3 //延时值
int shi1,shi2,fen1,fen2,miao1,miao2,d,n;
unsigned char code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit L1=P3^2; //调分
sbit L2=P3^3; //调时
unsigned char cnt50ms=0,cnt1s=0;
int a=0,b=0,c=0;
void delay(int z) //延时程序
{
int x, y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xianshi() //显示程序
{
shi1=a/10;
shi2=a%10;
fen1=b/10;
fen2=b%10;
miao1=c/10;
miao2=c%10;
P2=0x00; //位选
P0=display[miao2]; //显示
delay(g); //延时
P2=0x04;
P0=display[miao1];
delay(g);
P2=0x08;
P0=0x40;
delay(g);
P2=0x0c;
P0=display[fen2];
delay(g);
P2=0x10;
P0=display[fen1];
delay(g);
P2=0x14;
P0=0x40;
delay(g);
P2=0x18;
P0=display[shi2];
delay(g);
P2=0x1c;
P0=display[shi1];
delay(g);
}
void cal() //时钟自加程序
{
if(d==20)
{
c++;
d=0;
if(c>=60) //秒钟数值
{
b++;
c=0;
if(b>=60) //分钟数值
{
a++;
b=0;
if(a>=24) //时钟数值
{
a=0;
}
}
}
}
xianshi();
}
void tiaojie() //时间数值按键调节程序
{
if(L1==0)
{
delay(10);
if(L1==0)
{
if(++a>23)
{
a=0;
}
while(L1==0);
delay(10);
}
}
if(L2==0)
{
delay(10);
if(L2==0)
{
if(++b>59)
{
b=0;
}
while(L2==0);
delay(10);
}
}
}
void main() //主程序
{
P0=0xff;
TMOD=0x02; //定时器2
TH0=0x06; //定时250us
TL0=0x06;
ET0=1;
TR0=1;
EA=1;
while(1)
{
PCON=0x1;
}
}
void timer0(void) interrupt 1 //定时器0的中断号是1
{ //定时器1的中断号是3
if(++cnt50ms>=200)//50ms定时到
{
cnt50ms=0;
d++;
cal(); //时钟自加程序
}
tiaojie();
}
哈哈,这个错误挺低级的,嘿嘿!不是笑话你哦,初学者一般都会犯这样的错误。不严谨啊,慢慢来,不要紧的。问题越多,学的也越多。加油!
您的中断服务程序忘记重新初始化T0了,相当于初始化到0, 当然会变慢。
改为这样既可
void int0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
++d;
tiaojie();
}
电路图可以给我吗。。。
各位电脑高手看看,这些问题,如何解决
彻底断电,时间不用很长,10-30分钟就可以了,至于软件,没什么好说的,对于你来说,到电子市场买张GXP,系统不行了就G吧。10。完全自动升级。11。对于你来说 360安全卫士+360杀毒+保险箱 足矣。12。理论上危害硬盘,但可以忽略不计。不知道我说的够不够简单,全面。水平就这么高,凑合看吧 ...
各位高手帮我看看电脑配置
呵呵 我说两句 首先,主板做工很重要,我对 华擎 这个牌子持保留意见...(仅限我个人)像昂达、技嘉的785 都很不错,价格也算公道。另外 ,鉴于CPU和主板,内存最好用 DDR3 1333 这样更合理些 记得 金士顿DDR3 1333 2G 也才 300不到 但是这样的平台总体性能就很强大了 至于显卡 那还是推荐3A...
请各位高手帮我看看我垃圾电脑换什么显卡好一点啊 主要玩玩网络游戏...
FX5200的显卡更差,换这个吧:铭瑄(MAXSUN)HD6570变形金刚1G 675MHz\/4000MHz\/1G GDDR5\/128bit PCIE
请各位高手帮我看看命盘,尤其是有关婚姻和财运方面的,多谢了!
2012-01-19 请大家帮我看看我的紫薇命盘多谢了! 2007-10-04 谁帮我看看盘啊,婚姻事业财,和流年,我多谢了 2010-11-02 哪位高人帮分析一个各命宫情况,主要看看子女和财运,分析完方便... 3 2011-05-11 各位高手帮我看看呗,这个求素数的程序哪里有问题啊?多谢了 2009-02-06 恭请精通八字或者紫薇的命...
电脑高手帮忙看看我的电脑怎么了
在控制面板的添加\/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET...
各位高手们帮我看看这台机器的配置。。。 用来学习CAD机械制图以及玩...
=主板可换同价位P43 另。CPU能否拿到E8300?也是700+的价位。风扇花35买个富士康的滚轴就好,不用这么好的。当然个人爱好。显卡可以的话是否可以换同价位 铭瑄 索泰?影驰的问题卡太多,个人不推荐。你的要求都不高,你的配置完全可以达到(换主板是必须的= =,不然CPU插不上)好了,有问题HI我 ...
请各位高手帮忙看看才能让我的电脑提速。
再选择右面的“虚拟内存”,选择“用户自己指定虚拟内存设置(M)”,然后将最大值和最小值都改为你电脑内存的数值乘以2,比如是128兆内存,则设置为“256”,然后确定,不用理会显示的提示,确定以后需要重新启动。3、 打开“我的电脑”,打开C盘,有一个Windows文件夹,打开它,找到一个“Temp文件夹...
我想组装一台电脑,各位高手看看我的配置有无缺陷和不兼容之处,谢谢!有...
intel和AMD是敌对企业 . 他们大部分(不是全部)硬件不兼容的 , 特别是主板和处理器 , 中低端的主板和处理器兼容 , H61是高端主板 , 造这个主板就是为了扛起新一代酷睿处理器 . 这个主板根本就没想过扛AMD的处理器 . . .这个显卡也是的 , 我不知道HD6670是否比HD6770强悍 . (我用的HD6770 ,...
电脑高手帮忙看看我的电脑出了什么问题?
我的分析是,有两种原因:1.启动设置有错,设置从光盘启动为第一启动项,而你的光驱里有光盘,却不是系统启动光盘。2.系统坏掉了,需要修复安装或者重新安装操作系统。具体做法:1.查看并修改操作系统的引导设备启动顺序 进入CMOS Setup设置主菜单打开计算机电源后,当BIOS开始进行POST(Power On Self ...
各位高手帮我看看我的机子能不能玩彩虹六号!
绝对可以了 彩虹六号维加斯 配置要求:操作系统:Windows XP (only)处理器: P4 3Ghz or AMD equivalent 内存:1024 Mb 显卡:128MB, Shader Model 3 and DirectX 9.0c compatible (see supported list*)必需GF6200或X1300以上显卡 声卡:DirectX 9.0c compatible DirectX Version:DirectX 9.0c CD-...
毋趴诺里: #include#include int shi1,shi2,fen1,fen2,miao1,miao2,d,n; unsigned char code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit L1=P3^2; //调分 sbit L2=P3^3; //调时 a=b=c=0; g=3; //延时值 void delay(int z) //延时程序 { int x, ...
太白县13276294062: 求高手,编写单片机程序做一个时钟用c语言?
毋趴诺里: 应该对你有帮助的!启用TIMER0和TIMer1,Timer0用于计时,timer1用于刷新数码管!很简单的程序,好好看看书
太白县13276294062: 本人很菜.利用单片机写了一个电子时钟C语言程序,但无法通过按键来实现设置时间.请各位高手指教.?
毋趴诺里: 可按键调节的C语言时钟程序 (郭天祥版) #include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar count,key1num; char shi,fen,miao; uchar code hh[]=" 2010-5-4 Tue"; uchar code yy[]=" 00-00-00"; sbit ledrs=P2^4...
太白县13276294062: 求助高手用单片机做的时钟,如何减少程序本身累积误差 - ?
毋趴诺里: 用时钟芯片的话,走时精度与其晶振频率有关,跟单片机程序和晶振关系不大,直接用单片机晶振作时基的话,就与单片机晶振频率有关,一般用定时器中断累积来产生秒信号,与程序本身关系也不大, 如走时不准,可以微调定时器初值,定时时长要长一些,如50ms,这样的时间段内程序可以不受干 扰地作很多事情,不容易造成走时误差.
太白县13276294062: 用12M晶振驱动的STC89C52单片机,做一个时钟,用计时器0工作方式1,初值是TH0=(65536 - 50002)/256; - ?
毋趴诺里: 楼上的说的很明确了!1302是个不错的选择~ “可我还是不清楚,就算是用DS1302也要用到显示调用的指令,同样会产生一定偏差,而且我觉得执行指令产生的时间误差,每次都有,这样每次显示的间隔应该就是相对固定的计时器中断产生的时间” 你完全不用担心走时不准!因为走时是1302的工作!单片机只是把当前时间读出然后用1602显示!你就是写再多的程序也不会影响走时!顶多就是刷新速度慢!
太白县13276294062: 我有一个单片机时钟电路,从网上下载的,想做这个,但有一部分看不清楚,也不好猜.哪位高手帮忙看一下. - ?
毋趴诺里: 1 左上角的是7805三端稳压,输出5V电压为单片机供电2 三极管是PNP型的小功率管,如常用的9012,和8550都可以用3 那些电容是电源滤波用的几百微法到上千微法都可以4 左上角是电源输入端也就是7805的输入电压,9到15伏都可以正常工作5 单片机左边电解电容另一边是电容正极接正5V,和串联的电阻组成上电复位电路
太白县13276294062: 我在430单片机中用了个延时程序,老是进去后程序就出不来了,好像进入了死循环,求高手看看, - ?
毋趴诺里: 这种问题我也见过,根本不是延时的问题,建议你看下伪代码,是程序执行时的sp指针溢出(很有可能就是程序其他部分的错误造成)而导致执行完延迟后,程序不知道跳到哪里去的!!!!!!!
太白县13276294062: 想用单片机做个定时器,不知道写程序,运行1个小时,停止5个小时(一直循环),求大神帮帮 . - ?
毋趴诺里: 麻烦点啊,用单片机做个时钟,根据时钟的运行时间,设定即可,累计计算,五个小时即为300分钟,这样会很容易的
太白县13276294062: 我写了一个单片机的程序,利用DS1302和独立按键来做一个时钟,可以通过按键来调整时间,可是调整不了,急! - ?
毋趴诺里: bcd码转化为字符,你可以仔细看看该字符(1302里用得到的只有数字0~9吧),你看看他们有什么规律, 十进制 二进制 bcd ascii码 十六进制 0 0000 0000 048 0x30 1 0001 0001 049 0x31 …… …… …… …… ……91001 1001 057 0x39 你...
太白县13276294062: 求救:为什么用单片机做的数字时钟,秒走的不均匀,时快时慢.仿真的时候也是这样???? - ?
毋趴诺里: ds1302时钟芯片是不断地读取内部数据送到外部显示的,仿真的时候用的是系统时间,如果出现时快时慢,要么是CPU负载100%卡了,要么就是你的显示程序不合理,显示程序没有实时地反应秒的状态.我以前做的都没这情况.显示刷新专门放在一个定时器里定时刷新