单片机实验报告2

合集下载

单片机实验二 拆字程序 实验报告

单片机实验二  拆字程序  实验报告
00H
ORG 30H
00H
00H
30H
MOV A,30H
00H
30H里的数
30H里的数
ANL A,#0FH
30H里的数
高四位清零,低四位不变
高四位清零,低四位不变
MOV 22H,A
22H里的数
A高四位清零,低四位不变
A高四位清零,低四位不变
MOV A,30H
A高四位清零,低四位不变
30H里的数
30H里的数
将累加器A内容送片内RAM的20H单元
赋值:A=30H
将累加器A的高低位互换
将互换高低位后的累加器A高四位清零,低四位不变
将累加器A内容送片内RAM的21H单元
结束
单步运行程序,填写下论分析值
实际运行结果值
ORG 00H
00H
00H
00H
LJMP STAR
00H
00H
SWAP A
30H里的数
30H里的数高低位数转换
30H里的数高低位数转换
ANL A,#0FH
30H里的数高低位数转换
高四位清零,低四位不变
高四位清零,低四位不变
MOV 21H,A
21H里的数
A里面的数
A里面的数
SJMP $
00H
00H
00H
END
00H
00H
00H
思考
如何用断点方式调试本程序。
把光标指向语句左边,然后单击,会出现一个符号。同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
佛山科学技术学院
实验报告
课程名称实验项目拆字程序
专业班级姓名学号

单片机实训实验报告总结

单片机实训实验报告总结

一、实验背景与目的随着科技的不断发展,单片机作为一种微小的计算机系统,在工业控制、智能家居、汽车电子等领域得到了广泛的应用。

为了提高学生的实践能力和创新意识,本实训课程旨在通过实际操作,让学生掌握单片机的原理、编程和调试方法,培养学生的动手能力和团队协作精神。

本次实训以51单片机为核心,结合数码管、LED灯、按键等外围电路,设计了多个实验项目,包括LED流水灯、交通灯控制系统、简易计算器、温湿度监控系统等。

通过这些实验,使学生深入了解单片机的硬件结构和软件编程,提高学生的实际操作能力和问题解决能力。

二、实验内容与过程1. 实验一:LED流水灯(1)实验目的:掌握51单片机的I/O口编程,实现LED灯的流水效果。

(2)实验步骤:① 硬件连接:将LED灯连接到P1口;② 编写程序:使用循环语句和延时函数控制LED灯的流水效果;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的流水效果。

2. 实验二:交通灯控制系统(1)实验目的:学习单片机在交通灯控制系统中的应用,实现红黄绿灯的变换及倒计时功能。

(2)实验步骤:① 硬件连接:将LED灯连接到P1口,按键连接到外部中断INT0;② 编写程序:设置定时器中断,实现倒计时功能;编写外部中断程序,实现红黄绿灯的变换;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察交通灯的工作状态和倒计时效果。

3. 实验三:简易计算器(1)实验目的:掌握矩阵键盘扫描原理、LCD1602显示屏控制,实现基本的四则运算。

(2)实验步骤:① 硬件连接:将矩阵键盘和LCD1602显示屏连接到单片机;② 编写程序:实现矩阵键盘扫描、LCD1602显示控制和运算逻辑处理;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察计算器的工作状态和运算结果。

4. 实验四:温湿度监控系统(1)实验目的:学习单片机在温湿度监控系统中的应用,实现温度和湿度的实时显示。

(2)实验步骤:① 硬件连接:将温度传感器和湿度传感器连接到单片机,将LED灯连接到P1口;② 编写程序:实现温度和湿度的实时采集,并根据采集到的数据控制LED灯的亮灭;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的亮灭状态和数码管上的温度、湿度值。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。

二、实验器材及原理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灯、按键控制、数码管显示等。

这些技能对于日常生活和工程设计都具有很大的实用性。

在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。

单片机原理及应用实验二报告

单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。

二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。

三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。

IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。

四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。

2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。

3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。

五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。

单片机抢答器实验报告(2篇)

单片机抢答器实验报告(2篇)

单片机抢答器实验报告(2篇)以下是网友分享的关于单片机抢答器实验报告的资料2篇,希望对您有所帮助,就爱阅读感谢您的支持。

