51单片机的八个课程设计.docx

上传人:b****0 文档编号:25903652 上传时间:2023-06-16 格式:DOCX 页数:82 大小:30.26KB
下载 相关 举报
51单片机的八个课程设计.docx_第1页
第1页 / 共82页
51单片机的八个课程设计.docx_第2页
第2页 / 共82页
51单片机的八个课程设计.docx_第3页
第3页 / 共82页
51单片机的八个课程设计.docx_第4页
第4页 / 共82页
51单片机的八个课程设计.docx_第5页
第5页 / 共82页
点击查看更多>>
下载资源
资源描述

51单片机的八个课程设计.docx

《51单片机的八个课程设计.docx》由会员分享,可在线阅读,更多相关《51单片机的八个课程设计.docx(82页珍藏版)》请在冰豆网上搜索。

51单片机的八个课程设计.docx

51单片机的八个课程设计

Fjfh清华设计2009

11.

八路彩灯控制系统

八路彩灯控制系统八路彩灯控制系统

八路彩灯控制系统

设计要求

用89S52单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管程序,

通电后所有彩灯亮,带复位,通过按钮实现彩灯的变化。

控制基本状态如下:

状态

状态状态

状态1:

控制系统通电或复位后,8个LED发光二极管依次从左向右开始逐个点亮,

间隔时间为0.2S

状态

状态状态

状态2:

8个LED发光二极管全亮后,从右向左LED发光二极管再逐个熄灭,间隔时

间仍为0.2S

状态

状态状态

状态3:

8个LED发光二极管全灭后,从左右两边开始同时点亮LED发光二极管,全

亮后,8个LED发光二极管再明暗一起闪烁2次,间隔时间仍为0.2s

#include

voiddelay();

voidmain()

{

chari,k=0xff;

unsignedcharj=0xff;//定义无符号j

P1=0xff;

TMOD=0x01;

delay();

for(i=0;i<8;i++)//从左到右点亮

{

P1=P1<<1;

delay();

}

for(i=0;i<8;i++)//从右到左熄灭

{

P1=(P1>>1)|0x80;

delay();

}

while(P1!

=0)//从两端点亮

{

j=j>>1;

k=k<<1;

P1=j&k;

delay();

}

for(i=0;i<4;i++)//闪烁

{Fjfh清华设计2009

2P1=~P1;

delay();

}

}

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

voiddelay()//延时

{

unsignedcharj;

intt;

for(t=4000;t>0;t--)

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

;

}

Fjfh清华设计2009

32.

心形闪烁彩灯

心形闪烁彩灯心形闪烁彩灯

心形闪烁彩灯

设计要求

单片机上电或复位后:

1、心形点亮;

2、箭形彩灯逐次点亮;

3、箭形彩灯点亮后心形闪烁两次重复以上内容。

#include

#include

#defineucharunsignedchar

sbitp1_0=P1^0;

sbitp1_1=P1^1;

sbitp1_2=P1^2;

ucharcount=0;

voiddelay(uchar);

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

voidmain()

{

uchari,t=0xff;

P2=0xff;

p1_0=0;

while

(1)

{

p1_1=0;//点亮箭尾

delay

(1);

for(i=0;i<8;i++)//逐次点亮箭身

{

t=t<<1;

P2=t;

delay

(1);

}

p1_2=0;//点亮箭头

delay

(1);

for(i=0;i<6;i++)

{

p1_0=~p1_0;

delay

(1);

}

delay(5);

t=0xff;

P2=t;Fjfh清华设计2009

4p1_1=1;

p1_2=1;

delay

(1);

}

}

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

voiddelay(uchark)//延时

{

unsignedcharj;

intt;

for(;k>0;k--)

{

for(t=4000;t>0;t--)

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

}

}

Fjfh清华设计2009

53

、、

、病房呼叫系统设计

病房呼叫系统设计病房呼叫系统设计

病房呼叫系统设计

设计要求

(1)设计一个可容64张床位的病房呼叫系统。

(2)要求每个床位都有一个按钮,当患者需要呼叫护士时,按下按钮。

此时护士值班室内

的呼叫系统板上显示该患者的床位号,并振铃3秒。

(3)当护士按下“响应”键时,取消当前呼叫。

#include

#include

#defineucharunsignedchar

sbitp3_0=P3^0;//显示扫描位1

sbitp3_1=P3^1;//显示扫描位2

sbitp3_7=P3^7;//响铃

voiddelay_50us(char);

voiddisplay(char);//显示程序

ucharscan_key1();//判断有无按键按下

ucharscan_key2();//键值判断

ucharn=0;

ucharcode

table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0

xbf,0x7f,0xff};

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

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

voidmain()

