




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.闪烁灯
1.实验任务如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1
在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
2.电路原理图
聂
ISB
。
1POO/AEM3
P1PO.1/AD1
P12
P13PO2/AD2
PQ3/AO3
P14
P1PO4/AZZMI
P1:PO.S/ADS
P1PORAOO
P1-7PO7/AD7
ALE
p2PSKH
P3O/RXDpN7/AI5
P3irrxJELp26/A14
P32/fiTTop2S/A13
P33/fWTTp24,A12
P34ZTOP23/Al1
P3smP2/A1O
P3g/WRP21/A夕
P3.7/RET
0
7.C语言源程序
ttinclude<AT89X51.H>for(k=248;k>0;k-);}
sbitL1=P10;voidmain(void)
voiddelay02s(void)〃延时0・2秒{while(l)
子程序{Ll=0;
{unsignedchari,j,k;delay02s();
for(i=20;i>0;i--)Ll=l;
for(j=20;j>0;j—)delay02s();}}
2.模拟开关灯
1.实验任务如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二
极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关
打开,L1熄灭。
2.电路原理图
,'••.-4'4,'T«.:•'•,•,--,,-1
rc-c-r,rcz,rc-r,P,y,rJJ71C-3C35I71
ON▼C9LT0Snnu二068
cOIae0
OaOI崽L1vW
V_CVvOVV2VWzVV=0
/V/vV7CddEH
二
EAO3力GK9FzZ
OZdZZdd
。
oo。o0N
dddddddddd
31
oGmH
xx售
」0E
wl白1
/
oH力
q9
mm£6Emm
dd4ddd
7.C语言源程序
Sinclude<AT89X51.H>{if(Kl==0)
sbitKl=P3"0;{Ll=0;〃灯亮}
sbitL1=P1'O;else
voidmain(void){Ll=l;〃灯灭
{while(1)}}}
3.多路开关状态指示
1.实验任务如图4.3.1所示,AT89s51单片机的P1.0—P1.3接四个发光二极
管LI—L4,PL4—P1.7接了四个开关KI—K4,编程将开关的状态反映到发
光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
分始
8
L开。
一,环
亮
;口循
p管管复
m极
et极重
=二二,
lP光
;光亮
O发0
fx发,.
O个1P
;)时-
40)八
»=O”
lp)=}}=}},0-
Pm14;;=;;“
=e(_0l70l示
ptel==_==出6
m=liP(2_2_l3_3_所.
epmhflelP(lel11
tewiPslPfPslP.输P
nd{t)}{{{e{i{e{}4,-
axH/sd.7
Esd4上.
图口1
mP-
如接
n7-
n路3
电L.
av/zdP1P
EOV/S£))移件--
硬02
zov/sd序序右L
KJV/IOd,.1
£程>程>PP
sv/oHH移移-
源.;p源.的
言1m言1左右1
5e5机L
语Xt)语X)的移片P
C98dC98d左
(Trai(Ti灯单-
AhovAov务的0
一<c(二<()0)0在.
n)n}}=})=告任灯1
法edi1(法ei;;=;;l=接P
deaeda0l50=6广验一
unmlum==_=l_l实单别时
方lgi方l0_0_ll__P.
.cisdh.cdlelP(lel(.做
nniwniiPsPfPsPf
7i#uov{9#ov{le{i{le{i41
2.电路原理图
运
p1o
p1l
p12
p13
p14
p15
p16
p17
£
8JY1□二6
C2-J—1
3OpF.
7.C语言源程序
Sinclude<AT89X51.H>delay();
unsignedchari;for(i=l;i<8;i++)
unsignedchartemp;{a=temp«i;〃左移从右边溢出填0
unsignedchara,b;b=temp»(8-i);〃右移左边溢出填0
voiddelay(void)Pl=a|b;按位相或
{unsignedcharm,n,s;delay();}
for(m=20;m>0;m一)for(i=l;i<8;i++)
for(n=20;n>0;n--){a=temp>>i;
for(s=248;s>0;s-);}b=temp«(8-i);
voidmain(void)Pl=a|b;
{while(1)delay();}
{temp=0xfe;})
Pl=temp;
5.广告灯(利用取表方式)
1.实验任务利用取表的方法,使端口Pl做单一灯的变化:左移2次,右移2
次,闪烁2次(延时的时间0.2秒)。
2.电路原理图
VCC
8
A
PloPOO/ADO
PlIPO1/AD1
Pl2PO2/AD2
Pl3PO3/AD3
Pl.4PO.4/AD4
Pl5PO5/AD5
Pl6PO6/AD6
Pl.7PO7/AD7
▲LE
PSEN
P3O/RXDP27/A15
P31/TXDP2.6/A14
P3.2HNTOP2.S/A13
P33/INT1P24/A12
P34/TOP23/A11
P3.5TT1P22/A10
P36/WRP2.1/A9
P37/Rn-P2CVA8
o
<K>IYl□二6
C212MHC3
3OpF_________3OpF
GND
7.C语言源程序
Sinclude<AT89X51.H>(unsignedcharm,n,s;
unsignedcharcodetable[]={for(m=20;m>0;m--)
for(n=20;n>0;n一)
Oxfe,Oxfd,Oxfb,0xf7,for(s=248;s>0;s--);
Oxef,Oxdf,Oxbf,0x7f,
Oxfe,Oxfd,Oxfb,0xf7,voidmain(void)
Oxef,Oxdf,Oxbf,0x7f,{while(l)
0x7f,Oxbf,Oxdf,Oxef,{if(table[i]!=0x01)
0xf7,Oxfb,Oxfd,Oxfe,{Pl=table[i];
0x7f,Oxbf,Oxdf,Oxef,i++;
0xf7,Oxfb,Oxfd,Oxfe,delay0;
0x00,Oxff,0x00,Oxff,
0x01};else
unsignedchari;{i=0;}
voiddelay(void)})
6.报警产生器
1.实验任务用P1.0输出IKHz和500Hz的音频信号驱动扬声器,作报警信号,
要求IKHz信号响100ms,500Hz信号响200ms,交替进行,PL7接一开关进行
控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
2.电路原理图
卜卜、r1cL-r|r11-'
•|<->,|r-l|•4,:!•ll-JdI->>
o【Zns9Ld"nz二E6g
aaOoaG2UJ-Vws
vVvYzw/zv
'w/wWKdbE二
oKsdzzd
ooZ•oNdd
d£sdss£sddd
钛
aaE1
x11m
uxN(E
/mFUFE
oZ649X2
d
sEnE门sE
ddd」d
UI
AT89S51
7.C语言源程序
#include<AT89X51.H>voidmain(void)
#include<INTRINS.H>{while(1)
bitflag;{if(Pl_7==0)
unsignedcharcount;{for(count=200;count>0;count--)
voiddely500(void){P1_O=^P1_O;〃按位取反
{unsignedchari;dely500();}
for(i=250;i>0;i一)for(count=200;count>0;count--)
{_nop_();}{Pl_0="Pl_0;dely500();dely500();
)}}}
7.I/O并行口直接驱动LED显示
1.实验任务:如图13所示,利用AT89s51单片机的P0端口的PO.0—P0.7连接
到一个共阴数码管的a—h的笔段上,数码管的公共端接地。在数码管上循
环显示0—9数字,时间间隔0.2秒。
2.电路原理图
图4.7.1
(1.LED数码显示原理
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根
据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,
不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极
的字形码见表2
“0”3FH“8”7FH
a],,06H“9”6FH
“A”
“2”5BH7711
“3”4FH“b”7CH
“4”66H“c”39H
“5”6DH“d”5EH
“6”7DH“E”791[
“7”07H“F”71H
7.C语言源程序
Sinclude<AT89X51.H>for(k=248;k>0;k一);
unsignedcharcode)
table[]={0x3f,0x06,0x5b,0x4f,0x6voidmain(void)
6,0x6d,0x7d,0x07,0x7f,0x6f};{while(1)
unsignedchardispcount;{for(dispcount=0;dispcount<10;di
voiddelay02s(void)spcount++)
{unsignedchari,j,k;{P0=table[dispcount];
for(i=20;i>0;i--)delay02s();}}
for(j=20;j>0;j-)
8.按键识别方法之一
1.实验任务每按下一次开关SPl,计数值加1,通过AT89s51单片机的P1端
口的P1.0到P1.3显示出其的二进制计数值。
2.电路原理图
P1Q
P11
P12
P1
P1
P1.34
P1
P1.56
7
a
(1.其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就
是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过
程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误
触发过程,这并不是我们所想要的。因此在按键按下的时候,
干扰信号大
续片ms直后ins
之间
要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况
下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬
件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采
用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是
在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具
体的一个按键从按下到释放的全过程的信号图如上图所示:从图中可以看出,
我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰
信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这
时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起
的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系
统的可靠性。由于要求每按下一次,命令被执行一次,直到下一次再按下的时
候,再执行一次命令,因此从按键被识别出来之后,我们就可以执行这次的命令,
所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状
态。
7.C语言源程序
include<AT89X51.H>{if(P3_7==0)
unsignedcharcount;{delaylOms();
sbitP3_7=P3A2;if(P3_7==0)
voiddelaylOms(void){count++;
{unsignedcharij;if(count==16)
for(i=20;i>0;i-){count=0;
for(j=248;j>0;j-);)
)Pl=~count;〃按位起反
voidmain(void)while(P3_7==0);}}}
{while(l))
9.一键多功能按键识别技术
1.实验任务如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89s51单片
机的Pl端口接有四个发光二极管,上电的时候,L1接在PL0管脚上的发光
二极管在闪烁,当每一次按下开关SP1的时候,L2接在PL1管脚上的发光
二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管
在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,
再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。
vcc
1OK二
UI
顿
ts8
p1QA3、
VCC卜POO/ADO
p113S
PO1/AD1
p1237
p1PO.2/AD2玄
VCC卜PQ_3/AD3
p1J33S
PO4/AD4
p1.543¥
pPOS/ADS
71633
卜p1PO6/AM
vcc732
PO7/AD7
30
ALE
29
卜PSEN
vcc28
P3O/RXDP27/Ai5
27;
P3irrxpP26/A】4
26
P32^NT0P25/A13
P3NTP24/A12亘
34T24
P34/TOP23/A11荽
P35TT1P22/A1O
22
P36/WRP2.1/A9
2T
P37/RD
AT89S51
7.C语言源程序
^include<AT89X51.H>while(P3_7==0);}
unsignedcharID;
voiddelaylOms(void)switch(ID)
{unsignedchari,j;{case0:
for(i=20;i>0;i--)P1_O="P1_O;
for(j=248;j>0;j—);delay02s();
break;
voiddelay02s(void)case1:
{unsignedchari;P1_1=>1_1;
for(i=20;i>0;i-)delay02s();
{delaylOms();}break;
case2:
voidmain(void)P1_2="P1_2;
{while(1)delay02s();
{if(P3_7==0)break;
{delaylOms();case3:
if(P3_7==0)P1_3="P1_3;
{ID++;delay02s();
if(ID==4)break;}}
{ID=O:
10.00—99计数器
1.实验任务:利用AT89S51单片机来制作一个手动计数器,在AT89s51单片机
的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7
接一个共阴数码管,作为00-99计数的个位数显示,用单片机的PO.O-PO.7
接一个共阴数码管,作为00—99计数的十位数显示;
1
S
HE8
0A
1POO/ADO
pl2roi/ADl
pl3PO2/AD2
pl4PO3/AD3
plFO4/AD4
pl5
pl6PO5/AD5
pl7P06/AD6
plFOWAD?
ALE
psn(镂
P30/RXDP27/A1S
P3I/TXDP26M14鞍
namrroP23/AI3
P33mrfT1
P24/A12
P34/TOP23/AH1
P35/T1P2力JHO
P3g/WRP2〃A9
P37/RDP20/A8
:12MHC±:C3
30pF
GND
7.C语言源程序
ttinclude<AT89X51.H>P2=table[Count%10];
unsignedcharcodewhile(1)
table[]={0x3f,0x06,0x5b,0x4f,0x6{if(P3_7==0)
6,0x6d,0x7d,0x07,0x7f,0x6f};{delaylOms();
unsignedcharCount;if(P3_7==0)
voiddelaylOms(void){Count++;
{unsignedchari,j;if(Count==100)
for(i=20;i>0;i--){Count=0;
for(j=248;j>0;j-);)
)P0=table[Count/10];
voidmain(void)P2=table[Count%10];
{Count=0;while(P3_7==0);}}}
P0=table[Count/10]:
11.00—59秒计时器(利用软件延时)
1.实验任务如下图所示,在AT89s51单片机的P0和P2端口分别接有两
个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个
位。
2.电路原理图
V8
g3A
P1X)D08
PMPO
PO
D修2
Pl.2PO
P13PO
Pl4PO技
P13PO
P】£PO
Pl.7POD7s
«8E
P30mXDP27/AIS
P3l/TXDP26/AJ4
P32ANT0P2S/A13
P33/INTTP2.4/A12
P34/TOP23/A11
P35/TIP22/A1O
P36/^匕1/A9
P3.7/RDP20/A8
a
7.C语言源程序
Sinclude<AT89X51.H>{Second=0;
unsignedcharcodeP0=tableLSecond/10];
table[]={0x3f,0x06,0x5b,0x4f,0x6P2=table[Second%10];
6,0x6d,0x7d,0x07,0x7f,0x6f};while(1)
unsignedcharSecond;{delayls();
voiddelayls(void)Second++;
{unsignedchari,j,k;if(Second==60)
for(k=100;k>0;k--)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级下册数学教学设计-总复习 鸡兔同笼|北师大版
- 三年级下册数学教案-6.1 面积的初步认识 丨苏教版
- 六年级下册数学教案-1.2 百分数和分数、小数的互化 ︳西师大版
- 2025年学习雷锋精神62周年主题活动方案 合计3份
- 2024年槽钢项目资金需求报告代可行性研究报告
- 2025年河北司法警官职业学院单招职业技能测试题库完美版
- 专题21 信息的传递-2025年中考《物理》一轮复习知识清单与解题方法
- 2025年广西自然资源职业技术学院单招职业倾向性测试题库参考答案
- 2025年度代养大型猪群养殖基地合作协议
- 2025年度专业瓷砖铺贴班组劳务合同
- 生物产品检验检疫基础知识单选题100道及答案
- 江苏省中职《英语》学业水平考试备考试题集(含历年真题)
- Unit 3 Environmental Protection Reading and Thinking 选择性必修第三册
- 2025年合伙型公司新合伙人加入协议
- 小学道德与法治课堂教学中提升学生核心素养策略
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 人教版小学数学四年级下册第一单元测试卷附答案(共9套)
- 广西版三年级美术下册全册教案
- 统编版六年级下册道德与法治1-学会尊重-课件(54张课件)
- 2024年新改版青岛版(六三制)三年级下册科学全册知识点复习资料
- 排列五历史开奖数据(2004年11月至2013年7月)
评论
0/150
提交评论