西南科技大学单片机原理实实验四及代码
单片机代码例子
单片机代码例子
单片机是一种集成电路,具有微处理器、存储器和各种输入输出接口,可用于控制各种电子设备。
下面是一些单片机代码例子:
1. LED闪烁:通过控制IO口的高低电平,使LED灯交替闪烁,实现简单的呼吸灯效果。
2. 温度测量:利用温度传感器采集环境温度,并将温度值转换为数字信号,通过串口输出或显示在LCD屏幕上。
3. 红外遥控:通过接收红外信号,并解码得到对应的遥控指令,实现对电视、空调等家电的遥控操作。
4. 超声波测距:利用超声波传感器发射超声波,并接收反射回来的信号,通过计算时间差来测量到障碍物的距离。
5. 矩阵键盘输入:通过矩阵键盘将按键输入转换为数字或字符信息,并进行相应的处理和反馈。
6. 电机控制:通过PWM技术控制直流电机的转速和方向,实现电机的正转、反转和变速等操作。
7. 温湿度监测:利用温湿度传感器采集环境的温度和湿度值,并将数据通过无线通信模块传输到上位机进行实时监测。
8. 蜂鸣器控制:通过控制IO口输出高低电平,实现蜂鸣器的开关
和不同音调的发声。
9. 光线感应:利用光敏电阻或光电二极管检测环境光线强度,并根据光线强度的变化做出相应的控制。
10. 电子钟:通过RTC模块获取当前的时间,并在LCD屏幕上显示或通过蜂鸣器报时。
以上是一些常见的单片机代码例子,涵盖了单片机在各个领域的应用。
通过编写这些代码,可以深入理解单片机的工作原理和应用技巧,为后续的项目开发打下基础。
当然,这只是冰山一角,单片机的应用领域非常广泛,还有许多其他有趣的项目等待我们去探索。
单片机常用代码大全
1、位码(共阴):0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f2、断码(共阳):0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x713、独立管码(共阳):0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08,0x10,0xc0,0x62,0x84,0x60,0x704、循环函数intrins_crol_字符循环左移_cror_字符循环右移_irol_整数循环左移_iror_整数循环右移_lror_长整数循环左移_lror_长整数循环右移_nop_空操作8051 NOP 指令_testbit_测试并清零位8051 JBC 指令5、中段代码interrupt 0 外部中断0interrupt 1 定时器0中断interrupt 2 外部中断1interrupt 3 定时器1中断interrupt 4 串口中断interrupt 5 定时器2中断(52里面,51没有)6、IIC总线开始信号:void IICstart(){scl=1;delay();sda=1;delay();sda=0;delay();scl=0;}结束信号void IICstop(){scl=1;delay();sda=0;delay();sda=1;}应答信号void IICyingda(){uchar j;scl=1;delay();while((sda==1)&&j<250)j++;//sda=0;//delay();scl=0;delay();}写信号(写入一8位数据)void write_byte(uchar w){uchar i,temp;temp=w;for(i=0;i<8;i++){scl=0;delay();temp=temp<<1;sda=CY;delay();scl=1;delay();}scl=0;delay();sda=0;delay();}读信号(读出一个8位数据)uchar read_byte(void){uchar i,j,k;sda=1;for(i=0;i<8;i++){scl=1;delay();j=sda;k=(k<<1)|j;scl=0;delay();}scl=0;delay();return k;}7、时钟调试键盘扫描void keyscan(){if(k1==0){delay(5);if(k1==0){while(!k1); //k1num++;}if(k1num==1){TR0=0;write_zhiling(0x80+0x40+11);write_zhiling(0x0f);}if(k1num==2){TR0=0;write_zhiling(0x80+0x40+8);}if(k1num==3){TR0=0;write_zhiling(0x80+0x40+5);}if(k1num==4){k1num=0;write_zhiling(0x0c);TR0=1;//}}if(k1num!=0){if(k2==0){delay(5);if(k2==0){while(!k2);if(k1num==1){miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;write_jingwei(7,fen);}write_jingwei(10,miao);write_jingwei(7,fen);write_zhiling(0x80+0x40+11);}write_jingwei(10,miao);write_zhiling(0x80+0x40+11);}if(k1num==2){fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;write_jingwei(4,shi);}write_jingwei(7,fen);write_jingwei(4,shi);write_zhiling(0x80+0x40+8);}write_jingwei(7,fen);write_zhiling(0x80+0x40+8);}if(k1num==3){shi++;if(shi==24){shi=0;write_jingwei(4,shi);write_zhiling(0x80+0x40+5);}write_jingwei(4,shi);write_zhiling(0x80+0x40+5);}}}}if(k1num!=0){if(k3==0){delay(5);if(k3==0){while(!k3);if(k1num==1){miao--;if(miao==-1){miao=59;fen--;if(fen==-1){fen=59;write_jingwei(7,fen);}write_jingwei(10,miao);write_jingwei(7,fen);write_zhiling(0x80+0x40+11);}write_jingwei(10,miao);write_zhiling(0x80+0x40+11); }if(k1num==2){fen--;if(fen==-1){fen=59;shi--;if(shi==-1){shi=23;write_jingwei(4,shi);}write_jingwei(7,fen);write_jingwei(4,shi);write_zhiling(0x80+0x40+8);}write_jingwei(7,fen);write_zhiling(0x80+0x40+8); }if(k1num==3){shi--;if(shi==-1){shi=23;write_jingwei(4,shi);write_zhiling(0x80+0x40+5);}write_jingwei(4,shi);write_zhiling(0x80+0x40+5);}}}}}。
单片机实验报告
西南科技大学
学生实验报告
实验课程名称单片机原理及接口技术
开课实验室CAD/CAM计算机实验室
学院制造学院专业成型班级
学生姓名学号
开课时间2012 至2013 学年第 2 学期
制造科学与工程学院制
《 I/O接口技术实验》实验报告
修改工程属性,点击快捷按钮
8.编写完成后,进行编译程序。
选择对应的单片机型号(STC89C52RC)、打开(HEX)程序文件、对应的串行口编号,再选择下载程序,打开单片机上的开关以传输下载文件
11.观察单片机上的现象,并检查是否正确
《中断系统》实验报告。
西南科技大学单片机实验考试程序题库
(在两个中)识别最大模拟输入通道一、任务利用0809采集两路模拟电压,将电压值最大的通道号显示在LED显示器上。
(硬件电路参见AD_CH2_1.DSN)。
二、设计参考:①算法:依次采集两路模拟电压,并将其保存。
当所有通道都采集完后,比较通道的采样值,将采样值最大的通道号显示(当采样值一样时,显示其中最小通道编号)。
注:通道IN0~IN7的编号分别为0~7。
②LED显示的段码:字符编码0 0C0H1 0F9H2 0A4H3 0B0H4 99H5 92H6 82H7 0F8H8 80H9 90H③地址分配:0809片选地址3C00H通道地址片选地址+通道编号3X3键盘扫描三、任务利用8155的PB、PC口实现3X3键盘扫描(硬件电路参见3X3KEY_8155.DSN)。
当1~8号键独立按下时,连接在PA口对应的LEDx点亮(即1号键按下时LDE1亮,2号键按下时LDE2亮),当9号键按下时,所有LED点亮,当没有键按下时,所有LED熄灭。
四、设计参考:①8155命令/状态寄存器格式:D7 TM2D6TM1D5IEBD4IEAD3PC2D2PC1D1PBD0PAPA 0=A口输入;1=A口输出PB 0=B口输入;1=B口输出PC2PC1 00=A口、B口基本输入输出,C口输入01=A口、B口基本输入输出,C口输出10=略11=略IEA 略IEB 略TM2TM1 略②8155端口地址分配:控制口7F00HPA 7F01HPB 7F02HPC 7F03H3X3键盘扫描五、任务利用8255的PC口实现3X3键盘扫描(硬件电路参见3X3KEY_8255.DSN)。
当1~8号键独立按下时,连接在PA口对应的LEDx点亮(即1号键按下时LDE1亮,2号键按下时LDE2亮),当9号键按下时,所有LED点亮,当没有键按下时,所有LED 熄灭。
六、设计参考:①8255控制字格式:②8255端口地址分配:PA 0000HPB 0400HPC 0800H控制口0C00H 控制字标志1有效D7D6D5D4D3 D2D1 D0C口低4位0 输出,1输入工作方式0 方式0,1方式1B口0 输出,1输入C口高4位0 输出,1输入工作方式00 方式0,01方式11x方式1A口0 输出,1输入50赫兹同步锯齿波发生器七、任务利用0832同步输出两个频率为50赫兹的锯齿波(硬件电路参见DA_BUF2_1.DSN)。
单片机原理实验教案参考程序doc资料
广东松山职业技术学院《MCS-51单片机原理》实验指导书宁玉珊黄晓林使用Proteus辅助设计与仿真实训项目1 Proteus辅助设计与仿真的使用一、实训目的学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。
通过使用Proteus的ISIS组件绘制A T89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。
二、实训内容在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。
要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。
三、实训器材安装有Proteus7软件的计算机 1 台。
四、实训步骤1)在硬盘建立文件夹用来保存新建项目的所有文件。
如在D盘建立PROJECT文件夹。
2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。
图P1-1图P1-23)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。
图P1-34)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。
图P1_45)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。
在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。
双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。
本实训中所要用到的元件如表PS1_1所示。
图P1_5元件名称搜索关键词元件序号数值备注电阻器ResistorR1 10k电阻器Resistor R2 1k电解电容器MINELECT1U63V C1 4.7μ陶瓷电容器CERAMIC22P C2、C3 22p晶振CRYSTAL X1 12MHz单片机AT89C51 U1发光二极管LED-YELLOW D1表PS1_1元件列表6)点击界面左侧工具栏中的图标,选择元件列表中的元件,在原理图编辑框中放置元件、布局及连线,构成原理图主体,如图P1_6所示。
单片机开发与实训演示代码
单片机开发与实训演示代码全文共四篇示例,供读者参考第一篇示例:在单片机开发和实训演示代码中,我们通常会使用一些常见的单片机开发平台,比如基于STMicroelectronics公司的STM32系列单片机的开发板。
STM32系列单片机是一种性能优越的单片机,拥有丰富的外设和强大的性能,非常适合用于各种复杂的应用场景。
在进行单片机开发和实训演示代码时,我们通常会使用一些常见的开发工具,比如Keil C51开发环境、ST-Link调试器等。
这些工具可以帮助开发者更加高效地进行单片机程序的编写和调试,提高开发效率和代码质量。
接下来,我们将介绍一些常见的单片机开发与实训演示代码例程,希望可以帮助读者更好地理解和掌握单片机开发技术。
1. LED闪烁实验LED闪烁实验是单片机开发中的一个最基础的实验,通过控制单片机的IO口来驱动LED灯实现闪烁的效果。
以下是一个基于STM32单片机的LED闪烁实验代码:```c#include "stm32f10x.h"#define LED_PIN GPIO_Pin_5#define LED_GPIO GPIOAvoid LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = LED_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(LED_GPIO, &GPIO_InitStructure);}在这个代码中,我们首先调用了LED_Init函数来初始化LED的GPIO口,使其为输出模式。
西南科技大学单片机原理实实验一及代码
第2章基础实验2.1 实验一系统认识实验一、实验目的学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法和步骤。
二、实验设备Keil单片机程序开发软件。
Proteus仿真软件DP51-PROC单片机综合实验仪。
DT-2003数字万用表。
三、实验内容和步骤内容:简单单片机应用程序的编辑、编译、仿真和调试。
实验程序:功能:使连接在MCS-51单片机P1.0引脚的LED闪烁。
设计思路:①点亮LED需要约10 mA电流,此时LED两端电压差约2 V。
因此,将LED 的阴极通过一个电阻连接到P1.0引脚(电阻阻值约为200 ),阳极连接到电源VCC(5 V)。
②为便于观察,交替的时间间隔不应太小(建议选择在0.5 s左右),由于该时间不要求严格精确,所以,可采用软件延时的方法实现。
③程序可采用图2.1中的流程结构。
图2.1 实验一程序流程图预习:1)提前一周预约好实验时间。
2)自学Keil和Proteus两软件的基本使用方法。
3)按设计思路,用汇编语言或C51语言编制实验程序。
4)了解本次实验的步骤和操作方法。
图2.2 实验一电路图步骤:1)在S: \ STUDY \ Kiel文件夹中新建Ex01文件夹(该文件夹用于保存本次实验的所有内容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S: \ STUDY \ Kiel \ Ex01文件夹中。
2)运行Keil并创建一个新工程。
工程保存为S: \ STUDY \ Kiel \ Ex01 \ Ex01. Uv2。
选择单片机型号为Generic中的8051。
创建新工程的操作方法:菜单Project New Project…3)设置工程选项,将工程选项设置如下:Target页夹:Xtal= 12 MHzOutput页夹:Create HEX FileBL51 Locate页夹:取消Use Memory Layout from Target Dialog设置Code Range属性为0x40-0xFFF如用C51编程,设置此页夹。
单片机实验代码
单片机实验代码文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]单片机实验代码实验一ORG 0000hAJMP HA1SORG 0030HHA1S: MOV A,#00HHA1S1: JB P3.3,HA1S1MOV R2,#20HLCALL DELAYJB P3.3,HA1S1HA1S2: JNB P3.3,HA1S2MOV R2,#20HLCALL DELAYJNB P3.3,HA1S2INC APUSH ACCMOV P1,APOP ACCAJMP HA1S1DELAY: PUSH 02HDELAY1: PUSH 02HDELAY2: PUSH 02HDELAY3: DJNZ R2,DELAY3POP 02HDJNZ R2,DELAY2POP 02HDJNZ R2,DELAY1POP 02HDJNZ R2,DELAYRETEND实验二ORG 0000HAJMP 0030HORG 0013HLJMP HA2S3ORG 0030HHA2S: MOV P1,#0fFH ORL P3,#00HHA2S1: JB P3.4,HA2S1 ORL IE,#84HORL IP,#04HMOV PSW,#00HMOV SP,#53HHA2S2: MOV P1,#081H ACALL HA2S7MOV P1,#082HACALL HA2S7MOV P1,#084HACALL HA2S7MOV P1,#088HACALL HA2S7MOV P1,#090HACALL HA2S7MOV P1,#0A0HACALL HA2S7MOV P1,#0C0HACALL HA2S7SJMP HA2S2HA2S3: MOV B,R2HA2S5: SETB P1.7ACALL HA2S6CLR P1.7ACALL HA2S6JNB P3.3,HA2S5MOV R2,BRETIHA2S6: MOV R2,#06H ACALL DELAYRETHA2S7: MOV R2,#30HACALL DELAYRETDELAY: PUSH 02H DELAY1: PUSH 02H DELAY2: PUSH 02H DELAY3: DJNZ R2,DELAY3 POP 02HDJNZ R2,DELAY2POP 02HDJNZ R2,DELAY1POP 02HDJNZ R2,DELAYRETEND实验10org 0000hSjmp MAINorg 000bhmov th0,r1mov tl0,r0cpl p1.0RETIMAIN:MOV TMOD,#01H MOV IE,#82HMOV DPTR,#TABLOOP: CLR AMOVC A,@A+DPTRMOV R1,AINC DPTRCLR AMOVC A,@A+DPTRMOV R0,AORL A,R1JZ NEXT0MOV A,R0ANL A,R1CJNE A,#0FFH,NEXTSJMP MAINNEXT : MOV TH0,R1MOV TL0,R0SETB TR0SJMP NEXT1NEXT0:CLR TR0NEXT1: CLR AINC DPTRMOVC A,@A+DPTRMOV R2,ALOOP1: ACALL D200CDJNZ R2,LOOP1INC DPTRAJMP LOOPD200C:MOV R3,#81HD200B:MOV A,#0FFHD200A:DEC AJNZ D200ADEC R3CJNE R3,#00H,D200BRETTAB: DB 0FEH,25H,04H,0FEH,25H,02H ;11 1 5 DB 0FEH,25H,02H,0FDH,80H,04HDB 0FEH,84H,02H,0FEH,84H,02H;33 3 1DB 0FEH,84H,04H,0FEH,25H,04HDB 0FEH,25H,02H,0FEH,84H,02H;13 5 5DB 0FEH,0C0H,04H,0FEH,84H,02HDB 0FEH,98H,02H,0FEH,84H,02H;43 2 -DB 0FEH,57H,08H,00H,00H,04HDB 0FFH,0FFHEND;1=131 262 523 1047;2=147 294 587 1175;3=165 330 659 1319;4=175 349 698 1397;5=196 392 784 1568;6=220 440 880 1760;7=247 494 988 1976实验十一ORG 0000HAJMP STARTORG 0030HSTART: SETB P1.0 LCALL DELAYCLR P1.0LCALL DELAYSJMP STARTDELAY: MOV R7,#0FFH DELAY1: MOV R6,#0FFH DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1RETEND实验六ORG 0000HAJMP HA6SORG 0030HHA6S: MOV SP,#53HHA6S1: MOV R6,#00HHA6S2: MOV DPTR,#8000H MOV A,R6MOVX @DPTR,AMOV R2,#30HLCALL DELAY;INC R6;CJNE R6,#0FFH,HA6S2 HA6S3: MOV R6,#0FFH MOV DPTR,#8000H; DEC R6MOV A,R6MOVX @DPTR,AMOV R2,#30HLCALL DELAY;CJNE R6,#00H,HA6S3 SJMP HA6S1DELAY: PUSH 02HDELAY1: PUSH 02H DELAY2: PUSH 02H DELAY3: DJNZ R2,DELAY3 POP 02HDJNZ R2,DELAY2POP 02HDJNZ R2,DELAY1POP 02HDJNZ R2,DELAYRETEND实验29TIMER EQU 01Horg 0000hajmp STARTORG 000BHAJMP INT_T0ORG 070HSTART: MOV SP,#53H MOV TMOD,#01HMOV TL0,#00HMOV TH0,#4BHMOV R0,#0HMOV TIMER,#20MOV SCON,#00HCLR TICLR RISETB TR0SETB ET0SETB EASJMP $INT_T0: PUSH ACCPUSH PSWCLR EACLR TR0MOV TL0,#0HMOV TH0,#4BHSETB TR0DJNZ TIMER,EXITMOV TIMER,#20MOV DPTR,#CDATAMOV A,R0MOVC A,@A+DPTRCLR TICPL AMOV SBUF,AINC R0CJNE R0,#0AH,EXITMOV R0,#0HEXIT: SETB EAPOP PSWPOP ACCRETICDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H END相关文档:更多相关文档请访问:。
西南科技大学单片机实验考试汇编代码
(在两个中)识别最大模拟输入通道FLAG EQU 29HAD_V AL EQU 30H ;AD转换结果值AD_V AL1 EQU 31H ;AD转换结果值V AR_END EQU 32H ;最后一个字节变量的位置,STACK_INI EQU V AR_END+1 ;须保证足够的空间ORG 0000H ;复位入口LJMP RESETORG 0040H ;复位处理程序RESET: MOV SP,#60H ;设置栈底指针MOV R2,#02HMOV FLAG,#00HMAIN: MOV R3,#40HMOV R1,FLAGCJNE R1,#00H,ADV ALADV AL1: MOV FLAG,#0FFHMOV DPTR,#3C02H ;此处添加读A/D转换结果的指令MOVX @DPTR,A ;此处添加启动D/A转换的指令WAIT1: DJNZ R3,W AIT1MOVX A,@DPTRMOV AD_V AL,A ;保存转换结果(供主程序显示用) SJMP COMPAREADV AL: MOV FLAG,#00HMOV DPTR,#3C07H ;此处添加读A/D转换结果的指令MOVX @DPTR,A ;此处添加启动D/A转换的指令WAIT: DJNZ R3,W AITMOVX A,@DPTRMOV AD_V AL1,ASJMP COMPARECOMPARE:DJNZ R2,MAINMOV A,AD_V ALCLR CSUBB A,AD_V AL1JC LOW1UNEQUAL:MOV P1,#0A4HSJMP LL1LOW1: MOV P1,#0F8HSJMP LL1LL1: LCALL DELAY_1SMOV R2,#02HSJMP MAINDELAY_1S: MOV R0,#201;此程序没用到,可以不管,延时1s子程序DS3: MOV R1,#50DS2: MOV R2,#24NOPDJNZ R2,DS1DJNZ R1,DS2DJNZ R0,DS3RETEND3X3键盘扫描ORG 0000HMOV DPTR,#0C00HMOV A,#10001000BMOVX @DPTR,AMOV DPTR,#0000HMOV A,#11111111BMOVX @DPTR,A KEY: MOV DPTR,#0800HMOV A,#00000000BMOVX @DPTR,AMOV DPTR,#0800HMOVX A,@DPTRANL A,#07HCJNE A,#07H,KEY1JMP KEYENDKEY1: LCALL DELAY_6MSMOV DPTR,#0800HMOV A,#00000000BMOVX @DPTR,AMOV DPTR,#0800HMOVX A,@DPTRANL A,#07HCJNE A,#07H,KEY2JMP KEYENDKEY2: LCALL DELAY_6MSLCALL DELAY_6MSMOV 2FH,#0FEH KEY4: MOV A,2FHMOV DPTR,#0800HMOVX @DPTR,AMOV DPTR,#0800HMOVX A,@DPTRANL A,#0E0HCJNE A,#0E0H,KEY3MOV A,2FHJNB ACC.2,KEYENDMOV 2FH,ASJMP KEY4KEY3: MOV R3,A;行值MOV A,2FHANL A,#07HMOV 2FH,A;列值MOV R2,#00HMOV 2EH,#03H KEY6: MOV DPTR,#TAB1MOV A,R2MOVC A,@A+DPTRCJNE A,2FH,KEY9 SJMP KEY5KEY9: INC R2DJNZ 2EH,KEY6SJMP KEYENDKEY5: MOV A,R2SW AP AMOV R2,AMOV A,R3SWAP ARR AORL A,R2MOV 2FH,AMOV R2,#00HMOV 2EH,#09H KEY8: MOV DPTR,#TAB2MOV A,R2MOVC A,@A+DPTRCJNE A,2FH,KEY10SJMP KEY7KEY10: INC R2DJNZ 2EH,KEY8SJMP KEYENDKEY7: MOV A,R2RL AADD A,R2MOV DPTR,#TAB3JMP @A+DPTR KEYEND: MOV DPTR,#0000HMOV A,#0FFHMOVX @DPTR,AJMP KEYRETTAB1: DB 03H,05H,06HTAB2: DB 06H,16H,26HDB 05H,15H,25HDB 03H,13H,23HTAB3: LJMP K1LJMP K2LJMP K3LJMP K4LJMP K5LJMP K6LJMP K7LJMP K8LJMP K9K1: MOV A,#7FHJMP KEY_ENDK2: MOV A,#0BFHJMP KEY_ENDK3: MOV A,#0DFHJMP KEY_ENDK4: MOV A,#0EFHJMP KEY_ENDK5: MOV A,#0F7HJMP KEY_ENDK6: MOV A,#0FBHJMP KEY_ENDK7: MOV A,#0FDHJMP KEY_ENDK8: MOV A,#0FEHJMP KEY_ENDK9: MOV A,#00HJMP KEY_ENDKEY_END:MOV DPTR,#0000HMOVX @DPTR,AJMP KEYDELAY_6MS: MOV R0,#60 ;延时200ms以内子程序DL2: MOV R1,#24DL1: NOPNOPDJNZ R1,DL1DJNZ R0,DL2RETEND;1MS改R0=10,R1=24;10MS改R0=100,R1=24;100MS改R0=200,R1=11250赫兹同步锯齿波发生器TIME EQU 26HDA V AL EQU 28HORG 0000HLJMP MAINORG 000BHLJMP T0INTORG 0030H MAIN: MOV SP,#60HMOV TMOD,#02HMOV TH0,#38HMOV TL0,#38HMOV TIME,#64H MOV DA V AL,#00HSETB EASETB ET0SETB TR0L: SJMP LT0INT: INC DA V ALDJNZ TIME,Sawt_WAMOV DA V AL,#00HMOV TIME,#64HJMP SW_ENDSawt_WA:MOV DPTR,#2000HMOV A,DA V ALMOVX @DPTR,AMOV DPTR,#2400HMOV A,DA V ALMOVX @DPTR,AMOV DPTR,#3C00HMOVX @DPTR,A SW_END: RETIENDPWM波发生器PWM_T1 EQU 28HORG 0000HLJMP MAINORG 000BHLJMP T0INTORG 0030H MAIN: MOV SP,#60HMOV P1,#7FHMOV R7,#0MOV PWM_T1,#5MOV TMOD,#01HMOV TH0,#0D8HMOV TL0,#0F0HSETB EASETB ET0SETB TR0L: MOV A,P1JNB ACC.0,K0JNB ACC.1,K1JMP LK0: LCALL DELAY_10MSMOV A,P1JNB ACC.0,KK0JMP LKK0: LCALL DELAY_10MSMOV A,P1JNB ACC.0,KK0MOV A,PWM_T1 CJNE A,#9,SSJMP LSS: SUBB A,#9JNC KK0_ENDMOV A,PWM_T1ADD A,#1MOV PWM_T1,ASJMP LKK0_END:JMP LK1: LCALL DELAY_10MSMOV A,P1JNB ACC.1,KK1JMP LKK1: LCALL DELAY_10MSMOV A,P1JNB ACC.1,KK1MOV A,PWM_T1CJNE A,#1,SS1SJMP LSS1: SUBB A,#1JC KK0_ENDMOV A,PWM_T1SUBB A,#1MOV PWM_T1,ASJMP LT0INT: MOV TH0,#0D8HMOV TL0,#0F0HINC R7MOV A,R7CJNE A,PWM_T1,LL1CLR P1.7SJMP PWMENDLL1: CJNE R7,#10,PWMENDSETB P1.7MOV R7,#00HPWMEND: RETIDELAY_10MS: MOV R0,#100 ;延时200ms以内子程序DL2: MOV R1,#24DL1: NOPNOPDJNZ R1,DL1DJNZ R0,DL2RET;1MS改R0=10,R1=24;10MS改R0=100,R1=24;100MS改R0=200,R1=112END编码显示器ORG 0000HGEWEI EQU 26HSHIWEI EQU 27HIO EQU 28HLJMP MAINORG 0030HMAIN: MOV DPTR,#0C00HMOV A,#10001001BMOVX @DPTR,AMOV DPTR,#0000HMOV A,#3FHMOVX @DPTR,AMOV DPTR,#0400HMOVX @DPTR,ALOOP: MOV DPTR,#0800HMOVX A,@DPTRCPL A;LCALL I_ORDER;MOV A,IOANL A,#3FHMOV B,#10DIV ABMOV GEWEI,AMOV SHIWEI,BJNB P3.3,GE_WEIJMP LOOPGE_WEI: MOV A,GEWEILCALL SQRMOV GEWEI,ASHI_WEI:MOV A,SHIWEILCALL SQRMOV SHIWEI,ASJMP WEI_ENDWEI_END:MOV DPTR,#0000HMOV A,GEWEIMOVX @DPTR,AMOV DPTR,#0400HMOV A,SHIWEIMOVX @DPTR,ASJMP LOOPRETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH SQR: MOV DPTR,#TAB ;查表子程序MOVC A,@A+DPTRRETI_ORDER:MOV IO,#00HMOV R2,#08HL00P1: RLC AMOV R3,AJC LOOP2SJMP LOOP3LOOP2: ORL IO,#80HLOOP3: MOV A,IORR AMOV IO,AMOV A,R3DJNZ R2,L00P1MOV A ,IORR ARR AMOV IO,#00RETDELAY_6MS: MOV R0,#60 ;延时200ms以内子程序DL2: MOV R1,#24DL1: NOPNOPDJNZ R1,DL1DJNZ R0,DL2RETEND;1MS改R0=10,R1=24;10MS改R0=100,R1=24;100MS改R0=200,R1=112步进电机调速;***********************************************************************; 文件名: Demo_Ex04.ASM(汇编程序框架); 功能: 在DP_51PRO实验仪上利用外部中断控制步进电机转动:每中断一次电机步进1步。
西南科技大学单片机原理实实验四及代码
输入为高时,对应的 A 相通电。 OUT 7
2)SW 电路 COMM
开关
SWX
拨在下方时,输出端 ON
SWX
输出低电平,开关
SWX
拨在
S W 1
R
S
R
S
W+
S +
W1
R 53
W3
R 5
图 2.5 单脉冲电路原理图
V
V
上方时,输出端 SWX 输出高电平。其中 SW1 和 SW3 具备消除抖动电 路,这样,SW1 或 SW3 每上下拨动一次,输出端产生单一的正脉冲(上 升沿在前,下降沿在后)。
Debug 页夹: 根据步骤的需要正确设定(参见实验 1 中步 骤 5、6、7)
BL51 Locate 页 夹 : 取 消 Use Memory Layout from Target Dialog 设置 Code Range 属性为 0x40-0xFFF 如用 C51 编程,才需设置此页夹。
4) 创建新文件并输入编写的实验程序,然后保存在与工程 相同的文件夹中(文件名为 Ex04 . ASM 或 Ex04 . C),最后将其 加入到工程中并通过编译。
ULN IN 1 2003A OUT 1
V IN 3
+ OUT图3 2.4 步进电机驱动
V
BA + C顺序依次通电,电机就会反转。每顺序 IN 5 电路原理图
切换一相(1 步),电机旋转 18°,切换的频率决定电机的转速(切换的频 OUT 5
率不能超过电机的最大响应频率)。根据图 2.4 中的电路,当 BA(插孔) IN 7
C8
11 PB
区 图 2.7
11中23断实DC验连接区线路
单片机实验代码总结
单片机实验代码集合(by fangyuan)1.多字节累加程序:ORG 0000HLJMP MAINORG 0030H;将加数和被加数送到指定地址MAIN: MOV 20H,#45HMOV 21H,#74HMOV 30H,#67HMOV 31H,#28H;低位相加MOV A,21HADD A,31HDA AMOV 42H,A;高位相加MOV A,20HADDC A,30HDA AMOV 41H,ACLR AADDC A,#0MOV 40H,ASJMP $END2.数据交换实验编写程序,实现以下操作:【功能1】产生数组Hex1:0H、1H、2H、…0FH,存储到片内RAM区中,数组Hex1的首地址为30H。
【功能2】产生数组Hex2:0FH、0EH、0DH、…0H,存储到片外RAM区中,数组Hex2的首地址为3000H。
【功能3】将片内RAM数组Hex1与片外RAM数组Hex2交换内容。
代码:ORG 0000HHex1 EQU 30H ;定义内部RAM数组首地址Hex2 EQU 3000H ;定义外部RAM数组首地址LJMP MAINORG 0030HMAIN: MOV SP,#4FH ;定义栈顶地址MOV R7,#16MOV R0,#Hex1MOV DPTR,#Hex2LCALL HEX1DE ;调用内部送数据函数LCALL HEX2DE ;调用外部送数据函数LCALL XCHDE ;调用交换函数SJMP $ORG 0100H;内部送数据HEX1DE: PUSH 00HPUSH 07HMOV A,#0LOOP1: MOV @R0,AINC AINC R0DJNZ R7,LOOP1POP 07HPOP 00HRET;外部送数据HEX2DE: PUSH 07HPUSH DPLPUSH DPHMOV A,#0FHLOOP2: MOVX @DPTR,ADEC AINC DPTRDJNZ R7,LOOP2POP DPHPOP DPLPOP 07HRET;交换子程序XCHDE:LOOP3: MOVX A,@DPTRXCH A,@R0INC R0INC DPTRDJNZ R7,LOOP3RETEND3.查表实验1、《单片机原理及应用实验教程》(第2版)“第2章实验3”(P49)。
单片机实验考试,实验报告源程序
单⽚机实验考试,实验报告源程序1.ORG 0000HLJMP CHABIAO1ORG 0040HCHABIAO1:DEC AMOV R6,AMOV DPTR,#TAB1MOVC A,@A+DPTRXCH A,R6INC ASJMP $TAB1: DB 1H,4H,9H,16H,25H,36H,49H,64H,81H END2ORG 0000HLJMP CHABIAO1ORG 0040HCHABIAO1:DEC AMOV R5,AMOV DPTR,#TAB1MOVC A,@A+DPTRXCH A,R5INC ASJMP $TAB1: DB 1H,4H,9H,16H,25H,36H,49H,64H,81H END3.ORG 0000HLJMP CHABIAO2ORG 0040HCHABIAO2:DEC ARL AMOV R6,AADD A,#08HADD A,#03HMOVC A,@A+PCMOV R7,ASJMP $TAB2: DW 1H,4H,9H,16H,25H,36H,49H,64H,81H END …4.. ORG 0000HLJMP CHABIAO2ORG 0040HCHABIAO2:DEC ARL AMOV R5,AADD A,#08HMOVC A,@A+PCXCH A,R5INC AADD A,#03HMOVC A,@A+PCMOV R4,ASJMP $TAB2: DW 1H,4H,9H,16H,25H,36H,49H,64H,81H END 5ORG 0000H LJMP MAIN1ORG 1000HMAIN1: MOV DPTR,#TAB1MOV A,R3DEC ARL AJMP @A+DPTRTAB1: AJMP PROG1AJMP PROG2AJMP PROG3AJMP PROG4RLC AMOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONEPROG2: MOV A,R7MOV B,#10MUL ABMOV R7,AMOV R6,BSJMP DONEPROG3: MOV A,R7ADD A,#8MOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONEPROG4: MOV A,R7MOV B,#2DIV ABMOV R7,AMOV R6,BDONE: SJMP $END6ORG 0000HLJMP MAIN1ORG 1000HMAIN1: MOV DPTR,#TAB1 MOV A,R3 DEC ARL ATAB1: AJMP PROG1 AJMP PROG2 AJMP PROG3 AJMP PROG4 PROG1: MOV A,R7 CLR CRLC ACLR AADDC A,#0MOV R6,ASJMP DONE PROG2: MOV A,R7 MOV B,#10MUL ABMOV R7,AMOV R6,BSJMP DONE PROG3: MOV A,R7 ADD A,#10MOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONE PROG4: MOV A,R7 MOV B,#2DIV ABMOV R7,AMOV R6,B DONE: SJMP $ END7ORG 0000HLJMP MAIN1ORG 0000HMAIN2: MOV DPTR,#TAB2 MOV A,R1 DEC ARL AMOV R3,AMOVC A,@A+DPTRXCH A,R3INC AMOVC A,@A+DPTRMOV DPL,AMOV DPH,R3CLR AJMP @A+DPTRTAB2: DW PROG1DW PROG3DW PROG4PROG1: MOV A,R7CLR CRLC AMOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONEPROG2: MOV A,R7MOV B,#5MUL ABMOV R7,AMOV R6,BSJMP DONEPROG3: MOV A,R7ADD A,#5MOV R7,ACLR APROG4: MOV A,R7MOV B,#2DIV ABMOV R7,AMOV R6,BDONE: SJMP $END8ORG 0000HLJMP MAIN2ORG 1000HMAIN2: MOV DPTR,#TAB2 MOV A,R1DEC ARL AMOV R3,AMOVC A,@A+DPTRXCH A,R3INC AMOVC A,@A+DPTRMOV DPL,AMOV DPH,R3CLR AJMP @A+DPTR TAB2: DW PROG1 DW PROG2 DW PROG3DW PROG4 PROG1: MOV A,R7CLR CRLC AMOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONE PROG2: MOV A,R7MOV R6,BSJMP DONE PROG3: MOV A,R7 ADD A,#6MOV R7,ACLR AADDC A,#0MOV R6,ASJMP DONE PROG4: MOV A,R7 MOV B,#2DIV ABMOV R7,AMOV R6,B DONE: SJMP $END9ORG 0000HLJMP PAIXU2ORG 1000HPAIXU2: MOV R7,#9 LOOP1: DEC R7 MOV A,R7JZ DONEMOV R6,ACLR F0MOV R0,#40HLOOP2: MOV A,@R0INC R0MOV R2,ACLR CSUBB A,@R0MOV A,R2JNC NEXTXCH A,@R0DEC R0NEXT: DJNZ R7,LOOP2 MOV A,R6 MOV R7,AJB F0,LOOP1 DONE: SJMP $END10ORG 0000HLJMP PAIXU2ORG 1000HPAIXU2: MOV R7,#9 LOOP1: DEC R7 MOV A,R7JZ DONEMOV R6,ACLR F0MOV R0,#40HLOOP2: MOV A,@R0INC R0MOV R2,ACLR CSUBB A,@R0MOV A,R2JC NEXTXCH A,@R0DEC R0MOV @R0,AINC R0SETB F0NEXT: DJNZ R7,LOOP2 MOV A,R6 MOV R7,AJB F0,LOOP1 DONE: SJMP $END11ORG 0000HPAIXU2: MOV R7,#8 LOOP1: DEC R7 MOV A,R7JZ DONEMOV R6,ACLR F0MOV R0,#50HLOOP2: MOV A,@R0INC R0MOV R2,ACLR CSUBB A,@R0MOV A,R2JNC NEXTXCH A,@R0DEC R0MOV @R0,AINC R0SETB F0NEXT: DJNZ R7,LOOP2 MOV A,R6 MOV R7,AJB F0,LOOP1 DONE: SJMP $END12ORG 0000HLJMP PAIXU2ORG 1000HPAIXU2: MOV R7,#8 LOOP1: DEC R7 MOV A,R7JZ DONEMOV R6,ACLR F0MOV R0,#50HLOOP2: MOV A,@R0CLR CSUBB A,@R0MOV A,R2JC NEXTXCH A,@R0DEC R0MOV @R0,AINC R0SETB F0NEXT: DJNZ R7,LOOP2 MOV A,R6MOV R7,AJB F0,LOOP1 DONE: SJMP $END13TIMER0 EQU 30HTIMER1 EQU 31HORG 0000HLJMP MAINORG 0003HLJMP INTERRUPT_0ORG 0013HLJMP INTERRUPT_1 ORG 1000HMOV SP,#60HMOV IE,#10000101B MOV IP,#00000100B SETB IT0 SETB IT1LOOP:MOV A,#11110000B MOV P1,ALCALL DELAY500 MOV A,#00001111B MOV P1,A LCALL DELAY500 SJMP LOOPINTERRUPT_0:PUSH ACCPUSH BMOV B,#8MOV P1,ALCALL DELAY500 RR ADJNZ B,LOOP1POP BPOP ACCRETIINTERRUPT_1:PUSH ACCPUSH BMOV B,#7MOV A,#00000011B LOOP2:MOV P1,ALCALL DELAY500 RL ADJNZ B,LOOP2POP BPOP ACCRETIMOV TIMER0,#250 DELAY2:NOPNOPDJNZ TIMER0,DELAY2 DJNZ TIMER1,DELAY RET DELAY500:NOPPUSH TIMER1MOV TIMER1,#250 LCALL DELAY LCALL DELAY POP TIMER1RETEND14TIMER0 EQU 30H TIMER1 EQU 31HORG 0000HLJMP MAINORG 0003HLJMP INTERRUPT_1 ORG 1000H MAIN:MOV SP,#60HMOV IE,#10000101B MOV IP,#00000100B SETB IT0 SETB IT1LOOP:MOV A,#11110000B MOV P1,ALCALL DELAY500 MOV A,#00001111BMOV P1,ALCALL DELAY500 SJMP LOOPINTERRUPT_0:PUSH ACCPUSH BMOV B,#6MOV A,#11100000B LOOP1:MOV P1,ALCALL DELAY500RR ADJNZ B,LOOP1POP BPOP ACCRETIINTERRUPT_1:PUSH ACCPUSH BMOV B,#8MOV A,#00000001B LOOP2:MOV P1,ALCALL DELAY500RL ADJNZ B,LOOP2POP BPOP ACCRETINOPDJNZ TIMER0,DELAY2 DJNZ TIMER1,DELAY RET DELAY500:NOPPUSH TIMER1MOV TIMER1,#250 LCALL DELAY LCALL DELAY POP TIMER1RETEND15TIMER0 EQU 30H TIMER1 EQU 31HORG 0000HLJMP MAINORG 0003HLJMP INTERRUPT_0ORG 0013HLJMP INTERRUPT_1 ORG 1000H MAIN:MOV SP,#60HMOV IE,#10000101B MOV IP,#00000100B SETB IT0 SETB IT1LOOP:MOV A,#11110000B MOV P1,ALCALL DELAY500 MOV A,#00001111B MOV P1,A LCALL DELAY500 SJMP LOOPINTERRUPT_0:PUSH ACCPUSH BMOV B,#7MOV A,#11000000BLOOP1:MOV P1,ALCALL DELAY500POP ACCRETIINTERRUPT_1:PUSH ACCPUSH BMOV B,#8MOV A,#00000001B LOOP2:MOV P1,ALCALL DELAY500RL ADJNZ B,LOOP2POP BPOP ACCRETIDELAY:MOV TIMER0,#250 DELAY2:NOPNOPDJNZ TIMER0,DELAY2 DJNZ TIMER1,DELAY RET DELAY500:NOPPUSH TIMER1MOV TIMER1,#250 LCALL DELAY LCALL DELAY POP TIMER1RETEND16TIMER0 EQU 30H TIMER1 EQU 31HORG 0000HLJMP MAINORG 0003HLJMP INTERRUPT_0MOV SP,#60HMOV IE,#10000101B MOV IP,#00000100B SETB IT0 SETB IT1LOOP:MOV A,#11110000B MOV P1,ALCALL DELAY500 MOV A,#00001111B MOV P1,A LCALL DELAY500 SJMP LOOPINTERRUPT_0:PUSH ACCPUSH BMOV B,#7MOV A,#00000111B LOOP1:MOV P1,ALCALL DELAY500 RR ADJNZ B,LOOP1POP BPOP ACCRETIINTERRUPT_1:PUSH ACCPUSH BMOV B,#8MOV A,#10000000BLOOP2:MOV P1,ALCALL DELAY500RL ADJNZ B,LOOP2POP BPOP ACCRETIDELAY:MOV TIMER0,#250DJNZ TIMER0,DELAY2DJNZ TIMER1,DELAYRETDELAY500:NOPPUSH TIMER1MOV TIMER1,#250LCALL DELAYLCALL DELAYPOP TIMER1RETEND17题T1定时50ms,2s钟左移⼀次ORG 0000H MLJMP MAINORG 001BHLJMP DVT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#3CHMOV TL1,#0B0HMOV R7,#40SETB ET1SETB EAMOV A,#01MOV P1,ASETB TR1SJMP $DVT1:MOV TH1,#3CHMOV TL1,#0B0HDJNZ R7,EXITEXIT:RETIEND18题T1定时10ms,1s钟左移⼀次ORG 0000H MLJMP MAINORG 001BHLJMP DVT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#0D8HMOV TL1,#0F0HMOV R7,#100SETB ET1SETB EAMOV A,#01MOV P1,ASETB TR1SJMP $DVT1:MOV TH1,#0D8HMOV TL1,#0F0HDJNZ R7,EXITMOV R7,#100MOV P1,ARL AEXIT:RETIEND19题T0定时10ms,2s钟右移⼀次ORG 0000H MLJMP MAINORG 000BHMOV TMOD,#01HMOV TH0,#0D8HMOV TL0,#0F0HMOV R7,#200SETB ET0SETB EAMOV A,#01MOV P1,ASETB TR0SJMP $DVT0:MOV TH0,#0D8HMOV TL0,#0F0HDJNZ R7,EXITMOV R7,#200MOV P1,ARR AEXIT:RETIEND20题T1定时10ms,3s钟右移⼀次ORG 0000H MLJMP MAINORG 001BHLJMP DVT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#0D8HMOV TL1,#0F0HMOV R7,#300SETB ET1SETB EAMOV TH1,#0D8HMOV TL1,#0F0HDJNZ R7,EXITMOV R7,#300MOV P1,ARR AEXIT:RETIEND21题T1定时20ms 1s钟左移1次ORG 0000H MLJMP MAINORG 001BHLJMP DVT1ORG 0100HMAIN:MOV TMOD,#10HMOV TH1,#0B1HMOV TL1,#0E0HMOV R7,#50SETB ET1SETB EAMOV A,#01MOV P1,ASETB TR1SJMP $DVT1:MOV TH1,#0B1HMOV TL1,#0E0HDJNZ R7,EXITMOV R7,#50MOV P1,A22题T0定时20ms,2s钟右移⼀次ORG 0000H MLJMP MAINORG 000BHLJMP DVT0。
单片机课程设计报告代码
单片机课程设计报告代码一、引言1.背景介绍随着科技的不断发展,单片机技术在我国得到了广泛的应用。
为了培养学生对单片机的理解和应用能力,单片机课程设计成为了电气工程及自动化专业的重要实践环节。
本篇报告将介绍一种基于单片机的课程设计,通过实际操作,使学生掌握单片机的硬件结构、编程方法和应用技巧。
2.设计目的本次课程设计的目的是使学生熟悉单片机的开发流程,掌握C语言编程,培养学生解决实际工程问题的能力。
通过课程设计,学生应能独立完成单片机系统的硬件选型、程序设计、调试与测试等环节。
3.设计原理本课程设计基于某型号单片机,采用C语言编程。
设计过程中,学生需要了解单片机的工作原理、内部结构以及周边电路设计。
在程序设计阶段,学生应掌握基本的编程技巧,如循环、条件语句、函数调用等,并能够运用Keil、Proteus等软件进行代码调试。
二、单片机概述1.单片机定义单片机(Microcontroller Unit,简称MCU)是一种集成了CPU、存储器、外设接口等多种功能于一体的微型计算机。
它具有体积小、成本低、功耗低、功能强大等特点,广泛应用于各个领域。
2.单片机发展历程从20世纪70年代单片机问世以来,经历了40多年的发展。
从最初的4位、8位单片机,到现在的32位、64位高性能单片机,单片机的性能、功耗和可靠性得到了不断提高。
3.单片机应用领域单片机在我国的应用领域非常广泛,如家电控制、工业自动化、医疗设备、智能交通等。
随着物联网技术的快速发展,单片机的应用前景将更加广阔。
(以下部分请根据实际课程设计内容进行编写)三、课程设计内容1.设计任务本次课程设计任务为设计一个基于单片机的智能控制系统,实现对某个实际设备的自动化控制。
2.设计流程设计流程分为以下几个阶段:(1)硬件选型:根据设计任务选择合适的单片机型号及外围电路元件。
(2)电路设计:绘制原理图及PCB图,并进行元件布局及线路走线。
(3)程序设计:编写控制程序,实现所需功能。
单片机个实验代码详细
(1).初始化:启动AT89S51单片机进入ISP下载状态,若启动成功,则状态显示区就会显示如图3.2所示的文字。否则,不成功会有“初始化失败”的字样提示。
图3.2
(2).特征字:点击一下检测器件,会读出单片机的芯片的特征字,对于AT89S51单片机的特征字为:1E5106。
进入Keil C51后,屏幕如下图所示。几秒钟后出现编辑界
启动Keil C51时的屏幕
进入Keil C51后的编辑界面
简单程序的调试
学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程
6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group1”上单击右键,弹出如下菜单
然后单击“Add File to Group ‘Source Group 1’”屏幕如下图所示
选中Test.c,然后单击“Add ”屏幕好下图所示 注意到“Source Group1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同
单片机原理课程实验
实验一LED显示器指示
实验二软件延时及灯光控制实验
实验三多级外部中断实验
实验四脉冲频率的测量实验
实验五串行口扩展实验
实验六串行EEPROM的读出和写入实验
实验七8位A/D、D/A转换器的应用实验
实验八串行A/D、D/A的应用实验
实验九直流继电器的驱动及控制实验
实验十数据采集的软件抗干扰实验
(15)EEPROM
EEPROM(AT24C16),用来保存数据信息,接口序号为:串行数据线:SDA;时钟线:SCL;写保护线:WP。
西南科技大学微机原理4huibian
1
汇编程序的执行
一、汇编程序的功能 将汇编语言源程序翻译成机器语言编写的目标程 序,并可输出列表文件。 • 检查语法并给出错误信息 • 展开宏指令
常用汇编工具: ASM 和 MASM
输 入
源程序.ASM
翻 译
汇编程序 MASM
输 出 目标代码(.OBJ) 列表文件(.LST) 交叉索引文件(.CRF)
2
汇编程序的执行
二、程序的编辑、汇编与连接 1.建立源文件 用编辑软件完成,常见软件:Edit、记事本 2.汇编源程序 用汇编程序MASM对源程序进行汇编 3.连接产生可执行文件
用连接程序LINK对*.OBJ进行连接, 产生可执行
文件*.EXE;
4.执行程序 *.EXE
3
4.1 汇编程序的格式
基本定义
④ 注释项:用来说明一段或一句指令的功能,前加“;”
5
4.3 指示性语句
一、符号定义语句
基本定义
① EQU 等值语句 格式: <名 字> EQU <表达式> 功能:把表达式的值赋给符号名。 举例:NUMBER EQU 8 ② = 等号语句 格式: TMP = 6 功能:将符号TMP赋值为6。
6
4.3 指示性语句
COMMON:本段与其它COMMON类型的同名段形成一个覆盖段,所有同 名段将具有相同的段基址,共享该覆盖段存储区。覆盖段长度取同名段中 最长段的长度。 STACK:本段与同名段连接成一个连续段作为堆栈段,系统自动对段寄存 器SS赋予该连续段的首址,并初始化堆栈指针寄存器SP。 AT表达式:本段从表达式指定的地址(绝对地址)开始装入。 MEMORY:本段定位于所有其它段之前(地址最高端),若有多个这样的 段,则只对第一个MEMORY段这样定位,其它按PUBLIC类型处理。
西南科技大学_电子实训报告
西南科技大学 – 工程技术中心西南科技大学工程技术中心 《电子实训》课程报告学年 第 学期实训名称: 总成绩: 平时成绩(20%): 报告成绩(10%): 作品成绩(70%): 学 院: 专业班级: 姓 名: 学 号: 指导教师: 提交报告时间: 年 月 日 一、实训目的二、实训器件(1分)名称 规格 位号 数量 备注评分 标准□ 器件识别准确,规格参数完整,位号对应准确。
(1分) □ 器件识别不准确,规格参数不完整,位号对应有错误。
(0.5分)三、原理叙述(要求图文结合地阐述工艺原理与电路原理)(3分)评分 标准□ 电装工艺原理叙述准确,条理清晰;电路图绘制规范,无错误;电路原理叙述准确,无明显错误。
(2.5—3分)□ 电装工艺原理叙述基本准确,但不完整;电路图绘制较规范,但存在少量错误;电路原理叙述基本准确,有少量错误。
(1.5—2分)□ 电装工艺原理叙述不完整,且有明显错误;电路图绘制不规范,且存在部分错误;电路原理叙述有明显错误且不完整。
(0—1分) 电子实训 (B) 电阻 680Ω、100Ω等 R1—R31 若干 电容 20 p、104 C2 -C5 4 晶振 8MHz X1 1 电容 10μ/25V C1 1 LED 圆形 POWER 9光敏电阻 --- R21 1三极管 9012 Q1 11、了解电子产品制作工艺过程;2、了解常用电子元器件功能及运用;3、了解单片机系统基本构成;4、熟悉数字万用表测试电子元器件的基本方法;5、熟悉如何分析和判断故障及排除故障的方法;6、熟悉掌握手工焊接(拆焊)技术的基本方法和技巧。
1. 电装工艺原理(手工焊接工艺)⑴ 进行锡焊,必须具备的条件有以下几点: a.焊件必须具有良好的可焊性 b.焊件表面必须保持清洁(如果生锈,必须用纱布打磨其表面至有光泽) c.焊件要加热到适当的温度 d.合适的焊接时间⑵ 手工焊接操作的基本步骤 步骤一:准备施焊 焊前先预热,等达到合适的焊接温度时,在进行焊接。
单片机原理及代码
绪论我是机械学院大一学生,这学期是通过该课程才开始了解单片机,基础知识是通过自己查阅资料了解的,由于水平较低,会有些错误或者不合理的地方,希望老师指正。
单片机种类繁多,从基本的51单片机到高级的AVR单片机,凌阳SPMC65单片机,他们拥有着其他计算机无法取代的作用,如今单片机已经成为一个独立学科。
它的出现是近代计算机技术发展史上的一个重要里程碑,因为它体积小,所以一般都被放在机械的里面,无法看见。
它在这个装置中,起着有很重要的作用,控制着整个机械的运作。
它具有以下特点:体积小、功能强、应用面广、质量轻、价格便宜,既适合人们使用又适合人们去学习它,这些优点为学习、应用和开发提供了便利条件。
如今单片机的使用范围也十分的广:彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲、鼠标、计算器、汽车等等很多地方都用到了单片机,生活中到处可以看到它的使用之处。
经过了一段时间的学习,我决定向大家简介最简单的51系列单片机,从原理、结构,常用单片机芯片结构,常用的功能——IO口、定时器、UART口等,这些方面介绍它,并且在文章的最后我会给出几个例子进行分析,我的理解:之所以选择51单片机首先是因为它具有以下的优点:1. 开发工具自制容易;2. 入门简单;3.在很长一段时间内,51 还是主流,至今为止,51单片机应用最广,并且没有被高级单片机取代;4.上学期学习了C语言,对单片机的编程开发有少许作用。
原理:单片机又称单片微控制器,它不是一个完成某一个已经预定好的逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
我们可以对它进行编程,用它做些它力所能及的事,而不仅仅是一件已经预定好的事。
我眼里的单片机:对于微型计算机,一般都是由都是由微型处理器,、储存器、I/O接口、三大功能通过总线相互交流,工作。
单片机也是微型计算机的一种,对于单片机,单片机由运算器、控制器、存储器、输入输出设备构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
②测试实验仪中涉及本次实验的电路是否完好。
I.利用C2区的逻辑笔测试D1区的SW1和SW3信号完好。
操作方法:
分别将SW1或SW3连接到C2区的TEST,上下拨动开关,通过观察逻辑笔的指示灯是否正常变化来判别被测信号的完好。(发现有问题,应马上关闭实验仪电源,然后告知老师解决)
BL51 Locate页夹:取消Use Memory Layout from Target Dialog
设置Code Range属性为0x40-0xFFF
如用C51编程,才需设置此页夹。
4)创建新文件并输入编写的实验程序,然后保存在与工程相同的文件夹中(文件名为Ex04.ASM或Ex04. C),最后将其加入到工程中并通过编译。
设计参考:
①主程序需要设置的中断控制位如下:
IT0和IT1外部中断触发方式控制0=电平1=边沿(下降沿)
EX0和EX1外部中断允许控制0=屏蔽1=允许
PX0和PX1中断优先级级别控制0=低级1=高级
在同级别(PX0=PX1)时INT0的优先级高于INT1
EA中断允许总控制0=屏蔽1=允许
②外部中断服务程序的入口地址:
③关闭实验仪电源,按图2.8连接电路(图2.7的电路连线仍然保留)后重新打开实验仪电源。
④运行实验程序,观察真实的步进电机转动与开关拨动的关系(操作方法参见实验1中步骤7)。
8)[选作]观察在真实环境中,由普通按钮开关直接产生中断现象的不同。
操作方法:
①关闭实验仪电源,将图2.8中的SW1和SW2分别替换成KEY1和KEY3重新连线,再次打开实验仪电源,用逻辑笔测试KEY1、KEY3信号的完好。
5)按预习制定的调试方案利用Keil自身的软件仿真功能调试程序,确认实验程序能够运行(操作方法参见实验1中步骤5,此步骤建议在预习时完成)。
6)利用Proteus调试程序,确认实验程序能够实现功能(操作方法参见实验1中步骤6,此步骤建议在预习时完成)。
7)利用实验仪运行程序,观察真实环境的工作现象。
II. 利用测试程序检测单片机的外部中断和步进电机及其驱动实验电路完好。
操作方法:
i.关闭实验仪电源,按图2.7连接电路后重新打开实验仪电源。
ii.双击S:\ STUDY \ Keil \ Ex04 \ Test4 \ Test4_0.Uv2文件。
iii.在新窗口中进入调试,然后连续运行程序。
iv.在实验仪上观察连接到P1端口的8个LED是否循环向左或向右依次熄灭,同时观察步进电机的转动情况。如果发现某个LED常亮或常灭,则意味着P1端口的对应位损坏;如果发现LED不能向右依次熄灭,说明INT1损坏,反之,INT0损坏,此时应向教师示意。
②运行实验程序,分别按动KEY1和KEY3,观察此时步进电机的转动现象(特别是LED的工作情况变化与单脉冲中断时的不同)。
四、实验报告要求
1、工整书写实验程序并画出其流程图。
2、叙述步骤6、7中观察到的现象,分析原因。
3、[选作]叙述步骤8中观察到的现象,分析原因。
五、参考实验程序架构(汇编:;资源定义**************************************
使用INT0的中断服务程序控制步进电机正向步进;使用INT1中断服务程序控制步进电机反向步进。
设计思路:
①主程序在完成对INT0和INT1的设置后,可进入死循环(等待中断请求)。
②为便于实验观察和操作,设INT0和INT1中断触发方式为边沿。
③步进电机的转动控制由外部中断的服务程序来实现。
④当前步进电机的相位通电状态信息可以使用片内RAM中的一个字节单元来存储。
0003H外部中断0
0013H外部中断1
预习:
1)编写好实验程序。
2)根据编写的程序和实验步骤的要求制定调试仿真的操作方案。
实验单元电路:
1)步进电机驱动电路。
步进电机共有4相,当以A→B→C→D→A→B…的顺序依次通电时,电机就会正转,若按相反的顺序依次通电,电机就会反转。每顺序切换一相(1步),电机旋转18°,切换的频率决定电机的转速(切换的频率不能超过电机的最大响应频率)。根据图2.4中的电路,当BA(插孔)输入为高时,对应的A相通电。
;位变量********************************
;字节变量******************************
2.1
一、实验目的
加深对MCS-51单片机中断系统基础知识的理解。
二、实验设备
Keil C单片机程序开发软件。
Proteus仿真软件
DP51-PROC单片机综合实验仪。
三、实验内容和步骤
内容:
利用外部中断输入引脚(以中断方式)控制步进电机的转动。要求:每产生1次中断,步进电机只能步进1步。
实验程序:
v.测试完成后退出调试,然后关闭这个用于测试的Keil窗口。
vi.连接线路保留(在后面将会使用)。
注意:
I.在本次实验中如果发现P1.0 ~ 3有损坏,可用P1其它完好的位替代完成实验(实验程序及其他相关操作都应做出调整)。
II.检测中如果步进电机不转动,说明电机或其驱动电路损坏,实验时仍然可通过观察与P1端口连接的LED的工作情况来推断步进电机的转动情况。
2)SW电路
开关SWX拨在下方时,输出端SWX输出低电平,开关SWX拨在上方时,输出端SWX输出高电平。其中SW1和SW3具备消除抖动电路,这样,SW1或SW3每上下拨动一次,输出端产生单一的正脉冲(上升沿在前,下降沿在后)。
3) LED和KEY电路
步骤:
1)在S:\ STUDY \ Keil文件夹中新建Ex04文件夹(该文件夹用于保存本次实验的所有内容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S:\ STUDY \ Keil \ Ex04文件夹中。
2)在Keil C中创建一个新工程,新工程保存为S:\ STUDY \ Keil \ Ex04\Ex04.uv2,然后选择单片机型号为Generic中的8051。
3)设置工程选项,将工程选项设置如下:
Target页夹:Xtal= 12 MHz
Output页夹:Create HEX页夹:根据步骤的需要正确设定(参见实验1中步骤5、6、7)