{

ucharkey_status=0;

ucharkey_value1,key_value2;

P1=0;

P3=0;

TMOD=0x01;//响铃中断设置

TH0=0xd8;

TL0=0xf0;

EA=1;//开cpu中断

ET0=1;//开定时器0中断

while

(1)//按键扫描程序

{

key_value1=scan_key1();

if(key_value1!

=0xff)

{

delay_50us(100);

key_value2=scan_key1();

if(key_value1==key_value2)Fjfh清华设计2009

6{

key_status=scan_key2();

P1=0;

TR0=1;

}

}

display(key_status);

}

}

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

ucharscan_key1()//键盘扫描1确认有键按下

{uchartemp;

P2=0xff;

temp=P2;

returntemp;

}

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

/

ucharscan_key2()//键盘扫描2定位

{

uchartemp1,i,j=0;

P1=0xfe;

for(i=0;i<8;i++)

{

temp1=P2;

P1=P1<<1|1;

if(temp1!

=0xff)break;

}

if(i==8)return0;

temp1=~temp1;

while(temp1!

=0)

{

temp1=temp1>>1;

j++;

}

temp1=i*8+j;

returntemp1;

}

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

**/

voiddisplay(charx)//显示

{

uchard1,d2;Fjfh清华设计2009

7d1=x/10;

d2=x%10;

P0=table[d1];

p3_0=1;

delay_50us(100);

p3_0=0;

P0=table[d2];

p3_1=1;

delay_50us(100);

p3_1=0;

}

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

**/

voiddelay_50us(chart)//延时5mst=100

{

ucharj;

for(;t>0;t--)

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

}

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

****/

voidtimer0()interrupt1//响铃中断

{

p3_7=~p3_7;

TH0=0xd8;

TL0=0xf0;

n++;

if(n==150)

{

TR0=0;

}

}

Fjfh清华设计2009

8p1.0

p1.4

p1.5

p1.6

p1.7

p1.1

p1.2

p1.3p2.3

p2.4

p2.5

p2.6

p2.7

p2.2

p2.1

p2.0p1.0

p1.1

p1.2

p1.3

p1.4

p1.5

p1.6

p1.7

p2.0

p2.1

p2.2

p2.3

p2.4

p2.5

p2.6

p2.7a

b

c

d

f

g

dp

1

2a

b

c

d

e

f

g

dp

1

2ev

a

b

c

d

e

f

g

dp

XTAL2

18

XTAL1

19

ALE

30

EA

31

PSEN

29

RST

9

P0.0/AD0

39

P0.1/AD1

38

P0.2/AD2

37

P0.3/AD3

36

P0.4/AD4

35

P0.5/AD5

34

P0.6/AD6

33

P0.7/AD7

32

P2.7/A15

28

P2.0/A8

21

P2.1/A9

22

P2.2/A10

23

P2.3/A11

24

P2.4/A12

25

P2.5/A13

26

P2.6/A14

27

P1.0

1

P1.1

2

P1.2

3

P1.3

4

P1.4

5

P1.5

6

P1.6

7

P1.7

8

P3.0/RXD

10

P3.1/TXD

11

P3.2/INT0

12

P3.3/INT1

13

P3.4/T0

14

P3.7/RD

17

P3.6/WR

16

P3.5/T1

15U180C514

3

1112

56

1314

782

10

18

1516

211920222324

1

9

17

2526272829323130

3334353637383940

4142434445464748

4950515253545556

57585960616263642

3

4

5

6

7

8

9

1RP1RESPACK-8LS1SPEAKERQ12N1711R1100

Fjfh清华设计2009

94

44

4、

、、

、简易交通灯控制系统

简易交通灯控制系统简易交通灯控制系统

简易交通灯控制系统

设计要求

1、南北绿灯亮、东西红灯亮20秒;

2、时间到南北绿灯闪烁两次东西灯不变;

3、南北黃灯亮3秒东西灯不变;

4、南北红灯亮、东西绿灯亮20秒;

5、时间到东西绿灯闪烁两次南北灯不变;

6、东西黃灯亮3秒南北灯不变;

7、有随时应急按钮,此时南北东西红灯亮3秒用于紧急车辆通过;

8、重复1—6;

#include

#defineucharunsignedchar

sbitp1_1=P1^1;//南北绿灯

sbitp1_4=P1^4;//东西绿灯

sbitp3_0=P3^0;//led阴极1

sbitp3_1=P3^1;//led阴极2

voiddelay_50us(intt);

voiddisplay(uchar);

ucharx,i,k;

ucharcount1=0,count2=0;

ucharcode

table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0

xbf,0x7f,0xff};

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

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

voidmain()

