51单片机基本程序精校版本Word文档下载推荐.docx

上传人:b****5 文档编号:18762566 上传时间:2023-01-01 格式:DOCX 页数:21 大小:16.98KB
下载 相关 举报
51单片机基本程序精校版本Word文档下载推荐.docx_第1页
第1页 / 共21页
51单片机基本程序精校版本Word文档下载推荐.docx_第2页
第2页 / 共21页
51单片机基本程序精校版本Word文档下载推荐.docx_第3页
第3页 / 共21页
51单片机基本程序精校版本Word文档下载推荐.docx_第4页
第4页 / 共21页
51单片机基本程序精校版本Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

51单片机基本程序精校版本Word文档下载推荐.docx

《51单片机基本程序精校版本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机基本程序精校版本Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

51单片机基本程序精校版本Word文档下载推荐.docx

0xF0,0x0F,0xF0,0x0F,0xFF,//高四盏。

低四盏闪烁2次

0x33,0xCC,0x33,0xCC,0x33,0xCC,0xFF//隔两盏闪烁3次

};

voiddelayms(uintms)

uinti;

while(ms--)

for(i=0;

i<

120;

i++);

voidmain(void)

{

uchari;

P0=0xFF;

for(i=0;

35;

i++)

P0=discode[i];

delayms(250);

}

3拉幕式与闭幕式广告灯

uchardiscode1[4]={0x18,0x24,0x42,0x81};

uchardiscode2[4]={0x7E,0x3C,0x18,0x00};

{

for(i=0;

}

uchari,j;

4;

{

j=discode1[i];

P0=~j;

delayms(500);

}

j=0xFF;

P0=~j;

delayms(500);

j=discode2[i];

4流水灯跑马灯左移右移

voiddelay(uints)

while(s--)

j=0x01;

8;

delay(500);

j=j<

<

1;

P0=0xFF;

delay(1000);

j=0x80;

j=j>

>

5千位静态显示数字

sbitSMG_q=P1^0;

//定义数码管阳级控制脚(千位)

sbitSMG_b=P1^1;

//定义数码管阳级控制脚(百位)

sbitSMG_s=P1^2;

//定义数码管阳级控制脚(十位)

sbitSMG_g=P1^3;

//定义数码管阳级控制脚(个位)

SMG_q=0;

P0=0xF8;

while

(1);

6,4位数码管同时静态显示

#defineuncharunsignedchar

uncharmun;

uchar;

codetable[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

voiddelay(uint);

SMG_b=0;

SMG_s=0;

SMG_g=0;

//P1=0xf0;

两种都可以实现。

for(mun=0;

mun<

16;

mun++)

P0=table[mun];

delay(500);

for(i=120;

i--);

7.数码管动态显示

sbitq=P1^0;

sbitb=P1^1;

sbits=P1^2;

sbitg=P1^3;

//uncharmun;

q=0;

P0=table[1];

delay(500);

q=1;

b=0;

P0=table[2];

b=1;

s=0;

P0=table[3];

s=1;

g=0;

P0=table[4];

g=1;

8.1中断定时器0工作1LED1s闪烁

ucharnum;

TMOD=0x01;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1;

ET0=1;

TR0=1;

voidT0_time()interrupt1

num++;

if(num==50)

num=0;

led1=~led1;

8.2中断定时器LED,前两位数码管59s循环计数

sbitled1=P0^0;

ucharcodetable[]={

voiddisplay(uchar,uchar);

ucharnum,num1,num2,shi,ge;

TMOD=0x11;

TH1=(65536-45872)/256;

TL1=(65536-45872)%256;

ET1=1;

TR1=1;

display(shi,ge);

voiddisplay(ucharshi,ucharge)

{P1=0xff;

P1=0xfd;

P0=table[shi];

delay(10);

P1=0x00;

P1=0xff;

P1=0xfe;

P0=table[ge];

uinti,j;

for(i=s;

for(j=110;

voidT0_time()interrupt1

num1++;

if(num1==50)

num1=0;

voidT1_time()interrupt3

num2++;

if(num2==20)

num2=0;

if(num==60)

shi=num/10;

ge=num%10;

}

//灯的亮灭。

9.1独立键盘使用

sbitk1=P3^4;

//独立键盘,k1k2k3k4分别接,p34.p35p36p37.

sbitk2=P3^5;

sbitk3=P3^6;

sbitk4=P3^7;

sbitd=P1^2;

sbitc=P1^3;

voiddelayms(uint);

ucharnumt0,num;

voiddisplay(ucharnumdis)//显示59s的常用方式

{ucharshi,ge;

shi=numdis/10;

ge=numdis%10;

//控制十位数字

delayms(10);

//控制个位数字

voiddelayms(uintxms)//简单的延时程序

for(i=xms;

voidinit()//初始化函数

voidkeyscan()//控制键盘的程序

if(k1==0)

//去抖动延时

while(!

k1);

//等待按键释放

if(k2==0)

if(num==0)

num=60;

num--;

k2);

if(k3==0)

if(k3==0)

k3);

if(k4==0)

if(k4==0)

k4);

TR0=~TR0;

voidmain()//主函数

init();

//1,先初始化数据init()

keyscan();

//键盘选择?

display(num);

//显示两位数字函数

voidT0_time()interrupt1//中断服务程序

numt0++;

if(numt0==20)//1s的判断

numt0=0;

9.2矩阵键盘使用

voiddelayms(uintxms)

voiddisplay(ucharnum)

P0=table[num];

P1=0xf0;

voidjianpan()

uchartemp,key;

P3=0xfe;

temp=P3;

temp=temp&

0xf0;

if(temp!

=0xfe)//11111高位没有零,(没有键按下)

//随时可能有键按下

=0xfe)

switch(temp)

case0xee:

key=0;

break;

case0xde:

key=1;

case0xbe:

key=2;

case0x7e:

key=3;

while(temp!

=0xf0)//等待键盘释放

temp=P3;

display(key);

P3=0xfd;

=0xfe)//222222高位没有零,(没有键按下)

case0xed:

key=4;

case0xdd:

key=5;

case0xbd:

key=6;

case0x7d:

key=7;

=0xf0)

P3=0xfb;

=0xfe)//333333高位没有零,(没有键按下)

case0xeb:

key=8;

case0xdb:

key=9;

case0xbb:

key=10;

case0x7b:

key=11;

P3=0xf7;

=0xfe)//44444高位没有零,(没有键按下)

case0xe7:

key=12;

case0xd7:

key=13;

case0xb7:

key=14;

case0x77:

key=15;

P1=0x0f;

//打开数码管选通开关

jianpan();

//扫描键盘程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1