篇一:单片机抢答器实验报告单片机八路抢答器实验报告一实验任务1. 设计一个竞赛抢答器,可同时供8名选手或者8个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7、8,各用一个抢答器的按钮,按钮的编号与选手的编号相对应。

2. 给节目主持人设计一个控制开关,用来控制系统的清零和抢答开始。

3.抢答器具有数据显示,声音提示的功能。

二.源程序(1)头文件#include#include#include#include#define uint unsigned int#define uchar unsigned char//-------------------------------------------------------------------------------------void show(); //液晶显示程序//-------------------------------------------------------------------------------------//12864液晶显示部分子程序模块//-------------------------------------------------------------------------------------sbit LCD_RS = P2 ; //寄存器输入sbit LCD_RW = P2; //液晶读/写控制sbit LCD_EN = P2; //液晶使能控制sbit LCD_PSB = P2;sbit SW1 = P1 ;sbit SW2 = P1;sbit SW3 = P1;sbit SW4 = P1;sbit SW5 = P1;sbit SW6 = P1;sbit SW7 = P1;sbit SW8 = P1;sbit beep = P3;#define LCD_data P0//sbit busy=P0; //lcd busy bitvoid lcd_xieping0(uchar x,uchar y,uchar date); void lcd_xieping(uchar x,uchar y,uchar *str); void chn_disp0(uchar code *chn);void img_disp(uchar code *img);void lcd_xieping1(uchar x,uchar y,uchar *str); void lcd_init();void write_cmd(uchar cmd); void delay_ms1(uint z);void delay_ms(uint z);void dingding(int a);//void Init_Timer0(void);void clr(void);extern unsigned char mmm[8][9]; char keynumber();(2)显示部分的程序#include “head.h”unsigned char mmm[8][9];void delay_ms(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay_ms1(uint z)//长延时{uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);}//-------------------------------------------------------------------------------------// 液晶显示部分//-------------------------------------------------------------------------------------void write_cmd(uchar cmd){LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;P0 = cmd;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void write_dat(uchar dat){LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delay_ms1(1);LCD_EN = 1;delay_ms1(1);LCD_EN = 0;}void lcd_xieping0(uchar x,uchar y,uchar date) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}write_dat(date);}void lcd_xieping(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x80+y); break;case 1: write_cmd(0x90+y); break;case 2: write_cmd(0x88+y); break;case 3: write_cmd(0x98+y); break;}while (*str){write_dat(*str);str++;}}void lcd_xieping1(uchar x,uchar y,uchar *str) {switch(x){case 0: write_cmd(0x84+y); break;case 1: write_cmd(0x94+y); break;case 2: write_cmd(0x8C+y); break; case 3: write_cmd(0x9C+y); break; }while (*str){write_dat(*str);str++;}}void lcd_init(){LCD_PSB = 1; //并口方式write_cmd(0x30); //基本指令操作delay_ms(5);write_cmd(0x0C); //显示开,关光标delay_ms(5);write_cmd(0x01); //清除显示内容delay_ms(5);}void chn_disp0(uchar code *chn) {uchar i,j;write_cmd(0x30); //void write_cmd(uchar cmd) write_cmd(0x84);j=0;for(i=0;iwrite_dat(chn[j*16+i]);write_cmd(0x8c);j=1;for(i=0;iwrite_dat(chn[j*16+i]);}void show(){lcd_xieping(0,0,mmm[0]);lcd_xieping(0,4,mmm[1]);lcd_xieping(1,0,mmm[2]);lcd_xieping(1,4,mmm[3]);lcd_xieping(2,0,mmm[4]);lcd_xieping(2,4,mmm[5]);lcd_xieping(3,0,mmm[6]);lcd_xieping(3,4,mmm[7]);}(3)抢答器:#include “head.h”unsigned int ms,i=0;//定义全局变量bit FLag=0;//定义停止,计时标志char yy[8]={0,0,0,0,0,0,0,0};void main(){unsigned char num=0,k,j,temp;EX0=1; //外部中断0开IT0=1; //IT1=0表示边沿触发EX1=1; //外部中断1开IT1=1; //IT1=1表示边沿触发Init_Timer0();lcd_init();for(k=0;kfor(j=0;jmmm[k][j]=0;//mmm[0][0]=…0‟;mmm[1][0]=…0‟;mmm[2][0]=…0‟;mmm[3][0]=…0‟;mmm[4][0]=…0‟;mmm[5][ 0]=…0‟;mmm[6][0]=…0‟;mmm[7][0]=…0‟;while(1){temp= keynumber();if(temp){mmm[i][0]=temp+‟0‟;mmm[i][1]=…:‟;mmm[i][2]= ms/1000+‟0‟;mmm[i][3]=ms%1000/100+‟0‟;mmm[i][4]=ms%100/10+‟0‟;mmm[i][5]=ms%10+‟0‟;mmm[i][6]=…m‟;mmm[i][7]=…s‟;mmm[i][8]=…\0‟;show();i++;}show();}}/*------------------------------------------------定时器初始化子程序------------------------------------------------*/ void Init_Timer0(void){TMOD |= 0x01;EA=1;ET0=1;TR0=1;}/*------------------------------------------------ 定时器中断子程序------------------------------------------------*/ void Timer0_isr(void) interrupt 1{TH0=0xFC; //重新赋值1ms TL0=0x66;if(FLag){ms++;if (ms==60000){ms=0;}}}/*------------------------------------------------ 外部中断0程序------------------------------------------------*/ void ISR_INT0(void) interrupt 0{EX0=0;dingding(50);lcd_xieping(0,2,” 可以开始抢答“); FLag=!FLag;}/*------------------------------------------------ 外部中断1程序------------------------------------------------*/ void ISR_INT1(void) interrupt 2 {if(FLag==0)//停止时才可以清零clr();}/*------------------------------------------------ 数值清零------------------------------------------------*/ void clr(void){unsigned char k,j;for(k=0;kmmm[k][j]=0;for(k=0;kms=0; //清空计时i=0;write_cmd(0x01); //清屏}char keynumber(){if((!SW1)&&(!yy[0])){delay_ms1(20);if((!SW1)&&(!yy[0])) {yy[0]=1;return 1;}}if((!SW2)&&(!yy[1])){delay_ms1(20);if(!SW2){yy[1]=1; return 2; } } if((!SW3)&&(!yy[2])) { delay_ms1(20); if(!SW3) { yy[2]=1; return 3; } } if((!SW4)&&(!yy[3])) { delay_ms1(20); if(!SW4) { yy[3]=1; return 4; } } if((!SW5)&&(!yy[4])) { delay_ms1(20); if(!SW5){ yy[4]=1; return 5; } } if((!SW6)&&(!yy[5])) { delay_ms1(20); if(!SW6) { yy[5]=1; return 6; } } if((!SW7)&&(!yy[6])) { delay_ms1(20); if(!SW7){yy[6]=1; return 7; }}if((!SW8)&&(!yy[7])) {delay_ms1(20); if(!SW8) {yy[7]=1; return 8; }}return 0;}void dingding(int a) {int k;for(k=0;kbeep=0;delay_ms(1); beep=1; }}篇二:单片机抢答器实验报告实习(设计) 报告姓名班级学号实习(设计) 科目基于51单片机的五路抢答器实习(设计) 地点实习(设计) 时间电气工程及自动化学院School of Electrical Engineering & Automation说明:(1)本日志用于记录实习(设计)过程中的各项活动内容,要求学生必须填写具体、齐全、工整。

