单片机C语言例程.pdf

上传人:文*** 文档编号:88048842 上传时间:2023-04-20 格式:PDF 页数:188 大小:22.74MB
返回 下载 相关 举报
单片机C语言例程.pdf_第1页
第1页 / 共188页
单片机C语言例程.pdf_第2页
第2页 / 共188页
点击查看更多>>
资源描述

《单片机C语言例程.pdf》由会员分享,可在线阅读,更多相关《单片机C语言例程.pdf(188页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、目 录第一章 A T 8 9 s 5 1 单片机实验及实践系统板简介.2第二章 K e i l C软件使用.1 2第三章 实验及实践课题.1 90 1.闪烁灯.1 90 2.模拟开关灯.2 203.多路开关状态指示.2 30 4.广告灯的左移右移.2 70 5.广 告 灯(利用取表方式).2 90 6.报警产生器.3 207.I/O 并行口直接驱动LE D 显示.3 40 8.按键识别方法之一.3 709.一键多功能按键识别技术.4 01 8 .“嘀、嘀、”报警声.791 9 .“叮咚”门铃.8 32 0.数字钟().8 62 1 .拉幕式数码显示技术.9 3.9 92 3 .模拟计算器数字输

2、入及显示.1 1 12 4 .8 X8 LE D 点阵显示技术.1 1 82 5 .点 阵 式 LE D “。一9”数字显示技术.1 2 32 6 .点 阵 式 LE D 简单图形显示技术.1 2 8.1 3 22 8 .数字电压表.1 3 82 9 .两点间温度控制.1 4 13 0.四位数数字温度计.1 4 63 1 .6 位数显频率计数器.1 4 93 2 .电子密码锁设计.1 5 23 3 .4 X 4 键盘及8 位数码管显示构成的电子密码锁.1 5 83 4 .带有存储器功能的数字温度计一D S 1 6 2 4 技术应用.1 703 5 .D S 1 8 B 2 0数字温度计使用.1

3、 8 2第 一 章 AT89S51单片机实验及实践系统板简介A T 8 9 s 5 1 单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供不同的开发环境。每个硬件模块介绍如下:1 .继电器控制模块系统板上提供了 2 路继电器控制模块,分布在系统板的最左上端区域中,输入信号由R e a l y i n 1和 R e a l y i n 2 端口输入分别控制两路继电器,继电器控制的信号分别由最上端的两个插针输入和输出。分别称为 c o m l o p e n l s ho r t 1 n

4、,“c o m 2 o p e n 2 s ho r t 2”,由于这个两个继电器是单刀单掷控制,当继电器不吸合时,“c o m l”和“s ho r t l”相通,“c o m 2”和“s ho r t 2”相通;当继电器吸合时,“c o m l”和“o p e n l”相通,“c o m 2”和“o p e n 2”相通。其电路原理图1.1 所示。图 1.12 .参考电压源模块在系统板上写有“参考电压源”区域中,是由T L4 3 1 来完成参考电压的调节,调节范围在0 2.5 0V之间;主要为是系统板上需要参考电压芯片或是为外部设备提供参考电压,由V a r V r e f O ut端口输

5、出。其电路原理图如图L 2 所示。3.三路可调电压模块此模块主要是用于提供0 5 V 之间的可变的模拟电压值,即可以作为参考电压源也可以作为模拟电压信号。这三路是相互独立的。分别对应着由V R1,V R2,V R3端口输出。具体的电路原理图如图1.3所力O4.电源模块电源模块为系统板上其它模块提供+5 V 电源,电源输入有两种方式,一种为交直流电源从电源插座输入,输入的电压要求,直流输入应大于7.5 V,交流输入应大于5 V,通过7 8 0 5 三端稳压器得到5 V 的直流电源供给系统其它模块工作,另一种为从U S B 接口获取+5 V 电源,只要用相应配套的U S B 线从电脑主机获取+5

6、V 直流电源,在电源模块中加有保护电路,即电路中有短路,不会对7 8 0 5 三端稳压器及电脑主机电源有损害!其电路原理图如图L 4 所示。图 1.45 .程序下载模块该模块完成源程序代码下载到A T 8 9 S 5 1 或者是A T 8 9 S 5 2芯片中,它需要和微机上的I S P 下载器软件配合使用来完成这样的功能。具体的电路原理图如图1.5 所示。因R43VCC10KZD-1 GNDU2611.0592MHzTXC 3RST VCCP3.0/RXP1.7P3.1/TXP1.6v c c2 0 T19P17P16T 卜C l z30pFPl.5Pl.430pF 89ToP3.2/irO

7、P1.3P3.3/IT1P1.2P3.4?T0 P l.lP3.5H1 P1.0GND P3.71615 R EST14ITITGND1 P15DM 1484T亍图 1.56 .232电平转换模块232电平转换采用MA X232芯片把T T L电平转换成RS 232电平格式,可以用于单片机与微机通信,以及单片机与单片机之间的通信,在该系统板上提供了两个D B 9 的接口,其中一个用I S P 下载器模块的程序下载接口,称为“I S P I n te r f a c e”,另一个接口为单片机与其它具有RS 232接口的通信端口,称为“C o m m o nP o r t”。具体的电路原理图如图1

8、.6 所示。10uFVCClOuFJ67Common PortGND|-1 0f_ _J66ISP InterfaceGNDU24C1+VCCV+GNDCl-T1OC2+R11NC2-RIOV-T1INT2O I 2INR2IN R2O色78|v c cHJGNDRXRXDT1 TXD10 TXC-9 RXCTXD RXDMAX232图1.67 .频率产生器模块该模块采用5 5 5芯片产生一些连续频率的方波信号,由“W A V E G ND”端口输出,其稳定可调的频率范围在5 K H z l O O K H z之间变化。电路原理图如图1.7所示:VCCyQCRU31J25J76EREI23TR

9、IGDISR47 _10KGNDC21WAVE GNDCVoltTHRy -1 1-|GN D5550 OluF76GND I图1.78 .音频放大模块该音频放大模块采用LM38 6芯片作为音频的功率放大,音频信号由“S P K I N”端口输入,信号的输出 由“S P K O U T”端口输出,只 要 在“S P K O U T”接一个喇叭即可。具体的电路原理图如图L 8所示:GN D图1.89,模数转换模块系统板上的模数转换模块采用A D C 0 8 0 9芯片,组 成8路8位 的A/D转换,8路模拟电压的输入由I N0 一I N7的端口输入,控 制A D C 0 8 0 9芯片工作的控制

10、信号由“C LK O E E O C S T A 2 A l A 0”端口输入,转换的数据从D O D 7的端口输出。具体的电路原理图如图1.9所示:.158Vru InJ41IN 7 INS IN 5 IN4 IN3 JN2 IN I INO 9 L-8 6 二,二三?一:髭-雪C-J昙-U,昙运IU13INKQ 2。INK2 22INK?INK 4INK5 3INKE INK?-O N OV C CG N D16121N-0msbZ-12-2IN-12-32-4IN-22-S2-6IN 32 7lsb2-8IN-4EOCIN-5A D D-AIM-6 A D D-BA D D-CIN-7G

11、 N D A L Ev c cre7D 214 ADCD117 ADCDC.138A DC AlADCAiHOCADCA。689Os25 ALX?AO24 ADCA23 AT SK B SL1 88J-没IR123-5678K B工 NK E 2 3K N?AKE 4 二 KJB口 6K p eK E 7 MK B 8 98765-321D F U JOR2B S r b早取 等 酒 曜D R?的3 uV D C:|-D IR.O Z DK L S N 4 50133567BBBBBJeBBo1N34567卜L.L.K-卜卜卜412J34J5e78UR氏RRRRRR1 7 K A 2 3】曰

12、K A三:1 5 K A 4 5IV K A S G14 KAG/1 2 K A芋 311 K A S 92 0T ocRRRmR JRRRIV U UD Z D4-4W4.图 1.1 21 3 .八路发光二极管指示模块该模块采用8个发光二极管作为指示信号作用,即可以用排线来控制,也可以单个地控制每个发光二极管的亮灭,当控制信号为低电平时,发光二极管亮,为高电平时,发光二极熄灭;控制电平的输入由“L 1 L 8”输入。电路原理图如图1.1 3 o1 4 .三八译码模块在系统板上提供了三八译码模块,控制译码器译码信号由“C B A”端口输入,译出的控制信号由“YO Y7”输出。电路原理图如图1.

13、1 4 1 5 .串并转换模块该系统板上采用了四个7 4 L S 1 6 4 (移位寄存器)作为串并转换模块,这四路串并转换模块已经级连起来。串行数据从“R XD TXD”端口输入;具体的电路原理图如图1.1 5 所示。R!00360UF1 1UFN 2UF3 3O N O01234567YYYYYYY丫123ABCEHRU 2 9图 1.1 41 6.数模转换模块系统板上的数模转换模块采用了 8位 的D/A转换芯片D A C 0 8 3 2来完成数模转换过程,D A C 0 8 3 2是电流输出型D/A转换芯片,因此,后面接有集成运放L M3 5 8来完成电流到电压的转换。其中的数字信号的输

14、入从“D O D 7”端口输入,控缶U D A C 0 8 3 2工作的控制信号由“WR C S”端口输入,模拟量的输出从“A O U端口输出,由于L M3 5 8 工作在双电源条件下,因此要给L M3 5 8 加入1 2 V电 压,从“+1 2 V GN D 1 2 V”端口加入。具体的电路原理图如图1.1 6 所示:SJga_ _mm尸刊:啰65432IDwwDtDIDlwbbAom CS WR图 1.1 61 7 .四路拨动开关模块开关控制信号由“K I K 2 K 3 K 4”端口输出,具体的电路原理图如图1.1 7 所示:J23图 1.1 71 8 .单片机系统该系统板上的单片机系统

15、把全部的I/O 端口资源提供出来,因此,在实际应用的时候,可以灵活地组合成不同的单片机应用系统,该单片机采用1 2 MHz晶振,具体的电路原理图如图1.1 8 所示。1 9 .分频模块该系统板上的分频电路采用2片 7 4 L S 7 4 来完成最大1 6 分频,输入的时钟信号由“C K IN”端口输入,经过2片 7 4 L S 7 4 分频后的信号分别由“/I/2 /4 /8 /1 6”端口输出,分别表示未分频,2 分频,4 分频,8 分频,1 6 分频;具体的电路原理图如图1.1 9 所示-a I 把 H 0 E K Q K E-t-8z.au,xc8 2ag,ETS02Y二-_-一定口黄黄

16、i|a2SvI I I I I I I*I MI|I I I 1*I-I-I *%*I f I或 口育二不口 后 S3 a NKNa n u|pi图 1.1874LS74图 1.1 92 0 .四路单总线模块为了适应新技术的需要,增加l-Wi r e 总线接口,在本系统板上提供了四路1 Wi r e 总线接口,数据传输通过“D Q 1 D Q 2 D Q 3 D Q 4”端口来完成;具体的电路原理图如图1.2 0 所示:图 1.2 02 1 .二线总线模块(F C 总线)为了适应新技术的需要,增加了 2路 1 2 c 总线接口,适用8脚的1 2 c 总线芯片,左边的“P IN 1 P IN 2

17、 P IN 3P IN 4 P IN 5 P IN 6”与上面的接口连接,右边的“P IN 1 P IN 2 P IN 3 P IN 4 P IN 5 P IN 6”与下面的接口连接;具体的电路原理图如图L 2 1 所示:J49PIN1 PIN2 PIN3 PIN4 PIN5 PIN6GND 24C04图 1.2 12 2 .独立式键盘模块键盘是人机通信不可缺少的部件,独立式键盘是最基本的一种键盘方式,在本系统中提供了四个独立式按键;具体的电路原理图如图1.2 2 所示:J22图 1.2 22 3.4 X 4行列式键盘模块行列式键盘也即矩阵式键盘,它由行和列组成,在每个行列的交叉点上放置一个按

18、键,这 样4 X 4行列式键盘共需要1 6个键盘组成;具体的电路原理图如图1.2 3所示:2 4.32 K B数据存储器模块为了适应大容量的数据处理的需要,在系统板上加入了 32 K B数据存储器(R A M),数据总线从“D OD 7”的端口输入,高8位地址总线从“A 8 A 1 5”端口输入,控制数据存储器的读写控制信号从“A L EC S W R R D”端口输入,具体的电路原理图如图1.2 4所示:J6987654321GNDRAMALE 11U27RAMDO 2RAMD13RAMD24RAMD35RAMD46RAMD57RAMD68RAMD79CON8OCCID2D3D4D5D6D7

19、D8DIQ2Q3Q4Q5Q6Q74HC57RAMCSJ71ALE CS WR RDRAMCS20R A M W R 2719ADRO10 u18ADRI917ADR2816ADR3715ADR4614ADR5513ADR63 12ADR 7387654321RAMRD 22 ADR825ADR924ADR 1021ADR1123ADR122ADR1326ADR141RAM 62256 CEQ0 WEQ iAOQ2A lQ3A2Q4A3Q5A4Q6A5Q7A6A7A8A9A10AllA12A13A14OE11 RAMDO12 RAMD113 RAMD215 RAMD316 RAMM17 RAMD

20、518 RAMD619 RAMD7A15 A14 A13 A12A11 A10A9 A8图 1.2 4以上是 A T 8 9 S 51单片机实验及实践系统板”的所有硬件资源简介,通过这2 4 个模块之间的相互组合,可以设计出从基本的单片机系统到复杂的单片机应用控制系统的设计,是初学者对单片机入门和开发不可缺少的过程。inclu d e sbit K l=P3 0;sbit L l=Pr O;v o id main(v o id)(wh ile(l)(if (K l=0)(L l=0;灯亮)else(L l=l;灯灭)include sbitLl=POAO;sbit kl=P3A0;void m

21、ian(void)|while(1)if(kl=O)(Ll=0;else Ll=l;第二章Keil C 软件使用K eil C 51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PL M语 言 和C语言的程序设计,界面友好,易学易用。下面介绍K eil C 51软件的使用方法进 入K eil C 51后,屏幕如下图所示。几秒钟后出现编辑界5折扁法IntegrationforMicrocontroller启动K eil C 51时的屏幕This program is protected by U.S.and international copyright laws

22、.进 入K eil C 51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习K eil C 51软件的基本使用方法和基本的调试技巧。1)建立一个新工程单击P r o j e c t菜单,在弹出的下拉菜单中选中N e w P r o j e c t选项|P-iBisi on2Nw Projtct.File Zdit ViewProject Dtbut Y ie Qbc P 0 b r l,I*1 SVCS fiM e*国 中 匕 0 F _?*U -03 ja F ow z到现在为止,我们还没有编写一句程序,下面开始编

23、写我们的第一个程序。5)在下图中,单 击“F i l e”菜单,再在下拉菜单中单击“N e w”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“F i l e”,在下拉菜单中选中“S a v e A s”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.a s m)。然后,单 击“保存”按钮。6)回到编辑界面后,单 击“T a r g e t 1”前 面 的“十”号,然

