网站导航: 首页 > 设计参考 > 正文 文章搜索
51单片机C语言编程基础及实例
 
文章编号:
090106102159
文章分类: 单片机 51系列
点 击:
...
关 键 词: C语言,基础,实例
文章来源:
网络
摘 要:
基础知识:51单片机编程基础。第一节:单数码管按键显示。第二节:双数码管可调秒表。第三节:十字路口交通灯。第四节:数码管驱动。第五节:键盘驱动。第六节:低频频率计。第七节:电子表。第八节:串行口应用。

 

第三节:十字路口交通灯
如果一个单位时间为1秒,这里设定的十字路口交通灯按如下方式四个步骤循环工作:
? 60个单位时间,南北红,东西绿;
? 10个单位时间,南北红,东西黄;
? 60个单位时间,南北绿,东西红;
? 10个单位时间,南北黄,东西红;
解:用P1端口的6个引脚控制交通灯,高电平灯亮,低电平灯灭。

 

 
  1. #include <at89x52.h>       
  2. //sbit用来定义一个符号位地址,方便编程,提高可读性,和可移植性       
  3. sbit SNRed =P1^0;  //南北方向红灯       
  4. sbit SNYellow =P1^1;  //南北方向黄灯       
  5. sbit SNGreen =P1^2;  //南北方向绿灯       
  6. sbit EWRed =P1^3;  //东西方向红灯       
  7. sbit EWYellow =P1^4;  //东西方向黄灯       
  8. sbit EWGreen =P1^5;  //东西方向绿灯       
  9. /* 用软件产生延时一个单位时间 */      
  10. void Delay1Unit( void )          
  11. {       
  12.     unsigned int i, j;       
  13.     for( i=0; i<1000; i++ )        
  14.         for( j<0; j<1000; j++ ); //通过实测,调整j循环次数,产生1ms延时       
  15.         //还可以通过生成汇编程序来计算指令周期数,结合晶体频率来调整j循环次数,接近1ms       
  16. }       
  17. /* 延时n个单位时间 */      
  18. void Delay( unsigned int n )   
  19. {    
  20.     for( ; n!=0; n-- )    
  21.         Delay1Unit();    
  22. }       
  23. void main( void )       
  24. {       
  25.     while( 1 )       
  26.     {        
  27.         SNRed=0; SNYellow=0; SNGreen=1; EWRed=1; EWYellow=0; EWGreen=0; Delay( 60 );       
  28.         SNRed=0; SNYellow=1; SNGreen=0; EWRed=1; EWYellow=0; EWGreen=0; Delay( 10 );       
  29.         SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=0; EWGreen=1; Delay( 60 );       
  30.         SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=1; EWGreen=0; Delay( 10 );       
  31.     }       
  32. }      


 

 
相关文章:

上一页 123456789 下一页
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4