《单片机编程实例____C语言____汇编.docx》由会员分享,可在线阅读,更多相关《单片机编程实例____C语言____汇编.docx(218页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录第一章AT89S51单片机实验及实践系统板简介1第二章Keil C软件使用14第三章AT89S51单片机下载器软件使用25第四章实验及实践课题-281 .闪烁灯282 .模拟开关灯313 .多路开关状态指示334 .广告灯的左移右移-一-375 .广告灯(利用取表方式)406 .报警产生器437 . I/O并行口直接驱动LED显示468 .按键识别方法之499 .一键多功能按键识别技术5310.0099计数器5711.0059秒计时器(利用软件延时)-6012.可预置可逆4位计数器-6313.动态数码显示技术6714.4X4矩阵式键盘识别技术7015.定时计数器T0作定时应用技术(一)79
2、16.定时计数器T0作定时应用技术(二)8417. 99秒马表设计-8918. “嘀、嘀、”报警声9519. 9.“叮咚”门铃9920 .数字钟()10521 .拉幕式数码显示技术11422 .电子号-12123 .模拟计算器数字输入及显示13424 .8X8LED点阵显示技术14125 .点阵LED “09”数字显示技术14626 .点阵式LED简单图形显示技术15327 . ADC0809 A/D转换器基本应用技术15728 .数字电压表16329 .两点间温度控制16730 .四位数数字温度计17231 .6位数显频率计数器17732 .电子密码锁设计18033 .4X4键盘及8位数码管
3、显示构成的电子密码锁18634 .带有存储器功能的数字温度计一DS1624技术应用19935 . DS18B20数字温度计使用211第一章 AT89S51单片机实验及实践系统板简介AT89S51单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供不同的开发环境。每个硬件模块介绍如下:1 .继电器控制模块系统板上提供了2路继电器控制模块,分布在系统板的最左上端区域中,输入信号由 Realy in 1和Realy in 2端口输入分别控制两路继电器,继电器控制的信号分别由最上端的两个插针输
4、入和输出。分别称为coml openl short 1. ucom2 open2 short2,由于这个两个继电器是单刀单掷控制,当继电器不吸合时,“coml”和“shortl”相通,“com2”和“short2”相通:当继电器吸合时,“coml”和“openl”相通,“com2”和“open2”相通。其电路原理图1.1所示:图1.12 .参考电压源模块在系统板上写有“参考电压源”区域中,是由TL431来完成参考电压的调节,调节范围在02.50V之间;主要为是系vcc统板上需要参考电压芯片或是为T外部设备提供参考电压,由Var“ R28Vref Out端口输出。其电路原理图-c=-.如图1.2
5、所示:图1.23 .三路可调电压模块此模块主要是用于提供。一5V之间的可变的模拟电压值,即可以作为参考电压源也可以作为模拟电压信号。这三路是相互独立的。分别对应着由 VR1, VR2, VR3端口输出。具体的电路原理图如图1.3所示:图1.34 .电源模块电源模块为系统板上其它模块提供+5V电源,电源输入有两种方式,一种为交直流电源从电源插座输入,输入的电压要求,直流输入应大于7.5V,交流输入应大于5V,通过7805三端稳压器得到5V的直流电源供给系统其它模块工作,另一种为从USB接口获取+5V电源,只要用相应配套的USB线从电脑主机获取+5V直流电源,在电源模块中加有保护电路,即电路中有短
6、路,不会对7805三端稳压器及电脑主机电源有损害!其电路原理图如图1.4所示:J74U30 7805DllVCC图1.45 .程序下载模块该模块完成源程序代码下载到AT89S51或者是AT89S52芯片中,它需要和微机上的ISP下载器软件配合使用来完成这样的功能。具体的电路原理图如图1.5所示:C12VCCGNDY2lOuFRXC2TXC311.0592MHz4Cl4=4=C1457U2630pF30pF 8 9 10RST VCC P3.0/RXP1.7P3.1/TXP1.6X2Pl.5XIPl.4P3.2/IT0P1.3P3.3/TT1P1.2P3.4/T0 Pl.lP3.5/T1 P1.
7、0GND P3.7VCC 20T 19 r 17 16 T5 REST14亘亘TTVCCP16I P15)2051C15VCC |111 GND104Q3R45R444.TCD7-H1 IN41484.7K图1.56 .232电平转换模块232电平转换采用MAX232芯片把TTL电平转换成RS-232电平格式,可以用于单片机与微机通信,以及单片机与单片机之间的通信,在该系统板上提供了两个DB9的接口,其中一个用ISP下载器模块的程序下载接口,称为“ISP Interface,另一个接口为单片机与其它具有RS232接口的通信端口,称为“Common Port”。具体的电路原理图如图1.6所示:G
8、ND卜10uF10uFvcc|卜10uFJ66J672 2 4_ T色 716 豆 IZ jT 豆 TT ToIvcc Rgnd RX rxdTXDC1 +VCCV4-GNDC1-T1OC2+R1INC2-R1OV-T1INT2O T2INR2IN R2OMAX232TXCRXCRXD图1.67 .频率产生器模块该模块采用555芯片产生一些连续频率的方波信号,由“WAVE GND”端口输出,其稳定可调的频率范围在5KHz lOOKHz之间变化。电路原理图如图1.7所示:图1.78 .音频放大模块该音频放大模块采用LM386芯片作为音频的功率放大,音频信号由“SPK IN”端口输入,信号的输出由
9、“SPK OUT”端口输出,只要在“SPK OUT”接一个喇叭即可。具体的电路原理图如图1.8所示:U25J68vccSPK INSPKA 10KGNDGNbC8lOuF C9 止VSIN+V OUTIN- GAIN BYPASS GAIN GNDLM386N1(8)GND C11R4210104CIO =HI- 47347uFLSI TSPK OUTGND图1.89 .模数转换模块系统板上的模数转换模块采用ADC0809芯片,组成8路8位的A/D转换,8路模拟电压的输入由IN0-IN7的端口输入,控制ADC0809芯片工作的控制信号由“CLK OE EOC ST A2 Al AO”端口输入,
10、转换的数据从DOD7的端口输出。具体的电路原理图如图1.9所示:J41IN7 IN6 IN5 IN4IN3 IN2 INI INOJ38D7 D6 D5 D4 D3 D2 DI DOTNKO 26IN-0 msb2-l2-2IN-12-32-4IN-22-52-6IN-32-7lsb2-8IN-4 EOCIN-5 ADD-AIN-6 ADD-BADD-CIN-7 GND ALEVCC ref(QNABLE STARTref(*PLX)CK 74 LS 24 50123567123456781 T.-.4 L,6 7:-: 1厂豆|厂1! KKKKKKKK17 KAN 316 KA3 。13 K
11、A4 14 K A 5-:13 KA6 J12 KA7 分11 KA ,4Z77N4C R.1 R.2 R.3 R-4 R.5 R.6 R.7 R812345678URRRRRRRR2|VCC$6。-|OND图1.1213 .八路发光二极管指示模块该模块采用8个发光二极管作为指示信号作用,即可以用排线来控制,也可以单个地控制每个发光二极管的亮灭,当控制信号为低电平时,发光二极管亮,为高电平时,发光二极熄灭;控制电平的输入由“L1-L8”输入。电路原理图如图1.13R100 36。LI L2 L3 L4 L5 L6 L7 L8 llitLt-凹日日自目O5dCO2LI L2 L3 L5 L6 L
12、7 L8图 1. 1314 .三八译码模块在系统板上提供了三八译码模块,控制译码器译码信号由“C B A”端口输入,译出的控制信号由“YOY7”输出。电路原理图如图1.14J73 C B AUF11UF22UF3315FF114FF2X13FF3a12FF4yf1 1FF510FF6n9FF7O -77FF8/ 00Y0Y1Y2Y3Y4Y501234567 yyyyyyyy12 3 ABC EEEvcc74LS138图1.1415 .串并转换模块该系统板上采用了四个74LS164(移位寄存器)作为串并转换模块,这四路串并转换模块已经级连起来。串行数据从“RXD TXD”端口输入:具体的电路原理
13、图如图1.15所示: - T11CM3Ci:r I1;二;J36COM3J28QI Q2 Q3 Q4 Q5 Q6 Q7 Q8-,:-二J29QI Q2 Q3Q4Q5 Q6 Q7 Q8J 30QI Q2 Q3Q4Q5 Q6 Q7 Q8J31QI Q2 Q3 5 Q5 Q6 Q7 Q8:):;二- ,“:o,oro,o,3*o,o*&O Z MC 9c Ul(yyy(ycy(y(y * ,C I KkJ贮- * *- .5 . _ f M 伍封封反声 WW殳QmgWHHHHHWH9Is 口 口 m g 昌 q 曰adw T T T T zMq r* wtxNxa x xa 5T5 =图1.17四路
14、拨动开关模块开关控制信号由“KI K2 K3 K4”端口输出,具体的电路原理图如图1.18所示:J23图1.1819. 分频模块该系统板上的分频电路采用2片74LS74来完成最大16分频,输入的时钟信号由“CK IN”端口输入,经过2片74LS74分频后的信号分别由“/I/2/4/8/16”端口输出,分别表示未分频,2分频,4分频,8分频,16分频:具体的电路原理图如图1.19所示J37J80CKINI OQ图1.1920. 四路单总线模块为了适应新技术的需要,增加l-wire总线接口,在本系统板上提供了四路1Wire总线接口,数据传输通过“DQ1 DQ2 DQ3 DQ4”端口来完成;具体的电
15、路原理图如图1.20所示:GND+5VSGND+5VDQGND+5VSGND图1.2021. 二线总线模块(/V总线)为了适应新技术的需要,增加了2路12c总线接口,适用8脚的12c总线芯片,左边的“PIN1 PIN2 PIN3 PIN4 PIN5 PIN6”与上面的接口连接,右边的“PIN 1 PIN2 PIN3 PIN4 PIN5 PIN6”与下面的接口连接;具体的电路原理图如图1.21所示:J49PIN1 PIN2 PIN3 PIN4 PIN5 PIN6图 1.21p兄pS3p g颍3622. 独立式键盘模块键盘是人机通信不可缺少的部件,独立式键盘是最基本的一种健盘方式,在本系统中提供了
16、四个独立式按键;具体的电路原理图如图1.22所示:23. 4X4行列式键盘模块行列式键盘也即矩阵式键盘,它由行和列组成,在每个行列的交叉点上放置一个按键,这样4X4行列式键盘共需要16个键盘组成;具体的电路原理图如图1.23所示:图 1.2324. 32KB数据存储器模块为了适应大容量的数据处理的需要,在系统板上加入了32KB数据存储器(RAM),数据总线从“D0-D7”的端口输入,高8位地址总线从“A8-A15”端口输入,控制数据存储器的读写控制信号从“ALE CS WR RD”端口输入,具体的电路原理图如图1.24所不:J6987654321GNDU27:RAMDO2RAMD13RAMD2
17、4RAMD35RAMD46RAMD57RAMD68RAMD79RAMALE 11C0N8OCCID2D3D4D5D6D7D8D1Q 2Q3Q4Q 5Q6Q74HC57:RAMCSJ71RAMCS20RAMWR2719ADRO1018ADRI917ADR2816ADR3715ADR4614ADR5513ADR6412ADR7387654321ADR825ADR924ADR1O21ADR1123ADR122ADR1326ADR141RAMRD22 - CEQ0 WEQiA0Q2A1Q3A2Q4A3Q5A4Q6A5Q7A6A7A8A9A10AllA12A13A14OERAM 6225611 RAMD
18、O12 RAMD113 RAMD215 RAMD316 RAMD417 RAMD518 RAMD619 RAMD7A15 A14 A13 A12 All A10 A9 A8图1.24以上是AT89S51单片机实验及实践系统板”的所有硬件资源简介,通过这24个模块之间的相互组合,可以设计出从基本的单片机系统到复杂的单片机应用控制系统的设计,是初学者对单片机入门和开发不可缺少的过程。第二章 Keil C软件使用Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法进入Ke
19、il C51后,屏幕如下图所示。几秒钟后出现编辑界幺 SOFTWAREImVISIOnB7?ue Integration IDE for Microcontroller启动Keil C51时的屏幕进入Keil C51后的编辑界面This program is protected by U.S. and international copyright laws.简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New
20、Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.q h黑黑黑MlKO“ATATATAT*TATATATAT血囹04)完成上一步骤后,屏幕如F图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。5)在下图中,单击“File”菜
21、单.,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单臼 ES Target 1SourctJ
22、9RRMffiKI自 C:WIND0WSDesktopC51Textl. c然后单击“Add File to Group * Source Group 1”屏幕如下图所示选中Test. c,然后单击Add 屏幕好下图所示注意到“Source Group 1”文件夹中多了一个子项“Textl.c”了吗?子项的多少与所增加的源程序的多少相同7)现在,请输入如下的C语言源程序:include 包含文件#include void main (void)主函数SC0N=0x52;TM0D=0x20;THl=0xf3;TR1=1;此行及以上3行为PRINTF函数所必须printf(Hello I am K
23、EIL.n);打印程序执行的信息printf( aI will be your friend.n); while(l);)在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示8)在上图中,单击“Project”菜单,再在下拉菜单中单击Built Targetw选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/StopDebug Session(或者使用快捷键Ctrl+F5),屏幕如下所示PVCSI
24、9”ion2C HID0tSD”ktopC51TxU c】口 Eil(di t yv project Qbu%,厂-3”日&面|厄国e曲厂蛆镭*i 科甲( i送山是,梦口 h?RCiitr Vlu1 include 包含文件finclude void aain(void)主的效C0M0xS2;TTOD-OX2O;THl-0xf3;I TW.1;此行及以上3行为PRUTTF备所0为pcincf (*Hello I * KEIL.n*);打5强并执行的信息print(*I will be yout fciend.nw); vhile(l);)11LILoad MC:xxWIND0WSDesktop
25、C51C5J mIm nmASM ASSIGN BreakDisable目Coland人 And-Ftall |Fr Help, prss F!9)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击View菜单,再在下拉菜单中单击“Serial Windows #1选项,就可以看到程序运行后的结果,其结果如下图所示ffi:C51 - (Stritl 81Hello I am KEIL.I will be your friend.RC*tt
26、tr Vtl”Load *C: xWIND0WSDesktopC5 2c5 匕|A乎,乎叩 BraakDisabletV1 ll R Bu*d ACommandXRndr)Ftes| | |For Mtlp, prss Fl至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?Options for Target , Target 1,10)单击“Project”菜单,再在下拉菜单中单击在下图中,单击Output中单击Create HEXFile选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89s51单
27、片机中。第三章 AT89S51单片机下载器软件使用AT89S51单片机下载器是专门用于下载程序到单片机系统中,该软件使用方便。启动软件之后进入下面的界面(如图3.1所示):图3.1在上图中:1. 区域1为程序代码显示区;2. 区域2为下载芯片选择区,该软件支持多种芯片的程序在线下载,对系统板上的单片机AT89s51是其中-种,软件默认情况下为AT89S51单片机。3. 区域3为在线下载的操作区,它可以提供如下的操作(1) .初始化:启动AT89s51单片机进入ISP下载状态,点击一下,若启动成功,则操作区后的操作按钮就会变成如图3.2所示的状态。否则,不成功会有“初始化失败”的红色字样提示。图
28、3.2(2) .特征字:点击一下,会读出单片机的芯片的特征字,对于AT89s51单片机的特征字为:1E 5106,出现的提示框如图3.3所示图3.3(3) .查空:是检查单片机是否已经被擦除干净。(4) .擦除:是把单片机的内容擦除干净,即单片机内部ROM的内容全为FFH。(5) .编程:把代码区中的程序代码下载到单片机的内部ROM中。注意在编程之前,要对单片机芯片进行擦除操作。(6) .检验:是经过编程之后,对下载到单片机内部ROM中的内容与代码区的内容相比较,若程序下载过程中完全正确,则提示校验正确,否则提示出现错误。那就得需要重新下载程序到ROM中。(7) .自动:提供了从内部ROM从擦
29、除到编程,最后到校验这三个过程。(8) .读取:从单片机内部ROM中读取内容到代码显示区中。4. 区域4中,有“装载”、“设置”、“保存”和“退出”四个功能。(1) .装载:是把经过KEIL C软件转化成HEX格式的文件装入区域1中,当单击“装载”按钮时,出现如图3.4所示的对话框。图3.4在这里选择以HEX为后缀的文件,选中它并点击“打开”按钮,即把程序代码装入到代码显示区1中。装载之后如图3.5所示A d dr00010203040506070809OA |OBocOD | OE | OF | T0000020246B2B332FFFFFFFFFF02000308 OF I00100A0A
30、0AOAOAOA000000FFFF0200IE CO EO0020COF0CO83CO82CODO75DO00758DFO 758B00306020B20302012CD2Bl8580OCC2Bl AF OC00407E007C097D2E120155E48FOB8EOA F5090050F508AD09AC087B80FAF9F81201A38F OB00608E0A8D098C08E47FAC7EOAFDFCAB OB AA00700AA909A808C312023550IBC374AC 95 OB0080F50B74OA95OAF5OAE49509F509E495080090F508D
31、200801AE5OB2454F5OBE5OA 34 F500A0F50AE50934FFF509E50834FFF508 C20000B0750E0375OFOA7510OA7511OA30000575ooco160B80037516OA75120075130075140000D0751500E47BOAFAF9F8AFOBAEOAAD 09 AC00E0081201A3EC4D4E4F6037E47BOAFA F9 F800F0AF0BAEOAAD09AC081201A3AF0374 OF 25双迪您使用ISP下载图软件电话:0773-2973832 E-Mail: glsaq(施化李查基
32、擦窿褊疮冠验自防i蕨运行|,口I X|100%空白检查完毕,图3.5图3.5我们就可以把代码显示区域1中的代码通过ISP下载线下载到AT89s51单片机中。(2).设置:对该软件一些操作方式进行设置,点击按钮之后,出现如图3.6所示的界面:*系统设置加密位及系统设置加密位6不加密C锁定位1r锁定位2r锁定位:i,2确定| Wj|在这里可以进行通信端口的设置,共设置的4个串行通信端口,C0M1、COM2、COM3, COM4,根据计算机的硬件特点来决定,默认情况下为C0M1,即串行通信口1。另外,还可以对芯片的加密位进行设置,共有4种选择,“不加密”对芯片的程序不进行加密保护“锁定位1”对芯片的
33、程序进行一级加密保护“锁定位2”对芯片的程序进行二级加密保护“锁定位1,2”对芯片的程序进行三级加密保护图3.6(3) .保存:是把从单片机的芯片ROM中的程序读取出来到代码显示区域1中,点击“保存”按钮,即可保存为HEX格式的文件。(4) .退出:退出该软件系统。在进行程序调试的时候,我们一般通过KEIL C软件把编译好的程序转化成HEX格式文件,通过上面的方法,装载程序之后,点击“自动”按钮,程序就下载到单片机内部ROM芯片中,最后点击“运行”,即可以看到程序的结果。注意,每次重新更新程序的时候,要点击“初始化”按钮,才可以相应的操作。第四章实验及实践课题1.闪烁灯1. 实验任务如图4.1
34、.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。2. 电路原理图1SHQ1 w4m 11111111 PPFPPPPFIS 8PO.O/ADO PO 1/AD1 PO 2/AD2 PO.3/AD3 PO.4/AD4 FO 5/AD5 PO 6/AD6 PO/7/AD?AL贮AT89S51UIZ543210PSE公公公久GNDP3 O/RXD P3 irrxp P3.2/INTO P33/INT1 P34/TO P3.5/Tl P36/WR P37/RS-图4.1,13. 系统板上硬件连线把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。4. 程序设计内容(1) .延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒MOV R6,#202个2DI:MOV R7,#2482个212+2X