51单片机常见程序,附带注释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51 单片机常见程序

附带注释

三位数分离成3个一位数,截取

bai=num/100;//输出百位数

shi=num%100/10;//输出十位数

ge=num/10;//输出个位数

#include //跑马灯程序。当时间约为20ms,形成动态扫描,看上去全亮。

#include

#define uint unsigned int //无符号整型,占16位数,表示围0~65536

#define uchar unsigned char //无符号字符型占八位数,表示围0~255

void delayms(uint);

uchar aa; //定义变量

void main()

{

aa=0xfe;

while(1)

{

P2=aa; //控制单片机接口p2,循环亮

delayms(500); //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟

aa=_crol_(aa, 1);

}

}

void delayms(uint xms) //子程序,延时,通过数数

{

uint i, j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

#include //跑马灯程序。现在时间较长,多以是亮灭的流动,当时间约为20ms,形成动态扫描,看上去全亮。

#include

#define uint unsigned int //无符号整型,占16位数,表示围0~65536

#define uchar unsigned char //无符号字符型占八位数,表示围0~255

void delayms(uint);

uchar aa; //定义变量

void main()

{

aa=0xfe;

while(1)

{

P2=aa; //控制单片机接口p2,循环亮

delayms(500); //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟

aa=_crol_(aa, 1);

}

}

void delayms(uint xms) //子程序,延时,通过数数

{

uint i, j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

#include //52系列单片机头文件(目标:用单片机和两个共阴极数码管:使用单片机的引脚1和2,控制两个数码管静态显示00到59)

#define uchar unsigned char

#define uint unsigned int

sbit dula1=P1^7; //申明U1锁存器锁存端段选

sbit dula2=P0^7; //申明U1锁存器锁存端段选

uchar num,num1;

uchar code table[]={ //共阴极数码管0123456789abcdef

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delayms(uint) ;

void main ()

{

while(1)

{

for(num1=0;num1<=5;num1++)

{

for(num=0;num<=9;num++)

{

dula2=1; //打开U1锁存端

P1=table[num]; //送入位选信号

dula2=0; //关闭U1锁存器

delayms(100); //延时500毫秒约0.3s

dula1=1; //打开U1锁存端

P2=table[num1]; //送入位选信号

dula1=0; //关闭U1锁存器

delayms(100); //延时500毫秒约0.3s

}

}

}

}

void delayms (uint xms)

{

uint x, y ;

for (x=xms;x>0;x--) //x=xms即延时约为xms毫秒

for (y=200;y>0;y--);

}

#include //52系列单片机头文件(目标:用单片机和两个共阴极数码管)

#define uchar unsigned char

#define uint unsigned int

sbit dula1=P1^7; //申明U1锁存器锁存端段选

sbit dula2=P2^7; //申明U1锁存器锁存端段选

uchar num,num1;

uchar code table[]={ //共阴极数码管0123456789abcdef

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delayms(uint) ;

void main ()

{

while(1)

{

for(num1=0;num1<=9;num1++)

{

dula1=1; //打开U1锁存端

P1=table[num1]; //送入位选信号

dula1=0; //关闭U1锁存器

delayms(1000); //延时500毫秒约0.3s

for(num=0;num<=9;num++)

{

dula2=1; //打开U1锁存端

P1=table[num]; //送入位选信号

dula2=0; //关闭U1锁存器

相关文档
最新文档