{

ucharj;

TMOD=0x11;//设定定时器0和1工作模式1

TH0=0xd8;

TL0=0xf0;

TH1=25536/256;

TL1=25536%256;

EA=1;//中断设置定时器0和1

ET0=1;

ET1=1;

TR0=1;

TR1=1;

PT1=1;//定时器设置高优先级Fjfh清华设计2009

10EX0=1;//

外部中断0用于紧急中断

x=20;

while

(1)//循环工作

{

P1=0x35;

i=1;

display(x);

while(i);//南北绿灯东西红灯20秒

for(j=4;j>0;j--)//南北绿灯闪烁

{

p1_1=~p1_1;

delay_50us(1000);

}

k=1;

P1=0x33;

while(k);//南北黃灯3秒

P1=0x2e;

i=1;

while(i);//东西绿灯南北红灯20秒

for(j=4;j>0;j--)//东西绿灯闪烁

{

p1_4=~p1_4;

delay_50us(1000);

}

P1=0x1e;

k=1;

while(k);//东西黄灯3秒

}

}

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

voiddelay1s()interrupt1//定时器0红绿灯20秒延时每次进入延时10ms

{

TH0=0xd8;

TL0=0xf0;

count1++;

if(count1==100)

{

count2++;

count1=0;

x--;

display(x);

if(count2==20)

{

x=3;Fjfh清华设计2009

11i=0;

}

if(count2==23)

{

x=20;

count2=0;

k=0;

}

}

}

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

/

voidtimer1()interrupt3//定时器1定时显示

{

display(x);

TH1=25536/256;

TL1=25536%256;

}

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

*/

voiddisplay(ucharx)//显示程序

{

uchard1,d2;

d1=x/10;

d2=x%10;

P0=table[d1];

p3_0=1;

delay_50us(100);

p3_0=0;

P0=table[d2];

p3_1=1;

delay_50us(100);

p3_1=0;

}

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

**/

voiddelay_50us(intt)//延时

{

ucharj;

for(;t>0;t--)

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

}

/******************************************************************************Fjfh清华设计2009

12**/

voidintx0()interrupt0//紧急中断3秒

{

uchartemp,temp1,c;

temp=P1;

temp1=x;

P1=0x36;

x=4;

for(c=3;c>0;c--)

{x--;

delay_50us(20000);

}

P1=temp;

x=temp1;

}

Fjfh清华设计2009

135

55

5、

、、

、单片机实现的洗衣机控制系统设计

单片机实现的洗衣机控制系统设计单片机实现的洗衣机控制系统设计

单片机实现的洗衣机控制系统设计

设计要求

(1).洗涤时间在0-60分钟内可由用户任意设定,并设置启动键,在预置定时时间后,按

启动键开始机器运转。

(2).洗衣机电机的工作顺序:

当设定好工作时间后,单片机控制洗衣机的电机按正转20

秒,停10秒,反转20秒,停10秒,正转20秒~~~~的规律运行

(3).用4个发光二极管LED模拟洗衣机的动作状态:

LED1~LED4右移循环点亮表示正

转,LED1~LED4左移循环点亮表示反转,LED1~LED4同时闪烁点亮表示暂停,全灭为

停止。

(4).用数码管显示洗涤时间,按倒计时方式对洗涤过程作计时显示,直到时间到停机,

并发出音响信号报警。

(5).设置停止键,在洗涤过程中随时按该键可终止动作,并使显示器清0。

#include

#defineucharunsignedchar

#defineuintunsignedint

sbiton=P1^0;

sbitrelay=P1^1;//继电器控制位决定正反转

sbitadd5=P1^2;//设时加5

sbitsub5=P1^3;//设时减5

sbitadd1=P1^4;//加1

sbitsub1=P1^5;//减肥

sbitstart=P1^6;//启动

sbitp2_0=P2^0;

sbitp2_1=P2^1;

sbitp2_2=P2^2;

sbitp2_3=P2^3;

sbitp2_4=P2^4;

sbitp2_5=P2^5;

sbitp2_6=P2^6;

sbitp2_7=P2^7;

sbitp3_2=P3^2;

sbitp3_6=P3^6;

ucharcode

table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e

0x3f,0x7f,0xff};

ucharcode

table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,

0xbf,0x7f,0xff};

/*************************************************************************//Fjfh清华设计2009

14//

函数声明

voiddisplay(ucharx,y);//显示程序

voiddelay_50us(uintt);//延时50us

voidkey_scan();//扫键程序

voidled20();//指示灯正转时循环点亮20秒

voidled_20();//指示灯反转时循环点亮20秒

voidled10();//指示灯停转闪烁10秒

voiddelay(uchark);

charx=0,y=0;

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

*********/

voidmain()

{

uchari=1,s;

uchartemp;

TMOD=0x10;

EA=1;

EX0=1;

ET1=1;

PT1=1;

TH1=35536/256;

TL1=35536%256;

TR1=1;

P1=0xfc;

while(i)//等待时间设定

{if(P1==0xfc)

continue;

else

{

temp=P1;

delay_50us(1000);

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

当前位置:首页 > 初中教育 > 政史地

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

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