新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于89C52单片机的红外遥控双模式交通灯控制系统

基于89C52单片机的红外遥控双模式交通灯控制系统

作者:时间:2012-08-31来源:网络收藏

#includereg52.h>

#define uint unsigned int

#define uchar unsigned char

uint aa,num,MODEL1,numa,HMODE1;

uchar shi,ge,gtime,rtime;

… …

sbit dula=P1^0; // 段选

sbit wela=P1^1; // 位选

sbit LED1=P1^2; // 东西(红灯)

sbit LED2=P1^5; // 南北(红灯)

sbit LED3=P1^6; // 南北(黄灯)

sbit LED4=P1^3; // 东西(黄灯)

sbit LED5=P1^7; // 南北(绿灯)

sbit LED6=P1^4; // 东西(绿灯)

sbit KEY1=P3^5;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar table1[]={0xbf,0x7f};

void delay(uchar z) // 延时函数

{ uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void init()

{ TMOD=0x01; // 选择方式一,16 位计数器

TH0=15536/256;

TL0=15536%256; // 定时器高、低位,置入初值

EA=1; // 中断允许总控制位

ET0=1; // 定时器0 中断允许控制位

TR0=1; // 定时器0 运行控制位

aa=0;

gtime=60;

rtime=40;

num=1;

numa=1;

MODEL1=1;

HMODE1=0;}

定时的函数及原理:

工作于定时状态时,定时/计数器对机器周期进行计数,每个机器周期包括12个振荡周期,以晶振频率为12MHZ 为例,则:

1 个机器周期=12/晶振频率=12/12000000=0.001ms定时时间为:TC=XTP。其中,TP 为机器周期,TC 为定时时间。

则应装入计数/定时器的初值为:

(注:M=2n , TP 为机器周期,TC 为定时时间)

对于方式1,一次最大的定时时间为:T=(216-0)×0.001=65.536ms ,为了便于计算,设定每次最大定时时间为50ms,计算应装入的初值:N = 65536 ? 50000 = 15536

显示子函数:

通过对锁存器进行位选,段选的控制,使数码管显示需要的数字。

红外遥控器相关文章:红外遥控器原理


评论


相关推荐

技术专区

关闭