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

下载本文档

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

文档简介

单片机实验指导书前沿单片机实验是学习单片机原理及应用课程的一个重要环节。通过实验加深单片机原理的认识,训练学生单片微型计算机应用及开发的基本技能,培养学生合理选择单片微型计算机和接口芯片、正确设计单片微型计算机的接口电路、学会程序调试的基本方法以及解决实验中所遇到问题的能力,同时,培养学生理论联系实际、严谨认真的科学态度和良好的工作作风。本实验指导书就是基于软件完全仿真单片机系统的单片机实验指导书,单片机软件系统开发用的是KEIL 51软件,单片机硬件系统仿真用的是PROTEUS中的ISIS软件,如果软件和硬件都正确,最后在ISIS中能看到相应结果,就像在实际的硬件实验设备上一样,而且在实验中,不仅软件系统需要学生开发,硬件系统也要学生自己组建,这样更能让学生完整的体会单片机系统开发过程。目录实验一 KEIL 51软件实验4实验二 乘法运算实验10实验三 并行接口实验11实验四 单片机定时/计数器实验16实验五 单片机串行通信实验17实验六 键盘和数码管显示实验18实验七 D/A转换实验21实验八 A/D转换实验2223实验一 KEIL 51软件实验 实验目的:1、掌握KEIL集成开发环境的使用2、掌握算术运算程序实验设备:计算机、KEIL51软件实验内容:编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。在KEIL51编译、连接、仿真调试。实验步骤:一、运行KEIL51软件,出现图1所示KEIL 51主界面。图1 KEIL 51主界面首先用Project菜单下的New Project命令建立项目文件,过程如下。(1)选择Project菜单下的New Project命令,弹出如图2所示的Create new Project对话框。图2 Create New Project对话框(2)在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E:project),输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的Select Device for Target Target 1对话框,用户可以根据使用情况选择单片机型号。Keil uVision2 IDE几乎支持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。图3 Select Device for Target Target 1对话框(3)这里选择atmel公司的AT89c51。单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。单击后,项目文件就创建好了。项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的内容。这时只有一个框架,紧接着需向项目文件中添加程序文件内容。图4 Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框二、给项目添加程序文件当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。(1)选择文件菜单上的new命令,出现新建文本窗口,如图5所示。图5 新建文本窗口在文本编辑窗口中输入加法程序。存盘,假设文件名为add16.asm。注意汇编程序文件扩展名为.asm,这时默认路径为工程文件夹。参考程序如下:ORG 0000HLJMP MAINORG 1000HMAIN:MOV R0,#30HMOV R1,#40HMOV R2,#16CLR CLOOP: MOV A,R0ADDC A, R1MOV R0,AINC R0INC R1DJNZ R2,LOOPSJMP $END(2)添加文件到项目中。在项目管理器窗口中,展开Target1项,可以看到Source Group1子项。右击Source Group1,在出现菜单中选择Add Files to Group Source Group1命令。出现添加文件的窗口,加程序add16.asm如到项目中。如图6所示。注意文件类型要选择为*.a*。图5 添加程序文件到项目三、编译、连接项目,形成目标文件当把程序文件添加到项目文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成HEX目标文件(只在keil 51中软件仿真可以不形成目标文件)(1)选择Project菜单下的Built Target命令(或快捷键F7) 编译、连接当前项目,编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接,这个过程可能会重复多次。如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。如图6所示。图6 编译、连接后的显示图(2)如果要做硬件下载可硬件仿真,则要形成HEX目标文件,须先对输出选项进行相应的设置,设置后再进行编译连接。方法如下:右击项目管理器窗口的Target1项,在右键菜单中选择下面的Options for Target Target 1命令,在Options for Target Target 1对话框选择Output选项卡,在该选项卡选中Create HEX File选项,选择生成HEX文件。如图7所示。图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单元开始的数据。如图8所示。Memory window窗口图8 启动调试过程结果图在片内数据存储器窗口中右击30h单元,在右键菜单中选择modify memory at D:0x30,从30h单元开始修改数据,在弹出的窗口中输入30h3fh单元的数据,如图9和图10所示。图9 修改片内数据存储器的内容图10 输入30h3fh单元的数据用相同的方法修改40h4fh单元的数据。修改后选择run命令运行,运行后在存储器窗口可看到该程序运行的结果。在存储器窗口的address框中还可输入c:0x地址显示程序存储器,x:0x地址显示片外数据存储器。另外,可用View菜单下的symbols window命令查看特殊功能寄存器,用peripherals菜单下面的命令来查看并口、串口、定时/计数器和中断的相关内容。实验结论与问题:简要介绍KEIL 51使用过程。实验二 乘法运算实验实验目的: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,AMOV A,R7ADDC A,#00HMOV R7,ASJMP $END实验结论及问题:给R2R1和R0赋值方法有哪些?MOV Rn,AMOV Rn,01H 立即数寻址MOV Rn,#01H 直接赋值。三种情况实验三 并行接口实验实验目的:1、掌握KEIL集成开发环境的使用2、掌握Proteus仿真软件的使用3、学会使用Proteus和KEIL软件进行系统仿真调试4、掌握单片机并行接口的结构与使用实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。在KEIL 51中编程序,形成HEX文件,在PROTEUS中设计硬件,下载程序,运行看结果。实验步骤:一、打开PROTEUS的ISIS软件,如图10所示。新建电路图文件,设文件保存到e:projectio下面,文件基本名为io,扩展名默认。选择元件图10 ISIS窗口图二、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图11所示。图11 元件选择窗口在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图10的device列表栏。在这里依次添加元件单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED。如图12所示。图12 添加元件的device列表栏三、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作。电源与地在工具按钮的Terminals mode中选取。如图13所示。图13 放置元件图四、连接导线,如图14所示。连接后存盘。图14 连接元件图五、在keil 51中设计软件程序,形成HEX文件。保存软件项目到电路文件相同的文件夹e:projectio。设计软件程序如内容一,过程略。参考程序如下:ORG 0000HLJMP MAINORG 0100HMAIN:MOV A,#01HLOOP:MOV P2,A LCALL DELAY RL A SJMP LOOP SJMP $DELAY:MOV R2,#10HDELAY1:MOV R3,#0FFH DJNZ R3,$ DJNZ R2,DELAY1 RET END六、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。这里是同一个文件夹下面的io.hex文件。如图14所示。图14 下载程序到单片机七、单击仿真运行按钮play,运行程序。可通过LED二极管看到相应的结果。如图15所示。图15 仿真结果图实验结论与问题:如果要改变LED显示的循序,该怎么办?实验四 单片机定时/计数器实验实验目的:1、了解定时/计数器的结构2、熟练掌握定时/计数器的使用方法3、掌握利用定时/计数器产生方波的方法4、掌握中断的使用实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:利用单片机计数器0工作于方式1,从P1.1产生周期为100ms的方波,从P1.2产生周期为500us的方波,要求定时器溢出用中断方式处理,在仿真环境上实现,用示波器测量产生的方波周期。(参考原理图与程序见附录)实验步骤:(略)实验结论与问题:怎样改变输出信号的周期?改变方式对输出波形有什么影响?参考电路图,程序参考教材。实验五 单片机串行通信实验实验目的:1、了解串行口的结构与功能2、掌握串行通信的方法3、学习串行通信程序的设计实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:实现甲与乙两台单片机点对点的双机通信,将甲机的片内RAM中30H3FH单元的内容传送到乙机的片内RAM的40H4FH单元中,内容自定。在仿真环境上实现。实验步骤:(略)实验结论与问题:通信时,应先启动发送还是先启动接收?为什么?实验六 键盘和数码管显示实验实验目的:1、了解矩阵键盘的基本原理2、了解数码管软件译码动态显示的基本原理3、掌握利用51单片机使用矩阵键盘和数码管显示器方法实验设备:计算机、KEIL51软件、PROTEUS软件实验内容:实现28矩阵键盘和8个LED数码管显示,要求按键编码在数码管上轮流显示,在仿真软件中设计硬件电路,编写转换程序,仿真运行。实验步骤:(略)实验结论与问题:如果从左向右显示,如何处理?参考电路图参考程序:#include #include /定义绝对地址访问#define uchar unsigned char#define uint unsigned intvoid delay(uint); /延时函数声明void display(void); /声明显示函数uchar checkkey(); /声明检测按键函数uchar keyscan(void); /声明键扫描函数uchar disbuffer8=0,1,2,3,4,5,6,7; /定义显示缓冲区void main(void) /主函数uchar key;XBYTE0x7f03=0x81; /8255A初始化while(1)key=keyscan(); /检测按键if( key!=0xff)disbuffer0=disbuffer1;disbuffer1=disbuffer2;disbuffer2=disbuffer3;disbuffer3=disbuffer4;disbuffer4=disbuffer5;disbuffer5=disbuffer6;disbuffer6=disbuffer7;disbuffer7=key; /显示缓冲区左移,按键放入显示缓冲区最后display(); /调用显示函数/*延时函数*void delay(uint i) /延时函数uint j;for (j=0;ji;j+)/*显示函数*void display(void) /定义显示函数uchar codevalue16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0F的字段码表uchar chocode8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /位选码表uchar i,p,temp;for (i=0;i8;i+)XBYTE0x7f01=0xff;p=disbufferi; /取当前显示的字符temp=codevaluep; /查得显示字符的字段码XBYTE0x7f00=temp; /送出字段码temp=chocodei; /取当前的位选码XBYTE0x7f01=temp; /送出位选码delay(20); /延时1ms/*检测有无键按下函数*uchar checkkey() /检测有无键按下函数,有返回0xff,无返回0uchar i;XBYTE0x7f00=0x00;i=XBYTE0x7f02;i=i&0x0f;if (i=0x0f) return(0);else return(0xff);/*键盘扫描函数*uchar keyscan() /键盘扫描函数,如果有键按下,则返回该键的编码,如果无键按下,则返回0xff uchar scancode; /定义列扫描码变量uchar codevalue; /定义返回的编码变量uchar m; /定义行首编码变量uchar k; /定义行检测码uchar i,j;if (checkkey()= =0) return(0xff); /检测有无键按下,无返回0xffelsedelay(20); /延时if(checkkey()= =0) return(0xff); /检测有无键按下,无返回0xffelsescanc

温馨提示

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

评论

0/150

提交评论