51单片机实例分享Word文档格式.docx

上传人:b****7 文档编号:22384947 上传时间:2023-02-03 格式:DOCX 页数:23 大小:18.91KB
下载 相关 举报
51单片机实例分享Word文档格式.docx_第1页
第1页 / 共23页
51单片机实例分享Word文档格式.docx_第2页
第2页 / 共23页
51单片机实例分享Word文档格式.docx_第3页
第3页 / 共23页
51单片机实例分享Word文档格式.docx_第4页
第4页 / 共23页
51单片机实例分享Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

51单片机实例分享Word文档格式.docx

《51单片机实例分享Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机实例分享Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

51单片机实例分享Word文档格式.docx

花样表格

unsignedcharcodeseg[]={0x7f,0xbf,0xdf,0xef,

0xf7,0xfb,0xfd,0xfe,

0xff,0xff,0x00,0x00,

0x55,0x55,0xaa,0xaa

};

//rom允许情况可以无限添加

voidDelay(unsignedintt);

//函数声明

main()

unsignedchari;

//定义一个无符号字符型

//局部变量i取值范围0~255

while

(1)

{

P0=0xFE;

//第1个LED亮

for(i=0;

i<

8;

i++)

Delay(20000);

P0<

<

=1;

}

P0=0x7F;

//第8个LED亮

P0>

>

P0|=0x01;

P0|=0x80;

//下面通过查表方法获得花样参数

16;

i++)//查表可以简单的显示各种花样实用性更强

P0=seg[i];

}

延时函数,含有输入参数unsignedintt,无返回值

unsignedint是定义无符号整形变量,其值的范围是

0~65535

voidDelay(unsignedintt)

while(--t);

4、数码管滚动显示HELLO

#include<

//51芯片管脚定义头文件

intrins.h>

//内部包含延时函数_nop_();

#defineucharunsignedchar

#defineuintunsignedint

uchardisplay[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xBF,0xBF,0x89,0x86,0xC7,0xC7,0xC0,0xBF,0xBF,

//--HELLO-

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};

ucharshift,j=0;

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

/*延时子程序*/

voiddelayms(uintms)

uchart;

while(ms--)

{

for(t=0;

t<

120;

t++);

}

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

/*显示函数*/

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

voiddisp(void)

uchari;

shift=0x01;

for(i=8;

i>

0;

i--)

{

P0=display[i+j];

P1=shift;

shift=(shift<

1);

delayms

(1);

}

P1=0x00;

/*函数*/

voidmain()

uchark;

P0=0xff;

P1=0xff;

while

(1)

for(j=0;

j<

17;

j++)

for(k=0;

k<

125;

k++)

disp();

5、蜂鸣器发声

sbitSPK=P3^5;

//定义喇叭端口

函数声明

voidDelayUs2x(unsignedchart);

//函数声明

voidDelayMs(unsignedchart);

DelayMs

(1);

//发出大约500Hz的方波频率越大声音越尖,如果只需它发声,则只需SPK=0;

即可

SPK=!

SPK;

uS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

voidDelayUs2x(unsignedchart)

while(--t);

mS延时函数,含有输入参数unsignedchart,无返回值

0~255这里使用晶振12M,精确延时请使用汇编

voidDelayMs(unsignedchart)

while(t--)

//大致延时1mS

DelayUs2x(245);

6、矩阵键盘

#defineucharunsignedchar

#defineuintunsignedint

sbitbeep=P3^5;

unsignedcharconstdisplay[]={0xc0,0xf9,0xa4,0xb0,

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

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

0xa7,0xa1,0x86,0x8e};

//0-F

------------------------------------------------*/

ucharkeyscan(void);

//键盘扫描

voiddelay(uinti);

//延时

/*蜂鸣器发音子程序*/

voidSpeak(void)

beep=!

beep;

delay(1000);

beep=1;

voidmain()

ucharkey;

P1=0xff;

//1数码管亮按相应的按键,会显示按键上的字符

key=keyscan();

//调用键盘扫描,

switch(key)

case0xee:

P0=display[0];

break;

//0按下相应的键显示相对应的码值

case0xde:

P0=display[1];

//1

case0xbe:

P0=display[2];

//2

case0x7e:

P0=display[3];

//3

case0xed:

P0=display[4];

//4

case0xdd:

P0=display[5];

//5

case0xbd:

P0=display[6];

//6

case0x7d:

P0=display[7];

//7

case0xeb:

P0=display[8];

//8

case0xdb:

P0=display[9];

//9

case0xbb:

P0=display[10];

//a

case0x7b:

P0=display[11];

//b

case0xe7:

P0=display[12];

//c

case0xd7:

