您的位置:

黄哥c语言视频,黄健 c语言

黄哥c语言视频,黄健 c语言

更新:

本文目录一览:

如何用c语言编程在单片机上做交通信号灯

硬件电路设计

此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。因此,可加输出锁存器。在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。

(1)电路连接图:

三、软件程序(C语言)

    以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。

//*****************************//

//程序名:十字路口交通灯控制

//编写人:黄庭剑

//初写时间:2009年1月2日

//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.

//CPU说明:AT89C51型单片机; 24MHZ晶体振荡器

//完成时间:2009年1月6日

//*****************************//

#includestdio.h

#includereg51.h

#includeintrins.h

sfr p0   = 0x80;

sfr p1   = 0x90;

sfr p2   = 0xA0;

sfr p3   = 0xb0;      //这部分内容其实在“#includereg51.h”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。其实两者是一样的。

sbit  sw      = p0^0;

sbit   OE    =P0^6;

sbit   LE    =P0^7;  //74LS373锁存器控制端定义

char  display[]={ 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99 }; //p1口的数码管时间显示调用,利用74L74BCD码,8位驱动输出;

//函数声明 begin

void  delay1(int count);

void  delay_long(int  number1,int number2);

void    people_car_drive();

//函数声明end

//***********************//延时子程序

void  delay1(int  count)

 { int  i;

   for(i=count;i0;i--)

       { ;} 

 }

void  delay_long(int  number1,int number2)

  {

   int a,b;

 for(a=number1;a0;a--)

   {

    for(b=number2;b0;b--)

     { _nop_();     }

   }

    

  }

//**********************//延时子程序

 void   people_car_drive()

 {

   int   p_1=2,i,j=9,p_2=6;    //****************//行人通行时,延时20秒

          p2=0x09;                     //南北红灯亮

       p3=0x24;                     //东西绿灯亮

    

  while(p_1--0)

     { LE=1;

    OE=0;

    if(p_1==0){OE=1;}            //当十位数减到0时,只显示个位数

    p1=display[p_1];

    delay1(1000);

    LE=0;  

    j=9;

     for(i=10;i0;i--)

   { 

     if(p_1==0j==3)break;     //减到3时退出循环,让其黄灯闪烁显示

     p1=display[j--];

     delay_long(16000,2);

  if(sw==1)return;   

   }

   

     } 

   

//*******************************************************************************//

                  

     p2=0x12;                  //南北黄灯闪烁三秒,以提醒行人注意

     p3=0x12; 

  p1=display[3]; 

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;     

  delay_long(14000,1);

    

  p2=0x12;

  p3=0x12;

  p1=display[2];

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;

  delay_long(14000,1);

  

  p2=0x12;

  p3=0x12;

  p1=display[1];

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;

  delay_long(14000,1);

//*****************以下是车辆通行时延时60秒//

 

   p2=0x24;                 //南北绿灯亮

   p3=0x09;                 //东西红灯亮

  

     while(p_2--0)

     { LE=1;

    OE=0;

    if(p_2==0){OE=1;}       //当十位数减到0时,只显示个位数

    p1=display[p_2];

    delay1(1000);

    LE=0;

    j=9;

     for(i=10;i0;i--)

   { 

  if(p_2==0j==3)break;  //减到2时退出循环

     p1=display[j--];

     delay_long(16000,2);

  if(sw==1)return;     

   }

     }

   

     p2=0x12;                //南北黄灯闪烁三秒,以提醒行人注意

     p3=0x12; 

  p1=display[3]; 

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;     

  delay_long(14000,1);

    

  p2=0x12;

  p3=0x12;

  p1=display[2];

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;

  delay_long(14000,1);

  

  p2=0x12;

  p3=0x12;

  p1=display[1];

  delay_long(8000,1);

  p2=0x00;     

     p3=0x00;

  delay_long(14000,1);    //南北黄灯闪烁三秒完毕

 }

 

 void  main()               //主函数入口处

{

       p0=0x01;

       p1=0x00;

       p2=0x00;

       p3=0x00;               //初始化各端口

 { while(1) 

  {

     if(sw==0)

    {  people_car_drive();}

else

  {

   p2=0x00;

   p3=0x00;                    //关闭所有交通灯

  }

  }

  

 }

}

自学C语言教程

没有基础可以入门,通过努力可以达到初、中级程序员的程度,但再往上走,就比较困难了。后面需要不少算法、英文和数学知识。

教程的话可以参考下面两本教程:

谭浩强:《C语言程序设计》

李铭城 黄中豪 陈宇芬:《资料结构 C》

英文的话,进入初级之前都不怎么需要。但是进入中级后,需要读一些英文资料。不过现在翻译比较厉害,绝大部分的资料都有翻译。但是要进入高级,就必须要学习英文了,因为最新最核心的资料都是英文的,翻译的往往都会有错误。

另外数学在早期影响不大,但是进入中级后就必须要了。因为估算算法时间复杂度、空间复杂度、图、树等等,都涉及不少数学知识。当然如果只是做简单应用或者驱动的话,这方面要求就不会太高。

最后给一个学习大概的路线图:

入门级的学习,只要能够掌握:代码三大结构(循环、分支、顺序)、流程图、C语言关键字和语法、输入输出、文件操作、套接字操作。就算是初级满级了。

初级程序员:数据结构和算法(排序,查找)、了解软件开发模型(瀑布模型、敏捷模型、原型模型等等)、了解UML、系统常用API、网络通信、编译和SDK环境搭建

中级程序员:设计模式、多线程编程、网络通信(服务器、客户端)、面向对象编程、掌握UML、系统网络/文件/互斥/线程/事件/安全API、STL、相关法律法规、知道一些常用软件架构(MVC等)

我需要郝斌老师c语言教程180个视频。

verycd上的可以下的。可用迅雷下,较快。

你先打开迅雷,打开verycd中那一页,再点“打开连接”,点允许,就会调用迅雷来下。