南昌航空大学 单片机实验(全)

合集下载

单片机实验报告

单片机实验报告

单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。

二、实验设备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 引脚。

南昌航空大学PWM波形发生器实验报告

南昌航空大学PWM波形发生器实验报告

PWM波信号发生器的研制课程设计说明书课程设计名称:单片机专业课设课程设计题目: PWM信号发生器的研制学院名称:信息工程学院专业:电子信息工程班级:学号:姓名:评分:教师:20 13 年 7 月 2 日摘要1PWM波信号发生器的研制随着电力电子全控开关器件的出现,脉宽调制技术(PWM)在电力电子变流技术中获得了,。

泛的应Hj,如直流开关电源(DC/DC变换)、交。

交变频(AC/AC变换)、交.直.交变频系统、UPS电源(DC/AC变换)、高功率因数整流(PWM整流或功率l灭l数校正PFC等)等电力电子各个应用领域,无不采用PWM控制技术。

PWM控制最基本的实现方法是通过载波和控制波的模拟电路调制米产生,如采用三角形载波(或锯齿波)和直流(或正弦波)控制信号比较器进行比较产生PWM波。

这种方法在模拟控制技术中广泛采用,并出现过许多产生PWM波控制芯片,如用于开关电源的TL494、SG3525、UC3842等。

随着数字控制技术的发展,又出现了许多数字式PWM集成芯片,如用于变频调速的三相PWM发生器HEF4752、SLE4520、MA818等。

但与迅速发展的微机控制技术相比,该方法显示出电路复杂、调制方式不够灵活等缺点,而采用软件计算的实时PWM控制策略越来越彼人们接受,并出现了许多不同的PWM波的计算方法,如采样SPWM法、谐波注入PWM法、均值PWM法、等面积PWM法等。

电力电子的微机PWM控制技术已成为一种必然趋势。

因此本文就PWM的单片机控制与实现进行分析研究,通过对外围电路芯片的设计实现PWM输出波形的频率、电压幅值、占空比的连续调节,达到产生PWM信号目的。

关键字:脉宽调制技术(PWM)、占空比、控制信号2PWM波信号发生器的研制单片机原理与接口技术课程设计任务书20 12 -20 13 学年第 2 学期第 17 周- 19 周注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

单片机实验二

单片机实验二

南昌航空大学实验报告二0一一年 9月28 日课程名称:单片微型机实验名称:实验一软件实验9、10班级: 080611 姓名:吴智丽学号: 08061103指导教师评定:签名:一、实验目的1、熟悉8031定时/计数功能,掌握定时/计数初始化编程方法。

2、熟悉MCS—51定时器、串行口和中断初始化编程方法,了解定时器应用在实时控制中程序的设计技巧。

二、实验内容1、对定时器0外部输入的脉冲进行计数,并送显示器显示。

2、编写程序,从DVCC系列单片机实验仪键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。

三、实验步骤脉冲计数1、实验程序框图2 、实验操作(1)把8032CPU的P3.4插孔接T0—T7任一根信号线或单脉冲输出空“SP”。

(2)用连续方式从起始地址02A0H开始运行程序(按02A0后按EXEC键)。

(3)观察数码管显示的内容应为脉冲个数。

(4)脉冲计数程序CONT: MOV SP,#53HMOV TMOD,#05H;初始化定时/计数器MOV TH0,#00HMOV TL0,#00HSETB TR0;允许定时/计数中断CONT1: MOV R2,TH0;取计数值MOV R3,TL0LCALL CONT2;调二转十进制子程序MOV R0,#79HMOV A,R6LCALL PWORMOV A,R5LCALL PWORMOV A,R4LCALL PWORLCALL DISP;调显示子程序SJMP CONT1;循环CONT2: CLR A;清R4、R5、R6MOV R4,AMOV R5,AMOV R6,AMOV R7,#10HCONT3: CLR C;R2、R3左移,移出的位送CYMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6;R4、R5、R6×2 + CY送R4、R5、R6 DA AMOV R6,A;十进制调整MOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ R7,CONT3;循环16次RETPWOR: MOV R1,A ;;拆送显示缓冲区LCALL PWOR1MOV A,R1SWAP APWOR1: ANL A,#0FHMOV @R0,AINC R0RETDISP: SETB 0D4H;显示子程序MOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1: MOV DPTR,#0FF21HMOV A,R2MOVX @DPTR,AMOV DPTR,#CDATAMOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,ADISP2: DJNZ R3,DISP2DEC R1CLR CMOV A,R2RRC AMOV R2,AJNZ DISP1MOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,ACLR 0D4HRETCDATA: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H, 90HDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0D EH电脑时钟1、实验程序框图2、实验操作(1) 用连续方式从起始地址0340H开始执行程序(输入0340后按EXEC键)。

单片机实验

单片机实验

单片机实验第二次实验:图见实验题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的方波。

单片机原理与应用实验报告 南昌大学

单片机原理与应用实验报告 南昌大学

实验报告实验课程:单片机原理与应用学生姓名:李瑞欣学号:6101113078专业班级:电气工程及其自动化132指导老师:汪兴贤2015年 12月日实验一I/O 口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法。

二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。

以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。

因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。

若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。

八位逻辑电平显示电路原理图参见图1-2。

五、实验预习要求学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。

六、实验步骤1)系统各跳线器处在初始设置状态。

用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。

2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。

编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。

七、实验分析和试验现象1、实验的流程图:2、实验现象:程序下载到单片机以后,现象是LED灯沿着一个方向循环流动,当拨动K0开关后,亮的LED灯跳到边缘然后沿着相反的方向循环流动。

3、心得体会:通过这次实验,我掌握了单片机P1口、P3口的使用方法。

了解并熟悉了单片机 I/O口和LED灯的电路结构,对于单片机实验台上的相关器件有了一定了解,深化了课本上对于I/O口功能的理解,P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

单片机遥控飞机实训报告

单片机遥控飞机实训报告

一、前言随着科技的发展,单片机技术在各个领域得到了广泛应用。

为了提高我们的动手能力和实践能力,学校组织了单片机遥控飞机实训。

