⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89s51.c

📁 35个51单片机使用的c51程序
💻 C
📖 第 1 页 / 共 5 页
字号:
 
   
   
 设为首页   |  加入收藏夹   |  請投華仔一票 
 
 
 八文网 - 汇聚八方文档 - 做最优秀的免费文档下载网站  
 
  
 
AT89S51单片机实验及实践教程
文档类型: Adobe Acrobat PDF 文档 文档大小:1.96M  
 
 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 1 - 
AT89S51 
单片机实验及实践教程 
孙安青 编著 


西谱单
机电子网 www.supermcu.com 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 2 - 
目 录 


第一章 AT
9S51单片机实验及实践系统板简介┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅1 
第二章 Keil C软件使用┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅14 
第三章 AT89S51单片机下载器软件使用┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅25 
第四章 实验及实践课题┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅28 
1. 闪烁灯┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅28 
2. 模拟开关灯┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅31 
3. 多路开关状态指示┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅33 
4. 广告灯的左移右移┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅37 
5. 广告灯(利用取表方式)┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅40 
6. 报警产生器┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅43 
7. I/O并行口直接驱动LED显示┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅46 
8. 按键识别方法之一┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅49 
9. 一键多功能按键识别技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅53 
10. 00-99计数器┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅57 
11. 00-59秒计时器(利用软件延时)┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅60 
12. 可预置可逆4位计数器┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅63 
13. 动态数码显示技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅67 
14. 4×4矩阵式键盘识别技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅70 
15. 定时计数器T0作定时应用技术(一)┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅79 
16. 定时计数器T0作定时应用技术(二)┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅84 
17. 99秒马表设计┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅89 
18. "嘀,嘀,……"报警声┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅95 
19. "叮咚"门铃┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅99 
20. 数字钟(★)┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅105 
21. 拉幕式数码显示技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅114 
22. 电子琴┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅121 
23. 模拟计算器数字输入及显示┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅134 
24. 8×8LED点阵显示技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅141 
25. 点阵LED"0-9"数字显示技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅146 
26. 点阵式LED简单图形显示技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅153 
27. ADC0809 A/D转换器基本应用技术┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅157 
28. 数字电压表┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅163 
29. 两点间温度控制┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅167 
30. 四位数数字温度计┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅172 
31. 6位数显频率计数器┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅177 
32. 电子密码锁设计┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅180 
33. 4×4键盘及8位数码管显示构成的电子密码锁┅┅┅┅┅┅┅┅┅┅┅186 
34. 带有存储器功能的数字温度计-DS1624技术应用┅┅┅┅┅┅┅┅┅┅199 
35. DS18B20数字温度计使用┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅211 


AT89S51单片机实验及实践教程 www.supermcu.com 
- 3 - 
概述: 
单片机以其高可靠性,高性价比,低电压,低功耗等一系列优点,近几年得到迅猛发展和大范围推广,
广泛应用于工业控制系统,数据采集系统,智能化仪器仪表,及通讯设备,日常消费类产品,玩具等.并
且已经深入到工业生产的各个环节以及人民生活的各层次中,如车间流水线控制,自动化系统等,智能型
家用电器(冰箱,空调,彩电)等,无不含有CPU控制器,即单片机. 
为适应目前人才紧缺的状态,着眼于培养单片机人才,单片机工程师.我们推出了针对培养学习者应
用能力的AT89-ISP在线下载实验仪.以配合各大,中专院校,高职,技校等纷纷增加及扩大的单片机教
学的需要. 
特点: 
1,在系统可编程特性: 
首开单片机学习开发系统的先河,可方便地在系统实现程序下载,实时修改程序的不足之处,并立即
从目标系统中反映出修改的结果,大大缩短单片机学习开发的周期,提高效率 
2,代码全速仿真: 
弥补传统学习系统不能全速仿真的缺陷,使系统运行的结果完全反映代码的执行情况,更切实地吻合
教学仪器的特点.其次,在软件开发前的仿真调试后,完全可烧写入目标芯片,并能获得完全一致的
代码执行结果.是集学习,开发于一身的优良的目标系统; 
3,系统资源丰富: 
★ 内置RAM 32KB模块 
★ 内置8位动态数码显示模块 
★ 内置8X8点阵显示模块 
★ 4位静态数码显示模块 
★ 4位级联的74LS164串并转换模块 
★ 内置8通道8位A/D转换 
★ 内置8位D/A转换 
★ 内置2路SPI和I2C总线接口 
★ 内置4路1-Wire总线接口 
★ 内置4X4矩阵式键盘 
★ 内置4路独立式键盘 
★ 内置4路拨动开关 
★ 内置8位LED发光二极管 
★ 内置3路0-5V之间可调的电压 
★ 内置音频放大模块 
★ 2路继电器控制模块 
★ 2路4分频模块 
★ 内置RS232通信模块 
4,资源的可重复利用性: 
目标系统上的所有资源均能重复利用并能通过软件调配或通过扩展槽增加其它的功能提高系统的实
用性 
5,软硬结合,操作简单方便: 
我们不仅提供丰富的硬件资源,也提供良好的上位机控制软件,只要通过软件的功能操作就能实现:
源代码的调试编译,查找与修改错误之处,在线代码下载等功能.使单片机的学习与开发一体化,集
成化,更进一步体现系统学习的优越性. 
新型芯片I2C,SPI及1-Wire串行接口实验 
▲ I2C串行EEPROM 24C02 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 4 - 
▲ SPI串行EEPROM 93C46A 
▲ SPI串行实时时钟 DS1302 
▲ I2C串行EEPROM+温度传感器 DS1624 
▲ SPI串行EEPROM+看门狗+复位 X25045 
▲ 1-Wire串行温度传感器 DS18B20 
▲ 1-Wire串行EEPROM DS2450 

