首页 » 技术SOS » 元件/连接器 » 关于51单片机的交通灯定时问题,拜托

关于51单片机的交通灯定时问题,拜托

菜鸟
2014-03-31 09:46:25
初学者,不知道这个交通灯程序是怎么做到的显示数的,谢谢了 #include //--定义使用的IO口--// #define GPIO_DIG P0 #define GPIO_PLACE P1 #define GPIO_TRAFFIC P2 sbit RED10 = P2^0; //上人行道红灯 sbit GREEN10 = P2^1; //上人行道绿灯 sbit RED11 = P2^2; sbit YELLOW11= P2^3; sbit GREEN11 = P2^4; sbit RED00 = P3^0; //右人行道红灯 sbit GREEN00 = P3^1; //右人行道绿灯 sbit RED01 = P2^5; sbit YELLOW01= P2^6; sbit GREEN01 = P2^7; //--定义全局变量--// unsigned char code DIG_PLACE[8] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制 unsigned char code DIG_CODE[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 unsigned char Time, Second; //用来存放定时时间 //--声明全局函数--// void DigDisplay(); //动态显示函数 void Timer0Cofig(void); /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { Second = 1; Timer0Cofig(); while(1) { if(Second == 70) { Second = 1; } //--宝田路通行,30秒--// if(Second
问题补充: 就是那个30秒是怎么出来的,准确么?定时器程序是如何做到的30秒定时?
关键词: 程序, 交通灯定时  

最佳回复

助工
2014-04-01 15:33:32
1楼

Timer0Cofig(); 假如这个是初始化定时器、、、、 那么Second在 定时器中断里自加、、 我估计 他定的是400多ms 进一次定时器中断 30s=30000ms------- 30000/70=428.57ms 那么加上中断外面程序的时间 设置定时器初始值428 应该在30s TH=-428000/256; TL=-428000%256;