24、后 在“S o ur c e G r o up 1”上单击右键,弹出如下菜单f c j Target 1S eleclC、工HDCnrSD3”CS八 TQX”,GOpti oxix or Group#Source Group 1,Qpn F il住/R ebuildg u ild targetT ran slate Fi.1*K Stop biliAdd F ile s to Group,Sourc*Group 1,*r g e t,Groups,F ile sRfkov Group S o u r s Group 1 and 11*s P il s然后单击“A d d F i l e t o

25、 G r o up S o ur c e G r o up 1”屏幕如下图所示选中T e s t,c,然后单击“A d d ”屏幕好下图所示注意到“S o ur c e G r o up 1”文件夹中多了一个子项“T e x t l.c”了吗?子项的多少与所增加的源程序的多少相同7)现在,请输入如下的C语言源程序:#i n c l ud e 包含文件t t i n c l ud e v o i d m a i n (v o i d)/主函数(S C 0N=0 x 5 2;T M 0D=0 x 2 0;T H l=0 x f 3;T R 1 =1;此行及以上3行为P R I N T F函数所必须

26、p r i n t f(H e l l o I a m K E I L n );打印程序执行的信息p r i n t f (I w i 1 1 b e y o ur f r i e n d.nM);w h i l e ;)在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即K e i l c5 1 会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示8)在上图中,单 击“P ro j e ct”菜单,再在下拉菜单中单击“B ui lt T arg e t”选 项(或者使用快捷键F 7),编译成功后,再单击“P ro

