51单片机kell学习初步和Protues仿真_第1页
51单片机kell学习初步和Protues仿真_第2页
51单片机kell学习初步和Protues仿真_第3页
51单片机kell学习初步和Protues仿真_第4页
51单片机kell学习初步和Protues仿真_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机实验指导书前沿单片机实验是学习单片机原理及应用课程的一个重要环节。通过实验加深单片机原理的认识,训练学生单片微型计算机应用及开发的基本技能,培养学生合理选择单片微型计算机和接口芯片、正确设计单片微型计算机的接口电路、学会程序调试的基本方法以及解决实验中所遇到问题的能力,同时,培养学生理论联系实际、严谨认真 的科学态度和良好的工作作风。本实验指导书就是基于软件完全仿真单片机系统的单片机实验指导书,单片机软件系统开发用的是KEIL 51软件,单片机硬件系统仿真用的是PROTEUS中的ISIS软件,如果软件和硬件都正确,最后在 ISIS中能看到相应结果,就像在实际的硬件实验设备上一样,而且在实

2、验中,不仅软件系统需要学生开发,硬件系统也要学生自己 组建,这样更能让学生完整的体会单片机系统开发过程。目录实验一 KEIL 51软件实验 4实验二乘法运算实验 10实验三并行接口实验 12实验四单片机定时/计数器实验 17实验五单片机串行通信实验 18实验六键盘和数码管显示实验 19实验七D/A转换实验 22实验八A/D转换实验 23实验一 KEIL 51软件实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握算术运算程序实验设备:计算机、KEIL51软件实验内容:编程实现把片人 RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。 在KEIL51 编译、连接

3、、仿真调试。实验步骤:、运行KEIL51软件,出现图1所示KEIL 51主界面。图1 KEIL 51主界面首先用Project菜单下的New Project命令建立项目文件,过程如下。(1)选才P Project菜单下的New Project命令,弹出如图 2所示的Create new Project对话框。图 2 Create New Project 对话框(2)在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E: project),输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的SelectDev

4、ice for Target 'Target'对话框,用户可以根据使用情况选择单片机型号。Keil uVision2 IDE 几乎支持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯 片的相关信息以供用户参考。图 3 Select Device for Target 'Target1 对话框(3)这里选择atmel公司的AT89c51。单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框,C语

5、言开发选择【是】,汇编语言开发选择【否】。 单击后,项目文件就创建好了。项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的内容。这时只有一个框架,紧接着需向项目文件中添加程序文件内容。图 4 Copy Standard 8051 Startup Code to ProjectFolder and Add File to Project 确认框二、给项目添加程序文件当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。(1)选择

6、文件菜单上的new命令,出现新建文本窗口,如图 5所示。图5 新建文本窗口在文本编辑窗口中输入加法程序。存盘,假设文件名为add16.asm。注意汇编程序文件扩展名为.asm,这时默认路径为工程文件夹。参考程序如下:ORG 0000H LJMP MAIN ORG 1000H MAIN:MOV R0,#30HMOV R1,#40HMOV R2,#16 CLR C LOOP: MOV A,R0 ADDC A, R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP SJMP $ END(2)添加文件到项目中。在项目管理器窗口中,展开Target1项,可以看到Source Gr

7、oup1子项。右击Source Group1 , 在出现菜单中选择 Add Files to Group Source Group1谕令。出现添加文件的窗口,加程序 add16.asm如到项 目中。如图6所示。注意文件类型要选择为 *.a*。图5添加程序文件到项目三、编译、连接项目,形成目标文件当把程序文件添加到项目文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成HEX目标文件(只在keil 51中软件仿真可以不形成目标文件)(1)选择Project菜单下的Built Target命令(或快捷键F7)编译、连接当前项目,编译、连接时,如果程序有 错,则编译不成功,并在下面的信息

8、窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接, 这个过程可能会重复多次。如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。如图6所示。图6编译、连接后的显示图(2)如果要做硬件下载可硬件仿真,则要形成HEX目标文件,须先对输出选项进行相应的设置,设置后再进行编译连接。方法如下:右击项目管理器窗口的Target1项,在右键菜单中选择下面的Options for Target 'Target 1命令,在 Options for Target"Target 1框选择 Output选项卡,在该选项卡选中Create HEX File选项,选择生成HEX文