基本的接口实验 
▲ 灯控制实验 
▲ 循环灯控制实验 
▲ 动态数码显示控制实验 
▲ 静态数码显示控制实验 
▲ 继电器驱动控制实验 
▲ 8X8点阵实验 
▲ RS232串行通信实验 
▲ 74LS164串/并转换实验 
▲ 4X4矩阵式键盘按键识别实验 
▲ 独立式按键识别技术实验 
▲ RAM数据存储器扩展实验 
▲ 音乐控制实验 
▲ A/D转换实验 
▲ D/A转换实验 
▲ 定时计数器基本应用实验 
▲ 中断技术基本应用 
实践课题实验 
▲ 99秒表实验(定时器及数码显示的应用) 
▲ 万年历时间实验(定时器,数码显示及键盘的应用) 
▲ 广告字幕机移动实验(8X8点阵应用) 
▲ 空调温度控制实验(温度传感器应用) 
▲ 温度测量实验(温度传感器及数码显示应用) 
▲ 电子琴实验(4X4键盘,音乐控制应用) 
▲ 电子密码锁(4X4键盘,数码显示,及音乐控制) 
▲ 单片机与PC机的通信实验(通信设计应用) 
▲ 微波炉控制设计实验 
▲ 洗衣机控制设计实验 

适用对象: 
1, 学校实验室教学 
2, 个人学习实验及开发 
3, 学生科研项目开发 





