单片机实验1
- 格式:docx
- 大小:27.96 KB
- 文档页数:8
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.9 实验成绩:实验一单片机软件实验(一)实验目的1.掌握51单片机keil软件集成开发环境,能够使用汇编语言编写应用程序。
2.掌握使用集成开发环境Keil进行单片机程序开发的方法3.掌握使用集成开发环境Keil进行单片机程序跟踪调试的方法。
(二)设计要求熟悉51单片机的keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。
(三)实验原理KeilC51软件使用:在KeilC51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。
(四)实验设备PC机,Keil C51集成开发环境。
(五)实验结果对汇编程序进行编译、链接、调试,在Keil C51软件中运行仿真结果如下图所示,由于“1+2+……100”运行结果超过8位二进制所能表示的范围,计算结果将存放于两个8位工作寄存器单元R2、R3中。
其中,低八位存放于R2中,高八位存放于R3中,R4中存放计算数。
下图中的寄存器窗口中可以显示计算结果为0x13ba。
调出存储器窗口Memory:选择菜单命令View →Memory Window →Memory 1:可见计算结果存放于当前工作寄存器R2(02H)与R3(03H)中,为0x13BA。
(六)结果讨论与心得体会第一次使用Keil C51软件,初步了解了软件:Keil uVision4的使用方法,初步了解了Keil软件中程序的编辑,新工程的建立运行,初步对单片机实验进行了解,加强了实验动手操作能力。
第一次尝试单步调试,能观察到内存中每一个单元的变化,感到单片机系统复杂中的严谨,收获颇丰。
(七)附录:实验源代码实验源代码如下:ORG 0000HLJMP MAINORG 0050H MAIN:MOV R2,#00HMOV R3,#00HMOV R4,#64HMOV A,#00HCLR C LOOP:MOV A,R2ADD A,R4MOV R2,AMOV A,#00HADDC A,R3MOV R3,ADJNZ R4,LOOPSJMP $END。
实验一Keil C51集成开发环境的使用练习、仿真与调试一、实验目的1、熟悉Keil C51集成开发环境的使用方法2、熟悉Keil C51集成开发环境调试功能的使用和DP-51PROC单片机综合仿真实验仪的使用。
二、实验设备及器件IBM PC机一台DP-51PROC单片机综合仿真实验仪一台三、实验内容1、进行Keil C51集成开发环境的安装和使用练习。
然后按照以下内容建立文件并编译产生HEX文件。
ORG 0000HLJMP MainORG 00F0HMain:MOV R7, #0Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopCPL P1.0 ; P 1 .0 取反CPL P1.1 ; P 1 .1 取反CPL P1.2 ; P 1 .2 取反CPL P1.3 ; P 1 .3 取反CPL P1.4 ; P 1 .4 取反CPL P1.5 ; P 1 .5 取反CPL P1.6 ; P 1 .6 取反CPL P1.7 ; P 1 .7 取反SJMP Main;END2、进行Keil C51集成开发环境的仿真调试练习。
然后按照以下内容建立文件并编译仿真调试。
ORG 8000HLJMP MainORG 80F0HMain:MOV R7, #0Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopCPL P1.0 ; P 1 .0 取反CPL P1.1 ; P 1 .1 取反CPL P1.2 ; P 1 .2 取反CPL P1.3 ; P 1 .3 取反CPL P1.4 ; P 1 .4 取反CPL P1.5 ; P 1 .5 取反CPL P1.6 ; P 1 .6 取反CPL P1.7 ; P 1 .7 取反SJMP MainEND四、实验要求1、熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。
单片机控制发光二极管实验报告发光二极管广东石油化工学院单片机实验一实验报告实验报告实验一发光二极管实验学院: 电信学院专业:班级学生学号:实验时间一、实验目的1、掌握AT89C51 单片机IO 口的输入输出。
2、掌握用查表方式实现AT89C51 单片机IO 口的控制。
3、练习单片机简单延时子程序的编写。
4、熟练运用Proteus 设计、仿真AT89C51 系统。
二、实验内容1、编写延时子程序,延时时间为0.1S。
代码:void delay(){int i, j;for (i = 0; i 100; i++)for (j = 0; j 125; j++);}2、见图一。
通过AT89C51 单片机控制8 个发光二极管发光,实现亮点以由上到下循环移动,间隔时间为0.1S。
代码:#includereg51.h#includeintrins.hvoid delay(){int i, j;for(i = 0; i 100; i++)for(j = 0; j 125; j++);}void main(){P1 = 0xFE;while(1){P1 (转载于: 写论文网:单片机控制发光二极管实验报告)= _crol_(P1,1);delay();}}运行结果截图:图一3、见图一。
通过AT89C51 单片机控制8 个发光二极管发光,循环实现亮点由上到下移动1 次(间隔时间为0.2S),由下到上移动1 次(间隔时间为0.2S),闪烁1 次(即先全亮0.1S,再全灭0.1S)。
代码:#includereg51.h#define uchar unsigned char#define uint unsigned intvoid delay(){uint i, j;for (i = 0; i 100; i++){for (j = 0; j 128; j++){//delay 100ms, do nothing.}}}void shangXia(){uchar k;P1 = 0xFE;for (k = 0; k 8; k++){delay();P1 = _crol_(P1,1);}}void xiaShang(){uchar k;P1 = 0x7F;for (k = 0; k 8; k++){delay();P1 = _crol_(P1,-1);}}void main(){while(1){shangXia();xiaShang();}}截图与题一相同,增加由下至上。
《单片机原理及应用》软件开发工具Keil与虚拟仿真平台Proteus的使用实验实验目的(1)了解Keil和Proteus软件的基本特点和功能。
(2)学会使用Keil软件进行单片机中断应用和定时器/计数器应用的编程。
(3)学会使用Proteus软件进行单片机中断应用和定时器/计数器应用的原理图的绘制和程序实现。
(4)学会使用Keil和Proteus两种软件的联调。
实验指导一、Keil C51的使用1.创建项目编写一个新的应用程序前,首先要建立项目(Project)。
(1)在编辑界面下,单击菜单栏中的[Project],出现下拉菜单,再点击选择中的“New Project”。
(2)单击“New Project…”选项后,就会弹出“Create New Project”窗口。
在“文件名(N)”中输入一个项目的名称,保存后的文件扩展名为“.uvx”,即项目文件的扩展名,以后可直接单击此文件就可打开先前建立的项目。
在“文件名(N)”窗口中输入新建项目文件的名字后,在“保存在(I)”下拉框中选择项目的保存目录,单击“保存(S)”即可。
(3)选择单片机,单击“保存(S)”后,会弹出“Select Device for Target”(选择单片机)窗口,按照提示选择相应的单片机。
搜索“AT89C52”并选择。
(4)单击“确定”按钮后,会出现对话框。
如果需要复制启动代码到新建的项目,选择单击“是”。
如选择单击“否”,启动代码项“STARTUP. A51”不会出现,这时新的项目已经创建完毕。
2.新建文件新的项目文件创建完成后,就需要将用户源程序文件添加到这个项目中,添加用户程序文件通常有两种方式:一种是新建文件,另一种是添加已创建的文件。
(1)单击快捷按钮,这时会出现一个空白的文件编辑画面,用户可在这里输入编写的程序源代码。
(2)单击中快捷按钮,保存用户程序文件,这时会弹出窗口“Save As”的对话框,在“保存在(I)”下拉框中选择新文件的保存目录,这样就将这个新文件与刚才建立的项目保存在同一个文件夹下,然后在“文件名(N)”窗口中输入新建文件的名字,如果使用C51语言编程,则文件名的扩展名应为“.c”。
电子信息学院实验报告书课程名:《单片机原理及应用实验》题目:实验一数据排序实验软件实验实验类别:【设计】班级:学号:姓名:评语:(1)电路连接调试:□正确□基本正确□不正确(2)实验程序编写:□正确□基本正确□不正确(3)数据测量分析:□准确□基本准确□不准确成绩:□A □B □C □D ,指导教师:批阅时间:年月日1、实验内容或题目题目:数据排序实验实验内容:用冒泡法将内存RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
2、实验目的与要求实验目的:(1)熟悉51指令系统,掌握程序设计方法;(2)掌握汇编语言设计和调试方法实验要求:将RAM 50H~5AH 中放入不等的数据,编写并调试一个排序子程序,按从小到大的次序重新排列。
3、实验仪器(1)DJ-598K三合一单片机微机试验仪1块(2)PC微机1台4、实验程序框图(供参考)6、实验程序(实验程序清单作为附件放在最后)7、实验步骤将RAM 50H~5AH 中放入不等的数据,运行实验程序后检查50H~5AH中的内容是否按从小到大的次序排列。
8、实验数据RAM 50H~5A中依次放置如下数据:55,66,AA,44,77,22,88,00,33,55,99;程序运行后RAM 50H~5A中的数据依次为:9、思考题本题中,如何修改程序把50H~5AH中内容从大到小排列?答:ORG 0000HMOV DPTR,#2000HMOVX A,@DPTRMOV B,ASWAP AANL A,#0FHINC DPTRMOVX @DPTR,ANC DPTRMOV A,BANL A,#0FHMOVX @DPTR,ASJMP $END<附件> 实验程序清单ORG 0000HLJMP QUEORG 09B0HQUE: MOV R3,#50HQUE1: MOV A,R3MOV R0,AMOV R7,#0AHCLR 00HMOV A,@R0QL2: INC R0MOV R2,ACLR CMOV 22H,@R0CJNE A,22H,QL3 SETB CQL3: MOV A,R2JC QL1SETB 00HXCH A,@R0INC R0QL1: MOV A,@R0DJN2 R7,QL2JB 00H,QUE1 LOOP: SJMP LOOPEND。
双机通信实验报告。
单片机实验报告(自动化15级)实验名称:串行通信实验1.实验1的目的。
掌握单片机串口的工作模式;2.掌握双机通信的接口电路设计和程序设计。
2.实验设备1。
个人电脑;2.单片机最小系统教学实验模块:3.数码管显示模块三、实验内容1。
两套单片机测试装置(两个实验组)共同完成了实验。
我们U1是机器A,U2是机器B。
机器A将学生的学号后的8位数字发送到机器B。
机器B接收到这8位数字,并将其显示在8位数字的电子管上。
该电路如图1所示。
串行通信模式要求为模式1,波特率为2400位/秒,不是双倍,单片机外部晶振频率为11.0592米。
图1双机通信原理附加要求示意图:机器b收到后,该机器(机器b)的学生编号的最后8位数字被送回机器a,并显示在数码管上。
2.单片机与PC机之间的通信单片机向PC机发送数据。
单片机将本机的学生号(学生本人)反复发送到PC机,发送波特率为1200,采用模式1,单片机外部晶振频率为11.0592米四、实验原理4.1串行通信模式在串行通信中,有两种基本通信模式:异步通信。
异步串行通信规定了字符数据的传输格式,即每个数据以相同的帧格式传输。
每个帧信息由起始位、数据位、奇偶校验位和停止位组成。
本实验主要研究异步通信的实现方法。
在异步通信中,每个字符使用一个起始位和一个停止位作为字符开始和结束的符号,因此占用时间。
因此,为了提高传输数据块时的通信速度,这些标记通常被去除,并采用同步通信。
同步通信不像异步通信那样依赖起始位在每个字符数据的开头发送和接收同步。
相反,同步字符用于在每个数据块传输开始时同步发送方和接收方。
根据通信方式,数据传输线可分为三种类型:单工模式、半双工模式、全双工模式。
(1)单工模式在单工模式中,通信线路的一端连接到发射机,另一端连接到接收机,这形成单向连接,并且仅允许数据在固定方向上传输。
(2)半双工模式在半双工模式下,系统中的每个通信设备由一个发射机和一个接收机组成,它们通过收发器开关连接到通信线路,如图33所示-1.实验1的目的。
学号序号35
单片机原理与接口技术
实验报告
)
实验项目序号实验一
实验项目名称跑马灯实验
姓名赵吉婷专业电子信息工程班级电信1班完成时间
一、实验目的
1、$
2、熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法;
3、掌握采用汇编语言与C语言开发单片机系统的程序结构;
4、掌握51系列单片机通用I/O口的使用。
二、实验前准备
1、完成作业3;
2、根据实验内容编写好相关程序,并进行Proteus仿真。
三、实验内容
实验内容为3项,其中第1、2项必做。
1、基本的流水灯。
根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。
每点亮一个LED,采用软件延时一段时间。
2、简单键控的流水灯。
,
不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。
松手后,又按正序点亮流水灯。
3、键控的流水灯。
上电,不点亮LED,按一下K1键,按正序点亮流水灯。
按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。
四、实验原理图
如图所示。
图跑马灯实验电路原理图
电路原理图如图,AT89S52的~作为输出连接8个发光二极管,输出低电平0时对应发光二极管发光;由于发光二极管的导通电压为,所以HNIST-2型实验装
置在电源与二极管之间加一个阻值为1K限流电阻保护二极管。
AT89S52的、作为输入连接2个按键K1、K2,若检测到=0,则说明K1键按下。
五、软件设计思想
.
1、基本的流水灯
软件延时采用例题程序delay( j ),可调整延时时间。
2、简单键控的流水灯。
由于是按下键不松手,键值一直保留,所以判断=0即是按下K1,采用如例题所示的while= =0)或while(P2= =0xfe)的模式。
3、键控的流水灯
由于是按一下键后马上松手,所以要设置一个变量b保留按键键值,要在延时程序中检测是否按键,当按键后立即设置b的值。
六、实验过程:
编写延时程序:
ORG 00H
JMP MAIN
ORG 30H
|
MAIN:
MOV A,#0FFH
CLR C
MOVR2,#08H ;循环八次
LOOP:
RLC A;带进位左移
MOV P2,A
MOV R7,#05H
LOOP1:
CALL DELAY
DJNZ R7,LOOP1
—
DJNZ R2,LOOP ;反复循环
JMP MAIN
DELAY: 延时子程序
MOV R3,#20
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
2、/
3、控键流水灯
#include<>
#define uint unsigned int #define uchar unsigned char
void main( ) //主函数
{ data uchar a;
a=1; //保证只有一个点亮 while(1) //不断循环
{ P0=0xff;
a=1; //全灭
while(P2!=0xfe) //按下处理
/
{ P0=~a; //低电平点亮 a=a<<1; //左移一位
if(a==0)a=1; //全0
delay(150); } //流动点亮延时 a=128;
while(P2==0xfe) //按下处理
{ P0=~a; //低电平点亮
a=a>>1; //右移一位
if(a==0)a=128; //若全0,则
delay(150);} //流动点亮延时 }
!
}
4、键控的流水灯
while(b==0xfe) //按下处理
{ P0=~a; //低电平点亮
a=a<<1; //左移一位
if(a==0)a=1; //全0,则00000001
delay(150); } //流动点亮延时
a=128;
while(b==0xfd) //按下处理
{ P0=~a; //低电平点亮
—
a=a>>1; //右移一位
if(a==0)a=128; //若全0,则
delay(150);} //流动点亮延时
while(b==0xfb) //按下处理
{ P0=0xff; //全灭
delay(150); }
}
}
七、实验心得:
单片机是一门应用性和实践性非常强的学科,必须要多动手,多做实验。
在编写程序上有多种方法,但是多次比较后选择了相对较简单的一种编写指令方法,因为前期有C语言的基础所以在单片机上对于汇编语言也比较好上手,总之实验就是要多实践再多次验证,才会成功。
八、实验思考题:
1、采用I/O口作为输出口时要考虑哪些因素为什么实验装置中LED 要串联一个电阻
答:电压的大小(包括它能感知的最小电压作为高电平),电流的驱动能力例如51的p0口若作为io口使用就要加上拉电阻,不然的话高电平是高阻态的形式。
还有就是io口默认是不是作为io口,有的io口有第二功能的。
LED属于发光二极管,本身的电阻非常的小,但要接入电路时,要注意进行保护,因而要串联一个电阻进行保护它。
2、采用I/O口作为输入口时要注意什么键控的流水灯时为什么要在延时程序中检测是否按键
答:当作为输出口时候就是单片机向外发出数据,或者再产生拉电流,单片机的拉电流一般要比灌电流小,基本上就能点亮2,3个LED,功率很有限,所以一般时候必须用驱动芯片来驱动单片机的外围器件!放在主程序里,每个延时周期内,只能检测按键一次,反应比较慢。
放在延时程序里,检测时间间隔比较短,反应快
3、为什么延时程序要做一个函数
答:为了提高程序的可执行度,使延时更加精准。