本次实训旨在通过实际操作,让我们深入了解单片机遥控飞机的原理和制作过程,掌握单片机在遥控飞机中的应用。

二、实训目的1. 了解单片机遥控飞机的原理和组成;2. 掌握单片机在遥控飞机中的应用;3. 学会使用相关软件和硬件进行遥控飞机的制作;4. 培养团队协作能力和创新精神。

三、实训内容1. 单片机遥控飞机原理及组成单片机遥控飞机主要由以下几个部分组成:(1)单片机:负责接收遥控信号、控制飞机的飞行姿态和速度等;(2)接收模块:接收遥控器发送的信号;(3)电机驱动模块:驱动电机转动,实现飞机的飞行;(4)传感器模块:检测飞机的姿态和位置等信息;(5)遥控器:发送控制信号给单片机。

2. 单片机遥控飞机制作(1)搭建硬件平台:根据设计要求,选用合适的单片机、接收模块、电机驱动模块、传感器模块等,将它们连接到一起,搭建硬件平台;(2)编程:使用C语言编写单片机程序,实现接收遥控信号、控制电机转动、读取传感器数据等功能;(3)调试:在搭建好的硬件平台上进行程序调试,确保飞机能够按照预期飞行;(4)测试:在开阔地带进行飞行测试,观察飞机的飞行状态,对程序和硬件进行调整,直至满足设计要求。

四、实训过程1. 硬件平台搭建根据设计要求,我们选择了以下硬件:(1)单片机:STC89C52;(2)接收模块:RFM22B;(3)电机驱动模块:L298N;(4)传感器模块:MPU6050;(5)遥控器:RFM22B。

将以上硬件按照电路图连接到一起,搭建硬件平台。

2. 编程使用C语言编写单片机程序,实现以下功能:(1)接收遥控信号;(2)读取MPU6050传感器数据;(3)控制电机转动;(4)显示飞行状态。

3. 调试在搭建好的硬件平台上进行程序调试,确保飞机能够按照预期飞行。

4. 测试在开阔地带进行飞行测试,观察飞机的飞行状态,对程序和硬件进行调整,直至满足设计要求。

(完整版)STC89C52单片机定时器2的使用

(完整版)STC89C52单片机定时器2的使用

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。

P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。

T2CON(T2的控制寄存器),字节地址0C8H:0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8HTF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下:TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。

只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。

EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。

EXF2也是只能通过软件来清除的。

RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。

TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2C/T2:T2的定时方式或计数方式选择位。

只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。

CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。

单片机实验P3.3输入、P1口输出和步进电机控制实验

单片机实验P3.3输入、P1口输出和步进电机控制实验

单⽚机实验P3.3输⼊、P1⼝输出和步进电机控制实验南昌航空⼤学实验报告⼆0⼀⼀年⼗⽉⼀⼗七⽇课程名称:单⽚微型机实验名称:P3.3输⼊、P1⼝输出和步进电机控制实验班级: 080611 学⽣姓名:学号: 08061108 指导教师评定:签名:⼀、实验⽬的1、掌握P3⼝、P1⼝简单使⽤;2、学习延时程序的编写和使⽤;3、了解步进电机控制的基本原理;4、掌握步进电机转动编程⽅法。

⼆、实验内容及要求1、P3.3输⼊、P1⼝输出实验1)P3.3⼝做输⼊⼝,外接⼀脉冲,每输⼊⼀个脉冲,P1⼝按⼗六进制加⼀。

P1⼝做输出⼝,编写程序,使P1⼝接的8个发光⼆极管L1—L8按16进制加⼀⽅式点亮发光⼆极管。

2)P1⼝是准双向⼝,它作为输出⼝时与⼀般的双向⼝使⽤⽅法相同,由准双向⼝结构可知:当P1⼝作为输⼊⼝时,必须先对它置⾼电平,使内部MOS管截⽌,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输⼊产⽣影响。

若不先对它置⾼,且原来是低电平,则MOS管导通,读⼊的数据是不正确的。

3)延时⼦程序的延时计算问题。

对于延时程序:DELAY :MOV R6, #00HDELAY1:MOV R7, #80HDJNZ R7, $DJNZ R6, DELAY1查指令表可知MOV、DJNZ指令均需⽤两个机器周期,⽽⼀个机器周期时间长度为12/ 6.0MHZ,所以该段指令执⾏时间为:((80+1)×256+1)×2×(12÷6000000)=132.1ms。

图1 P3.3输⼊、P1图2 实验电路原理图2、步进电机控制实验1)从键盘上输⼊正、反转命令,转速参数和转动步数显⽰在显⽰器上,CPU再读取显⽰器上显⽰的正、反转命令,转速级数(16级)和转动步数后执⾏。

转动步数减为零时停⽌转动。

2)步进电机驱动原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。

驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,微电脑控制步进电机最适合。

南昌航空大学实验报告汇编原理

南昌航空大学实验报告汇编原理

南昌航空大学实验报告课程名称:微机原理实验名称:中断控制器8259A应用班级:100451 姓名:张冲学号:10045127教师评定:签名:一、实验目的:1、掌握中断控制器8259A与微机接口的原理和方法。

2、掌握中断控制器8259A的应用编程。

二、实验内容:本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F。

8259A和8088系统总线直接相连,8259A上连有一系统地址线A0,故8259A有两个端口地址,本系统中为60H、61H.60H用来写ICW1,61H用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。

OCW2、OCW3用口地址60H,OCW1用口地址61H。

使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。

如果中断源电平信号不符合规定要求则自动转到7号中断,显示"Err".CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示"Good".2、实验线路连接(1)8259模块上的INT连8088的INTR.(2)8259模块上的INTA连8088的INTA。

(3)MP区SP插孔和8259的3号中断IR3插孔相连,SP端初始为低电平。

(4)8259的D0~D7连到BUS2区的XD0~XD7.(5)8259模块上的CS端接Y6。

(6)8259模块上的A0连到BUS区的XA0。

(7)8259模块上的RD、WR信号线分别连到BUS区的XRD、XWR上。