9、件。如图7所示。0*f*r Tu"£,eI JTtreeLEEh. ITiri-l Q功始qt J Lia linc | Bl| JlSl B1S1 LxM I II5L Him 口小5Ulilidti|>1 iri 寸 far Qbj即ry哥修H工会皿祝*卜落5工喟痴生*3n :g A,*B ku T 4“ ,M£ -H- £ 4,m-ini inn IB H inW crt«it rai ri'.aicuiifL hKEI丽而JjIT C1e.Lt Dalek FileIt t ar 04En写E Ct.L些 Ui 11 -f

10、ci YVeXaibf 1Z3询宝图 7 Options for Target Target 1 '对话框四、运行调试观察结果当项目编译、连接成功后,就可以运行它来观察结果,运行调试过程如下。先用Debug菜单下的Start/Stop Debug Session命令(快捷键Ctrl+F5)启动调试过程,启动后可用 Debug菜单下Go连续运行命令、Step单步运行、Stop running停止运行命令等运行程序观察结果。本实验中进入启动调试后, 先用View菜单下的memory window打开存储器窗口,在address框输入d: 0x30,在存储器窗口中显示片内数据存储器30h单元

11、开始的数据。如图8所示。-告h q |区彼立|二二二三足喇商愿'厂引必值昌面|底国他撤杷眄口 EMu Eiil Fib Er?ictl DtVuFez工法%ilg 工,口s SlflS YiE痔 Iklp牌刊 初中i11)中四喧闻印*场&上如M % gJU hjt qro.axMC RD&Eg UiJUUJdQLJMI KaIU州 G lOOOIHKHODOV ROr#30HUZIT P.lAOHHV 吗,CLR ClOQi?: Hnv 九昨nD 0 0 0-0D nu D o O Q u o o O o o o o- G 口口口 口口 Do o o o o Oo o

12、o o O O o U o D o D o _u o o U o _u o o o o o D o o D 0 0-000口口 口口口 一 o D D D « o o o Du" onuQn-D- oo o o " o fl _ fl * o o n 9 u -I:0x0:I;050; 二:ExEO:1J: Uw?0iUO OU 00 00 no on on do oo oo oo oo |Q ULf UU UU工:口心口: 00 OD 00 00R2.LOOPIcttiury 能 J Utrr*门挈 八 卜归刀口)”目图8启动调试过程结果图在片内数据存储器窗口中

13、右击30h单元,在右键菜单中选择modify memory at D : 0x30,从30h单元开始修改数据,在弹出的窗口中输入30h3fh单元的数据,如图 9和图10所示。陋 ouplw - >iUuu2 LZ-fi ojectlJlC. uab-In «l凿 Eile Edi 1 Kiew IrDj tct DeUE Tla5Jl FtripcteralE: IdoIe 3VTS Hitdov He It后意。01晶里里t |率里底以%甑隔I腌脑普|圆|面而豺|国衲?琳卜号叫呼附z_MlxiI色IL典Iaig acoan 中"HF KAZM QEG lOOOH H

14、AIK:MCV RO.fJOH KOT Fl,f43H HOT F%#15 IciR CLOOTi MOV 储蛆。AI'PC h, QEU HD¥ £E(J,A lire PO nrc fi卜ILoad "E :XjQGtozampl a 1 上x|m岫 E: |LOkM:OxJU: :dx-40: ;0x50;:De60:ASSIOhl BreazDisableI ,一闻卜Md X awiMMi A 土耳 | Ln:ix7n: 口:DxSD: D:OxUO: p:OsAO: p:OkBO: p : DxCO :0r n-i '11.-1

15、1 r -I ri1 * i 1匚DeciHsl'匚 UwigT JCSi EMd,c1FAsel iFFIp ktJF口中加电F3Mali lilsncry 也I D Ok3D01 0200 00 nn ii) uo 00 00 001 2 o o n n u o o oOODDDDOOOO12OOQaoooooooonnDOOOc.C2 CO co nn dii Ou 00 CO CO0 10200noao aooo1 0- o- o n o o o o OOOODO UODO12 00000000c c c o r D D c r- Cfl/W图9修改片内数据存储器的内容Ente

16、r Byte(s) at:Oz3OEntwr Exampl*; 1 2, f a ,“工ox与士”,"U =2QK工皿E图10 输入30h3fh单元的数据用相同的方法修改40h4fh单元的数据。彳改后选择run命令运行,运行后在存储器窗口可看到该程序运行的结果。在存储器窗口的address框中还可输入c: 0x地址显示程序存储器,x: 0x地址显示片外数据存储器。另外,可用View菜单下的symbols window命令查看特殊功能寄存器,用peripherals菜单下面的命令来查看并口、串口、定时/计数器和中断的相关内容。实验结论与问题:简要介绍KEIL 51使用过程。实验二乘法运