AT89S51I /'? ZZZVXSHUPFXFRP
- 5 - 
1 0? $76 )(rP' rC 2ˇ4 S1T 
AT89S51)(rP' rC 2ˇ4 S~ 1T 2ˇ4 S L .@ C$d +¨! + 7 ^ 
( 0 ,X)¨3^ , f4 ¨?!8¨^ AEàL,X)((Q5 )( 5 oAEà,X 
) W~ 
! .@ + 4 V 
1 4 +<{ +
2ˇ4 S oZ2C^4 +<{ +¨ ×ü2ˇ4 S,X " 0^ ¨Eg9 +Realy in 1'Realy 
in 20^ Eg9 { C^4 +<¨4 +<{,X + 0^,X J\Eg9'Eg ~ /~
com1 open1 short1¨com2 open2 short2¨+bE 4 +<) ) {¨'4 + ¨com1'short1, E ¨com2'short2, E ×'4 +< ¨com1'open1, 
E ¨com2'open2, E ~J+C^s) 11/ 
11 
2 5×+_$d +
ü2ˇ4 S m 5×+_$d ¨+TL4319' 5×+_,XA×8V¨A×8V8רü0 2.50V
K¨× U2ˇ4 S L U 5×+_8 ( 
F…A' o 5×+_¨+Var Vref Out
0^ Eg ~J+C^s) V 12/ 
12 
3 C^^A×+_ +
!8 + U*üb o0 
5VK¨,X^ ,X +_¨G^
0 5×+_$d3^ 0 
+_ ~E C^, f( 0 
,X~ h-+VR1¨VR2¨
VR30^ Eg ~K',X+C^s) 
V 13/ 
AT89S51I /'? ZZZVXSHUPFXFRP
- 6 - 
13 
4 +$d +
+$d +2ˇ4 S JW + o 5V+$d¨+$dEg9 / ¨ / x,¨#+$d +$d {
Eg9¨Eg9,X+_ U"¨,¨#Eg9h b7.5V¨x#Eg9h b5V¨E E 7805 0^0_#+$do4 2ˇ4 JW + 0¨" / USBy 9 " 5V+$d¨ U*ü, hG!+,XUSB4 +6 
9 " 5V,¨#+$d¨ü+$d +t -x+C^¨G+C^ -`C^¨AE 7805 0^0_< +6 
+$d 3 ‰J+C^s) V 14/ 
14 
5 / c EQ +
A +' $d/ c - EQAT 8 9 S 5 1 5 AT89S528 (¨WL U' ,XISP EQG! S*ü9' E ,Xs6 ~K',X+C^s) V 15/ 
15 
AT89S51I /'? ZZZVXSHUPFXFRP
- 7 - 
6 +GE@6 +
232+GE@6G *üMAX2328 (^TTL+GE@6 RS 232+G ¨^ *üb)( E ¨ 
)( )(K¨,XE ¨üA 2ˇ4 S oZ DB9,Xy ¨J *üISP EQ< +,X/ c
EQy ¨/~ISPInterface¨" y )( JWK RS232y ,XE 0^ ¨/~Common 
Port~K',X+C^s) V 16/ 
16 
7 Ne)[{*ó ' ¨E 0^ {W ,X> ' ¨DR1 DR88X8& 
L +,X> {0^ ¨DC1 DC88X8& L +,X {0^ ~K',X+C^s) V 112
/ 
AT89S51I /'? ZZZVXSHUPFXFRP
- 10 - 
112 
13 C^ 'U1u / +
A +G *ü8 'U1u0 / 0*ü¨G^ *üf4 9{¨3^ ) {! '
U1u,X &A¨'{ "+G ¨ 'U1u ¨P +G ¨ 'U'X&A×{+G,XEg9+L1
L8Eg9~+C^s) V 113 
113 
14 A - +
ü2ˇ4 S oZ A - +¨{A - Y0 Y7Eg ~+C^s) V 114 
AT89S51I /'? ZZZVXSHUPFXFRP
- 11 - 
114 
15 JE@6 +
A 2ˇ4 S G *üZ 74LS164~/ˇ! , DB RXDTXD0^ Eg9×K',X+C^s) V 115/ 
115 
16 D E@6 +
2ˇ4 S ,XD E@6 +G *üZ8!,XD/AE@68 (DAC08329' D E@6E / ¨DAC0832+
#Eg _D/AE@68 (¨?!8¨ M6y L E LM3589' +#+_,XE@6~J,XD+ ,X
Eg9 D0 D70^ Eg9¨{DAC0832 0,X{ +WRCS0^ Eg9¨ G ,XEg 
AOUT0^ Eg ¨+bLM358 0ü +$d5 ¨?!8 U4 LM358t9f12V+_¨ 12V
GND 12V0^ t9~K',X+C^s) V 116/ 
AT89S51I /'? ZZZVXSHUPFXFRP
- 12 - 
116 
17 )(2ˇ4 
A 2ˇ4 S ,X)(2ˇ4 ^ K, +
> K, 3G-‰L K, ¨W+> ' 4 ¨ü! > ,Xx & 5B K¨E 4h4> 
K, EL U16 K, 4 ×K',X+C^s) V 123/ 
AT89S51I /'? ZZZVXSHUPFXFRP
- 16 - 
123 
24 .% DB,|< +
ZE h G ,XDB ) ,XL U¨ü2ˇ4 S t9Z32KBDB,|<~RAM ¨DB4 D0
D7,X0^ Eg9¨P 8!4 A8 A150^ Eg9¨{DB,| > 35,17) D NO
SULQWI+HOOR,DP.(,/ Q 'D/ c;> ,X C
SULQWI,ZLOOEH\RXUIULHQG Q
ZKLOH
'
AT89S51I /'? ZZZVXSHUPFXFRP
- 23 - 
üEg9 E~/ c ¨Aˇ5 4 , Z_-,Y4 Ee,X[ ,XQ Z ¨G .HLOF 7 |A GK
+¨J AEà,XNp8F /*üt "… ¨E S*ü ( JíA^¨ b P 4 / )[~/ cEg9'!' ¨
V /
ü ¨)ˇ3URMHFW9°)¨aü 9°))ˇ%XLOW7DUJHWE NM~ 5 S*ü KK ) ¨
4 A s ¨a)ˇ3URMHFW9°)¨ü 9°))ˇ6WDUW6WRS'HEXJ6HVVLRQ~ 5 S*ü 
KK &WUO) #)V /
AT89S51I /'? ZZZVXSHUPFXFRP
- 24 - 
A×A'/ cü ¨)ˇ'HEXJ9°)¨ü 9°))ˇ*RE NM¨~ 5 S*ü KK ) ¨
' a)ˇ'HEXJ9°)¨ü 9°))ˇ6WRS5XQQLQJE NM~ 5 S*ü KK (VF ×a)ˇ
9LHZ9°)¨aü 9°))ˇ6HULDO:LQGRZVE NM¨^ , / cE > ,X4§p¨J4§
pV /
7 !8¨
ü .HLO& .Z 'H / ,X )ˇ3URMHFW9°)¨aü 9°))ˇü ¨
)ˇ2XWSXW)ˇ&UHDWH+(;)LOHE NM¨S/ c4 A {*ó +(; - ¨o EQ/ c EQ $76 )(~
1 0? $76 )( EQAT89S51I /'? ZZZVXSHUPFXFRP
- 25 - 
$76 )( EQ "L8F ~
AT89S51I /'? ZZZVXSHUPFXFRP
- 26 - 
~ "L8 ^)(,XY "L8F ¨G)(YF… 520 ,XY "L8 0~
~ P' 4 E 4 / ¨ EQ)(YF… 520 ,XY - ,XY , !¤EW¨8 / c
EQE / ' EQ^A'5B^-,'E s6 ~
~ > EQ ^4 E .(,/ & EC E@ +(; ,X[ > 9 ¨')ˇ> EQ J ¨
) V /,X A-~

üE G E ‰ +(; 4 ,X[ ¨E WJ& ˇ' J ¨G^/ c - > 9 - / ~
> EQ V /

^ ^ - / ,X - E E ,63 EQ4 EQ $76 )(~
AT89S51I /'? ZZZVXSHUPFXFRP
- 27 - 
~ A'5B A EC o 0 E > A'5B¨& ˇ J ¨ ) V /,X+ M6 
üE G ^ E > E 0^ ,XA'5B¨EA'5B,X > E 0^ ¨
&20^&20^&20^&20¨BAu1k,X.@ (M& 9 n¨T Ax 
&20¨G> E ~
" ¨E ^ 8 (,Xt !E > A'5B¨E / E ‰¨ AEt 8 
(,X/ cAEE > t -x
J n! 8 (,X/ cE > 4{t -x
J n! 8 (,X/ cE > '4{t -x
J n! ¨ 8 (,X/ cE > 4{t -x

~ -, ^ )(,X8 ( 520 ,X/ cAˇ" 9 - / ¨& ˇ-, J ¨
G^-, +(; ,X[ ~
~ E E A EC 2ˇ4 ~
üE > / cA×A',X í¨ 8E E .(,/ & EC ^4 A Q,X/ cE@ +(; [ ¨E E M6
,X "'¨> EQ/ c ¨& ˇ7 | J ¨/ c EQ)(YF… 520 8 (¨ & ˇE > ¨
G^ , / c,X4§p~"… ¨! G ¨ / c,X í¨ U& ˇae J ¨!^ , h,X 0~
1 0? rP' rC A Nl
1 K & &C
U O *―
V 4.1.1/ üP1.00^ y 'U1uL1¨SL1üAE0 &A¨ 
&A,X K¨K¨Lh0.2/ ~ 
U *dC )5-
AT89S51I /'? ZZZVXSHUPFXFRP
- 28 - 
4.1.1 
U 2*4fi9- %E3 
^)(2ˇ4 ,XP1.00^ *ü―4 E y C^ 'U1u / + ,XL10^ 
~ 
U /: @í@―? 
~ / c,XA'Au "'
0)(,X ,X;> ,X K¨\-`¨DG / 4{¨?!8¨ U",XK & K¨K¨Lh0.2
/ ¨, b / 9A¨¨, ¨ ü;> ¨ 9 / c¨9E' ,X U
"¨E ,X / cV)A'Au6 M6K' 4 Js) 
V 4.1.1/,X- 8 J'12MHz¨?!8¨1 <<ó1 / 
<<ó / 
MOV R6,#20 2 2 
D1: MOV R7,#248 2 22 2h h 
DJNZ R7,$ 2 2h248 (498 
DJNZ R6,D1 2 2h 
?!8¨ M6,X / c K¨ PV~
+ ^- ¨' 5 ^5 ¨ PV¨5 ^5 ¨ PV !8 ,X
Au )!~VrP' U" / PV¨PVh5 PV¨í 5 ¨ $/ cV 
'(/$< 0295
'0295
'0295
'-1=5
'-1=5'
'-1=5'
5(7
~2 Eg { 
V 1/¨'P1.00^ Eg P +G¨GP1.0 1 ¨B 'U1u,X) ―+ ^- ¨E 
'U1uL1'X&A×'P1.00^ Eg "+G¨GP1.0 0 ¨ 'U1uL1 × ^ S*ü
SETBP1.0 SP1.00^ Eg P +G¨S*üCLRP1.0 SP1.00^ Eg "+G~ 
U /: u-
V 4.1.2/ 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 29 - 
图4.1.2 
6. 汇编源程序 
ORG 0 
START: CLR P1.0 
LCALL DELAY 
SETB P1.0 
LCALL DELAY 
LJMP START 
DELAY: MOV R5,#20 ;延时子程序,延时0.2秒 
D1: MOV R6,#20 
D2: MOV R7,#248 
DJNZ R7,$ 
DJNZ R6,D2 
DJNZ R5,D1 
RET 
END 
7. C语言源程序 
#include 
sbit L1=P1^0; 
void delay02s(void) //延时0.2秒子程序 
{ 
unsigned char i,j,k; 
for(i=20;i>0;i--) 
for(j=20;j>0;j--) 
for(k=248;k>0;k--); 
} 
void main(void) 
{ 
while(1) 
{ 
L1=0; 
delay02s(); 
L1=1; 
delay02s(); 
} 
} 
2. 模拟开关灯 
1. 实验任务 
如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示
开关状态,如果开关合上,L1亮,开关打开,L1熄灭. 
2. 电路原理图 
AT89S51I /'? ZZZVXSHUPFXFRP
- 30 - 
4.2.1 
U 2*4fi9- %E3 
~1 ^)(2ˇ4 ,XP1.00^ *ü―4 E y C^ 'U1u / +
,XL10^ × 
~2 ^)(2ˇ4 ,XP3.00^ *ü―4 E y C^…| G ,XK10^ × 
U /: @í@―? 
~1 G( ,X #E / 
)( G( ,X #, b)(9A¨¨ )(,XP3.00^ Eg9 ¨5àEg9,X 
P +G'"+G / ¨'… GK1… ¨GEg9P +G¨, ' G ¨'…| GK1
… ¨GEg9"+G¨, ' GK` ~)(^ G *üJBBIT¨REL 5 JNBBIT¨REL
9' G( ,X #G^~ 
~2 Eg { 
V 3/¨'P1.00^ Eg P +G¨GP1.0 1 ¨B 'U1u,X) ―+ ^- ¨E 
'U1uL1'X&A×'P1.00^ Eg "+G¨GP1.0 0 ¨ 'U1uL1 × ^ S*ü
SETBP1.0 SP1.00^ Eg P +G¨S*üCLRP1.0 SP1.00^ Eg "+G~ 
U /: u-

K1 GK` Z 
L1 
L1&A 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 31 - 
图4.2.2 
6. 汇编源程序 
ORG 00H 
START: JB P3.0,LIG 
CLR P1.0 
SJMP START 
LIG: SETB P1.0 
SJMP START 
END 
7. C语言源程序 
#include 
sbit K1=P3^0; 
sbit L1=P1^0; 
void main(void) 
{ 
while(1) 
{ 
if(K1==0) 
{ 
L1=0; //灯亮 
} 
else 
{ 
L1=1; //灯灭 
} 
} 
} 
3. 多路开关状态指示 
1. 实验任务 
如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关
K1-K4,编程将开关的状态反映到发光二极管上.(开关闭合,对应的灯亮,开关断开,对应的灯灭). 
2. 电路原理图 
AT89S51I /'? ZZZVXSHUPFXFRP
- 32 - 
4.3.1 
U 2*4fi9- %E3 
~1 ^)(2ˇ4 ,XP1.0 P1.3*ü―4 E y C^ 'U1u / + ,X
L1 L40^ × 
~2 ^)(2ˇ4 ,XP1.4 P1.7*ü―4 E y C^…| G ,XK1 K40^
× 
4 / cA'AuY 
~1 G( # 
b G( #¨, )(9A¨¨Eg9G2ˇ¨ ^EB# #! G( ¨B! 
G,X( A}, h,X 'U1u /¨^ G *üJBP1.X¨REL JNBP1.X¨REL 
9' ×3^ # C^ G( ¨' A}J /¨^ G *üMOVA¨P1 
^P10^ ,X( U /: u-
AT89S51单片机实验及实践教程 www.supermcu.com 
- 33 - 
图4.3.2 
6. 方法一(汇编源程序) 
ORG 00H 
START: MOV A,P1 
ANL A,#0F0H 
RR A 
RR A 
RR A 
RR A 
XOR A,#0F0H 
MOV P1,A 
SJMP START 
END 
7. 方法一(C语言源程序) 
#include 
unsigned char temp; 
void main(void) 
{ 
while(1) 
{ 
temp=P1>>4; 
temp=temp | 0xf0; 
P1=temp; 
} 
} 
8. 方法二(汇编源程序) 
ORG 00H 
START: JB P1.4,NEXT1 
CLR P1.0 
SJMP NEX1 
NEXT1: SETB P1.0 
NEX1: JB P1.5,NEXT2 
CLR P1.1 
SJMP NEX2 
NEXT2: SETB P1.1 
NEX2: JB P1.6,NEXT3 
CLR P1.2 
SJMP NEX3 
开始 
读P1口数据到ACC
ACC内容右移4次
ACC内容与F0H相或
ACC内容送入P1口 
AT89S51单片机实验及实践教程 www.supermcu.com 
- 34 - 
NEXT3: SETB P1.2 
NEX3: JB P1.7,NEXT4 
CLR P1.3 
SJMP NEX4 
NEXT4: SETB P1.3 
NEX4: SJMP START 
END 
9. 方法二(C语言源程序) 
#include 
void main(void) 
{ 
while(1) 
{ 
if(P1_4==0) 
{ 
P1_0=0; 
} 
else 
{ 
P1_0=1; 
} 
if(P1_5==0) 
{ 
P1_1=0; 
} 
else 
{ 
P1_1=1; 
} 
if(P1_6==0) 
{ 
P1_2=0; 
} 
else 
{ 
P1_2=1; 
} 
if(P1_7==0) 
{ 
P1_3=0; 
} 
else 
{ 
P1_3=1; 
} 
} 
} 
4. 广告灯的左移右移 
1. 实验任务 
做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7
接口上,输出"0"时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0
亮,重复循环. 
2. 电路原理图 
AT89S51I /'? ZZZVXSHUPFXFRP
- 35 - 

U 2*4fi9- %E3 
^)(2ˇ4 ,XP1.0 P1.7*ü88 f4 E y C^ 'U1u / + ,XL1
L80^ ¨ U" P1.0 h-L1¨P1.1 h-L2¨¨P1.7 h-L8~ 
U /: @í@―? 
^ E *üEg 0^ MOVP1¨A MOVP1¨ DATA¨ U4 3t E~,X ¨G^E'Eg {,X|0~ 
! E ,XDBAEà¨K',XDBV ><1 
AT89S51I /'? ZZZVXSHUPFXFRP
- 36 - 
U /: u-
4.4.2 
U !v4E# /: 
25*
67$57 0295
029$)(+
6(7%&
/223 0293$
/&$//'(/$<
5/&$
'-1=5/223
0295
/223 0293$
/&$//'(/$< 
55&$
'-1=5/223
/-0367$57
'(/$< 0295 
' 0295
' 0295
'-1=5
'-1=5'
'-1=5'
5(7
(1'
U & A /# /: 
#include 
unsigned char i; 
unsigned char temp; 
unsigned char a,b; 
void delay(void) 
{ 
unsigned char m,n,s; 
for(m=20;m>0;m--) 
for(n=20;n>0;n--) 
for(s=248;s>0;s--); 
} 
void main(void) 
AT89S51I /'? ZZZVXSHUPFXFRP
- 37 - 
{ 
while(1) 
{ 
temp=0xfe; 
P1=temp; 
delay(); 
for(i=1;i<8;i++) 
{ 
a=temp<>(8-i); 
P1=a|b; 
delay(); 
} 
for(i=1;i>i; 
b=temp< / cA'Au,X í¨ U*ü ,X 9' 
~1 *üMOVDPTR¨ DATA16,X 9SDB J\ ,<,X ~ 
~2 *üMOVCA¨ A DPTR,X ¨B3t<,Xat DPTR,X¨^ S/ c
AuDU /: u-
4.5.2 
U !v4E# /: 
ORG 0 
START: MOV DPTR,#TABLE 
LOOP: CLR A 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -