资讯详情

单片机定时器0实现信号交通灯程序

本程序所用的原理图下载: 点这里 ,单片机芯片使用的stc89c52

/* *功能:定时器0实现信号交通灯 * *日期:2013-05-07-08:41 *作者:徐冉 *特别说明:本程序代码已经通过调试,仅供学习使用; * */ /***********AT89C52-RC 单片机实验板***********/ /*****************51hei-*********************/ #include <reg52.h> typedef unsigned int uint; typedef unsigned char uchar; sbit LED_hong = P1^0;//红信号灯 sbit LED_lv = P1^2; //绿信号灯 sbit wela = P2^7; sbit dula = P2^6; uchar code table[] = { 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x77, //"A" 0x7C, //"B" 0x39, //"C" 0x5E, //"D" 0x79, //"E" 0x71, //"F" 0x76, //"H" 0x38, //"L" 0x37, //"n" 0x3E, //"u" 0x73, //"P" 0x5C, //"o" 0x40, //"-" 0x00, //熄灭 0x00 //自定义 }; uchar num = 30, counter; void init(); void display(uint num); void delay(uint xms); void main() { init(); while(1) { if(counter == 50) { counter = 0; num--; if(num == 0) { num = 30; LED_hong = ~LED_hong; LED_lv = ~LED_lv; } } display(num); } }

void init() { LED_hong = 0; LED_lv = 1; TMOD = 0x01; TH0 = 0xB8; TL0 = 0x00; TR0 = 1; EA = 1; ET0 = 1;

}

void display(uint num) { uchar shi, ge;

shi = num / 10 % 10; ge = num % 10;

dula = 1; P0 = table[shi]; dula = 0; P0 = 0xff; wela = 1; P0 = 0xfe; wela = 0; P0 = 0x00; delay(1);

dula = 1; P0 = table[ge]; dula = 0; P0 = 0xff; wela = 1; P0 = 0xfd; wela = 0; P0 = 0x00; delay(1); }

void delay(uint xms) { uint i, j; for(i = xms; i > 0; i--) for(j = 125; j > 0; j--); }

void int_time0() interrupt 1 { TH0 = 0xB8; TL0 = 0x00; counter++; }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台