三、实验步骤:运行实验程序:单机时,实验程序起始地址为F000:91A0。

在系统显示监控提示符“P."时:输入F000按F1键输入91A0按EXEC键在系统上显示"8259-1".按AN按钮,按满5次显示"Good".四、实验参考程序:CODE SEGMENT MOV AL,08HASSUME CS:CODE MOV DX,INTPORT2INTPORT1 EQU 0060H OUT DX,ALINTPORT2 EQU 0061H MOV AL,09HINTQ3 EQU INTREEUP3 OUT DX,ALINTQ7 EQU INTREEUP7 MOV AL,0F7HORG 11A0H OUT DX,ALSTART:CLD MOV BYTE PTR[0701H],01HCALL WBUF1 TIME=1WRITE INTRRUPT STIMOV AL,13H WATING:CALL DISPMOV DX,INTPORT1 DISP 8259-1OUT DX,AL JMP WA TINGMOV ES,AX WRINTVER:MOV AX,0HMOV DI,002CH OUT DX,ALLEA AX,INTQ3 STISTOSW IRETMOV AX,0000H INTREEUP7:CLISTOSW MOV AL,20HMOV AX,INTQ7 MOV DX,INTPORT1STOSW OUT DX,ALRET MOV DS:[077AH],1C1CHINTREEUP3:CLI MOV DS:[077CH],101BHMOV AL,DS:[0701H] MOV DS:[077EH],1010HCALL CONVERS INTRE3:CALL DISPMOV BX,077BH JMP INTRE3MOV AL,10H DISP:MOV DX,077FHMOV CX,05H MOV AH,20HINTRE0:MOV BYTE PTR[BX],AL DISP0:MOV CX,00FFHINC BX MOV BX,DXLOOP INTRE0 MOV BL,DS:[BX]MOV AL,20H MOV BH,0HMOV DX,INTPORT1 PUSH DXOUT DX,AL MOV DX,0FF22HADD BYTE PTR:[0701H],01H MOV AL,CS:[BX+127BH]CMP BYTE PTR:[0701H],06H OUT DX,ALJNA INTRE2 MOV DX,0FF21HMOV DS:[077AH],191AH MOV AL,AHMOV DS:[077CH],1819H OUT DX,ALMOV DS:[077EH],1010H DISP1:LOOP DISP1INTRE1:CALL DISP POP DXJMP INTRE1 DEC DXCONVERS:ADD AL,OFH SHR AH,01HMOV BX,077AH JNZ DISP0MOV DS:[BX],AL MOV DX,0FF22HINC BX MOV AL,0FFHRET OUT DX,ALINTRE2:MOV AL,20H RETMOV DX,INTPORT1 DA TA1:DBDB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H 0FFH,0CH,0DEH,0C7H,8CH,0F3H,0BFH DBDB 90H,0A3,0A1H,86H,8FH 80H,90H,88H,83H,0C6H,0A1H,86H,8EH WBUF1:MOV BX,0 MOV WORD PTR:[BX+077AH],0509H MOV WORD PTR:[BX+077AH],1701H ADD BX,2ADD BX,2 MOV WORD PTR :[BX+077AH],0802HRETCODE ENDSEND START五、实验体会:本次实验中只出来了"8259-1"结果,没有出现"Good"结果。

单片机实验8031 串行口应用

单片机实验8031 串行口应用

南昌航空大学实验报告二0一一年十月二十三日课程名称:单片微型机实验名称:实验四 8031 串行口应用班级: 080611 姓名:学号: 08061108指导教师评定:签名:一、实验目的1 掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

2 了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。

3 了解PC机通信的基本要求。

二、实验内容1 利用8031单片机串行口,实现与PC机通信。

2 本实验实现以下功能,将实验机键盘上键入的数字、字母显示到PC机显示器上,反过来从PC机键盘上输入的字符(0—F)显示到实验仪的数码管上。

三、实验步骤1、实验电路原理图1)实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作。

J10就是用户专用串行接口,将J10用用户专用通信线连到上位机的串口上。

注意不要和上位机系统用串行口冲突。

2)实验时需将8031串行接收信号线P3.0(RXD)连到J10下面RXD插孔;8031的P3.1(TXD)连到J10下面TXD插孔上。

3 )两台实验机必须共地2 、实验操作1)在DVCC实验系统处于“P ”状态下。

2)输入四位起始地址0D00后,按EXEC键连续运行程序。

3)在上位机上运行DVSIO程序。

4)从DVCC实验系统的键盘上输入数字键,会显示在上位机屏幕上,从上位机键盘上输入数字键会显示在实验系统的数码管上。

3、8031 串行口应用一(与PC机通信)程序ORG 07F0HSTART: MOV SP,#60HMOV A,#02H;初始化显示缓冲区MOV R0,#79HMOV @R0,AINC R0MOV A,#10HMOV @R0,AINC R0MOV A,#01HMOV @R0,AINC R0MOV A,#03HMOV @R0,AINC R0MOV A,#00HMOV @R0,AINC R0MOV A,#08HMOV @R0,AMOV A,#7EH;置显示位置指针MOV DPTR,#1FFFHMOVX @DPTR,AMOV 87H,#80H;置SMOD=1MOV SCON,#50H;串口方式1MOV TMOD,#20H;T1 方式1MOV TL1,#0F3H;波特率 2400 的常数MOV TH1,#0F3HSETB TR1;启动定时器CLR ET1 ;关中断CLR ESWAIT: JBC RI,DIS_REC;是否接收到数据LCALL DISP;无数据调用显示程序SJMP WAIT;循环等待DIS_REC:MOV A,SBUF;读串口接收到的数据LCALL DATAKEY;显示输入的数字(0-F)DB 79H,7EHAJMP WAIT ;循环DATAKEY:MOV R4,A;数字处理子程序MOV DPTR,#1FFFHMOVX A,@DPTRMOV R1,AMOV A,R4MOV @R1,ACLR APOP 83HPOP 82HMOVC A,@A+DPTRINC DPTRCJNE A,01H,DATAKEY2DEC R1CLR AMOVC A,@A+DPTRDATAKEY1: PUSH 82HPUSH 83HMOV DPTR,#1FFFHMOVX @DPTR,APOP 83HPOP 82HINC DPTRPUSH 82HPUSH 83HRETDATAKEY2: DEC R1MOV A,R1SJMP DATAKEY1DISP : SETB 0D4H;调用显示子程序MOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1 : MOV DPTR,#DATACOMOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,AMOV DPTR,#0FF21HMOV A,R2MOVX @DPTR,ADEC R1LCALL DELAYCLR CMOV A,R2RRC AMOV R2,AJNZ DISP1CLR 0D4HRETDELAY: MOV R7,#03H DELAY0: MOV R6,#0FFHDELAY1: DJNZ R6,DELAY1DJNZ R7,DELAY0RETDATACO:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80 H,90HDB88H,83H,0C6H,0A1H,86H,8EH,0BFH,0CH,89H, 0DEHEND四、实验小结通过本次实验初步掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