单片机原理及应用实验报告2

单片机原理及应用实验报告2

单片机原理及应用实验报告2单片机原理及应用实验报告2实验报告:单片机原理及应用实验一、实验目的1、了解单片机的基本工作原理;2、掌握单片机的编程方法和编写汇编语言程序的能力;3、学习单片机的应用实验。

二、实验原理单片机是一种集成电路,内部包含了中央处理器、存储器和各种输入输出端口。

单片机的工作原理是通过对输入信号的处理和对输出信号的控制来实现各种功能。

单片机的编程方法一般采用汇编语言编写程序。

汇编语言是一种低级语言,可以直接对单片机进行操作。

通过编写汇编语言程序,可以实现各种功能,如控制LED灯的亮灭、控制电机的转动等。

本次实验主要通过控制LED灯的亮灭来演示单片机的应用。

在实验中,我们将使用汇编语言编写程序,通过编程来控制LED灯的亮灭。

三、实验步骤2、编写汇编语言程序:打开编程软件,进入编程界面,编写程序代码;3、编译程序:将编写好的程序进行编译,生成机器码;4、烧录程序:用编程工具将编译好的机器码烧录到单片机中;5、连接电路:使用面包板将单片机与LED灯连接起来;6、测试程序:将单片机的电源接通,观察LED灯的亮灭情况。