27、 j e ct”菜单,在下拉菜单中单击“S tart/S to p D e bug S e ssi o n”(或者使用快捷键C trl+F 5),屏幕如下所示9)调试程序:在上图中,单击“D e bug”菜单,在下拉菜单中单击“G o”选项,(或者使用快捷键F 5),然后再单击“D e bug”菜单,在下拉菜单中单击“S to p Run n i n g”选 项(或者使用快捷键E sc);再单击“Vi e w”菜单,再在下拉菜单中单击“S e ri al Wi n do ws#1”选项,就可以看到程序运行后的结果,其结果如下图所示,1!x|liU Edit YE 林oj.ct Pt,aphr*

28、ls 工ools fandow-I削 X|商以Q 9|X *里|夕U产 下4%再-Z必何2Q国|4命石附怖|S i衲印印喇|O鞋的|像犀学修0 S Z IHello I am KEIL.3I will be your friend.m:C51-Ulisin2-StriU fl二J刽国 Fite5 51 Req*IdC:WIND0WSDesktopC51C5 匕 号 2.|Vtl”ASM ASSIGN BreakDisable0ippnciiiO i,Command人 Andi)Fites|4|For Kelp,prss Ftd “卜 kLocah 人 Watch#1 入 Walch 趣 入 C

29、al Steck/用用 R/I至此,我们在K e i l C 5 1 上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?1 0)单击“P ro j e ct”菜单,再在下拉菜单中单击(Options or Target Target 1在下图中,单击“O utp ut”中单击“C re ate H E X F i le”选项,使程序编译后产生H E X代码,供下载器软件使用。把程序下载到A T 8 9 S 5 1 单片机中。第三章实验及实践课题0 1.闪烁灯1 .实验任务如图4.1.1 所示:在P 1.0 端口上接一个发光二极管L 1,使 L 1

30、在不停地一亮一灭,一亮一灭的时间间隔为0.2 秒。2 .电路原理图V-P 3O/R X Dirrxp2/fiTTo3/fW f4/T。5/T 16/W R:33PPPP23:e.7ppppppk:L:;p op ogp op op op o8岳a8MM案M徐歌歌APSK NP 2 7/A 1 5P 2.6/A 1 4P 2 S/A 1,P 2 4/A 1 2P 2 3/A 1 1V 2 2/A 1OP 3.7/R OP 2 1/A 9P 2.O/A 8iA T 9 S S 1Y 1 61口 口3O p F._图 4.1.13 .系统板上硬件连线把“单片机系统”区域中的P l.0端口用导线连接到

31、“八路发光二极管指示模块”区域中的L1 端口上。4 .程序设计内容(1)延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2 秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1 所示的石英晶体为1 2 M H z,因此,1 个机器周期为1 微秒由以上可知,当 R 6 =1 0、R 7 =2 4 8 时,延时5 m s,R 6 =2 0、R 7 =2 4 8 时 一,延 时 1 0 m s,以此为基本的计时单位。如本实验要求0.2秒=2 0 0

32、 m s,1 0 m sX R 5 =2 0 0 m s,则 R 5 =2 0,延时子程序如下:机器周期微秒M O V R 6,#2 02个2D l:M O V R 7,#2 4 82个22 +2 X 2 4 8 =4 9 8 2 0 XD J N Z R 7,$2个2 X 2 4 8(4 9 8D J N Z R 6,D I2个2 X 2 0 =4 01 0 0 0 2因此,上面的延时程序时间为1 0.0 0 2 m sD E LA Y:M O V R 5,#2 0D I:M O V R 6,#2 0D 2:M O V R 7,#2 4 8D J N Z R 7,$D J N Z R 6,D

33、 2D J N Z R 5,D IR E T(2)输出控制如图4.1.1 所示,当 P L 0端 I输出高电平,即 P L 0 =1时,根据发光二极管的单向导电性可知,这时发光二极管L1 熄灭;当 P 1.0 端口输出低电平,即 P L 0 =0时,发光二极管L1 亮;我们可以使用S E T B PL 0指令使PL 0端口输出高电平,使 用C LR P L 0指令使P L 0端口输出低电平。5 .程序框图如图4.1.2 所示图 4.1.26.汇编源程序O R G 0S T A R T:C LR P 1.0LC A LL D E LA YS E T B P l.0LC A LL D E LA Y

34、LJ M P S T A R TD E LA Y:M O V R 5,#2 0 ;延时子程序,延时0.2 秒D I:M O V R 6,#2 0D 2:M O V R 7,#2 4 8D J N Z R 7,$D J N Z R 6,D 2D J N Z R 5,D IR E TE N D7.C 语言源程序#i n c l u d e sb i t LI =P 0 0;v o i d d e l a y 0 2 s(v o i d)延时 0.2 秒子程序(u n si g n e d c h a r i,j,k;f o r(i=2 0;i 0;i)f o r(j=2 0;j 0;j)f o r

35、(k=2 4 8;k 0;k);v o i d m a i n(v o i d)L1=O;w h i l e(l)L1=O;d e l a y 0 2 s();Ll=l;d e l a y 0 2 s();0 2.模拟开关灯1.实验任务如图4.2.1所示,监视开关K1 (接 在P 3.0端口上),用发光二极管L1 (接在单片机PL 0端口上)显示开关状态,如果开关合上,L 1亮,开关打开,L 1熄灭。2.电路原理图6 CO r-4:4-TT.-J,二 6 C:)-U-.y I|J -E S F f E S 7 J J 7 1 -:C-J C l:1 7 1 C-4318W02d6WlZdsVR

