单片机经典实验实例精华详解(附源程序) (八)

合集下载

单片机实验报告一 单片机软件实验

单片机实验报告一 单片机软件实验

南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期: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。

河北工业大学 单片机实验 第四次试验 实验八 查表程序设计

河北工业大学 单片机实验  第四次试验  实验八 查表程序设计

实验八查表程序设计一、实验目的1.进一步熟悉MCS-51指令系统和汇编语言程序设计。

2.学会用MOVC指令编写查表程序。

二、实验内容1.设计并调试一个查平方表的程序,其功能为应用查表指令MOVC A,@A+PC,求累加器A中数的平方值,结果平方值送A。

要求待查的(A)≤15。

2.设计并调试一个根据电压值查与其对应的温度值的查表程序,其功能为应用查表指令MOVC A,@A+DPTR,求(A)中电压值对应的温度值,将温度值送R2R3(温度值为二字节的压缩BCD码),电压值的范围为(A)≤0FFH。

实验程序参考框图如3-8所示。

三、实验步骤1.键入程序和预定表后;2.通过修改自变量参数启动并调试程序,直至正确为止。

3.边调试边体会用PC或DPTR作指针查表的区别。

四、实验报告要求根据实验内容和程序参考流程,编出所需查表程序,列出实验程序清单。

五、思考题1.当表的长度〉255个字节时应选哪一条指令查表?答:当表的长度〉255个字节时应选“MOVC A,@A+DPTR”指令查表,并且需要对DPH、DPL进行运算处理,求出表目地址,再用“MOVC A,@A+DPTR”指令查表。

2.用PC指针查表编程时应注意什么?答:应先用传送指令把所查数据的项数送入累加器A,并用“ADD A,#data”对A进行修正data值等于查表指令和数据表格之间的字节数,然后用“MOVC A,@A+PC”查表,同时用PC指针查表的表的范围不能大于255个字节。

六、参考程序清单1.求平方值查表程序:ORG 0000HADD A,#02HMOVC A,@A+PCSJMP $DB 0,1,4,9,16,25 36,49DB 64,81,100,121,144,169,196,225END本程序实现通过查表得A累加器中数的平方值并将结果送A,根据A中数值采用基址加变址方法找到所查数的地址得所对应的平方数。

例:当(A)=5时,执行过程如下:D:0XE0(A)PC指针 ORG 0000H 05HC:0X0000 ADD A,#02H 07HC:0X0002 MOVC A,@A+PC 19H ;A+PC=A(10),查表的19H(25) C:0X0003 SJMP $C:0X0005 DB 0,1,4,9,16,25 36,49DB 64,81,100,121,144,169,196,225END2.测量温度查表程序:双字节查表程序刘程序如图3-8所示:双字节查表参考程序清单:ORG 0000HMOV DPTR,#TABMOV R0,AADD A,R0MOV F0,CADD A,DPLMOV DPL,ACLR AADDC A,DPHMOV C,F0ADDC A,#0MOV DPH,ACLR AMOVC A,@A+DPTR ;查第一个字节MOV R2,ACLR AINC DPTRMOVC A,@A+DPTR ;查第二个字节MOV R3,ASJMP $TAB:DW 0100H,0110H,0120H,0130H,0140H,0150H,0160H ;温度表END本程序实现根据A中电压查表中与之对应的温度值,表中温度均为2字节故(A)*2+DPTR(表首地址)即可查的对应温度值。

单片机接口技术及实验(附原理图及源程序)