单片机实验指导书

单片机实验指导书

目录实验一P1口输入、输出实验 (2)实验二继电器控制实验 (8)实验三音频控制实验 (11)实验四程序调试 (14)实验五5LED静态串行显示实验 (16)实验六6LED动态扫描显示实验 (21)实验七查询式键盘实验 (28)实验八阵列式键盘实验 (36)实验九计数器实验 (47)实验十定时器实验 (49)实验十一外部中断实验 (54)实验一P1口输入、输出实验一、实验目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。

由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。

三、实验内容及步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。

1、使用单片机最小应用系统1模块。

关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加P1_A.ASM源程序,进行编译,直到编译无误。

4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。

5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。

发光二极管单只从右到左轮流循环点亮。

实验(二):用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。

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

1、用导线分别连接P1.0、P1.1到两个拨断开关,P1.2、P1.3到两个发光二极管。

2、添加 P1_B.ASM源程序,编译无误后,运行程序,拨动拨断开关,观察发光二极管的亮灭情况。

向上拨为熄灭,向下拨为点亮。

四、流程图及源程序1.流程图2.源程序:(一)实验一ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHMOV R2,#8OUTPUT: MOV P1,ARL AACALL DELAYDJNZ R2,OUTPUTLJMP STARTDELAY: MOV R6,#0MOV R7,#0DELAYLOOP:;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPRETEND(二)实验二KEYLEFT BIT P1.0 ;定义KEYRIGHT BIT P1.1LEDLEFT BIT P1.2LEDRIGHT BIT P1.3ORG 0000HLJMP STARTORG 0030HSTART: SETB KEYLEFT ;欲读先置一SETB KEYRIGHTLOOP: MOV C,KEYLEFTMOV LEDLEFT,CMOV C,KEYRIGHTMOV LEDRIGHT,CLJMP LOOPEND五、思考题(1)对于本实验延时子程序Delay: MOV R6,0MOV R7, 0DelayLoop:DJNZ R6,DelayLoopDJNZ R7,DelayLoopRET如使用12MHz晶振,粗略计算此程序的执行时间为多少?六、电路图实验二继电器控制实验一、实验目的1、学习I/O端口的使用方法2、掌握继电器的控制的基本方法3、了解用弱电控制强电的方法二、实验说明现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全。

清零程序

清零程序

南昌航空大学实验报告2016年 5 月 1 日课程名称:单片机应用实验名称:清零程序学号: 13045133 姓名:吴牧云指导老师评定:签名:一、实验目的:掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容把7000H~70FFH的内容清零。

三、实验程序框图四、实验步骤1、当DVCC单片机仿真实验系统独立工作时(1)将固化区EPROM中实验程序目标妈传送到仿真RAM区,操作如下:输入0后按F1键,再输入OFFF后按F2键,再输入0后按EPMOV稍等,系统返回初始状态,显示“P.”。

(2)按F2键进入仿真1态,仿真实验系统显示山东“p……”时,根据表一所示,通过键盘输入试验程序的起始地址0030H,再按执行键EXEC,表示连续运行该程序,一次执行一条语句,知道执行003CH为止,按MON键退出运行;如果以断点运行程序,则先如如110C,再按F1键,在输入0030,然后按EXEC键执行程序,当执行到003CH 时自动停下了,此时按MON键退出。

(3)用存储器读写方法检查7000H~70FFH中的内容应全是00H。

2、当DVCC单片机仿真实验系统联PC级工作时(1)在闪动“p.”状态,按PCDBG键。

(2)在PC挤处于WIN95/98软件平台下,单击DVCC图标。

(3)在系统设置选项中设定仿真模式为内程序、内数据。

(4)根据品目提示进入51/96/动态调试菜单。

(5)链接DVCC实验系统(Ctrl+H)。

(6)装载目标文件(Ctrl+L)。

(7)设置PC起始地址。

(8)从起始地址开始连续运行程序(F9)或单步(F8)或断点运行程序。

(9)单步。

断点运行完后,在存储器窗口内检查7000H~70FFH中的内容是否全为00H。

五、清零程序ORG 0030HCLEAR:MOV RO,#00HMOV DPTR,#7000HCLEAR1:CLR AMOVX@DPTR,AINC DPTRINC R0CJNE RO,#00H,CLEAR1CLEAR2:SJMP CLEAR2END六、实验小结通过本次实验,掌握了汇编语言设计和调试方法,熟悉键盘操作,颇有体会。

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案课程教案课程名称:单片机技术实验任课教师:王韧所属院部:电气与信息工程学院教学班级:自动化1201~02、电气1201~02教学时间:2022—2022学年第二学期湖南工学院课程基本信息湖南工学院教案用纸实验一数据传送实验一、本次实验主要内容1、Keil软件的使用方法和调试。

2、存储器之间数据传送的方法和循环程序设计。

3、MCS-51系列单片机堆栈的使用。

二、实验目的与要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。

2、掌握单片机的存储器体系结构。

3、熟悉Keil软件的功能和使用方法。

4、掌握单片机应用程序的调试方法。

三、实验重点难点MOV、MOV某指令的用法特点。

