欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機模擬交通燈 數碼管計時 定時中斷源程序
[打印本頁]
作者:
心律襯酒紅
時間:
2021-5-1 22:35
標題:
單片機模擬交通燈 數碼管計時 定時中斷源程序
模擬交通燈 數碼動態顯示 定時器定時中斷 親測好用
可以給學習定時中斷和數碼管朋友提供參考
單片機源程序如下:
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define led P3
#define xianshismg P1
sbit smgdt=P0^0; //數碼管動態
sbit smgdt1=P0^1;
sbit smgdt2=P0^2;
sbit green30=P3^0 ;
sbit red31=P3^1;
sbit green32=P3^2;
sbit yello33=P3^3;
sbit red34=P3^4;
sbit green35=P3^5;
sbit yello36=P3^6;
sbit red37=P3^7;
sbit green20=P2^0 ;
sbit red21=P2^1;
u16 daojishi=0;
u8 disdelay [8];
u8 code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
void delay(u16 i)
{
while(i--);
}
void time0init () //t0中斷初始化
{
EA=1; //總開關 IE
ET0=1; //t0中斷允許位 IE
TR0=1; //t0計數允許位 TCON
TMOD|=0X01; //設置定時器1和0的工作條件 方式和13/16/8位 TMOD
//為了不改變其他位用或運算 TMOD|=0X01;
TH0= 0xfc; //TH和TL都是對t0進行賦初值 因為t0只有溢出時才會發生中斷
TL0 =0x18;
}
void ngfg( ) //哪個
{ u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case 0:
smgdt=0;smgdt1=0;smgdt2=0;break ;
case 1:
smgdt=1;smgdt1=0;smgdt2=0;break ;
case 2:
smgdt=0;smgdt1=1;smgdt2=0;break ;
case 3:
smgdt=1;smgdt1=1;smgdt2=0;break ;
case 4:
smgdt=0;smgdt1=0;smgdt2=1;break ;
case 5:
smgdt=1;smgdt1=0;smgdt2=1;break ;
case 6:
smgdt=0;smgdt1=1;smgdt2=1;break ;
case 7:
smgdt=1;smgdt1=1;smgdt2=1;break ;
}
xianshismg=disdelay[i];
delay(100);
xianshismg=0x00 ;
}
}
void main()
{
time0init ();
daojishi=1;
while(1)
{
if(daojishi==71)
{
daojishi=1;
}
if(daojishi<31)
{
disdelay[0]=smg[(30-daojishi)/10];
disdelay[1]=smg[(30-daojishi)%10];
disdelay[2]=0x00;
disdelay[3]=0x00;
disdelay[4]=0x00;
disdelay[5]=0x00;
disdelay[6]=0x00;
disdelay[7]=0x00;
ngfg( );
led=0xff; //所有燈初始化
green20=1 ;
red21=1;
green35=0;
green20=0;
red31=0;
red34=0 ;
}
else if(daojishi<36)
{
disdelay[0]=smg[(35-daojishi)/10];
disdelay[1]=smg[(35-daojishi)%10];
disdelay[2]=0x00;
disdelay[3]=0x00;
disdelay[4]=0x00;
disdelay[5]=0x00;
disdelay[6]=0x00;
disdelay[7]=0x00;
ngfg( );
led=0xff; //所有燈初始化
green20=1 ;
red21=1;
red31=0;
red21=0;
yello33=0;
yello36=0;
}
else if(daojishi<66)
{
disdelay[0]=smg[(65-daojishi)/10];
disdelay[1]=smg[(65-daojishi)%10];
disdelay[2]=0x00;
disdelay[3]=0x00;
disdelay[4]=0x00;
disdelay[5]=0x00;
disdelay[6]=0x00;
disdelay[7]=0x00;
ngfg( );
led=0xff; //所有燈初始化
green20=1 ;
red21=1;
green30=0 ;
green32=0;
red37=0;
red21=0;
}
else if(daojishi<71)
{
disdelay[0]=smg[(70-daojishi)/10];
disdelay[1]=smg[(70-daojishi)%10];
disdelay[2]=0x00;
disdelay[3]=0x00;
disdelay[4]=0x00;
disdelay[5]=0x00;
disdelay[6]=0x00;
disdelay[7]=0x00;
ngfg( );
led=0xff; //所有燈初始化
green20=1 ;
red21=1;
red31=0;
red21=0;
yello33=0;
yello36=0;
}
}
}
void time0() interrupt 1
{
static u16 i;
TH0= 0xfc; //每次定時中斷完成后都要重新賦值
TL0 =0x18; //每次定時中斷完成后都要重新賦值
i++;
if (i==1000)
{ i=0;
daojishi++;
}
}
復制代碼
Keil工程下載:
交通燈.rar
(29.71 KB, 下載次數: 16)
2021-5-1 22:34 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1