单片机接口技术及实验(附原理图及源程序)
(1)当开关K0接低电平时,第一位依次显示0~F,然后第二位、第三位、第四
位,再循环回第一位。
(2)当开关K0接高电平时,四位动态显示“HELP”
二、实验原理图
三、实验流程图
四、实验程序
org 0000h
ljmp main
org 0100h
main:
mov p2,#0ffh
setb p1.0
mov dptr,#tab
LJMPPASS
L2: MOV A,#0C0H
LJMPPASS
L3: MOV A,#0AAH
LJMPPASS
L4: MOV A,#0E0H
LJMPPASS
PASS: RETI
END
实验三七段LED数码管控制实验
一、实验功能
1.实验采用4位一体的数码管,用P1口通过驱动芯片控制段码输出信号线,P0口
通过驱动芯片控制位选线:
JB 50H,S1
JNB 50H,S2
STEP1:JB 51H,LOOP1
JNB 51H,LOOP2
S1: LCALL DELAY1
LJMP STEP1
S2: LCALL DELAY2
LJMP STEP1
DELAY1: MOV R7,#100
D1: MOV R6,#100
D2: MOV R5,#10
2.
一、实验功能
实现一个4位秒表:
(1)用开关K0模拟秒表的启动、停止、清零功能,按一次启动计时,按一次停
止,再按一次清零,在三个状态中循环。
(2)最低位按1/10秒计数,依次计数单位为1/10秒,1秒,1分
(3)要求K0使用外部中断,优先级高于T0的优先级
二、实验原理图

单片机的原理及应用例子

单片机的原理及应用例子

单片机的原理及应用例子单片机(Microcontroller)是一种集成了中央处理器、存储器和输入输出设备的微型计算机系统。

其原理是在一块硅片上集成了微处理器核心、存储器、外设接口等功能模块,并采用专用集成电路工艺制造而成。

然后通过编程,利用单片机的输入输出功能和对外设的控制功能,使其能够完成各种控制和处理任务。

单片机的应用非常广泛,下面就介绍几个典型的应用例子。

第一个例子是电子血压计。

电子血压计通过测量人体的脉搏信号来获取血压信息,并实时显示在LCD屏幕上。

其主要原理是通过单片机的模拟输入通道采集脉搏信号,然后通过AD转换将模拟信号转换为数字信号,再经过一系列处理计算得出血压值,并最终显示在屏幕上。

整个系统通过单片机的程序来控制各个部分的协同工作,实现了自动测量和显示血压的功能。

第二个例子是智能家居控制系统。

智能家居控制系统通过单片机控制各种传感器和执行器,实现对家庭设备的自动控制和远程监控。

比如通过使用温湿度传感器和烟雾传感器,可以实时监测室内的温湿度和烟雾情况,一旦检测到异常情况,单片机就会发出报警信号并通过无线通信模块发送给用户手机,提醒用户及时处理。

此外,单片机还可以控制灯光、窗帘、门锁等家庭设备,实现自动化控制和远程操作。

第三个例子是机器人控制系统。

机器人控制系统通过单片机控制机器人的各个部分,包括电机驱动、传感器采集、运动控制等。

单片机通过编程实现机器人的自主行走、避障、抓取等功能。

比如机器人通过使用红外传感器检测前方障碍物,一旦检测到障碍物,单片机就会根据预先设定的行走算法进行规避操作,并通过执行器控制机器人的动作。

通过单片机的控制,机器人可以根据环境变化做出相应的反应和行为。

以上只是单片机应用的几个例子,实际上单片机的应用涵盖了各个领域。

比如智能电子锁、车载导航系统、医疗仪器等等都可以采用单片机进行控制。

单片机的优点是可以集成各种功能模块,具有小巧、低功耗、成本低等特点,非常适合于对电力和体积要求较高的应用场景。

单片机实验程序及流程图

单片机实验程序及流程图

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.程序清单及程序流程框图ORG 0000H Array LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR AA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10HA2: MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10HA3: MOV A,@R1MOVX @DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPHA4: POP DPHPOP DPLMOVX A,@DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4 MOVX @DPTR,A INC DPTRMOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800H MOV R2,#10HA5: MOVX A,@DPTR MOV @R0,AINC R0 INC DPTR DJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEND《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.实验电路四.程序清单及流程图程序一ORG 0000HLJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01HCLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, ACLR 00H LJMP NT IPTO: MOV TH0,#3CH MOV TL0,#0B0HDJNZ R1, TIOMOV R1, #14HSETB 00HTIO: RETIEND程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。