36、Zd二V/SZdzwqzdg【VKNdndzasdTIV3V沁od9CTV79odOv/QodkoveodSOVEOdzavzodicvnodOOV/O0dv c cE AX 2售9mdLl/smd01/qgdpLbnKoxt【mdCEQI/OSd3.系统板上硬件连线(1)把“单片机系统”区域中的P 1.0端口用导线连接到“八路发光二极管指示模块”区域中的L 1端口上;(2)把“单片机系统”区域中的P 3.0端口用导线连接到“四路拨动开关”区域中的K 1端口上;4.程序设计内容(1)开关状态的检测过程对开关状态的检测相对于单片机来说,是从单片机的P 3.0端口输入信号,而输入的信号只有高电平和

37、低电平两种,当拨开开关K 1拨上去,即输入高电平,相当开关断开,当拨动开关K 1拨下去,即输入低电平,相当开关闭合。单片机可以采用J B BIT,R E L或者是J N B BIT,R E L指令来完成对开关状态的检测即可。(2)输出控制如图3 所示,当P L 0 端口输出高电平,即P L 0 =1 时,根据发光二极管的单向导电性可知,这时发光二极管L 1 熄灭;当P 1.0 端口输出低电平,即P 1.0=0 时,发光二极管L 1 亮;我们可以使用S ET BP L 0 指令使P L 0 端口输出高电平,使用C L R P 1.0 指令使P 1.0 端口输出低电平。5.程序框图图 4.2.26