四、实验结果与分析经过以上步骤,我们成功地编写了汇编语言程序,并将程序烧录到了单片机中。

在实验中,我们观察到LED灯根据程序的控制产生了相应的亮灭效果。

实验结果表明,通过编程可以实现对单片机的控制,从而实现各种功能。

单片机在嵌入式系统、自动控制系统、家电等方面有着广泛的应用。

五、应用实例1、家居智能化控制:通过编程控制单片机,可以实现对家电的智能化控制。

例如,可以根据日出日落时间控制窗帘的开闭,根据室内温度控制空调的开关等。

2、工业自动化:在工业生产中,单片机可以用来控制各种设备和机械,实现生产线的自动化控制。

例如,可以根据产品的规格和数量,自动调整机械的工作速度和工作时间。

3、智能交通系统:在交通领域,单片机可以用来控制信号灯、道闸等设备,实现交通流量的控制。

例如,可以根据道路的拥堵程度和车辆的行驶速度,调整信号灯的红绿灯时间,从而达到交通畅通的目的。

51单片机实验报告

51单片机实验报告

51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。

本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。

二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。

为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。

然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。

三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。

本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。

通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。

四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。

本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。

通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。

五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。

本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。

通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。

六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。

本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。

通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。

七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。

本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。

通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。

八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。

单片机实验报告总结

单片机实验报告总结

单片机实验报告总结单片机实验报告总结引言:单片机是一种集成电路,具有微处理器核心、存储器、输入输出接口等功能。

在现代电子技术领域中,单片机被广泛应用于各种电子设备中,如家电、汽车、通信设备等。

本文将对我在单片机实验中的学习和实践进行总结,分享我在实验中的收获和心得体会。

实验一:LED灯闪烁实验在这个实验中,我们学习了如何使用单片机控制LED灯的闪烁。

通过编写简单的程序,我们成功地实现了LED灯的闪烁功能。

这个实验让我深刻体会到了单片机的强大和灵活性。

通过控制单片机的GPIO口,我们可以实现各种各样的功能,这让我对单片机的应用前景充满了信心。

实验二:数码管显示实验在这个实验中,我们学习了如何使用单片机控制数码管进行数字的显示。

通过编写程序,我们成功地将数字从0到9依次显示在数码管上。

这个实验让我了解了数码管的工作原理和控制方式。

在实验过程中,我遇到了一些问题,如数字显示不清晰、显示不准确等,但通过不断的调试和优化,最终解决了这些问题。

这个实验让我明白了实践中的问题和挑战,并培养了我解决问题的能力。

实验三:按键控制实验在这个实验中,我们学习了如何使用单片机实现按键控制。

通过编写程序,我们成功地实现了按下按键时LED灯亮起,松开按键时LED灯熄灭的功能。

这个实验让我了解了按键的原理和使用方法。

在实验过程中,我遇到了一些问题,如按键抖动、按键误触等,但通过添加软件消抖和优化程序,最终解决了这些问题。

这个实验让我明白了软件的重要性和优化的必要性。

实验四:PWM调光实验在这个实验中,我们学习了如何使用单片机实现PWM(脉宽调制)调光功能。

通过编写程序,我们成功地实现了LED灯的亮度可调节。

这个实验让我了解了PWM的原理和应用。

在实验过程中,我遇到了一些问题,如PWM频率调节不准确、亮度不连续等,但通过调整参数和优化程序,最终解决了这些问题。

这个实验让我明白了硬件和软件的协同工作的重要性。

实验五:温度检测实验在这个实验中,我们学习了如何使用单片机实现温度检测功能。

单片机原理实验报告

单片机原理实验报告

单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验一基本操作实验目的:熟悉伟福仿真机软件的基本操作,熟悉MCS-51指令。