单片机 跑马灯实验精选全文

单片机 跑马灯实验精选全文

可编辑修改精选全文完整版实验一跑马灯实验一、实验内容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。

二、实验方案1、总体方案设计考虑到K4键未被使用,所以将实验内容中的三项合并到一个主函数中:K4键代替实验内容第二项中的K1键;单片机一开机即执行实验内容第一项;K1、K2、K3键实现实验内容第三项。

所用硬件:AT89C52、BUTTON、LED-BLUE、电源输入:P2.0-K1;P2.1-K2;P2.2-K3;P2.3-K4。

低电平有效输出:P0.0~P0.7-D0~D7。

LED组连线采用共阳极,低电平有效软件设计:软件延时采用延时函数delay(t),可调整延迟时间:void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}由于涉及到按键变化所以要设置一个变量oldK保留按键键值,要在延时程序中检测是否按键,当按键后立即设置oldK的值。

按键判断采用在while循环中利用条件语句判断P2的值然后执行该键对应的代码段,达到相应的响应。

为了让K4键的效果优化,即状态变化从当前已亮灯开始顺序点亮或逆序点亮,利用全局变量n来记录灯号,利用算法即可实现。

主要算法:1、全局变量的定义:uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;2、顺序、逆序点亮流水灯:void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}3、实验内容第二项流水灯灯亮顺序变换:void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){out=D[n];n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}4、对应实验内容第一项,开机顺序点亮流水灯:while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 程序流程图三、源程序#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define out P0uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;//记录当前亮的灯号void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}void delay10ms(){uint i;for(i=0;i<10000;i++);}void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}int delay4(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK){ //按键变化退出循环return 1;}}return 0;}void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}void main(){oldK=K[0];while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}while(1){out=AllOff;if((P2&0x0f)!=0x0f){//检测有键按下delay10ms();//延时10ms再去检测//P2.0_K1键按下正序点亮流水灯if(P2==K[1]){oldK=K[1];while(1){forward();if(P2!=K[1]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.1_K2键按下逆序点亮流水灯if(P2==K[2]){while(1){backward();if(P2!=K[2]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.2_K3键按下关闭全部LEDif(P2==K[3]){oldK=K[3];out=AllOff;}//P2.3_K4键按下长按逆序点亮流水灯,不按正序点亮流水灯,直到其他键按下停止if(P2==K[4]){hold();}}}}四、实验结果1、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。

单片机开发案例

单片机开发案例

单片机开发案例在现代科技的浪潮中,单片机以其强大的功能和广泛的应用领域,成为了电子工程师们手中的得力工具。

从智能家居到工业自动化,从医疗设备到消费电子,单片机的身影无处不在。

下面,让我们一起来深入了解几个单片机开发的案例。

案例一:智能温度控制系统在工业生产中,对温度的精确控制至关重要。

为了实现这一目标,我们基于单片机开发了一套智能温度控制系统。

首先,我们选用了一款性能稳定、功能强大的单片机,如 STM32系列。

它具有丰富的外设资源和较高的运算速度,能够满足系统的实时性要求。

温度传感器采用了高精度的热敏电阻或热电偶,将温度变化转化为电信号。

这些电信号经过放大、滤波等处理后,输入到单片机的模拟数字转换器(ADC)中,单片机对转换后的数字信号进行处理和计算,得到当前的温度值。

根据设定的温度范围,单片机通过控制继电器或可控硅等器件,来调节加热或冷却设备的工作状态。

例如,当温度低于下限值时,单片机控制加热设备开启;当温度高于上限值时,控制冷却设备启动。

为了实现人机交互,我们还配备了液晶显示屏(LCD)和按键。

通过显示屏可以实时显示当前温度和设定的温度范围,按键则用于设置温度上下限等参数。