38、.汇编源程序O R G 0 0 HS T A R T:J B P 3.0,L IGC L R P 1.0S J M P S T A R TL IG:S ET B P l.0S J M P S T A R TEN D7 .C 语言源程序#inc lude sb it K l=P 3 0;sb it L 1=P 1 0;void ma in(void)(while(l)if(K l=0)L l=0;灯亮)e lse(L l=l;灯灭)0 3.多路开关状态指不1.实验任务如图4.3.1 所示,A T 8 9 如1 单片机的示.0 P L 3 接四个发光二极管L 1-L 4,P L 4 P L 7 接

39、了四个开关K 1 K 4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)2.电路原理图D内NXG8W0Zd2WZZd二wmNdZWbZdSMSNdZW9ZdndT1VX2怛LSd修I golEdTDS.GdEpcd一.LNSEdO.LN1/ZSdaglCdaxH/OGdCId9IdSida:二dZId【Id0【dL2Lod9agodSGVKodOdgasodZOVNOdlovnodOCTWOod图 4.3.13 .系统板上硬件连线(1)把“单片机系统”区域中的P L O P L 3 用导线连接到“八路发光二极管指示模块”区域中的L 1 L 4 端口上;(2)

40、把“单片机系统”区域中的P 1.4 P L 7 用导线连接到“四路拨动开关”区域中的K IK 4 端口上;4 .程序设计内容(1)开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用J B P l.X,R EL 或 J N B P l.X,R EL 指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用M O V A,P l指令一次把P l端口的状态全部读入,然后取高4 位的状态来指示。(2)输出控制根据开关的状态,由发光二极管L 1 L 4 来指示,我们可以用S ET B P L X 和C L R