实验内容A:数据传送程序实验程序:实验步骤:(1)从起始地址开始全速运行程序Ⅰ,检查运行结果, 外部数据窗口中7000H~700FH单元的内容皆为00H;(2)按要求修改程序如Ⅱ,用单步/跟踪运行程序, 查看寄存器和外部数据窗口;(3)在PLUS处设置断点,从起始地址开始全速运行程序,查看寄存器和外部数据窗口;(4)清除断点,用运行到当前行方式将程序运行到PLUS的下一条指令,查看运行结果是否正确。

实验内容B: 1 , 当X>0时求符号函数Y= 0 , 当X=0时-1 , 当X<0时实验程序:实验步骤:(1)准备好三个有代表性的数据,分三次用单步/跟踪方式运行程序,注意PC指针的变化;当(40H)= _____(X>0) 时,ACC.7= 0 , 运行后(41H)= _01H_____(Y= 1),当(40H)= _00H____(X=0) 时,ACC.7= 0 , 运行后(41H)= __00H____(Y= 0),当(40H)= _____(X<0) 时,ACC.7= 1 , 运行后(41H)= FFH (Y=﹣1)(2)思考:能否用“JC POSI ”指令替代“JB ACC.7, POSI ”指令, 修改运行程序,验证结果。

注意“CJNE A, #00H, NZEAR”执行后CY位为0/1 ?单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验二输入/输出控制实验实验目的:掌握单片机I/O口输入输出的控制方法,学会编写数码管的显示程序。

实验内容A:P1 口做输出口,接8只发光二极管L1~L8(高电平时发光二极管点亮),编写程序,使L1~L8流水闪烁。

ORG 0000HSTART: MOV A,#01HMOV R2,#08HLOOP:MOV P1,ALCALL DELAYRL ADJNZ R2,LOOPAJMP STARTDELAY:MOV R5,#40 ;延时1秒D1:MOV R6,#50D2:MOV R7,#248D3:DJNZ R7,D3DJNZ R6,D2DJNZ R5,D1RETEND实验内容B:P1 口做输入口,接拨动开关K1~K8。

单片机应用实验报告 2键盘、LED 数码管显示实验