在软件方面,我们采用了 C 语言进行编程。

通过合理的算法和控制逻辑,实现了温度的精确控制和稳定运行。

同时,还加入了故障检测和报警功能,当传感器故障或温度异常时,系统能够及时发出警报,提醒工作人员进行处理。

案例二:智能家居灯光控制系统随着人们生活水平的提高,对家居智能化的需求也日益增长。

智能家居灯光控制系统就是其中的一个重要应用。

在这个系统中,我们选用了低功耗的单片机,如 Arduino 系列。

它具有简单易用、成本低廉的特点,非常适合智能家居应用。

灯光控制采用了智能灯泡或 LED 灯带,通过蓝牙或 WiFi 模块与单片机进行通信。

用户可以通过手机 APP 或语音指令,向单片机发送控制信号。

单片机接收到控制信号后,解析并执行相应的操作。

单片机原理实验 原告

单片机原理实验 原告

单片机原理实验原告
单片机是一种集成了微处理器、存储器和各种输入输出接口的微型计算机系统,广泛应用于各种电子设备中。

在单片机的设计和应用过程中,原理实验起着非常关键的作用,可以帮助我们更深入地理解单片机的工作原理和应用方法。

本文将介绍几个常见的单片机原理实验,帮助读者更好地理解单片机技术。

我们来看一个简单的LED灯控制实验。

在这个实验中,我们使用单片机控制一个LED灯的亮灭。

接下来,我们来看一个温度传感器实验。

在这个实验中,我们使用单片机连接一个温度传感器,实时监测环境温度并将数据显示在数码管上。

通过这个实验,我们可以了解单片机如何与外部传感器进行通信,以及如何处理传感器采集到的数据。

这对于许多需要温度监控的应用非常有用。

我们还可以进行蜂鸣器控制实验。

在这个实验中,我们使用单片机控制一个蜂鸣器发出不同频率的声音。

通过编写不同频率的控制程序,我们可以实现不同的音乐效果或报警功能。

这个实验可以帮助我们了解单片机如何生成不同频率的脉冲信号,并控制外部设备。

除了以上这些实验,还有许多其他有趣的单片机原理实验,如数码管显示、按键输入、PWM输出等。

通过这些实验,我们可以逐步掌握单片机的原理和应用技巧,为以后的项目开发和实践打下坚实的
基础。

总的来说,单片机原理实验是学习和掌握单片机技术的重要途径,通过实际操作和实验验证,我们可以更深入地理解单片机的工作原理和应用方法。

希望本文介绍的几个实验能够对读者有所帮助,激发大家对单片机技术的兴趣,进一步深入学习和应用。

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

单片机经典实验实例精华详解(附源程序) (八)
八、红外线电脑遥控器将烧写文件烧录到AT89C51 单片机内部后,再将电脑串口连接好带有扩展元件的51 实验板,打开51 实验板电源后,P1.0 端口上的LED 就会闪烁,这说明单片机程序已经正常运行了,再把红色的拨
码开关的第2、第3 位开关打开。

如上图所示就可以接收红外遥控编码了。

这时实验板就变成了一个超级
的PC 遥控器了。

当然我们还要借助Grider 软件来实现。

1.安装软件
Grider 是国外一款很优秀的免费红外遥控软件,支持多种的硬件,如红
外键盘鼠标,红外接收器等,软件的功能强大有OSD 屏显,名种常用的相关
系统操作如开关显示器等等。

这里就简单介绍一些简单的用法。

首先要安装软件,点击这里下载Grider3.2,也可到grider.nl 上下载新版或旧版的。

下载完后运行。

出现下面的画面:
点NEXT,再到下一画面:
选上“I accept the agreement”,再按Next,这些都是通常的安装步骤,不多说,一直按Next,直到出现完成画面。

然后就可以在“开始”中找到程序并运行它了。

2.设置软件。

相关文档
最新文档