QAIU 帝国的名字
c4droid汉化qaiu.top
关注数: 46 粉丝数: 488 发帖数: 1,665 关注贴吧数: 75
待定群规 汪星球的喵星人5月5日 22:12 1.粗口,刷屏, 用C语言实现红绿灯 源程序如下: #include <reg52.h> bit red,green,yellow,turnred; //定义红、黄、绿及转红标志 code unsigned char tab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管 0-9 unsigned char Dis_Shiwei;//定义十位 unsigned char Dis_Gewei; //定义个位 void delay(unsigned int cnt) //用于动态扫描数码管的延时程序 { while(--cnt); } main() { TMOD |=0x01;//定时器设置 10ms in 12M crystal定时器0,工作方式1,16位定时器 TH0=0xd8; //65535-10000=55535=D8F0(十六进制) TL0=0xf0; IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许 TR0=1; //开定时器0中断 P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。 red =1; while(1) { P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位 P2=0; delay(300);//短暂延时 P0=Dis_Gewei; //显示个位,左数,2位 P2=1; delay(300); } } /********************************/ /********************************/ void tim(void) interrupt 1 using 1 { static unsigned char second=60,count; //初值60 TH0=0xd8;//重新赋值,10毫秒定时 TL0=0xf0; count++; if (count==100) { count=0; second--;//秒减1 if(second==0) { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序 if(red) //红灭,先转黄 { red=0;yellow=1; second=4; P1=0xF3;//黄灯亮4秒,黄灯为过渡灯,再根据情况转绿或转红 } else if(yellow && !turnred) { yellow=0;green=1; second=25; P1=0xCF;//绿灯亮25秒, } else if(green) { yellow=1;green=0; second=4; P1=0xF3;//黄灯亮4秒 turnred=1; } else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1时 { red=1;yellow=0; P1=0xFC;//红灯亮60秒 second=60; turnred=0; //接下来是转黄,绿。 } } Dis_Shiwei=tab[second/10];//十位显示值处理 Dis_Gewei=tab[second%10]; //个位显示处理Dis_Shiwei=tab[second/10];//十位显示值处理 Dis_Gewei=tab[second%10]; //个位显示处理/********************************/ void tim(void) interrupt 1 using 1 { static unsigned char second=60,count; //初值60 TH0=0xd8;//重新赋值,10毫秒定时 TL0=0xf0; count++; if (count==100) { count=0; second--;//秒减1 if(second==0) { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序 if(red) //红灭,先转黄 { red=0;yellow=1; second=4; P1=0xF3;//黄灯亮4秒,黄灯为过渡灯,再根据情况转绿或转红 } else if(yellow && !turnred) { yellow=0;green=1; second=25; P1=0xCF;//绿灯亮25秒, } else if(green) { yellow=1;green=0; second=4; P1=0xF3;//黄灯亮4秒 turnred=1; } else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1时 { red=1;yellow=0; P1=0xFC;//红灯亮60秒 second=60; turnred=0; //接下来是转黄,绿。 } }51单片机用C语言实现交通灯(红绿灯)源程序 2009-10-2923:00 交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。 源程序如下: /* 1、程序目的:使用定时器学习倒计时红绿灯原理主要程序和倒计时一样 2、硬件要求:数码管、晶振12M */ #include<reg52.h> bitred,green,yellow,turnred; 标志//定义红、黄、绿及转红 codeunsignedchartab[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管0-9 unsignedcharDis_Shiwei;//定义十位 unsignedcharDis_Gewei;//定义个位 voiddelay(unsignedintcnt) 延时程序 { while(--cnt); } main() { TMOD|=0x01;//定时器设置10msin12Mcrystal定时器0,工作方式1,16位定时器 TH0=0xd8;//65535-10000=55535=D8F0(十六进制)TL0=0xf0; IE=0x82;//中断控制,EA=1开总中断,ET0=1:定时器0中断允许TR0=1;//开定时器0中断 P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。 red=1; while(1) { P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位 P2=0; delay(300);//短暂延时//用于动态扫描数码管的
1 下一页