四、实验方法和手段讲授、演示、操作、仿真、提问。

五、作业与习题布置写出实验报告。

P1湖南工学院教案用纸一、实验内容或原理1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。

2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。

二、设计要求1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。

2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。

3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。

4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。

5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。

三、实验报告要求1、实验目的和要求。

2、设计要求。

3、实验程序流程框图和程序清单。

4、实验总结。

5、思考题。

四、思考题1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOV某,MOVC各适用于访问哪个存储器空间?P2湖南工学院教案用纸实验后记:P3湖南工学院教案用纸实验二单片机并行I/O口的应用实验一、本次实验主要内容1、利用单片机并行I/O口控制流水灯。

单片机实验报告(完整版)

单片机实验报告(完整版)

单片机原理与应用实验报告学院(部):专业:学生姓名:班级:学号:最终评定成绩:实验一存储器读写一、实验目的:1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作。

二、实验仪器设备1.PC机,1台2.WAVE软件开发系统三、实验内容及步骤:1、将下面的汇编程序输入到W A VE集成开发软件中ORG 0000HSJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08HMOV R1,#70HMOV DPTR,#2000HLOOP:MOVX A,@R1MOVX A,@DPTRINC R1INC ADJNZ R7,LOOPSJMP $END2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。

3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。

四、源程序源程序:ORG 0000H ;定义起始地址SJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08H ;给内部RAM的70H单元赋初值MOV R1,#70H ;使R1指向内部70H单元MOV DPTR,#2000H ;定义外部存储器开始单元LOOP:MOVX A,@R1 ;将R1所指向的70H的内容赋给AMOVX @DPTR,A;将A的内容赋给外部存储器单元INC R1 ;内部RAM地址加1INC DPTR ;外部存储器地址加1DJNZ R7,LOOP ;循环,直到RAM中70H~7FH;单元的内容全部相应赋给;外部2000H~2007H单元SJMP $END3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。

五、仿真效果图实验二I/O端口操作一、实验目的:1、掌握I/O端口读写等基本汇编指令;2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。

南昌航空大学实验报告

南昌航空大学实验报告

南昌航空大学实验报告课程名称:C 语言程序设计实验名称:正弦信号模拟采样及特征参数分析软件设计 班级:姓名:同组人:指导教师评定:签名:一、实验目的1、了解正弦信号采样的基本原理;2、了解正弦信号采样的离散处理方法;3、进一步掌握C 语言输入输出语句的使用和编程方法;4、进一步掌握C 语言顺序结构、选择结构和循环结构程序的编写;5、进一步掌握C 语言函数的定义和调用,数组、结构体及文件的使用及编程方法;6、进一步培养把实际问题转化为C 语言模型和模块化程序设计的能力。

二、实验内容该实验要求对一输入正弦信号进行离散处理并对该信号的基本特征进行定量分析。

采用不同的抽样频率分别求出该信号的有效值、峰峰值、平均值。