17、算实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握多字节乘法运算程序实验设备:计算机、KEIL51软件实验内容:编程实现把 R2R1 (R2为高字节,R1为低字节)和 R0中的无符号数相乘,结果放于R7R6R5 ( R7为最高位)。在KEIL51编译、连接、仿真调试实验步骤:ORG 0000HLJMP MAINORG 0030HMAIN: MOV R1,#0FFHMOV R2,#0FFHMOV R0,#11HMOV A,R1MOV B,R0MUL ABMOV R6,BMOV R5,ACLR CMOV A,R2MOV B,R0MUL ABMOV R7,BADDC A,R6MOV R6,A

18、MOV A,R7ADDC A,#00HMOV R7,ASJMP $END实验结论及问题:给R2R1和R0赋值方法有哪些?MOV Rn,AMOV Rn,01H 立即数寻址MOV Rn,#01H直接赋值。三种情况11实验三并行接口实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握Proteus仿真软件的使用3、学会使用Proteus和KEIL软件进行系统仿真调试4、掌握单片机并行接口的结构与使用实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:在80C51单片机的P2 口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。在 KEIL 51 中编程序,形成 HEX文

19、件,在PROTEUS中设计硬件,下载程序,运行看结果。实验步骤:一、打开PROTEUS的ISIS软件,如图10所示。新建电路图文件,设文件保存到e: projectio下面,文件基本-nix名为io,扩展名默认。5EUIinLED - ISIS Pr«£clil口Hi 丁口电 1 二 力4二 ipr.Eaireia 白朝 beg UhMor71 1。如工口七曲 £j=.t «n H«Lp田。超自力 由诳4 +观R,网口选择元件.IkIIO : - :e Root These 1心 口(1。 M图10 ISIS窗口图、在component mod

20、e模式下单击选才I元件按钮 P,打开元件选择对话框,如图 11所示。图11元件选择窗口在元件选择舌框的 keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添 加元件到图10的device歹U表栏。在这里依次添加元件单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管 LED-RED。如图12所示。图12添加元件的device列表栏三、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进 行移动、旋转等操作。电源与地在工具按钮的Terminals mode中选取。如图13所示。

21、冲舞步案4I抽命图13放置元件图四、连接导线,如图14所示。连接后存盘。图14连接元件图五、在keil 51中设计软件程序,形成 HEX文件。保存软件项目到电路文件相同的文件夹e: projectio。设计软件程序如内容一,过程略。参考程序如下:ORG 0000HLJMP MAINORG 0100HMAIN:MOV A,#01HLOOP:MOV P2,ALCALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R2,#10HDELAY1:MOV R3,#0FFHDJNZ R3,$DJNZ R2,DELAY1RETEND六、在PROTEUS电路图中,单击单片机 80C51芯

22、片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的 program file框中选择下载到80C51芯片中的程序。这里是同一个文件夹下面的io.hex文件。如图14所示。图14 下载程序到单片机七、单击仿真运行按钮 play,运行程序。可通过 LED二极管看到相应的结果。如图 15所示。File “ £tit Tomis. Lim;n 'jt wh. orwirce Ihy Ll br ary 1吧w:-a±e Sts! m Help口 *d口母用印曷Ei |国属母+W曰曾0 I扁电,I工工小#上产 叵囱主沃门|团团哂二 LJ-3旨-DU醺0,MQ

23、/口口、印匚卬IBLinOMCAPR5"l上口二 EDn5EFJ FK PSann i ijiwTi口 1alaTK 61 E5 M-aaye 国 11 PAUSE 口: OU COOF,1 DO CO图15仿真结果图实验结论与问题:如果要改变LED显示的循序,该怎么办?实验四单片机定时/计数器实验实验目的:1、了解定时/计数器的结构2、熟练掌握定时/计数器的使用方法3、掌握利用定时/计数器产生方波的方法4、掌握中断的使用实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:利用单片机/计数器 0工作于方式1,从P1.1产生周期为100ms的方波,从P1.2产生周期为500

24、us的 方波,要求定时器溢出用中断方式处理,在仿真环境上实现,用示波器测量产生的方波周期。(参考原理图与程序见附录)实验步骤:(略)实验结论与问题:怎样改变输出信号的周期?改变方式对输出波形有什么影响? 参考电路图,C1X1CRYSTALU1C2HI1nFC34.7uFR130029 30 ABCDID1LED-LED-REDD2>XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A

25、13P2.6/A14P2.7/A15P1.0P3.0/RXDP3.1/TXDP3.3/INT1P1.4P3.4/T0P1.5P1.6P3.5/T1P3.6/WRP1.7P3.7/RD19181234567839 "8 T37 6 534 3 2122 3 4 2526 _27 F1011121314151617程序参考教材。实验五单片机串行通信实验实验目的:1、了解串行口的结构与功能2、掌握串行通信的方法3、学习串行通信程序的设计实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:实现甲与乙两台单片机点对点的双机通信,将甲机的片内RAM中30H3FH单元的内容传送到乙机的

26、片内RAM的40H-4FH单元中,内容自定。在仿真环境上实现。实验步骤:(略)实验结论与问题:通信时,应先启动发送还是先启动接收?为什么?实验六键盘和数码管显示实验实验目的:1、了解矩阵键盘的基本原理2、了解数码管软件译码动态显示的基本原理3、掌握利用51单片机使用矩阵键盘和数码管显示器方法实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:实现2 8矩阵键盘和8个LED数码管显示,要求按键编码在数码管上轮流显示,在仿真软件中设计硬件电 路,编写转换程序,仿真运行。实验步骤:(略)实验结论与问题:如果从左向右显示,如何处理? 参考电路图U1U219IXTAL139D03Q0Q1Q2

27、2U3P0.1/AD1P0.2/AD238D14D1D25D0D0D0PA0PA1PA2PA3PA4PA5PA6PA74A37D276D133D13B.18XTAL236D389D2 322C*P0.4/AD435D413D4Q412.D331D31D34D514154D4 3040_E*33D617Q516D52939F*9RSTP0.6/AD632D718D6D7Q6Q719D628D5D638G:.D72737H:P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12211OE LE22_ AL115RdPB0PB1PB2PB3181.2336192*29PSEN2

28、474LS3739A0203ALI30258214,31ALE2635A1225县EAP2.5/A1327RESETPB4236WP2.6/A14P2.7/A15286PB5PB6PB7247CS25wJ_P1.0/T2P1.1/T2EXP3.0/RXDP3.1/TXD_10_2_1XPC014PC0.4-121315PC1P1.2P1.3P1.4P3.2/INT0P3.3/INT1P3.4/T0PC1PC2PC31651417671516_1312P1.5P1.6P1.7P3.5/T1P3.6/WR-P3.7/RD-PC4PC5PC6PC78171110AT89C528255Auchar u

29、nsigned#define uint unsigned void delay(uint);void display(void);uchar checkkey();uchar keyscan(void);参考程序:#include <reg51.h>#include <absacc.h>#define定义绝对地址访问charint延时函数声明/声明显示函数/声明检测按键函数/声明键扫描函数定义显示缓冲区uchar disbuffer8=0,1,2,3,4,5,6,7;void main(void)uchar key;XBYTE0x7f03=0x81;while(1)ke

30、y=keyscan();if( key!=0xff)disbuffer0=disbuffer1;disbuffer1=disbuffer2;disbuffer2=disbuffer3;disbuffer3=disbuffer4;disbuffer4=disbuffer5;disbuffer5=disbuffer6;disbuffer6=disbuffer7; disbuffer7=key;display();主函数/8255A初始化检测按键显示缓冲区左移,按键放入显示缓冲区最后调用显示函数/延时函数* void delay(uint i) uint j;for (j=0;j<i;j+)延

31、时函数*显示函数*/定义显示函数/取当前显示的字符/查得显示字符的字段码送出字段码取当前的位选码void display(void)uchar codevalue16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0 F 的字段码表uchar chocode8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /位选码表uchar i,p,temp; for (i=0;i<8;i+)XBYTE0x7f01=0xff;p=disbufferi; temp=codevaluep;XBYTE0x7f00=temp; / temp=chocodei; /XBYTE0x7f01=temp; /送出位选码delay(20);)*uchar checkkey()/延时1ms检测有无键按下函数*/检测有无键按下函数,有返回0xff,无返回0 uchar i;XBYTE0x7f00=0x00;i=XBYTE0x7f02;i=i&0x0f;if (i=0x0f) r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论