单片机实验一
- 格式:doc
- 大小:2.29 MB
- 文档页数:11
多字节无符号数加法程序实验程序: 设从片内RAM30H 单元和40H 单元有两个2字节数,把它们相加,结果放于30H 单元开始的位置处(设结果不溢出)。
处理过程: 用R0作指针指向30H 单元,用R1作指针指向40H 单元,用R2为循环变量,初值为2,在循环体中用ADDC 指令把R0指针指向的单元与R1指针指向的单元相加,加得的结果放回R0指向的单元,改变R0、R1指针指向下一个单元,循环2次,在第一次循环前应先将CY 清零。
程序流程图和程序如下:1、编写程序: ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV 30H,#1 MOV 31H,#2 MOV 40H,#3 MOV 41H,#4 MOV R0,#30H MOV R1,#40H MOV R2,#2 CLR CLOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1DJNZ R2,LOOP END程序调试步骤:1、新建项目开始首先给30、31、40、41H 单元赋值, 然后#30 R0 #40H R1 #2 R2@R0+@R1 @R0R0+1 R0R1+1 R1R2-1 R2R2=0?结束否是2、建文件夹3、选择单片机型号80514、新建文件5、编写自己的程序然后保存为asm格式6、添加源程序7、编译源程序检查是否有错误若有错误则点击错误提示,会自动跳到错误行,检查错误,修改程序知道无错误后再编译。
8、运行程序点击右边红色部分9、单步调试程序观察左边的寄存器变化、10、由程序可知,我把30H和40H、2分别给了R0/、R1、R2,单步调试可看到11、同时可以调用下图命令观看30H、31H、40H、41H的内容12、结合写的程序,从上图可以分别看出每个单元内容并且可以知道,第一次循环后把30H和40H内容相加最后放入R1中可以看到R1变为4 第一次循环后变化:寄存器变化:第二次循环后:13、程序结束本实验要求“备注;个人根据情况可编写5字节或6字节等等的程序,并赋予初始值计算结果后截图”,我只编写了2字节,若改成5字节时,30~34H、40~44H可以分别赋值,循环次数改为5次,即寄存器R2改为5就行。
单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。
(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。
同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合■设计⃞创新实验日期:2018.04.17 实验成绩:实验一单片机软件实验(一)实验目的1.掌握51单片机keil软件集成开发环境;2.能够使用汇编语言编写应用程序。
(二)设计要求1.熟悉51单片机的keil软件集成开发环境;2.使用汇编语言编写“1+2+3+…+100”的程序。
(三)实验原理实验原理流程图如下图所示:如流程图所示,R0作为每次累加值的寄存器,R2作为累加求和后的低八位,R3作为累加求和后的高八位。
在运行程序时,将低八位(R2)值送入累加器A中和R0进行累加,求和后将累加器A的值送回R2,然后将高八位(R3)值送入累加器中(此时进位标志位cy不会被清零)和进位标志位进行累加,求和后送回R3,以此实现R2存放和的低八位。
R3存放和的高八位。
最后将R0自加一,重复上诉步骤知道R0为100时停止,从而实现1+2+3+…+100的实验。
(四)实验设备硬件:PC机软件:兼容51单片机的Keil uvision5集成开发环境(五)实验结果实验源代码如(七)所示,对代码进行编译仿真:点击运行仿真:仿真一段时间后停止,观察寄存器数值如下图所示:(六)结果讨论与心得体会结果分析讨论:从寄存器数值结果图可看出,寄存器R0如设想相同,自加到100(十六进制的0x65)后便停止自加,寄存器R2,R3存放的数值分别是0xba和0x13,即累加求和后的值为0x13ba,转换为十进制是5050,符合实际情况,完成实验。
心得体会:本次实验为单片机第一次实验,我学会了如何使用Keil创建工程项目,并尝试用会变语言来写程序,虽然回顾代码后觉得简单,但是在刚开始编写时还是有些不知所措,希望通过今后的多加练习能让自己编写汇编程序的能力有所提高。
(七)附录:实验源代码ORG 0000HMOV R0 , #1 ;MOV A , #0 ;MOV R2 , #0 ;MOV R3 , #0 ;Judge: CJNE R0 , #65H , Loop ;SJMP Over ;Loop:MOV A , R2 ;ADD A , R0 ;INC R0 ;MOV R2 , A ;MOV A , R3 ;ADDC A , #0 ;MOV R3 , ASJMP Judge ;Over: SJMP OverEND。
课程名称 单片机技术基础 实验名称 Keil C51编译器的应用 实验目的、要求 1.了解Keil C51编译器的功能 2、Keil C51的数据类型、变量定义、以及在单片机中的存储方式 3、Keil C51编译器的使用方法
实验原理 发光二极管使用单片机的P1.0引脚来控制。当控制信号为低电平时(逻辑0)发光二极管亮,控制信号为高电平(逻辑1)时发光二极熄灭。
主要设备 计算机一台 KEIL集成开发环境 普中科技单片机实验板一个
实验步骤及原始数据记录 1)启动Keil C51软件。 2)新建一个工程文件flash.uv2,注意选择工程文件要存放的路径,然后单击【保存】按钮。
3)在弹出的对话框中选择CPU厂商及型号,如:AT89S51。 4)新建一个C51文件,单击左上角的New File,在编辑框里输入程序。 5)完成上面代码的输入后,单击SAVE按钮,注意选择保存的路径,并输入保存的文件名flash.c,然后单击【保存】按钮。 .
6)保存好后把此文件加入到工程中(用鼠标在Source Groupl上单击右键,然后再单击Add Files to Group‘Source Groupl’)。
7)选择要加入的文件,找到flash.c后,单击【Add】按钮,然后单击【close】按钮。 8)到此便完成了工程项目的建立以及文件加入工程,现在开始编译工程,若在output window的build页看到0 Error(s)表示编译通过,可以进行程序的仿真运行。 9) 将程序下载到单片机,观测运行结果。 程序运行之后,LED灯定时闪烁 程序代码: #include sbit Led = P1^0; //对应CPU管脚P1.0
/*1MS延时子程序-----*/ void Delay_xMs(unsigned int x) { unsigned int i,j; for( i =0;i < x;i++ ) { for( j =0;j<500;j++ ); } }
实验一:流水灯左移右移实验
实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。
实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。
功能要求:做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。
电路图如下:
选用的元器件:
注意事项:电路板已经焊接好,流水灯接的是P0口,同时液晶显示模块也接在P0口,液晶显示模块的使能信号接P2.7口,因此做次实验,应将P2.7清零,同时P3.7应该清0,这样LED才能正常工作。
在仿真的时候,晶振和复位电路不画出亦可,简化电路图如下:
已经完成上面实验的同学,可以在此基础上,使用定时器来进行延时,延时时间应该稍大,否则看不出来流水灯熄灭点亮的效果。
单片机原理实验 i 目录 实验一、单片机集成开发环境入门 实验二、I/O口输入输出实验――循环灯程序设计 实验三、I/O口输入输出实验――LED数码管动态显示与按键去抖程序设计 实验四、定时器应用实验――LED数码动态显示与矩阵键盘赋值程序设计 实验五、计数器应用实验――基于热敏电阻和555时基电路的简易温度计设计 单片机原理实验
1 实验一、单片机集成开发环境入门 一、 实验目地 1. 掌握单片机集成开发软件“WAVE 3.2”的开发环境配置。 2. 掌握单片机集成开发软件“WAVE 3.2”的基本功能,了解MCS-51系列单片机应用系统的软件开发过程。 掌握创建工程项目和管理工程项目的方法。 掌握MCS-51系列单片机汇编程序的编辑、编译方法。 掌握MCS-51系列单片机汇编程序的仿真调试方法和观察窗口的使用。 二、 实验设备 PC 兼容机一台,操作系统为WindowsXP,安装有单片机集成开发软件“WAVE 3.2”。 三、 实验原理 1. 单片机集成开发软件“WAVE 3.2”简介 单片机应用程序的设计步骤通常可分为以下几步:(1)根据单片机应用系统的功能进行算法构思和设计,画出程序流程图;(2)用单片机汇编语言、C语言或PLM语言(初学者一般应采用汇编语言)编写源程序;(3)将源程序翻译成单片机可执行的机器码程序,即所谓的目标程序,该过程称为汇编或编译;(4)程序调试,将目标程序下载到目标单片机(即应用系统板中的单片机),运行目标程序,对运行结果进行监控。若运行结果与预期结果相符,程序正确,调试结束;否则由结果的差异分析算法或程序的可能错误,重复步骤2至4,修改源程序、重新汇编、再调试,直至程序正确。以上步骤2至4可应用单片机集成开发软件在个人计算机上完成。 “WAVE 3.2”是一款功能强大的单片机集成开发软件,可开发多个系列的单片机应用系统。该软件主要功能有:(1)集成了文本编辑器,可对源程序进行编辑、修改;(2)集成了汇编器,可对源程序进行汇编,自动查找源程序中的语法错误,并将无语法错误的源程序翻译成目标程序;(3)集成了仿真调试器,可对目标系统进行在线仿真调试,也可在个人计算机上对目标程序进行模拟仿真调试。 在线仿真调试,必需借助硬件仿真器,PC机通过硬件仿真器与目标系统相连,可用PC机监控目标程序的运行,目标单片机内部RAM和特殊功能寄存器的值可实时反馈回PC机。程序员通过分析目标单片机内部RAM和特殊功能寄存器的值、观测目标程序与单片机应用系统的配合情况,判断系统的软硬件是否正确。 模拟仿真调试是一种纯软件模拟,它直接利用PC机的资源,在PC机上模拟目标程序的运行,并显示虚拟单片机内部RAM和特殊功能寄存器的值,程序员通过分析虚拟单片机内部RAM和特殊功能寄存器的值仅能判断与硬件无关的那部分软件的正确与否,无法判断单片机应用系统的硬件是否正确,目标程序与系统硬件是否匹配。 由于在线仿真调试需要硬件仿真器,设备成本较高,使用较复杂,不利于普及。因此,本课程的实验将采用模拟仿真调试与硬件无关的部分软件(这部分软件所占比例很大),采用将目标程序下载到目标系统中实际运行,进行软硬件综合调试。 2. 集成开发软件“WAVE 3.2”的界面 单片机原理实验 2 启动“WAVE 3.2”后,集成开发软件的界面如图1.1所示,菜单功能见附录一。
一:实验1:P23口做输出口,接发光二极管,编写程序,使其闪烁。
(P23闪烁)#include "reg52.h"sbit P23=P2^3; //定义LED指示灯的IO口void main(){int i;//计时变量while(1){for(i=0;i<30000;i++);//延时P23=!P23;//指示灯IO口反转}}实验2:P23-P26口接四只发光二极管LED1-LED4, P20口接开关K1,编写程序,用开关控制发光二极管上的亮灭。
(开关控制四个灯亮灭)#include "reg52.h"sbit P23=P2^3; //定义LED指示灯的IO口sbit P20=P2^0; //定义key的IO口void main(){int i;//计时变量while(1){for(i=0;i<30000;i++);//延时if( P20==0) P23=0; // 按键,LED亮else P23=1;// LED亮}}实验3:P23- P26口做输出口接发光二极管编写并调试程序使其闪烁。
(四个灯闪烁)#include <reg51.h>void main(){int i;//计时变量while(1){for(i=0;i<30000;i++);//延时P3=0xff;for(i=0;i<30000;i++);//延时P3=0x0f;}}实验4:P23-P26口做输出口,接发光二极管,编写并调试跑马灯程序(跑马灯) #include <reg51.h>#define uchar unsigned charuchar tab[]={0xef,0xcf,0x8f,0x0f};void delay(){uchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void main(){uchar i;while (1){for(i=0;i<4;i++){P3=tab[i];delay();}}}二:实验1:单片机P2口的P20和P21各接一个开关K1、K2,P23、P24、P25.P26各接一只发光二极管。
=实验一简单程序设计实验一、实验目的掌握单片机程序设计的基本方法,熟悉程序交叉编译和调试执行的过程。
二、实验器材1、PC机(安装Keil软件) 1台2、实验开发板 1块3、U-EC5型仿真器 1只4、直流稳压电源 1台三、实验要求1、课前温习和回顾C语言程序设计方面的知识。
2、搭建集成开发环境 (参考所给实验附件中《Keil软件与仿真驱动程序安装.doc》)。
3、编写简单的C程序,熟悉Keil环境下的调试方法,包括跟踪、单步运行和断点设置等。
4、仔细观察实验板电路图,并结合《C8051F411数据手册》给出自己I/O端口配置方案。
5、编写程序,实现LED的亮灭、蜂鸣器的鸣叫以及按键状态识别等控制功能。
四、扩充实验(思考题)1、如何实现蜂鸣器的间歇鸣叫(1秒)?2、如何实现依次点亮LED的控制功能?实验代码:#include "c8051F410.h" #define OLD_BOARD#ifdef OLD_BOARDsbit LED8=P1^7;sbit LED7=P1^6;sbit LED6=P1^5;sbit LED5=P1^4;sbit LED4=P1^3;sbit LED3=P1^2;sbit LED2=P1^1;sbit LED1=P1^0;sbit KEY5=P2^2;sbit KEY4=P2^1;sbit KEY3=P2^0;sbit KEY2=P0^2;sbit KEY1=P0^1;sbit SPKOUT=P0^0;#elsesbit LED8=P2^1;sbit LED7=P2^0;sbit LED6=P0^7;sbit LED5=P0^6;sbit LED4=P0^3;sbit LED3=P0^2;sbit LED2=P0^1;sbit LED1=P0^0;sbit KEY5=P1^7;sbit KEY4=P1^6;sbit KEY3=P1^5;sbit KEY2=P1^4;sbit KEY1=P1^3;sbit SPKOUT=P2^2;#endifvoid delay(int m){int i,j;for(i=0;i<100;i++)for(j=0;j<250*m;j++);}void init(void); //初始化子程序void main(){unsigned char i;init(); //初始化子程序LED1 = 1;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;LED6 = 1;LED7 = 1;LED8 = 1;SPKOUT = 0;for(i=1;i<9;i++){SPKOUT = 1;LED1 = 0;delay(50);SPKOUT = 0;LED2 = 0;delay(50);SPKOUT = 1;LED3 = 0;delay(50);SPKOUT = 0;LED4 = 0;delay(50);SPKOUT = 1;LED5 = 0;delay(50);SPKOUT = 0;LED6 = 0;delay(50);SPKOUT = 1;LED7 = 0;delay(50);SPKOUT = 0;LED8 = 0;delay(50);P1=0xff;delay(50);}}void init(void){PCA0MD=0x00;//关闭WDT控制OSCICN=0xc7;//设置内部振荡器工作(使用内部晶振24.5MHz) #ifdef OLD_BOARDP0MDIN=0xFF;P0MDOUT=0x11;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#elseP0MDIN=0xFF;P0MDOUT=0x10;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#endifXBR0=0x01;XBR1=0x41;}结果截图实验二单片机内部接口实验一、实验目的深入理解C8051F411单片机内部的定时器/计数器和串行接口的工作原理;熟悉单片机通过RS232与PC机进行通信的过程;了解单片机的接口调试方法。
实验一:系统认识实验一、设计目的:1. 学习 Keil C51 集成开发环境的操作;2. 熟悉 TD-51 系统板的结构及使用。
二、设计内容:编写程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。
三、设计步骤:1. 创建 Keil C51 应用程序(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。
(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的μVision2 工程。
这时会弹出文件保存对话框,选择工程目录并输入文件名 Asm1 后,单击保存。
(3)工程建立完毕后,μVision2 会马上弹出器件选择窗口。
器件选择的目的是告诉μVision2 使用的 80C51 芯片的型号是哪一个公司的哪一个型号,不同型号的 51 芯片内部资源是不同的。
此时选择 SST 公司的 SST89E554RC。
(4)到此建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件则必须建立它。
选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。
(5)输入程序,完毕后点击“保存”命令保存源程序,将 Text1 保存成Asm1.asm。
Keil C51 支持汇编和 C 语言,μVision2 会根据文件后缀判断文件的类型,进行自动处理,因此保存时需要输入文件名及扩展名.ASM 或.C。
保存后,文件中字体的颜色会发生一定变化,关键字会变为蓝色。
(6)程序文件建立后,并没有与 Asm1.Uv2 工程建立任何关系。
此时,需要将 Asm1.asm 源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。
在Project Window 窗口内,选中Source Group1 点击鼠标右键,选择 Add Files to Group‘Source Group1’命令,此时弹出添加源程序文件对话框,选择文件Asm1.asm,点击 Add 命令按钮即可将源程序文件添加到工程中。
《单片机C语言程序设计》实验报告一、实验目的和要求1、熟悉单片机硬件结构及其工作原理。
2、掌握单片机的I/O端口应用。
二、实验内容和原理实验1——P1作为输入端口(1)硬件设计P1端口的高四位P14、P15、P16和P17分别接4个独立按键S01、S02、S03、S04以及4个LED VD5、VD6、VD7、VD8;当独立按键按下时,对应发光二极管亮,比如S01按下时,VD5被点亮,同时P30输出低电平VD17被点亮。
电路原理图如图所示P1端口作为输入端口所需元器件入表所示(2)C源程序实验1:实验2:#include <REGX51.H>#include <Delay10ms.h>unsigned char tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff}; unsigned char tab2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00}; unsigned char tab3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};int i;void MOD1(void){for(i=0;i<8;i++){P1= tab1[i];Delay10ms();}P1= tab1[8];for(i=0;i<8;i++){P0= tab1[i];Delay10ms();}P0= tab1[8];for(i=0;i<8;i++){P3= tab1[i];Delay10ms();}P3= tab1[8];for(i=0;i<8;i++){P2= tab1[i];Delay10ms();}P2= tab1[8];}void MOD2(void){for(i=0;i<8;i++){P2= tab2[i];Delay10ms();}for(i=0;i<8;i++){P3= tab2[i];Delay10ms();}for(i=0;i<8;i++){P0= tab2[i];Delay10ms();}for(i=0;i<8;i++){P1= tab2[i];Delay10ms();}}void MOD3(void) {for(i=0;i<8;i++){P1= tab3[i];Delay10ms();}for(i=0;i<8;i++){P0= tab3[i];Delay10ms();}for(i=0;i<8;i++){P3= tab3[i];Delay10ms();}for(i=0;i<8;i++){P2= tab3[i];Delay10ms();}}int main (void){while(1){MOD1();MOD2();MOD3();}三、主要仪器设备Protues硬件仿真调试软件Keil编程软件四、操作方法与实验步骤1、根据实验一新建工程操作,新建工程。
实验一 单片机仿真开发系统的使用 1.1 Keil C51 集成开发环境介绍 ①、运行keil C51编辑软件,软件界面如图1-1所示 ②、 建立一个新的工程项目 单击Project菜单,在弹出的下拉菜单中选中New Project选项
③、保存工程项目 a、选择要保存的文件路径,输入工程项目文件的名称,如保存的路径为C51文件夹,工程项目的名称为C51,如图所示,单击保存
b、为工程项目选择单片机型号 在弹出的对话框中选择需要的单片机型号,如图所示,这里选择51核单片机中使用较多的89S51,选定型号后,单击确定,出现如图所示的开发平台界面 ④、 新建源程序文件 在下图中单击“File”菜单,选择下拉菜单中的New选项,新建文件后得到如图的界面: ⑤、 保存源程序文件 单击“File”菜单,选择下拉菜单中的Save选项,在弹出的对话框中选择保存的路径及源程序的名称,如图所示。此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时必须键入正确的.扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮
程序录入区域
注意扩展名 ⑥、为工程项目添加源程序文件 在编辑界面中,单击“Target”前面的“+”,再在“Source Group”上单击右键,得到如图所示的对话框,选择“Add File to Group’ Source Group 1’”,弹出如图所示的对话框,选中要添加的源程序文件,单击“Add”,得到如图所示的界面,同时,在“Source Group 1”文件夹中多了一个添加的“Text1.c”文件。 ⑦、 输入源程序源程序输入完成后保存,得到如图所示的界面。程序中的关键字以不同的颜色提示用户加以注意,这就是事先保存待编辑的文件的好处,即Keil c51会自动识别关键字
⑧、 编译调试源程序 在上图中,单击Project菜单,在弹出的下拉菜单中选中Built Target选项,再单击Debug菜单,在弹出的下拉菜单中选中Start/Stop Debug Session选项, 编译成功后,再单击Debug菜单,在弹出的下拉菜单中选中Go选项,进行源程序调试。如图所示。
⑨、查看分析结果 单击Debug菜单,在弹出的下拉菜单中选中Stop Running选项, 单击View菜单,在弹出的下拉菜单中选中Serial Windows #1 选项,可以看到程序运行的结果,如图所示: ⑩、生成Hex代码文件 将编译调试成功的源程序生成可供单片机加载的Hex代码文件,单击Project菜单,在弹出的下拉菜单中选中Options for Target’ Target 1’选项,在弹出的对话框中单击Output选项,选中其中的“Create HEX File”项。其他选项可以不考虑,如图所示:
到此,一个完整的工程项目就在Keil C51软件上就编译完成
把生成的.HEX代码烧写到8051芯片中,完成软件程序到代码的转换。 1.2 用Proteus仿真软件
必须选中 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78
P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1
X1CRYSTALC122pC222p
R110kC310u
D8D7D6D5
R2100RR3100RR4100RR5100RR6100RR7100RR8100RR9100R
AT89S51D4D3D2D1
电路原理图如图所示 单片机中常用的元件在下表中查找 系 列 元 件 Miscellaneous 晶振、电池、保险等 Microprocessor ICs 各类单片机及其他芯片 Optoelectronics 各类光电显示元件 Analog ICs 各类模拟电子元件 Capacitors 各类电容元件 Resistors 各类电阻元件 Switches&Relays 各类开关及按钮
五、实验注意事项 1、Keil C51软件在使用调试中会出现由于录入出现的各种错误和程序本身语法错误,要学会自己排除错误。 2、在进行Keil C51软件编译时,要注意软件参数设置。 3、在进行Proteus软件仿真时,要注意与Keil C51软件之间互调设置。
1.3 实现单片机最小系统的简单应用。
要求:P1口控制8个发光二极管LED循环点亮,至少有三种造型,造型写在实验内容中,并在程序中加以注释说明。 一、实验目的 1.熟悉PROTEUS单片机仿真软件的使用。 2. 熟悉Keil C51软件的使用 3.掌握单片机I/O口输出的控制方法。 二、实验设备(仪器) PC 机一台、硬件模拟综合平台 三、预习要求,实验参考内容 1.按照Keil C51 集成开发环境的要求,建立一段P0~P3口作为输出端口的程序,然后进行编译并进行软件仿真。 2.运用PROTEUS绘制原理图,控制P0~P3输出端口,以控制32位LED流水灯的造型,参考电路如图1-1所示。 3.预习32位LED点亮实验例程,理解其程序,掌握LED的工作原理,其工作特性如图1-2所示。 #include void delay_ms(int x) { int i,j; for (i=0;ifor (j=0;j<600;j++); } void port_init(void) { P0=0XFF; P1=0XFF; P2=0XFF; P3=0XFF; } void main (void) { unsigned char i; port_init(); while(1) { for(i=0;i<8;i++) // 轮流点亮P0口LED { P0=~(1< delay_ms(20); } P0=0X00; delay_ms(20); P0=0XFF; for(i=0;i<8;i++) // 轮流点亮P1口LED { P1=~(1< delay_ms(20); } P1=0X00; delay_ms(20); P1=0XFF; for(i=0;i<8;i++) // 轮流点亮P2口LED { P2=~(1< delay_ms(20); } P2=0X00; delay_ms(20); P2=0XFF; for(i=0;i<8;i++) // 轮流点亮P3口LED { P3=~(1< delay_ms(20); } P3=0X00; delay_ms(20); P3=0XFF; P10P11P12P13P14P15P16P17P30P31P32P33P34P35P36P37P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27
P30P31P32P33P34P35P36P37
XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435
P0.5/AD534
P0.6/AD633
P0.7/AD732
P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D1LED-REDD2LED-REDD3LED-REDD4D5LED-REDD6LED-REDD7LED-REDD8LED-REDD9LED-GREEND10LED-GREEND11LED-GREEND12LED-GREEND13LED-GREEND14LED-GREEND15LED-GREEND16LED-GREEND17LED-YELLOWD18LED-YELLOWD19LED-YELLOWD20LED-YELLOWD21LED-YELLOWD22LED-YELLOWD23LED-YELLOWD24LED-YELLOWD25LED-BLUED26LED-BLUED27LED-BLUED28LED-BLUED29LED-BLUED30LED-BLUED31LED-BLUED32LED-BLUE23456789
1RP1
RESPACK-8
23456789
1RP2100
23456789
1RP3
RESPACK-8234567891RP4RESPACK-8
D33LED-RED
} }
图1-1 32灯控制参考电路 2.Keil C 软件的调试方法及相关硬件设置。