完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
给大家分享一下前段时间做的基于51单片机的交通灯设计,用于大家学习交流,希望能给大家带来一点点帮助。
所需元器件如下: STC89C52RC芯片 *1 10K电阻 *1 330Ω电阻 *22 10uF 电解电容 *1 22pF 瓷片电容 *2 12MHz晶振 *1 按键 *1 8550 *8 单位7段数码管 *8 黄色LED *4 红色LED *4 绿色LED *4 程序代码如下: #include"reg51.h" #define LEDSS1 0 //定义数码管对应存储数组下标号 #define LEDSS2 1 //定义数码管对应存储数组下标号 #define LEDSN1 2 //定义数码管对应存储数组下标号 #define LEDSN2 3 //定义数码管对应存储数组下标号 #define LEDSW1 4 //定义数码管对应存储数组下标号 #define LEDSW2 5 //定义数码管对应存储数组下标号 #define LEDSE1 6 //定义数码管对应存储数组下标号 #define LEDSE2 7 //定义数码管对应存储数组下标号 ***it NSG=P3^0; //定义南北方向绿灯 ***it NSY=P3^1; //定义南北方向黄灯 ***it NSR=P3^2; //定义南北方向红灯 ***it WEG=P3^3; //定义东西方向绿灯 ***it WEY=P3^4; //定义东西方向黄灯 ***it WER=P3^5; //定义东西方向红灯 unsigned char code LED[12]= //定义数码管显示数组 { 0XC0,0XF9,0XA4,0XB0,0X99,0X92, 0X82,0XF8,0X80,0X90,0XFF,0XF6 }; unsigned char code dispbit[8]= //定义数码管位选 { 0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F }; unsigned char dat[9]={0,0,0,0,0,0,0,0}; //可调用数码管显示数组 void delay(unsigned int x) { unsigned char i; while(x--) { for(i=0;i<100;i++); } } void save_dat(unsigned char second) { dat[LEDSS1]=second/10; //北方向秒十位存储 dat[LEDSS2]=second%10; //北方向秒个位存储 dat[LEDSN1]=second/10; //南方向秒十位存储 dat[LEDSN2]=second%10; //南方向秒个位存储 dat[LEDSW1]=second/10; //西方向秒十位存储 dat[LEDSW2]=second%10; //西方向秒个位存储 dat[LEDSE1]=second/10; //东方向秒十位存储 dat[LEDSE2]=second%10; //东方向秒个位存储 } void main(void) { unsigned char ledcount=0; unsigned int circle_count=0; unsigned char second=25; unsigned char jtd_status=1; unsigned char flash_count=3; NSG=1; NSY=1; NSR=0; WEG=1; WEY=1; WER=0; save_dat(second); while(1) { switch(jtd_status) { case 1: if(circle_count%200==0) { NSR=1; WER=0; NSG=0; WEY=1; save_dat(second); second--; } if(circle_count>3200) { circle_count=0; jtd_status=2; } break; case 2: if(circle_count>200) { NSG=1; circle_count=0; save_dat(second); second--; flash_count--; if(flash_count>0) jtd_status=3; else jtd_status=4; } break; case 3: if(circle_count>200) { NSG=0; circle_count=0; save_dat(second); second--; jtd_status=2; } break; case 4: if(circle_count>200) { NSY=0; circle_count=0; save_dat(second); second--; if(second==0) { jtd_status=5; second=25; } } break; case 5: if(circle_count%200==0) { NSG=1; NSY=1; NSR=0; WER=1; WEY=1; WEG=0; save_dat(second); second--; } if(circle_count>3200) { circle_count=0; jtd_status=6; flash_count=3; } break; case 6: if(circle_count>200) { WEG=1; circle_count=0; save_dat(second); second--; flash_count--; if(flash_count>0) jtd_status=7; else jtd_status=8; } break; case 7: if(circle_count>200) { WEG=0; circle_count=0; save_dat(second); second--; jtd_status=6; } break; case 8: if(circle_count>200) { circle_count=0; WEY=0; WEG=1; save_dat(second); second--; if(second==0) { jtd_status=1; second=25; flash_count=3; } } break; default:break; } P2=0xff; P0=LED[dat[ledcount]]; P2=dispbit[ledcount]; ledcount++; if(ledcount>7) ledcount=0; delay(5); circle_count++; } } |
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:17 , Processed in 1.250373 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号