单片机设计实验报告
- 格式:docx
- 大小:3.72 KB
- 文档页数:3
单片机实验报告实验一:存储器块清零或赋值一、实验目的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)。
1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
单片机实验报告数字时钟设计报告一、实验目的本次单片机实验的目的是设计并实现一个基于单片机的数字时钟。
通过该实验,深入了解单片机的工作原理和编程方法,掌握定时器、中断、数码管显示等功能的应用,提高综合运用知识解决实际问题的能力。
二、实验原理1、单片机选择本次实验选用了常见的 51 系列单片机,如 STC89C52。
它具有丰富的资源和易于编程的特点,能够满足数字时钟的设计需求。
2、时钟计时原理数字时钟的核心是准确的计时功能。
通过单片机内部的定时器,设定合适的定时时间间隔,不断累加计时变量,实现秒、分、时的计时。
3、数码管显示原理采用共阳或共阴数码管来显示时间数字。
通过单片机的 I/O 口控制数码管的段选和位选信号,使数码管显示相应的数字。
4、按键控制原理设置按键用于调整时间。
通过检测按键的按下状态,进入相应的时间调整模式。
三、实验设备与材料1、单片机开发板2、数码管3、按键4、杜邦线若干5、电脑及编程软件(如 Keil)四、实验步骤1、硬件连接将数码管、按键与单片机开发板的相应引脚通过杜邦线连接起来。
确保连接正确可靠,避免短路或断路。
2、软件编程(1)初始化单片机的定时器、中断、I/O 口等。
(2)编写定时器中断服务程序,实现秒的计时。
(3)设计计时算法,将秒转换为分、时,并进行进位处理。
(4)编写数码管显示程序,将时间数据转换为数码管的段选和位选信号进行显示。
(5)添加按键检测程序,实现时间的调整功能。
3、编译与下载使用编程软件将编写好的程序编译生成可执行文件,并下载到单片机中进行运行测试。
五、程序设计以下是本次数字时钟设计的主要程序代码片段:```cinclude <reg52h>//定义数码管段选码unsigned char code SEG_CODE ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//定义数码管位选码unsigned char code BIT_CODE ={0x01, 0x02, 0x04, 0x08, 0x10,0x20, 0x40, 0x80};//定义时间变量unsigned int second = 0, minute = 0, hour = 0;//定时器初始化函数void Timer_Init(){TMOD = 0x01; //定时器 0 工作在方式 1 TH0 =(65536 50000) / 256; //定时 50ms TL0 =(65536 50000) % 256;EA = 1; //开总中断ET0 = 1; //开定时器 0 中断TR0 = 1; //启动定时器 0}//定时器 0 中断服务函数void Timer0_ISR() interrupt 1{TH0 =(65536 50000) / 256;TL0 =(65536 50000) % 256;second++;if (second == 60){second = 0;minute++;if (minute == 60){minute = 0;hour++;if (hour == 24){hour = 0;}}}}//数码管显示函数void Display(){unsigned char i;for (i = 0; i < 8; i++)P2 = BIT_CODEi;if (i == 0){P0 = SEG_CODEhour / 10;}else if (i == 1){P0 = SEG_CODEhour % 10;}else if (i == 2){P0 = 0xBF; //显示“”}else if (i == 3){P0 = SEG_CODEminute / 10;else if (i == 4){P0 = SEG_CODEminute % 10;}else if (i == 5){P0 = 0xBF; //显示“”}else if (i == 6){P0 = SEG_CODEsecond / 10;}else if (i == 7){P0 = SEG_CODEsecond % 10;}delay_ms(1);//适当延时,防止闪烁}}//主函数void main(){Timer_Init();while (1){Display();}}```六、实验结果与分析1、实验结果将程序下载到单片机后,数字时钟能够正常运行,准确显示时、分、秒,并且通过按键可以进行时间的调整。
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机课程设计实验报告设计题目:基于单片机的多功能综合应用系统的设计专业:电子信息工程班级:姓名:指导老师:目录第一章设计说明1.1 设计目的 (3)1.2 设计内容及要求 (3)第二章硬件电路仿真实现2.1 硬件结构分析 (5)2.2基本功能仿真电图 (6)2.3扩展功能仿真电路图 (10)2.4 实物电路图 (15)第三章软件设计实现3.1软件程序内容 (16)3.2模块分析 (16)3.3 程序流程图 (17)第四章系统测试4.1 软件调试 (19)4.2硬件调试 (19)第五章心得体会 (20)第六章参考文献 (21)附录 (21)第一章设计说明1.1 设计目的单片机在许多领域使用十分广泛,如智能仪器仪表、实时工控、通讯设备、导航系统、家用电器等。
各科任老师们经常说“学好单片机,工作就不成问题了。
”可见学好单片意义之重大。
单片机作为一门基础学科,既是对前期学习C语言的综合运用,也是理论与实践相结合的一大体现。
本次课程设计通过基础部分,拓展功能以及整体电路的实现能很好地锻炼我们的动手及编程能力。
1.2 设计内容及要求内容:1.设计并实现具有复位功能的单片机小系统。
2.利用单片机进行灯光的场景开关控制、循环点亮控制、花样变化控制及速度变化控制(如:左右循环、扩散收缩式移动、流星雨、舞台灯光综合效果、名曲名句跟随显示等。
至少应做两项:前两项选一并有速度变化控制功能,后三项选一或自创特色花样)。
3. 炫彩音乐显示(依据3秒以上某名曲名句,模拟高、中、低音三分频,彩色LED随音频变化而起伏显示的效果,进一步地,LED 亮度跟随音乐响度闪烁)。
4.利用单片机进行灯光的色彩连续变化效果控制。
5.利用单片机进行灯光的三色联动定时控制(以交通灯为例)。
(说明:3、4中二选一,1、2、5必选)6. 配合2至5项中功能,实现液晶屏输出功能或状态信息。
7. 以调节5或4项中的时间为例实现基于4X4键盘的输入功能。
单片机C语言程序设计专题实习专周报告班级:学号:姓名:指导老师:专周成绩:一、硬件设计1.设计要求:○1A、B两通道都有车,两道正向放行35s,然后左向行驶放行15s。
[当A道放行时(绿),B道禁止(红),反之亦然,放行时间中包含有闪烁时间]○2绿灯→红灯转换必须经5s的警视状态○3设置紧急情况处理器,当紧急情况发生时,两道都亮红灯,让紧急车辆通过,完备再回到当前的状态○4具有数码管显示倒计时功能。
2.图样:北东南3.硬件选择:选用8052单片机一片,红、黄、绿LED交通显示灯各4个,导线若干,7SEG数码显示管。
单片机模块:主控芯片采用AT89C52单片机, AT89C52是AT89C5X系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
AT89C52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。
AT89C52共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输,其内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序。
管脚图如下图所示。
倒计时显示模块:由于黄灯5秒闪烁时间不单另计时,四个路口的倒计时是同步的。
故倒计时采用两个七段数码显示管。
紧急模式模块:交通路口出现紧急状况在所难免,如特大事件发生,救护车等急行车通过等,我们都必须尽量允许其畅通无阻,毕竟在这种情况下是分秒必争的,时时刻刻关系着公共财产安全,个人生死攸关等。
由此在交通控制中增设禁停按键,就可达到此目的。
二、软件设计1.设计思路:本系统以单片机为核心,由状态灯,LED显示,按键等组成。
其中P0用于送显两片LED数码管,P1、P2、P3用于控制红绿黄发光二极管,采用自带晶振时钟电路,REST引脚接上复位电路,P3.1接紧急模式设置键,P3.2、P3.3、P3.4用于调解预置交通灯时间。
学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 I/O 口输入、输出实验地点:基础实验大楼A311一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。
2学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:五、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
六、实验参考程序本实验参考程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
西安电子科技大学单片机自动测试设计实验课程实验报告实验名称输出口实验机电工程学院学院班Array姓名学号同作者实验日期 2020 年月日输出口实验一、实验目的:(1)学习Keil软件的使用(2)学习P1口的使用方法。
(3)学习软件延时函数的编写。
二、实验原理1、Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。
2、本实验中延时函数采用指令循环来实现,机器周期(系统晶振12MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
三、实验仪器1.计算机2.单片机系统和仿真机3.Keil uVision2调试软件四、实验步骤1)设置:关闭实验仪电源,MON51K卡上跳线帽分别短接至MON、片内、FOSC;系统设置(JF)→总线(598),JK→系统,KB6→59(单“51”无此项);2)接线:☞ P1.0~P1.7→L1~L8。
☞实验箱主板CZ1/USB口→电脑串口/USB口。
3)运行:开启实验仪电源,双击“Keil uVision2”图标启动keil软件,选择通信端口、硬件仿真,编程、编译下载、开始调试,全速运行程序后,观察L1…L8流水灯循环。
五、实验内容:1.P1输出口接八只发光二极管,编写程序,使发光二极管循环点亮。
2.实现状态指示灯的驱动3.按照实验要求编写控制程序,进行在线调试,并进一步修改完善,最终完成可按一定0.1S的时间顺序依次点亮发光二极管的控制程序。
(要求写出程序)六、实验结果七、思考题如何修改程序,使发光二极管的移位方向改变;若使发光二极管的延迟时间发生变化,如何修改程序。
八、按要求写出实验报告编写实验报告规范:实验名称、目的、内容、原理、设备及仪表(名称、规格、型号)、实验装置或连接示意图、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。
西安电子科技大学单片机自动测试设计实验课程实验报告实验名称输出口扩展实验机电工程学院学院班Array姓名学号同作者实验日期 2020 年月日一、实验目的:(1)了解教学实验系统的结构(2)学习单片机系统中扩展简单I/O口的方法。
实验一并行输入输出口的使用一、实验目的:学会设计proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用Keil uVision 3编程实现发光二极管的流水点亮。
二、实验原理:P1口为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。
P1口作为输出,接8个发光二极管D1~D8经限流电阻分别接至8个引脚。
本实验仿真电路图、流程图如下:三、实验代码:#include<reg51.h>#include<intrins.h> //移位库函数包含于此头文件中void delay(unsigned int d) //定义延时子函数{ while(--d>0);}void main(){ unsigned char i,sel;while(1){ sel=0xfe;for(i=0;i<=8;i++){ P1=sel; //显示变量赋给P1口delay(50000); //延时sel=_crol_(sel,1); //改变显示变量}}}四、实验结论:用while语句实现发光二极管循环流水点亮,从上到下一次点亮。
实验二C51分支程序设计一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。
二、实验原理:do while 循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。
本实验仿真电路图、流程图如下:(仿真电路图)(流程图)三、实验代码:#include <reg51.h>void main(){ char a;do{ P1=0xff;a=P1;a=a&0x03;switch(a){ case 0:P2=0x0e;break;case 1:P2=0x0d;break;case 2:P2=0x0b;break;case 3:P2=0x07;break;}}while(1);}四、实验结论:多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。
单片机设计实验报告
单片机设计实验报告
引言:
单片机(Microcontroller)是一种集成了微处理器核心、存储器、输入/输出接
口和定时器等功能的微型计算机系统。
它具有体积小、功耗低、成本低等优势,被广泛应用于各种电子设备和嵌入式系统中。
本实验旨在通过设计一个简单的
单片机应用电路,加深对单片机工作原理的理解,并掌握单片机的软硬件设计
技巧。
实验目的:
1. 掌握单片机的基本工作原理和内部结构;
2. 学习使用Keil C编程软件进行单片机程序设计;
3. 设计一个简单的单片机应用电路,实现特定功能。
实验器材:
1. 单片机开发板;
2. 电脑;
3. USB数据线;
4. 电源适配器;
5. 连接线等。
实验步骤:
1. 硬件连接:
将单片机开发板与电脑通过USB数据线连接,并接入电源适配器,确保电路
正常供电。
2. 软件配置:
打开Keil C编程软件,创建一个新的工程,并选择适当的单片机型号。
配置编译选项和下载选项,确保与开发板兼容。
3. 编写程序:
使用C语言编写程序,实现所需功能。
例如,可以设计一个温度监测系统,通过连接温度传感器和数码管,实时显示当前温度值。
4. 编译和下载:
编译程序,检查是否存在语法错误。
然后将程序下载到单片机开发板中,确保程序能够正常运行。
5. 实验验证:
将温度传感器置于不同的环境中,观察数码管上的温度数值是否与实际温度相符。
对比不同环境下的温度变化,验证系统的准确性和稳定性。
实验结果与分析:
经过实验验证,设计的温度监测系统能够准确地显示当前环境的温度数值。
在不同环境下,数码管上的数值能够及时更新,并与实际温度保持一致。
这表明单片机应用电路的设计和程序编写是正确的,系统能够正常工作。
实验总结:
通过本次实验,我深入了解了单片机的工作原理和内部结构,学会了使用Keil C编程软件进行单片机程序设计。
通过设计一个温度监测系统,我掌握了单片机应用电路的设计方法,并加深了对单片机软硬件设计技巧的理解。
实验过程中,我遇到了一些问题,但通过查阅资料和请教老师,最终成功解决了。
这次实验不仅提高了我的动手能力和解决问题的能力,还培养了我团队合作意识和
创新思维。
在今后的学习和工作中,我将继续深入研究单片机技术,不断提升自己的能力。
参考文献:
[1] 丁文祥. 单片机技术及应用[M]. 清华大学出版社, 2010.
[2] 陈焕良, 张海勇. 嵌入式系统与单片机原理与应用[M]. 机械工业出版社, 2008.。