欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
為什么我的單片機數碼管常顯8 不倒計時啊?
[打印本頁]
作者:
今已亭亭如蓋
時間:
2023-12-15 16:14
標題:
為什么我的單片機數碼管常顯8 不倒計時啊?
51hei1.png
(187.54 KB, 下載次數: 25)
下載附件
2023-12-15 19:53 上傳
51hei2.png
(191.23 KB, 下載次數: 32)
下載附件
2023-12-15 19:53 上傳
單片機源程序如下:
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define DIG0 0x01 // 定義數碼管1
#define DIG1 0x02 // 定義數碼管2
#define DIG2 0x03 // 定義數碼管3
#define DIG3 0x04 // 定義數碼管4
void delay(uint i);
void T0_init();
void MAX7219(uchar addr,uchar num);
void MAX7219_init(); //MAX7219初始化
void display();
sbit DIN=P3^0; //連接MAX7219 DIN引腳
sbit LOAD=P3^1; //連接MAX7219 LOAD 引腳
sbit CLK=P3^2; //連接MAX7219 CLK 引腳
sbit G1=P0^0; //南北紅綠燈
sbit Y1=P0^1;
sbit R1=P0^2;
sbit G2=P1^0; //東西紅綠燈
sbit Y2=P1^1;
sbit R2=P1^2;
uchar NS_S,NS_G,EW_S,EW_G;
uchar NS,EW;
uchar temp=0,i;
uchar code table[10]= {0x7e,0x30,0x6d,0x79,0x33,
0x5b,0x5f,0x70,0x7f,0x7b}; //共陰級數碼管數組
void delay(uint i)
{
uint j;
for(j=0;j<i;j++);
}
void T0_init()
{ //裝初值10MS
TMOD=0X01;
TH0=0XD8;
TL0=0XF0;
ET0=1;
TR0=1;
}
void MAX_write(uchar ch) //以8位一個字節進行寫值
{
uchar j,ads;
for(j=0;j<8;j++) //8位
{
ads=ch&0x80; //取最高位
CLK = 0; //時鐘線置低
if(ads) DIN = 1;
else DIN = 0;
ch=ch<<1; //左移一位
CLK=1; //上升沿,DIN的數據寫入到7219
}
}
void MAX7219(uchar addr, uchar num) //寫地址,寫數據
{
LOAD = 0;
_nop_();
MAX_write(addr);
_nop_();
MAX_write(num);
_nop_();
LOAD = 1; //鎖存
}
void MAX7219_init()
{
MAX7219(0x0c,0x01); //正常狀態
MAX7219(0x0b,0x03); //設置掃描范圍DIG0-3
MAX7219(0x0a,0x05); //設置亮度11/32
MAX7219(0x09,0x00); //采用譯碼方式 ,不譯碼
}
void display()
{
NS_S=NS/10; //南北十位,個位
NS_G=NS%10;
EW_S=EW/10; //東西十位,個位
EW_G=EW%10;
MAX7219(DIG0,table[NS_S]); //南北十位,個位
MAX7219(DIG1,table[NS_G]);
MAX7219(DIG2,table[EW_S]); //東西十位,個位
MAX7219(DIG3,table[EW_G]);
}
void T0_(void)interrupt 1
{
temp++;
TH0=0XD8;
TL0=0XF0;
if(temp==100)
{
temp=0;
NS--;
EW--;
if((NS==0)&&(EW==3))
{
NS=3;
EW=3;
i=1;
}
if((NS==0)&&(EW==0)&&(i==1))
{
NS=83;
EW=80;
i=2;
}
if((NS==3)&&(EW==0))
{
NS=3;
EW=3;
i=3;
}
if((NS==0)&&(EW==0)&&(i==3))
{
NS=60;
EW=63;
i=4;
}
}
display();
}
void main()
{
T0_init();
MAX7219_init();
EA=1;
NS=60; //初始南北通行60秒
EW=63;
R2=0,G1=0; //南北綠燈亮,東西紅燈亮
while (1)
{
uint k;
display();
switch(i)
{
case 1: R2=1,G1=1; //關閉南北綠燈,東西紅燈
Y1=0,Y2=0; //黃燈閃爍
for(k=0;k<3;k++)
{
Y1=~Y1;
Y2=~Y2;
delay(10000);
}
break;
case 2: G2=0,R1=0; //東西綠燈亮,南北紅燈亮
break;
case 3: G2=1,R1=1;
Y1=0,Y2=0; //黃燈閃爍
for(k=0;k<3;k++) //循環三次進行延時閃爍
{
Y1=~Y1;
Y2=~Y2;
delay(10000);
}
break;
case 4: R2=0,G1=0; //東西紅燈亮,南北綠燈亮
break;
}
}
}
復制代碼
作者:
csmyldl
時間:
2023-12-15 20:34
因為你用的共陽數碼管,而MAX7219的A-P各段輸出為低電平,就造成數碼管各段全亮
作者:
Hephaestus
時間:
2023-12-17 15:32
方向也不對,NS共用一套N,EW共用一套E,分不清楚東南西北。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1