单片机应用实验报告 2键盘、LED 数码管显示实验
delayms(5);
}
int main(){init();来自while(1){
judge();
xianshi();
}
return 0;
}
五、实验步骤
六、附录
sbit LED2=P2^6;
int num=0;
unsigned char code dispcode[]=
{0x30,0xfc,0xa2,0xa4,0x6c,
0x25,0x21,0xbc,0x20,0x24};
void init()
{
key0=1;
key1=1;
key2=1;
}
void delayms(int a)
{int b=0;
for(a;a>0;a--)
for(b=110;b>0;b--);
}
int judge()
{
if(key0==0)
{
delayms(100);
if(key0==0)
{
red=0;
yell=1;
gre=1;
num++;
if(num==10)
num=0;
}
}
if(key1==0)
{
delayms(5);
if(key1==0)
{
red=1;
yell=0;
gre=1;
}
}
if(key2==0)
{
delayms(5);
if(key2==0)
{
red=1;
yell=1;
gre=0;
}
}
return 0;
}
void xianshi()
{

单片机实验报告二 单片机IO口实验

单片机实验报告二 单片机IO口实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。

2.熟练掌握STC型开发板的使用方法和注意事项。

3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。

其中流水灯的变化形式多样。

(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。

根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。

图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。

单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。

单片机实验报告2

单片机实验报告2

《单片机应用系统设计》实验报告院系:仪器科学与工程学院专业:测控技术与仪器实验室:机械楼5楼同组人员:评定成绩:审阅教师:硬件实验一I/O口输入/输出及控制实验Ⅰ、I/O口输入/输出实验一、实验目的1、学习单片机I/O口的使用方法2、学习延时子程序的编写和使用二、实验内容1、I/O口输出:P1口做输出口,接八只发光二极管,编写程序让发光二极管循环点亮。

2、I/O口输入/输出:P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。

编写程序读取开关状态,将此状态在发光二极管上显示出来。

编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。

三、实验步骤1、I/O口输出硬件连接连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L7MCS51的P1口循环点灯2、I/O口输入/输出硬件连接连线连接孔1 连接孔21 K4 P1.02 K5 P1.13 P1.2 L44 P1.3 L5MCS51的P1口输入/输出3、实验说明(1)对于MCS51,P1口是准双向口。

它作为输出口时与一般的双向口使用方法想同;但准双向口用作输入口时,因其结构特点必须对它置“1”,否则读入的数据容易产生错误。

(2)8051延时子程序的延时计算问题,对于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:12/12MHZ=1ms,该延时子程序延时:(256X255+2)X2X1us=130ms。

4、分别连接硬件并执行相关程序,记录结果。

四、提高要求修改I/O口输出程序,先1、3、5、7灯亮,延时后2、4、6、8灯亮,交替点亮。

单片机交通灯实验报告(二)

单片机交通灯实验报告(二)

单片机交通灯实验报告(二)引言概述本报告旨在介绍单片机交通灯实验的进一步研究。

通过对单片机交通灯实验的深入探讨,我们将了解交通信号灯电路的设计原理、控制逻辑以及实际应用的相关知识。

本文将分为五个大点进行阐述,包括:电路设计、控制逻辑编程、硬件连接、功能扩展和实验结果分析。

正文一、电路设计1. 确定交通信号灯的基本电路结构2. 选择适当的电子元件并进行电路布局3. 绘制电路原理图和PCB布局图4. 按照电路设计进行焊接和组装二、控制逻辑编程1. 理解交通信号灯的控制逻辑2. 学习并掌握单片机编程语言3. 根据控制逻辑编写程序代码4. 调试程序的运行,确保交通信号灯按照预期进行切换5. 优化控制逻辑,提高程序效率和稳定性三、硬件连接1. 连接交通信号灯的LED灯及其它电子元件2. 理解并实现灯光的正反相控制3. 使用适当的电阻进行电流限制4. 连接并配置单片机与电路的通信接口5. 建立单片机与计算机之间的连接,方便程序下载与调试四、功能扩展1. 添加电子组件以实现交通信号灯的更多功能2. 尝试不同的交通灯控制算法3. 增加人车辨别传感器以实现智能化控制4. 加入音效与声光提示功能,提高交通信号灯的可视性和可听性5. 设计并实现交通流量的实时监测和统计功能五、实验结果分析1. 对交通信号灯的各项功能进行实验验证2. 分析实验结果,评估系统的性能和稳定性3. 总结实验中遇到的问题和解决方案4. 提出改进交通信号灯设计的建议总结通过本文详细的阐述,我们了解了单片机交通灯实验的电路设计、控制逻辑编程、硬件连接、功能扩展以及实验结果分析等方面的知识。

这些内容不仅对于我们更深入地了解交通信号灯的工作原理和应用具有重要意义,而且为我们开展相关实际项目提供了指导和启示。

希望本报告能够帮助读者更好地理解和应用单片机交通灯实验。

c51单片机实验报告

c51单片机实验报告

c51单片机实验报告
《C51单片机实验报告》
C51单片机是一种广泛应用于嵌入式系统中的微控制器,具有高性能、低功耗和丰富的外设接口,因此在各种电子设备中得到了广泛的应用。

本次实验将以C51单片机为研究对象,通过实验验证其性能和功能。

实验一:LED灯控制实验
首先,我们将C51单片机与LED灯连接起来,通过程序控制LED灯的亮灭。

实验结果表明,C51单片机可以准确地控制LED灯的亮度和闪烁频率,具有良好的稳定性和可靠性。

实验二:蜂鸣器控制实验
接着,我们将C51单片机与蜂鸣器连接起来,通过程序控制蜂鸣器的发声。

实验结果显示,C51单片机可以精准地控制蜂鸣器的音调和音量,具有较高的音频输出质量。

实验三:温湿度传感器实验
最后,我们将C51单片机与温湿度传感器连接起来,通过程序读取并显示温湿度数值。

实验结果表明,C51单片机可以准确地读取传感器的数据,并通过显示屏输出,具有良好的数据处理能力。

通过以上实验,我们验证了C51单片机在LED灯控制、蜂鸣器控制和温湿度传感器应用方面的性能和功能。

C51单片机具有较高的稳定性、可靠性和可编程性,适用于各种嵌入式系统的设计与开发。

希望本次实验报告能够对C51单片机的应用和研究提供一定的参考价值。

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。

最终按照要求实现了单片机控制数码管的计数器。

关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。

本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。

本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。

通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。

二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。

表示不同数字的符号被编码成一个数字码。

七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。

单片机综合实验报告格式实验报告2

单片机综合实验报告格式实验报告2

单片机综合实验报告格式实验报告2实验报告2:单片机综合实验一、实验目的本实验的目的是通过应用所学的单片机知识,综合运用各种功能模块,设计并实现一个完整的单片机系统。

二、实验器材1. STC89C52单片机开发板2. 七段数码管模块3. LED灯模块4. 蜂鸣器模块5. 按键模块6. 电阻、电容等常规元件7. 万用表等实验工具三、实验原理本实验的设计要求是实现一个闹钟功能,包括当前时间显示、闹钟时间设置和闹钟响铃等功能。

具体实现过程如下:1. 使用七段数码管模块显示当前时间,通过定时器中断实现时间的自动更新。

2. 使用按键模块设置闹钟时间,通过按键中断实现设置的功能。

3. 使用LED灯模块和蜂鸣器模块作为闹钟的响铃指示信号。

四、实验过程1. 确定使用的IO口,连接相应的模块到单片机开发板上。

2. 编写初始化程序,包括定时器的初始化配置,IO口的设置等。

3. 编写定时器中断程序,用于更新时间显示的逻辑。

4. 编写按键中断程序,用于接收设置闹钟时间的信号。

5. 编写闹钟响铃程序,通过控制LED灯和蜂鸣器的开关来实现。

6. 编写主程序,实现整个闹钟功能的循环执行。

五、实验结果经过实验测试,实现了一个完整的闹钟功能,能够准确显示当前时间,并能够根据设置的闹钟时间进行响铃。

六、实验总结通过这次实验,我巩固了单片机的基础知识,并熟悉了各种功能模块的使用方法。

同时,我也学会了如何综合运用这些知识和技能,设计并实现一个完整的单片机系统。

实践中遇到的问题和挑战也促使我进一步提高了解决问题的能力和创新思维。

总的来说,这次实验对我来说是一次很有意义和收获的实践。

单片机实验报告(学期全部实验)

单片机实验报告(学期全部实验)

单片机程序设计实验报告姓名:学号:专业班级:第二节课:实验一:1357,2468位置的灯交替闪烁一实验要求1357,2468位置的灯交替闪烁。

二硬件连接图与结果三原理简述程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。

四程序#include<reg51.h>main (){int i;P0=0XAA; //1357四个灯亮for (i=0;i<=25000;i++); //延时程序P0=0X55; //2468四个灯亮for (i=0;i<=25000;i++); //延时程序}五所遇问题与解决方式程序比较简单,没有遇到问题。

实验二:流水灯一实验要求流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。

二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。

时间间隔简单的用了一个延时的语句。

因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。

四程序//流水灯#include<reg51.h>main (){int i,j;while(1){P0=0X01; //第1个灯亮for (i=0;i<=30000;i++); //延时程序for(j=0;j<=7;j++) //移位循环程序{P0=P0<<1; //移位for (i=0;i<=30000;i++); //延时程序}P0=0xff; //全亮for (i=0;i<=30000;i++); //延时程序}}五所遇问题与解决方式程序比较简单,没有遇到问题。

实验三:跑马灯一实验要求一个接一个的灯亮,前面亮过的等依旧亮,直到最后一个灯,最后重新开始,循环。

二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。





实验课程:单片机原理及应用
实验名称:实验二——指示灯/开关控制器班级:应用物理12-1学号:2012305384 :再先总学时: 48 教师:虎成绩:
实验日期:2015年05月04日
一、实验目的
学习汇编語言指令系统的编程与调试方法
二、实验容
1、参照教材图A.19完成实验二电路原理图的绘制;
2、根据图A.20的程序流程图编写汇编语言程序;
3、利用ISIS的汇编工具查找并修正程序的语法错误和逻辑错误;
4、观察仿真结果,完成实验报告。

三、实验要求
实验报告应包含如下容:1、完成的电路原理图,要求说明P2口控制LED亮灭和P1口读取开关状态的工作原理;2、编写的汇编源程序,要求源程序中含有能说明语句功能的注释区段和至少2条伪指令;3、汇编程序的调试过程,要求简述使用的调试方法,展示调试过程主要截图;4、实现的仿真运行效果,要求提交3~4幅运行截图;5、实验小结,说明遇到的主要问题或实验2体会等。

实验报告的电子主题及存盘文件名的格式为:2005041220马晓明实验2,应采用2003或2007版word文档格式。

1、电路原理图
图1 实验原理图
P1口读取开关状态的工作原理:通过P1的读引脚功能来实现,由于P1口设上拉电阻,在开关闭合前读取高电平,经过三态门在P1.n输出
高电平。

当开关闭合时,由于与地面相连,P1读取低电平,经过三态门在P1.n输出低电平。

P1口输出工作原理:单片机执行写P1,#data时,数据data经过部总线送入锁存器储存。

当数据为,则该位锁存器输出Q=1,则非Q为0,场效应管截止,从而在引脚P1.n上输出高电平;反之,如果数据为0,则Q=1,非Q为0,场效应管导通,引脚P1.n上输出低电平。

P2口控制LED灯的原理也是通过P2口的输出原理实现的,程序不断把P1的容传递给P2。

当给P1口赋初值0或开关闭合时,P1.n输出0,P2口读取0,在引脚P2.n上输出低电平,由原理图中LED的摆放方式知LED灯低电平导通。

同理当给P1口赋初值#FFH或开关断开时,P1.n输出1,P2口读取1,在引脚P2.n上输出高电平,LED灯截止,灯灭。

2
3、程序调试方法
(一)源文件创建与编译
(1)建立新的程序文件
单击菜单栏“源代码”—“添加/删除源文件”选项,弹出“添加/移除源代码”对话框。

在“代码生成工具”下拉框部选择“ASEM51”选项。

单击“新建”按钮,在适当文件目录下输入待建立程序的文件名(如text),核实文件类型为*ASM。

单击“打开”按钮,回应创建新文件提示后,系统弹出确认对话框。

单击“确认”按钮,在菜单“源代码”下可看到类似“1.text.ASM”的文件名,单击该文件名后可打开一个空白的文本文件。

(2)打开已有城区文件
如需对已经保存的程序文件进行处理,可单击添加/删除源代码对话框的“源代码文件名”下拉框,找到已存在的程序文件名,单击“确定”按钮便可打开使用。

(3)编译源程序
程序文件录入后或编辑后,单击菜单“源文件”—“全部编译”选项,待后台编译结束后,可弹出结果对话框。

如果存在错误,提示框会指出错误存在的原因。

如果没有错误,提示框将报告编译通过。

(二)逻辑错误检测
说明:源程序对P2赋值#0,在CPU寄存器的P0下显示“00”,在特殊功能寄存器的A0中黄色框标注的首位显示当前状态“00”。

说明:源程序对P2赋值#FFH,在CPU寄存器的P0下显示“FF”,在特殊功能寄存器的A0中黄色框标注的首位显示当前状态“FF”。

4、仿真运行效果
说明:运行刚开始,P2口处开关全部断开,P1口处的8个LED灯连续闪烁三次。

说明:LED三次闪烁结束后,闭合所有开关,所有的LED灯都亮
说明:分别闭合P1.1,P1.3,P1.5,P1.7处的开关,在P2口处对应
的LED灯依次亮起。

说明:在截图三的操作基础上,断开P1.1和P1.3的开关,P2口对应的D2和D4熄灭。

由以上截图可以确定,本次试验达到了预期的试验运行结果。

在开始运行之后,所有LED灯连续闪烁三次,在此过程中灯的亮灭不受P1口开关控制。

三次闪烁结束后,灯的状态与其相对应的P2口开关的状态有关(开关闭合灯亮,开关断开灯灭)。

5、实验小结
通过这次上机单片机实验进一步加深了我对单片机的理解,在电脑ISIS程序上画实验原理图的能力得到了提高,能够更加准确和快速的画出原件和连接电子元件,加深了对电子元件的理解,比如LED 灯的工作原理。

也使我更加熟悉这个程序了,比如如何编译源程序,如何模拟调试过程,合理的利用调试工具加快了源程序逻辑性错误的
查找,感觉这事程序调试是我新学到的一项很有用的技能,调试中发现我编写的程序有些错误并加以改正了,看来我的编程能力还不足,我会更加认真的学习的。

相关文档
最新文档