89c51单片机的简单运用1--数码管、流水灯

来源:互联网 发布:mysql truncate 恢复 编辑:程序博客网 时间:2024/04/28 17:58

一.简单的点灯程序需要记住的

1.单片机控制开发板的二极管亮灭:

由单片机的P1口控制,注意开发板的原理图,分清楚到底是给低电平亮还是高电平亮,一般都给低电平亮。

控制灯分为总线法和位选法,总线法是用十六进制数控制P1口的高低电平,1为高,0为低,位选是选出P1口的任意一位操作。

流水灯是通过延时函数或定时器延时,依次控制不同的灯亮来完成流水灯

2.数码管的静态显示和动态扫描:

Lab-MCS51开发板通过单片机的P^0~P^3口分别控制四个数码管的亮灭,每个数码管显示的内容由P0口控制,

控制线路图如上,通过P0使a,b,c,d,e,f,g,dp亮,显示不同的数字或符号。

动态扫描是减少数码管间亮的间隙,使人的视觉感觉不出,造成数码管同时亮的假象。

#include<reg52.h>  //52单片机头文件void main()   //主函数{unsigned int i; //定义一个int型变量while(1){i=50000;    //变量赋初值为50000P1=0xfe;//点亮第一个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xfd;//点亮第二个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xfb;//点亮第三个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xf7;//点亮第四个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xef;//点亮第五个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xdf;//点亮第六个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0xbf;//点亮第七个灯while(i--);     //延时i=50000;    //变量赋初值为50000P1=0x7f;//点亮第八个灯while(i--);     //延时}  }

流水灯;

 #include <reg52.h>#include<intrins.h>void main (){  int i, j ,k  ; // for(i=0;i<8;i++)    P1=0xfe;for(j=0;j<50000000;j++)P1=_crol_(P1,1); //for(k=0;k<50000000;k++) ;   }

数码管显示

 #include <reg52.h> #define uchar unsigned char #define uint unsigned int //sbit wela=P2^7;// sbit dula=P2^6; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10}; uchar num; void delay(uint z) { uint x,y;for(x=100;x>0;x--)    for(y=z;y>0;y--); } void main() {//wela=1;P2=0xf0;//wela=0;while(1){for(num=0;num<10;num++){//dula=1;P0=table[num];//dula=0;delay(500);}} }


原创粉丝点击