三、实验要求具体功能指标要求如下:1、 生成模拟信号)2cos()(0ψπ+=ft A n Y +B; 其中A (幅度值)、f (频率)、0ψ(初相角)、B(直流分量)由键盘输入;2、 对该信号在一个周期内分别等间隔采样32、64点,并把采样的值分别存放在不同的数组中;注:采样的计算方法如下:设信号的频率为f ,采样N 点,则周期为T=1/f; 每两个采样点的间隔为⊿t=T/N 。

第n 点的采样值为:)/2cos()(0ψπ+=N n A n Y+B 分别计算信号的有效值、峰峰值、平均值,并在屏幕上显示; 其中有效值计算公式为:Nn YN n ∑=02)( 平均值计算公式为:Nn Y Y ∑=)(平 峰峰值计算公式为:min max n n Y Y Y -=-峰峰3、 完成对信号的幅度值、频率、初相角、有效值、峰峰值、平均值的显示并以文件形式存储。

四、实验流程图N ∑=四实验源程序、/***********************************************************************************************/ /**************************正弦信号模拟采样及特征参数分析软件设计*******************************/ /***********************************************************************************************/ #include<stdio.h>#include<math.h>#include<stdlib.h>#define PI 3.1415926struct shuju //结构体数组存放数据{double average; //平均值double virt; //有效值double peak; //峰峰值double data[64]; //存储每个采样点的数据}str[2]; //两次采样的数据分开存放struct shuju *p = str;void value(double *fp,int n,int m) //用于求各个采样点的平均值{int i;double sum = 0,aver;for(i = 0;i < n;i++){sum = sum + fp[i];}aver = sum / n;printf("平均值:%lf\n",aver);p[m].average = aver;}void fun(double *fp,int n,int m) //用于求每次不同间隔采样后的峰峰值{int i;double min,max;for(min = max = fp[0],i = 0;i < n;i++) //遍历找出最大值最小值{if(min > fp[i]){min = fp[i];}if(max < fp[i]){max = fp[i];}}printf("峰峰值为:%lf\n",max - min);p[m].peak = (max - min);}void fun1(double *fp,int n,int m) //用于求每次采样的有效值{int i;double sum = 0,yx; //sum用于寄存累加数据yx存放有效值for(i = 0;i < n;i++){sum = sum + fp[i] * fp[i];}yx = sqrt(sum / n);printf("有效值为:%lf\n",yx);p[m].virt = yx;}void write(){int i;FILE *fp;if((fp = fopen("G:\\b.txt","w")) == NULL) //判断文件写入是否出错{printf("写入文件出错!\n");exit(1);}else{fprintf(fp,"32点采样数据:\n");for(i =1;i <= 32;i++){fprintf(fp,"%lf ",p[0].data[i - 1]);if(i >= 8 && i % 8 == 0)fprintf(fp,"\n");}fprintf(fp,"平均值峰峰值有效值\n");fprintf(fp,"%lf ",p[0].average);fprintf(fp,"%lf ",p[0].peak);fprintf(fp,"%lf ",p[0].virt);fprintf(fp,"\n");fprintf(fp,"\n64点采样数据:\n");for(i =1;i <= 64;i++){fprintf(fp,"%lf ",p[1].data[i - 1]);if(i >= 8 && i % 8 == 0)fprintf(fp,"\n");}fprintf(fp,"平均值峰峰值有效值\n");fprintf(fp,"%lf ",p[1].average);fprintf(fp,"%lf ",p[1].peak);fprintf(fp,"%lf ",p[1].virt);fprintf(fp,"\n");fclose(fp);}}int main(){int i;double A,f,x,B,t; //A(幅度值)、f(频率)、x(初相角)、B(直流分量) printf("请输入A(幅度值)、f(频率)、x(初相角)、B(直流分量)\n");scanf("%lf%lf%lf%lf",&A,&f,&x,&B);for(i = 0;i < 32;i++){t = (i + 1) / (f * 32);p[0].data[i] = A * cos(2 * PI * f * t + x) + B;}printf("32点采样的数据为:\n");for(i = 1;i <= 32;i++){printf("%lf ",p[0].data[i - 1]);if(i >= 8 && (i % 8) == 0) //控制每行输出的数据个数{printf("\n");}}value(p[0].data,32,0);fun(p[0].data,32,0);fun1(p[0].data,32,0);for(i = 0;i < 64;i++){t = (i + 1) / (f * 64);p[1].data[i] = A * cos(2 * PI * f * t + x) + B;}printf("64点采样数据为:\n");for(i = 1;i <= 64;i++){printf("%lf ",p[1].data[i - 1]);if(i >= 8 && (i % 8) == 0) //控制每行输出的数据个数{printf("\n");}}value(p[1].data,64,1);fun(p[1].data,64,1);fun1(p[1].data,64,1);write(); //调用文件写入函数将数据写入到磁盘中return 0;}四、结果分析程序通过输入A(幅度值)、f(频率)、x(初相角)、B(直流分量),生成模拟信号数据,分别建立32、64个采样点进行数据采集,然后调用函数进行计算有效值、平均值、峰峰值,并将结果写入磁盘中。

南昌航空大学_微机原理与接口技术实验报告(8次)

南昌航空大学_微机原理与接口技术实验报告(8次)

南昌航空大学信息工程学院实验报告课程名称:微机原理与接口技术 _ 学号: _____________ _ 姓名:__________ ____ 指导教师:_周卫民_________________ 成绩:________________________南昌航空大学实验报告课程名称:微机原理实验名称:调试程序DEBUG的使用班级:学生姓名:学号:教师评定:签名:一、实验要求:调试程序DEBUG的使用。

二、实验内容:DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。

在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。

①在DOS提示符下键入:DEBUG ↙(表示回车)Debug执行,屏幕显示提示符“-”,说明计算机当前处于DEBUG的管理之下,可接受、并执行DEBUG命令。

②在DOS提示符下键入:DEBUG [路径\]文件名↙DEBUG执行,并将指定文件装入内存,供调试。

如不指定被调试程序,DEBUG设置所有段寄存器的值相同,并指向最低的、可用的段地址;SP指向本段的尾部;IP指向本段的0100H单元;其它通用寄存器和所有状态标志清0。

如带入的被调试程序扩展名不是.EXE,则BX、CX包含被调试文件长度(字节数,BX为高位),其他同上。

(带入.COM程序同此)如带入的被调试程序扩展名是.EXE,则需要重新定位。

DS=ES指向当前最低的、可用的段地址(PSP的首字节);CS:IP和SS:SP根据被调试程序确定,分别指向代码段和堆栈段;BX.CX为文件长度,其它通用寄存器和状态标志清0。

演示:DEBUG的两种启动方法1.命令格式命令字母[参数]字母不分大小写;只使用16进制数,不加H;分割符只在两个数值之间是必须的,命令和参数之间可有可无;键入回车键执行命令,Ctrl+Break或Ctrl+C中止命令的执行;如命令不符合DEBUG的规则,则提示“error”并使用“^”指示错误位置。

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

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

单片机程序设计实验报告姓名:学号:专业班级:第二节课:实验一: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次后全部的灯亮,最后定义整个循环。

南昌航空大学单片机课程设计-温度的采集与控制

南昌航空大学单片机课程设计-温度的采集与控制

南昌航空大学单片机课程设计-温度的采集与控制南昌航空大学单片机课程设计-温度的采集与控制课程设计说明书课程设计名称:单片机技术课程设计题目:温度的采集与控制学院名称:信息工程学院专业:电子信息科学与技术班级:120431 学号:12043123 姓名:沈** 评分:教师:贾杰20 15 年07 月03 日温度的采集与控制专业课程设计任务书20 15 -20 16学年第 2 学期分散一周第17 周-19周集中题目温度的采集与控制内容及要求(1)、采用PT-100温度传感器测温(2)、采用串行A/D 转换器TLC083 (3)、测温范围:0℃- 255℃,分辨率为±1℃(4)、当采集温度超过200℃时能用继电器控制一LED发光管亮。

进度安排1. 布置任务、查阅资料、选择方案,领仪器设备:2天;2. 仿真、画PCB线路板图:2天;3. 领元器件、制作、焊接:3天4.调试:2天5. 验收:1天6. 提交报告:2012~2013学年第二学期17~19周学生姓名:指导时间:第17~19周指导地点:综合楼505室任务下达2013-06-17 任务完成考核方式1.评阅√□ 2.答辩√□ 3.实际操作√□ 4.其它√□ 指导教师系(部)主任注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

摘要本系统将单片机应用于温度测量。

系统的核心部件是STC89C52单片机,系统采用模拟温度传感器PT--100作为测温元件,将采集的模拟信号经TL084放大器放大后传递给ADC0832模数转换器。

ADC0832模数转换器将采集得到的模拟信号转换成数字信号传至STC89C52单片机的P2口和P3口。

STC89C52将信号处理后,经过共阴数码管显示出来。

它具有0~255℃范围的温度测量的能力,并且具有超温报警功能,灵敏度较高。

关键词:TLC0832,TL084,STC89C51。

单片机课设-南昌航空大学 红绿灯单片机

单片机课设-南昌航空大学 红绿灯单片机

课程设计课程名称:单片机原理与接口技术设计课题:8255交通灯指导教师:任爱山专业:机械设计制造及其自动化班级:1381021姓名:幸铖学号:138102127二O一六年一月十四日目录摘要8255芯片简介 (6)第1章电路图 (7)第2章利用8255A芯片实现交通灯设计的概述 (7)第3章流程图及程序 (8)第4章参考文献 (10)第5章心得体会 (11)摘要:8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。

具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。

其各口功能可由软件选择,使用灵活,通用性强。

8255可作为单片机与多种外设连接时的中间接口电路。

8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。

同时必须具有与外设连接的接口A、B、C口。

由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。

1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。

由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。

此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。

各信号的引脚编号如下:(1)数据总线DB:编号为D0~D7,用于8255与CPU传送8位数据。

(2)地址总线AB:编号为A0~A1,用于选择A、B、C口与控制寄存器。

(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。

当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。

2)与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。

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

南昌航空大学信息工程学院实验报告课程名称:单片微型机原理学号:姓名:指导教师:________ ___________ 成绩:_________________________南昌航空大学实验报告2014年 3 月 14 日课程名称: 单片微型机原理 实验名称: 清零、电脑时钟 班级: 姓名: 学号: 指导老师评定: 签名:一、实验目的1、掌握汇编语言设计和调试方法,熟悉键盘操作;2、熟悉MCS —51定时器、串行口和中断初始化编程方法,了解定时器应用在实时控制中程序的设计技巧。

二、实验内容1、把7000H ~ 70FFH 的内容清零。

2、编写程序,从DVCC 系列单片机实验仪键盘上输入时间初值,用定时器产生0.1S 定时中断,对时钟计数器计数,并将数值实时地送数码管显示。

三、实验步骤清零程序1、实验程序框图NY 开始 R0 =0,DPTR=7000H 00送到(DPTR) DPTR+1,R0+1 R0 = FF ?结束2、当DVCC单片机仿真实验系统独立工作时(1)将固化区EPROM中实验程序目标码传送到仿真RAM区,操作如下:输入0后按F1键,再输入0FFF后按F2键,再输入0后按EPMOV稍等,系统返回初始状态,显示“P."。

(2)按F2键进入仿真1态,仿真实验系统显示闪动“P......”时,根据表一所示,通过键盘输入实验程序的起始地址0030H,再按执行键EXEC,表示连续运行该程序,稍后,按RESET键退出运行;如果以单步运行程序,则输入0300后,按STEP键,按一次执行一条语句,直到执行到003CH为止,按MON键退出运行;如果以断点运行程序,则先输入003C (断点地址),再按F1键,再输入0030(起始地址),然后按EXEC键执行程序,当执行到003CH时自动停下来,此时按MON键退出。

(3)用存储器读写方法检查7000H—70FFH中的内容应全是00H。

3、当DVCC单片机仿真实验系统联PC机工作时(1)在闪动“P.”状态,按PCDBG键。

(2)在PC机处于WIN95/98软件平台下,单击DVCC图标。

(3)在系统设置选项中设定仿真模式为内程序、内数据。

(4)根据屏幕提示进入51/96动态调试菜单。

(5)联接DVCC实验系统(Ctrl + H)。

(6)装载目标文件(Ctrl + L)。

(7)设置PC起始地址。

(8)从起始地址开始连续运行程序(F9)或单步(F8)或断点运行程序。

(9)单步、断点运行完后,在存储器窗口内检查7000H—70FFH中的内容是否全为00H。

4、清零程序ORG 0030HCLEAR: MOV R0,#00HMOV DPTR,#7000H;设数据指针DPTR=7000HCLEAR1: CLR AMOVX @DPTR,A ;清第一个数据单元INC DPTR ;指针加一INC R0 ;字节数加一CJNE R0,#00H,CLEAR1 ;判字节数满256个否,不满继续CLEAR2: SJMP CLEAR2 ;满结束程序END电脑时钟1、实验程序框图2、实验操作(1) 用连续方式从起始地址0340H 开始执行程序(输入0340后按EXEC 键)。

(2) 连续运行程序,在键盘上输入时间初值。

如果输入时分秒初值超范围,则显示000000后要求重新设置初值,初值的默认值为000000。

(3) 再次按EXEC 键时钟开始工作,数码管上实时显示时间值。

3、电脑时钟程序 ORG 000BH LJMP TINTRUP ORG 0340h CLOCK0: MOV SP,#50H MOV R0,#7EH ;清显示缓冲区MOV R4,#06H CLR A CLOCK1:MOV @R0,A DEC R0 DJNZ R4,CLOCK1 MOV A,#7EH MOV DPTR,#1FFFH MOVX @DPTR,A MOV 76H,#00H ;初始化定时/计数器MOV 77H,#00H LCALL KEYDISP0 ;调显示键扫子程序LCALL DISDA0 ;调显示缓冲区放数程序 MOV TMOD,#01H ORL IE,#82H MOV TL0,#0B7HMOV TH0,#3CH MOV 23H,#00H SETB TR0 ;开定时中断 CLOCK2: LCALL DISP ;调显示子程序 LCALL DISDA0 ;调显示缓冲区放数子程序 SJMP CLOCK2 ;循环 DISDA0: MOV R0,#79H ;显示缓冲区放数子程序MOV A,22H ACALL DISDA MOV A,21HACALL DISDA 恢复初值,保护现场定时中断 Y Y YNN N NY 1秒到吗? 0.1秒单元清零,60秒到吗? 秒单元清零,60秒到吗? 分单元清零,24小时到吗? 时单元清零 堆栈返回 0.1秒加1秒加1分加1时加1 NY清显示缓冲区 初始化定时计数器 显示初值000000 从键盘设时钟初值 判时钟初值合乎规定否? 开始 开定时器 显示器显示当前时钟值MOV A,20HACALL DISDARETDISDA: M OV R1,AACALL DISDA1MOV A,R1SWAP ADISDA1: ANL A,#0FHMOV @R0,AINC R0RETTINTRUP: MOV TL0,#0B7H;定时器中断服务程序MOV TH0,#3CH;重新置初值PUSH PSWPUSH ACC;保护当前值SETB 0D3HINC 23H;0.1秒单元加1MOV A,23HCJNE A,#0AH,TINTRUP1;判1秒到否,未到继续MOV 23H,#00H;清0.1秒单元MOV A,22HINC A;秒单元加1DA AMOV 22H,ACJNE A,#60H,TINTRUP1;判60秒到否,未到继续MOV 22H,#00H;清秒计数单元MOV A,21HINC A;分单元加1DA AMOV 21H,ACJNE A,#60H,TINTRUP1;判60分到否,未到继续MOV 21H,#00H;清分计数单元MOV A,20HINC A;时单元加1DA AMOV 20H,ACJNE A,#24H,TINTRUP1;判24小时到否,未到继续MOV 20H,#00H;清时计数单元TINTRUP1:POP ACCPOP PSWRETI;返回主程序KEYDISP0:LCALL KEY;调显示键扫子程序JNC FANCKEY;转功能键处理DA TAKEY: LCALL DATAKEY1;数值键处理DB 79H,7EHSJMP KEYDISP0FANCKEY: CJNE A,#16H,KEYDISP0 ;是执行键,判输入的秒初值是否超限MOV A,7AHSWAP AORL A,79HMOV 22H,ACJNE A,#60H,FANCKEY1 FANCKEY1: JNC FANCKEY4;判输入的分初值是否超限MOV A,7CHSWAP AORL A,7BHMOV 21H,ACJNE A,#60H,FANCKEY2 FANCKEY2: JNC FANCKEY4;判输入的时初值是否超限MOV A,7EHSWAP AORL A,7DHMOV 20H,ACJNE A,#24H,FANCKEY3 FANCKEY3:JNC FANCKEY4RETFANCKEY4:CLR TR0LJMP CLOCK0DA TAKEY1:MOV R4,A;数字键处理子程序MOV DPTR,#1FFFH MOVX A,@DPTRMOV R1,AMOV A,R4MOV @R1,ACLR APOP 83HPOP 82HMOVC A,@A+DPTRINC DPTRCJNE A,01H,DATAKEY3DEC R1CLR AMOVC A,@A+DPTRDA TAKEY2: PUSH 82H PUSH 83HMOV DPTR,#1FFFHMOVX @DPTR,APOP 83HPOP 82HINC DPTRPUSH 82HPUSH 83HRETDA TAKEY3: DEC R1MOV A,R1SJMP DATAKEY2 KEY0: MOV R6,#20H;数字键闪动程序MOV DPTR,#1FFFHMOVX A,@DPTRMOV R0,AMOV A,@R0MOV R7,AMOV A,#10HMOV @R0,AKEY3: LCALL KEYDISP JNB 0E5H,KEY2DJNZ R6,KEY3MOV DPTR,#1FFFHMOVX A,@DPTRMOV R0,AMOV A,R7MOV @R0,AKEY: MOV R6,#50HKEY1: LCALL KEYDISPJNB 0E5H,KEY2DJNZ R6,KEY1SJMP KEY0KMOV A,@R1MOV R3,AXRL A,R4MOV R3,04HMOV R4,02HJZ KEYDISP1MOV R2,#88HMOV R4,#88HKEYDISP1: DEC R4MOV A,R4XRL A,#82HJZ KEYDISP2MOV A,R4XRL A,#0EHJZ KEYDISP2MOV A,R4ORL A,R4JZ KEYDISP3MOV R4,#20HDEC R2LJMP KEYDISP5KEYDISP3: MOV R4,#0FH KEYDISP2: MOV R2,04HMOV R4,03HKEYDISP5: MOV R1,#76HMOV A,R2MOV @R1,AINC R1MOV A,R3MOV @R1,AMOV A,R4CJNE R3,#10H,KEYDISP4 KEYDISP4: RETDISP: SETB 0D4H ;显示子程序MOV R1,#7EHMOV R2,#20HMOV R3,#00HDISP1: MOV DPTR,#0FF21HMOV A,R2MOVX @DPTR,AMOV DPTR,#DATACOMOV A,@R1MOVC A,@A+DPTRMOV DPTR,#0FF22HMOVX @DPTR,ADISP2: DJNZ R3,DISP2DEC R1CLR CMOV A,R2RRC AMOV R2,AJNZ DISP1MOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,ACLR 0D4HRETDA TACO: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,8 0H,90HDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H ,0DEH键扫子程序KEYSM:SETB 0D4HMOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR,AKEYSM0: MOV R2,#0FEHMOV R3,#08HMOV R0,#00HKEYSM1: MOV A,R2MOV DPTR,#0FF21HMOVX @DPTR,A;键矩阵中第1列置0NOPRL AMOV R2,AMOV DPTR,#0FF23H;读键的行值MOVX A,@DPTRCPL ANOPNOPNOPANL A,#0FHJNZ KEYSM2INC R0;无键且未到最后一列继续DJNZ R3,KEYSM1SJMP KEYSM10KEYSM2: ;有键,计算键值CPL AJB 0E0H,KEYSM3MOV A,#00HSJMP KEYSM7KEYSM3: JB 0E1H,KEYSM4MOV A,#08HSJMP KEYSM7KEYSM4: JB 0E2H,KEYSM5MOV A,#10HSJMP KEYSM7KEYSM5: JB 0E3H,KEYSM10MOV A,#18HKEYSM7: ADD A,R0CLR 0D4HCJNE A,#10H,KEYSM9KEYSM9: JNC KEYSM10MOV DPTR,#KEYDATAMOVC A,@A+DPTRKEYSM10: RET ;返回KEYDATA: DB 07H,04H,08H,05H,09H,06H,0AH,0BH ;键值表(0—F)DB01H,00H,02H,0FH,03H,0EH,0CH,0DH四、实验小结通过本次实验初步了解了单片机工作的基本原理,再次复习了汇编语言编写的相关内容,练习了单片机汇编程序设计的相关知识。

相关文档
最新文档