P0=display[13];

//d

case0xb7:

P0=display[14];

//e

case0x77:

P0=display[15];

//f

键盘扫描程序

ucharkeyscan(void)//键盘扫描函数,使用行列反转扫描法

ucharcord_h,cord_l;

//行列值中间变量

P2=0x0f;

//行线输出全为0

cord_h=P2&

0x0f;

//读入列线值

if(cord_h!

=0x0f)//先检测有无按键按下

delay(100);

//去抖

=0x0f)

P2=cord_h|0xf0;

//输出当前列线值

cord_l=P2&

0xf0;

//读入行线值

return(cord_h+cord_l);

//键盘最后组合码值

Speak();

return(0xff);

//返回该值

延时程序

voiddelay(uinti)//延时函数

while(i--);

7、串口通信

AT89X51.h>

ucharidatatrdata[]={'

1'

'

2'

3'

4'

5'

6'

7'

8'

0x0d,0x0a,0x00};

ucharidatatrdata1[]={'

Y'

Z'

0'

/*主程序*/

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

uchari;

uintj;

SCON=0x40;

//串口方式1

PCON=0;

//SMOD=0

REN=1;

//允许接收

TMOD=0x20;

//定时器1定时方式2

TH1=0xf3;

//12MHz2400波特率

TL1=0xf3;

TR1=1;

//启动定时器

i=0;

while(trdata[i]!

=0x00)

SBUF=trdata[i];

while(TI==0);

TI=0;

i++;

for(j=0;

50000;

j++);

while(trdata1[i]!

SBUF=trdata1[i];

8、LCD1602液晶显示

reg51.h>

sbitRS=P2^0;

sbitRW=P2^1;

sbitE=P2^2;

voidinit();

voidwrite_com(uint);

voidwrite_dat(uint);

voiddelay(uintz);

uintnum;

chartable[]="

yanyanzhong"

;

init();

for(num=0;

num<

13;

num++)

{

write_dat(table[num]);

//delay(500);

while

(1);

voidinit()//初始化

write_com(0x38);

//显示设置

write_com(0x0c);

//光标不闪烁

write_com(0x06);

//写入字符光标右移

write_com(0x01);

//清屏

write_com(0x80);

//设置数据指针

voidwrite_com(uinta)//写指令

RS=0;

RW=0;

P0=a;

delay(5);

E=1;

E=0;

voidwrite_dat(uintb)//写数据

RS=1;

P0=b;

voiddelay(uintz)

uintx,y;

for(x=z;

x>

x--)

for(y=115;

y>

y--);

9、LCD12864显示汉字

sbitPSB=P2^3;

ucharcodetable[]={"

^_^温度湿度加速度^_^"

};

voidread();

voidwrite(uchar,bit);

voidwritestring(uchar,uchar,uchar*p);

writestring(0,0,table);

writestring(3,3,"

小豆豆儿"

);

while

(1);

voidread()//读忙函数

uchari=255;

P0=0xff;

RW=1;

while((i--)&

&

(P0&

0x80));

//检测数据口高位,0为空闲

voidwrite(uchardat,bitcommand)//写函数

read();

P0=dat;

RS=command;

_nop_();

voidinit()//初始化

PSB=1;

//串并口选择,选并口

write(0x38,0);

//8位点阵显示

write(0x01,0);

write(0x0c,0);

//开显示关光标

voidwritestring(ucharx,uchary,uchar*p)//写字符串

if(x==1)

x=2;

elseif(x==2)

x=1;

write(0x80+8*x+y,0);

while(*p)

write(*p,1);

p++;

10、DS18B20测温度

sbitDS=P3^4;

sbitledlk=P1^0;

sbitsmglk=P1^1;

sbitsmgbitlk=P1^2;

uinttemp;

voiddelay(uintms)

uinti,j;

ms;

j++)

for(i=0;

120;

i++);

voiddelayus(uintus)

us;

12;

voidshowsmg(ucharsmg,ucharvalue)

ucharcodetablesmg[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x80};

smglk=1;

P2=tablesmg[smg];

smglk=0;

smgbitlk=1;

P2=table[value];

smgbitlk=0;

delay(3);

voiddsreset(void)

DS=0;

delayus(10);

DS=1;

bittmpreadbit(void)

uinti;

bitdat;

dat=DS;

delayus

(1);

return(dat);

uchartmpread(void)

uchari,j,dat;

dat=0;

for(i=1;

=8;

j=tmpreadbit();

dat=(j<

7)|(dat>

return(dat);

voidtmpwritebyte(uchardat)

ucharj;

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

当前位置:首页 > 外语学习 > 英语考试

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

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