標(biāo)題:
51單片機(jī)數(shù)碼管顯示 程序跑飛
[打印本頁(yè)]
作者:
時(shí)光漫步01
時(shí)間:
2017-5-12 23:43
標(biāo)題:
51單片機(jī)數(shù)碼管顯示 程序跑飛
嘗試寫交通燈的程序,下面是兩邊數(shù)碼管的顯示,每一邊數(shù)碼管單獨(dú)運(yùn)行都沒(méi)有問(wèn)題,一起運(yùn)行數(shù)碼管就會(huì)跑飛,不明白原因何在,求指導(dǎo)
#include <reg52.h>
#define uchar unsigned char
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 second=20;
uint16 mstcnt=0;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
uchar second,minute,hour;
unsigned int tcount;
unsigned char m;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90}; //共陽(yáng)極
void delay(unsigned int i);
void time_pro( void)
{
if(second==0)//秒鐘設(shè)為59進(jìn)制
{ second=20;
}
}
void display()
{
P1=table[second/10];
P2_2 = 0;
delay(5);
P2_2= 1;
P1=(table[second%10]& 0x7f);
P2_3= 0;
delay(5);
P2_3= 1;
P0=table[second/10];
P2_0 = 0;
delay(5);
P2_0= 1;
P0=(table[second%10]& 0x7f);
P2_1= 0;
delay(5);
P2_1= 1;
}
/*演示主程序*/
void timer0(void) interrupt 1 using 0//定時(shí)器0方式1,250us中斷一次
{
TH0=0xff;
TL0=0x19;
TMOD = 0x01;
mstcnt++;
if(mstcnt==4000)
{
second--;
mstcnt=0; //注意對(duì)計(jì)數(shù)單元的清零
}
}
void timer1(void) interrupt 1 using 0//定時(shí)器0方式1,250us中斷一次
{
TH0=0xff;
TL0=0x19;
TMOD = 0x01;
mstcnt++;
if(mstcnt==4000)
{
second--;
mstcnt=0; //注意對(duì)計(jì)數(shù)單元的清零
}
}
void main(void)
{
P0=0xff;
P1=0xff; //初始化p0口,全設(shè)為1使數(shù)碼管
P2=0xff; //初始化p2口,全設(shè)為1使數(shù)碼管
TMOD = 0x01; //time0為定時(shí)器,方式1
TH0=0xff; //預(yù)置計(jì)數(shù)初值
TL0=0x19;
EA=1;
ET0=1;
TR0=1;
while (1)
{
time_pro( ); //時(shí)間處理
display( ); //顯示時(shí)間
}
}
/*演示主程序*/
void delay(unsigned int i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
作者:
zl2168
時(shí)間:
2017-5-13 08:28
本帖最后由 zl2168 于 2017-5-13 15:59 編輯
實(shí)例30 帶限行時(shí)間顯示的模擬交通燈
先
Proteus
仿真一下,確認(rèn)有效。
實(shí)例30 帶限行時(shí)間顯示模擬交通燈.rar
(40.64 KB, 下載次數(shù): 5)
2017-5-13 15:56 上傳
點(diǎn)擊文件名下載附件
帶限行時(shí)間顯示模擬交通燈.jpg
(120.42 KB, 下載次數(shù): 68)
下載附件
2017-5-13 15:56 上傳
縮短亮燈時(shí)間,是為了仿真演示,便于觀看,否則,你等得不耐煩了,實(shí)際應(yīng)用時(shí),可可修改延長(zhǎng)。
以上摘自張志良編著《
80C51
單片機(jī)仿真設(shè)計(jì)實(shí)例教程
——
基于
Keil C
和
Proteus
》清華大學(xué)出版社
ISBN 978-7-302-41682-1
,
內(nèi)有常用的單片機(jī)應(yīng)用
100
案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行.書中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。
仿真電路和
Hex
文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。
到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購(gòu)買。
作者:
yzwzfyz
時(shí)間:
2017-5-13 12:27
程序運(yùn)行的速度很快,你當(dāng)設(shè)法在某此地方讓程序停一停,不就好了嗎?
作者:
halojeff
時(shí)間:
2017-5-13 13:03
嘗試下延時(shí)看看,我還沒(méi)學(xué)到交通燈,有時(shí)單片機(jī)的頻率比較高,一下子就運(yùn)行過(guò)去了,稍微延時(shí)一下試下
作者:
LLLBBB
時(shí)間:
2017-5-13 14:06
加個(gè)看門狗試試
作者:
abcymda
時(shí)間:
2017-5-13 15:43
兩個(gè)定時(shí)器都對(duì) second 進(jìn)行 -- 操作,有可能沖突了。
改成兩個(gè)參數(shù)試試。
作者:
ym0706
時(shí)間:
2017-5-13 16:46
延時(shí)太短了吧 ,
作者:
ereerr
時(shí)間:
2017-5-13 17:20
嘗試下延時(shí)看看
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1