单片机第四次实验
- 格式:docx
- 大小:120.98 KB
- 文档页数:9
单片机实验报告实验一:存储器块清零或赋值一、实验目的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. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
2024年单片机实验心得体会2024年单片机实验心得体会1这是我经过我们的不断努力,我们终于实现了简单的跑马灯的运行,便是两个灯地交替闪烁。
我们感到兴奋极了。
但是我们并没有满足于当前,我们又编写了三个灯地交替闪烁,四个及多个。
当我们一步步实现我们的目的时,我得到莫大成就感和自信。
在这次实验中,我体会到了合作的重要性。
一个人也可能实现这一系列的过程,但是要花费很多精力和时间。
群策群力,分工明确,可以使我们更好、更快地完成我们的工作。
在此期间,你可以更好知道自己的不足和缺陷,来得到改正。
还可以知道自己的优势所在,把握好自己的优势。
附送:无论是作为一名业余的电子爱好者还是一名电子行业的相关从业人员,掌握单片机技术无疑可以使您如虎添翼,为您的电子小制作或者开发设计电子产品时打开方便的大门!而且现在学习单片机技术的热潮正在不断升温,时下多家电子类的报刊杂志如:《电子制作》《无线电》《电子报》《电子世界》都开设了详细的单片机学习专栏,对于想学习单片机的朋友来说帮助很大,可以说现在的单片机学习环境是最好的,经过一段时间的努力,采用单片机来开发设计电子产品已经不再是专业电子工程师的“专利”!作为一个普通的电子爱好者完全可以通过一番努力后熟练掌握!国外的电子爱好者采用单片机来设计小制作非常普及,一些智能机器人、智能自动装置内部都离不开单片机的身影~~~站长的单片机技术也是通过网络自学学会的,因为站长的专业不是电子专业,所以单片机对于我来说是完全陌生的,自从上网后才知道有个叫单片机的好东东,看了平凡的单片机上的单片机教程后开始自学51单片机技术。
平凡的单片机上有非常详细的51单片机基础知识教程,写得非常生动朴实,对我来说帮助极大,站长是先看了平凡老师的教程才对单片机有一些了解,然后购买了一些单片机的书刊,加以不断试验才初步掌握单片机的。
学习单片机技术有一定的难度,不花费一番努力是很难学会的,但是只要不断努力就一定能成功,套用一句广告歌词:努力总有回报!学习单片机最好从51系列开始,易看懂,不过确实很有用,很有嚼头,可以先大致看一遍,不消化的可以以后在试验实践中反复研究。
单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil)4、下载器5、示波器6、万用表三、实验内容1、点亮 LED 灯通过编写简单的程序,控制单片机的引脚输出高低电平,从而点亮或熄灭连接在该引脚上的 LED 灯。
这是单片机最基础的操作之一,旨在熟悉单片机的编程环境和引脚控制方式。
2、数码管显示利用单片机驱动数码管,实现数字的显示。
需要了解数码管的工作原理和驱动方式,通过编程控制数码管的段选和位选信号,显示不同的数字。
3、按键输入设计按键电路,通过读取按键的状态,实现对单片机系统的输入控制。
例如,通过按键切换不同的显示模式或控制其他外部设备。
4、定时器/计数器应用使用单片机的定时器/计数器功能,实现定时、计数等操作。
例如,设计一个定时闪烁的 LED 灯,或者通过计数器统计外部脉冲的个数。
5、串口通信实现单片机与计算机之间的串口通信,将单片机采集到的数据发送到计算机上进行显示和处理,或者接收计算机发送的指令对单片机系统进行控制。
四、实验原理1、单片机的基本结构单片机通常由中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入输出接口(I/O 口)、定时器/计数器、中断系统等部分组成。
2、编程语言本次实验采用 C 语言进行编程。
C 语言具有简洁、高效、可移植性强等优点,非常适合单片机的开发。
3、引脚功能单片机的引脚分为电源引脚、时钟引脚、复位引脚、I/O 引脚等。
通过对这些引脚的合理配置和控制,可以实现各种功能。
4、数码管驱动原理数码管分为共阴极和共阳极两种类型。
通过控制数码管的段选和位选信号,可以使数码管显示不同的数字和字符。
5、按键检测原理按键通常采用上拉电阻或下拉电阻的方式连接到单片机的I/O 引脚。
一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的1. 熟悉单片机中断系统的基本概念和原理。
2. 掌握中断源、中断优先级、中断服务程序等基本概念。
3. 学会使用单片机的中断系统实现实时响应外部事件。
4. 培养动手实践能力和问题解决能力。
三、实验器材1. 单片机实验板2. 示波器3. 电源4. 连接线5. 逻辑分析仪(可选)四、实验内容1. 实验一:外部中断实验(1)实验目的:验证外部中断功能,实现按键控制LED灯的点亮和熄灭。
(2)实验步骤:a. 将外部中断0(INT0)引脚连接到按键,按键按下时产生低电平信号。
b. 编写中断服务程序,实现按键按下时点亮LED灯,按键释放时熄灭LED灯。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的点亮和熄灭情况。
2. 实验二:定时器中断实验(1)实验目的:验证定时器中断功能,实现LED灯的定时闪烁。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断,编写定时器中断服务程序,实现LED灯的定时闪烁。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的闪烁情况。
3. 实验三:中断嵌套实验(1)实验目的:验证中断嵌套功能,实现定时器中断和外部中断的嵌套。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断和外部中断,设置中断优先级。
c. 编写定时器中断服务程序和外部中断服务程序,实现中断嵌套。
d. 编译程序,下载到单片机实验板上。
单片机定时器实验报告篇一:单片机实验报告——定时器实验四定时器实验自动化121班 36 张礼一.实验目的掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。
二.实验仪器单片机开发板一套,计算机一台。
三.实验任务编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示0~9这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0(或T1)提供。
开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。
两片锁存器的输出使能端OE都恒接地,使得锁存器的内部数据保持器输出端与锁存器的输出端保持接通。
而U2的锁存使能端LE由P2.1控制,所以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。
当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。
汇编语言程序流程如图4-2:四.实验步骤:1.数码管的0~9的字型码表如下:2.参考图4-2所给的程序流程图编写实验程序。
(注:以下程序为两位60秒计数程序)#include sbit wei=P2^0; sbit duan=P2^1;char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int i,j,k,num,shi,ge; void delay(int a) {for(i=0;i void display(int shi,int ge){wei=1;P1=0xfe;wei=0;duan=1;P1=table[shi];duan=0;wei=1; delay(5);P1=0xfd;wei=0; duan=1;P1=table[ge];duan=0; }void main() {TMOD=0x01;TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) {delay(5);display(shi,ge); } }void T0_time() interrupt 1 {TH0=(65536-45872)/256; TL0=(65536-45872)%256; k++; if(k==20) { k=0; num++;if(num==60)num=0; shi=num/10; ge=num%10; } }3.实验接线,如图4-1。
第1篇一、实验目的本次实验旨在通过实际操作,加深对中断原理的理解,掌握单片机中断系统的工作机制,学会外部中断和定时/计数器的使用,以及串口数据发送和接收的方法。
二、实验内容1. 外部中断原理及使用(1)实验原理:通过实验,了解外部中断的工作原理,掌握外部中断的使用方法,包括中断源的设置、中断服务程序的编写和中断请求的处理。
(2)实验步骤:设置外部中断源,编写中断服务程序,实现按键控制LED灯亮灭。
2. 定时/计数器的使用(1)实验原理:通过实验,了解定时/计数器的工作原理,掌握定时/计数器的使用方法,包括定时/计数器的初始化、定时/计数器的启动和停止、定时/计数器的中断处理。
(2)实验步骤:设置定时/计数器,实现LED灯的闪烁。
3. 串口数据发送和接收(1)实验原理:通过实验,了解串口通信的工作原理,掌握串口数据发送和接收的方法,包括串口初始化、发送和接收数据的流程。
(2)实验步骤:实现单片机与计算机之间的串口通信,发送和接收数据。
三、实验结果及分析1. 外部中断实验结果及分析实验中,通过按键控制LED灯亮灭,实现了外部中断的基本功能。
实验结果表明,当按键被按下时,外部中断请求信号被触发,中断服务程序被执行,LED灯状态发生改变。
2. 定时/计数器实验结果及分析实验中,通过定时/计数器实现LED灯的闪烁,实现了定时功能。
实验结果表明,定时/计数器能够按照设定的周期产生中断,中断服务程序能够按照要求执行。
3. 串口数据发送和接收实验结果及分析实验中,通过串口通信实现单片机与计算机之间的数据传输。
实验结果表明,单片机能够按照设定的波特率发送和接收数据,计算机端能够正确接收并显示数据。
四、实验总结1. 通过本次实验,加深了对中断原理的理解,掌握了单片机中断系统的工作机制。
2. 掌握了外部中断、定时/计数器和串口通信的使用方法,为后续学习和实践打下了基础。
3. 在实验过程中,培养了动手实践能力,提高了解决问题的能力。
单片机实验第二次实验:图见实验题1.P1.0~P1.7这八个发光二极管全部点亮#include#define uchar unsigned char#define uint unsigned intsbit greenLed=P1^0;Delay(uint cnt){ uchar i;do{for(i=0;i<165;i++);}while(cnt--);}main(){ while(1){ greenLed=0;Delay(1000);greenLed=1;Delay(1000);}}2. P1.0~P1.7这八个发光二极管循环点亮#include delay(unsigned char cnt){ unsigned int i;do{for(i=0;i<6000;i++);}while(cnt--);}main(){ unsigned char a;P1=~a;while(1){if(a!=0){ delay(5);a<<=1;P1=~a;}else{a=0x01;P1=~a;}}}3.通过外部中断控制八盏灯分别右移,左移,闪烁,双灯同时左移。
#include#define uchar unsigned charuchar code LedTable[]= {0x03,0x0c,0x30,0xc0};uchar led_flag = 4;uchar a; Delay(uchar cnt){ unsigned int i;do{ for(i=0;i<6000;i++);}while(cnt--);}void Led_rr(void)//led右移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x80;P1 = ~a;a >>= 1;}}void Led_rl(void)//led左移函数{ uchar i;for(i=0;i<8;i++){ if(a == 0) a= 0x01;P1 = ~a;a <<= 1;Delay(10);}}void Led_spark(void){ P1 = 0xff;Delay(10);P1 = 0;Delay(10);}void Led_lr_doble(){ uchar i;for (i=0;i<4;i++){ P1= ~LedTable[i];Delay(10);}}void int1(void) interrupt 2 //中断服务函数{ led_flag++;if(led_flag >= 3) led_flag = 0;}void main(void){ EA = 1;EX1 = 1;IT1 = 1;while(1){ if(led_flag ==4){ Led_spark();}if(led_flag == 0){ Led_rl();}if(led_flag == 1){ Led_rr();}if(led_flag == 2){ Led_lr_doble();}}第三次实验:1.设单片机的=12MHz,要求用定时器/计数器T0以方式1在P1.0脚上输出周期为4ms的方波。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
实验四-MCS-51单片机外部中断实验实验目的:1. 学习MCS-51单片机的外部中断原理和使用方法;2. 掌握如何通过硬件中断和软件中断实现MCS-51单片机的响应机制;3. 了解MCS-51单片机外部中断的实际应用。
实验器材:MCS-51单片机开发板、按键开关、调试器。
实验原理:MCS-51单片机通过INT0和INT1两个硬件中断引脚实现外部中断。
当INT0外部中断线检测到低电平信号时,中断向量为0x0003;当INT1外部中断线检测到低电平信号时,中断向量为0x0013。
通过配置中断控制寄存器IE和TCON,可以实现对外部中断的使能、触发方式和优先级等的控制。
MCS-51单片机还可以通过软件方式实现外部中断,即通过软件方式扫描外部信号,并在检测到信号发生变化时触发相应的中断处理程序。
实现软件中断的方法是使用定时器功能,通过定时器中断触发中断服务程序,该程序扫描外部信号,并根据需要触发软件中断。
实验步骤:1. 将开发板上的按键开关连接到开发板的P3.2引脚。
按键开关按下时,P3.2引脚被拉低,可以触发外部中断。
2. 打开Keil μVision5软件,新建工程,选择芯片型号为STC89C52,保存并命名为“Exp4”。
3. 在主函数中声明中断函数,并在中断函数中打印提示信息。
4. 在主函数中初始化中断控制寄存器IE和TCON,开启INT0外部中断,并将中断优先级设置为最高。
5. 在主函数中使用无限循环,来保持程序一直运行,并定时打印提示信息,以验证程序是否正常运行。
6. 烧录程序到开发板上,先在开发板上不按下按键,观察是否正常打印提示信息。
然后按下按键,观察是否触发外部中断,进入中断函数并打印提示信息。
实验代码:#include<STC89C52.h>#include<stdio.h>// 定义外部中断0的中断服务函数void Interrupt0() interrupt 0{printf("External interrupt 0 has occured!\n");}// 打印提示信息printf("Program is running...\n");while(1){// 定时打印提示信息printf("Hello!\n");delay_ms(1000);}}注意事项:1. 写中断程序时,一定要注意将中断函数的声明放在程序开头,否则可能会出现中断无法触发的情况;2. 在使用中断相关功能的时候,务必仔细阅读数据手册中的相关章节,以确保正确使用并且避免出现不必要的错误;3. 在进行外部中断实验的时候,可以使用按键开关、光敏电阻等外部器件来模拟外部信号的变化,以测试程序的正确性。
单
片
机
实
验
报
告
(四)
学院:计算机学院
学号:120613106
姓名:蒋晓阳
扩展存储器读写实验
一.实验指标
1、学习片外存储器扩展的方法。
2、学习数据存储器不同的读写方法。
二.实验总体设计方案
引脚定义: A0——Ai:地址输入线。
D0——D7:双向三态数据线。
CS:片选信号输入线,低电平有效。
RD:读选通信号线,低电平有效。
WR:写选通信号线,低电平有效。
编写简单的程序,对实验板上提供的外部存储器( 62256)进行读写操作,连续运行程序,数码管上显示 99。
SWR——P3.6, SRD——P3.7 串并转换电路的DIN——P3.0,CLK——P3.1 数据线与仿真单片机的数据线相连,地址高8位、低8位分别与单片机部分地址线相连
框架图
三.硬件设计设计原理图
74LS273引脚图
仿真图四.软件设计
源程序:
#include <reg51.h>
#include <absacc.h>
#define BYTE unsigned char
#define WORD unsigned int
#define RAMADDR XBYTE[0x6000]
BYTE code RAMDATA=0x99;
BYTE code dis_code[10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,
0x09};
// 0 1 2 3 4 5 6 7 8 9
void w_ram();
BYTE r_ram();
void disp(BYTE dat);
void dsend(BYTE dat);
/* 写 RAM 子程序 */ void w_ram()
{
RAMADDR=RAMDATA; }
/* 读 RAM 子程序 */ BYTE r_ram()
{
BYTE dat;
dat=RAMADDR;
return(dat);
}
/* LED显示子程序 */ void disp(BYTE dat)
BYTE dat1;
dat1=dat&0x0f;
dsend(dat1);
dat1=dat>>4;
dsend(dat1);
}
void dsend(BYTE dat) {
BYTE j,f;
j=dat;
f=dis_code[j];
SBUF=f;
while(TI==0);TI=0; }
void main(void)
{
do
{
BYTE dat,i;
w_ram(); //把数据存入指定的地址中
dat=r_ram(); //从指定的地址中读出数据
disp(dat); //显示
for(i=0;i<10000;i++);
}
while(1);
}
五.总结
这次扩展实验使我对于芯片的数据和地址复用口有了了解。
通
过不同的接法就能实现数据与地址的转换。
主要是硬件实现实现结果。
存储器扩展以及附加的两个实验都是为以后更高的开发51单片机做
准备,实现更多的功能存储,单片机与单片机之间的连接,单片机与电脑的连接。
六.参考资料
《单片机应用技术教程》
《仿真技术》。