41、P L X 指令来完成,也可以采用M O V P l,#1 1 1 1 X X X X B方法一次指示。5 .程序框图读P l 口数据到ACCAc c内容右移4次Acc内容与FOH相或Acc内容送入P1 口图 4.3.26 .方法一(汇编源程序)O R G 0 0 HS T A R T:M O V A,P lA N L A,#O FO HR R AR R AR R AR R AX O R A,#O FO HM O V P l,AS J M P S T A R TEN D7 .方法一(C 语言源程序)#inc lude unsig ne d c ha r te mp;void ma in(voi

42、d)(while(l)te mp=P l 4;te mp=te mp|O xf O;P l=te mp;)8 .方法二(汇编源程序)O R G O O HS T A R T:J B P l.4,N EX T 1C L R P 1.0S J M P N EX 1N EX T 1:S ET B P l.0N EX 1:J B P l.5,N EX T 2C L R P l.1S J M P N EX 2N EX T 2:S ET B P l.1N EX 2:J B P l.6,N EX T 3C L R P l.2S J M P N EX 3N EX T 3:S ET B P l.2N EX 3:

43、J B P l.7,N EX T 4C L R P l.3S J M P N EX 4N EX T 4:S ET B P l.3N EX 4:S J M P S T A R TEN D9.方法二(C语言源程序)ttinc lude void ma in(void)(while(l)(if(P l_4=0)(P l_0=0;e lse(P l_0=l;)if(P l_5=0)(P l_l=0;)e lse()if(P l_6=0)P l_2=0;)e lseP l_2=l;)if(P l_7=0)(P l_3=0;e lse(P l_3=l;)0 4.广告灯的左移右移1.实验任务做单一灯的左移右

44、移,硬件电路如图4.4.1所示,八个发光二极管L1L8分别接在单片机的P1.0一P1.7 接口上,输出“0”时,发光二极管亮,开始时 P1.0-P1.l-P L 2 fP L 3 f f P 1.7-P 1.6 f-一-P L 0亮,重复循环。2.电路原理图属1011plP1o二 TY1 6T 二图 4.4.13.系统板上硬件连线把“单片机系统”区域中的P L 0PL 7用8芯排线连接到“八路发光二极管指示模块”区域中的L1L8端口上,要求:P L 0对应着LI,P L 1对应着L 2,,P L 7对应着L8。4.程序设计内容我们可以运用输出端口指令M O V Pl,A或M O V Pl,#D

45、ATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同,具体的数据如下表1所示P1.7P1.6P1.5P1.4P1.3P1.2Pl.1P1.0说明L8L7L6L5L4L3L2L111111110L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮表15.程序框图如图4.4.2所示6.汇编源程序ORG 0STA RT:MOV R2,#8MOV A,#OFEIISETB CLOOP:MOV Pl,ALCA LL DELA YRLC ADJNZ R2,

46、LOOPMOV R2,#8LOOP1:MOV Pl,ALCA LL DELA YRRC ADJNZ R2,LOOP1LJMP STA RTDELA Y:MOV R5,#20DI:MOV R6,#20D2:MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,DIRETEND7.C语言源程序#i n cl u de u n s i g n e d ch ar i;u n s i g n e d ch ar t e m p;u n s i g n e d ch ar a,b;v o i d de l ay(v o i d)u n s i g n e d ch ar m,n,s

47、;f o r(m=20;m 0;m-)f o r(n=20;n 0;n一)f o r(s=248;s 0;s一);)v o i d m ai n(v o i d)(w h i l e(l)(t e m p=0 x f e;Pl=t e m p;de l ay ();f o r(i=l;i 8;i+)(a=t e m p(8-i);Pl=a|b;de l ay ();)f o r(i=l;i i;b=t e m p(8-i);Pl=a|b;de l ay ();0 5.广告灯(利用取表方式)1.实验任务利用取表的方法,使端口 P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)

48、。2.电路原理图电路如图4.5.1所示。3.系统板上硬件连线Pl.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的LIL8端口上,要求:P L 0对应着LI,P L 1对应着L 2,,P1.7对应着L8。4.程序设计内容在用表格进行程序设计的时候,要用以下的指令来完成(1)利用MOV DPTR,井DA TA 16的指令来使数据指针寄存器指到表的开头。(2)利用MOVC A,A +DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。因此,只要把控制码建成一个表,而利用M O V C工,A +DPTR做取码的操作,就可方便地处理一些复杂的

49、控制动作,取表过程如下图所示:(仃问题20050930)VCCVCCRIR3220R4220R5220R6220R7220RS220R9220P l 4P l SPl 6P l 7近Pl o7P3 0/RXDP3 1/TXDP3 2HNTOP3 3/INT1P3 4/TOP3.S/T1P3P3 7/RD-A8PO O/ADOPO 1/AD1PO 2/AD2PO 3/AD3PO.4/AD4PO 5/AD5PO 6/AD6PO 7/AD7ALEPSENP2.7/A15P2.6/A14P2.5/A13P2 4/A12P2 3/A1 1P2 2/A1OP2.1/A9P2 O/A8OC2 12MH3Op

50、F _C330P尸8算,Y1 6I 口 口GND图 4.5.15.程序框图图 4.5.26.汇编源程序0RGSTA RT:MOV DPTR,STA BLE0LOOP:CLR AMOVC A,A+DPTRCJNE A,#01H,L00P1JMP STA RTL00P1:MOV Pl,AMOV R3,#20LCA LL DELA YINC DPTRJMP LOOPDELA Y:MOV R4,#20DI:MOV R5,#248DJNZ R5,$DJNZ R4,DIDJNZ R3,DELA YRETDB DBDB IDBDB DBDBDBDBDBENDTA BLE:OFEH,OFDII,OFBH,0F

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