89C51单片机实验指导书
THDPJ-3实验指导书+89C51程序+详细说明

实验一 I/O口控制实验 (2)实验二定时器输出PWM实验 (5)实验三蜂鸣器驱动实验 (7)实验四电子琴模拟实验 (8)实验七 74HC138译码器实验 (12)实验八看门狗实验 (13)实验九查询式键盘实验 (15)实验十一 8155 I/O扩展实验 (17)实验十五继电器控制实验 (21)实验十六 I2C总线实验 (23)实验十七实时时钟实验 (28)实验十八温度传感器温度控制实验 (32)实验十九2×16字符型液晶显示实验 (36)实验二十128×64点阵型液晶显示实验 (39)实验二十一红外发射接收实验 (44)实验二十二 ISD1420语音控制实验 (47)实验二十三 RS232串口通信实验 (54)实验二十六 EEPROM外部程序存储器实验 (55)实验二十七 ADC0809并行AD转换实验 (57)实验二十八 TLC549串行AD转换实验 (59)实验二十九 DAC0832并行DA转换实验 (61)实验三十 LTC1446串行DA转换实验 (64)实验三十六微型打印机实验(选配) (66)实验三十七 USB通信实验 (69)实验三十八以太网通信实验 (79)实验三十九 CPLD扩展接口实验(选配) (91)实验一 I/O口控制实验一、实验目的1、学习P1口的使用方法2、学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验内容及步骤实验(一):用P1口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1、使用单片机最小应用系统。
关闭该模块电源,用扁平数据线连接单片机P1口与八位逻辑电平显示模块JD10。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
89C51单片机任务书

3.能够在转速较小时延时测量时间以保持测量精度;
4.利用定时/计数器的功能能够分别得到转数和时间,计算得到转速。
任务要求
(进度)
第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
[3]阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006
审查意见
系(教研室)主任签字:年月日
单片机系统
课程设计
成绩评定表
设计课题:基于89C51的电机转速计设计
学院名称:电气工程学院
专业班级:
学ቤተ መጻሕፍቲ ባይዱ姓名:
学号:
指导教师:
设计地点:
设计时间:2013-12-16~2013-12-27
指导教师意见:
成绩:
签名:年月日
单片机系统
课程设计
课程设计名称:基于89C51的电机转速计设计
专业班级:
学生姓名:
第5-6天:软件设计,编写程序。
第7-8天:实验室调试。
第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
学号:
指导教师:
课程设计地点:
课程设计时间:2013-12-16~2013-12-27
单片机系统课程设计任务书
学生姓名
专业班级
89c51实训指导书.doc

基本I/O 口实训 (1)外部数据存储器的应用(6264) (4)外部数据存储器的应用(2864) (6)键盘显示接口芯片的应用 (8)并口扩展的应用 (12)A/D转换的实训 (14)D/A转换的实训 (20)采集温度 (21)制作音乐盒 (27)制作四字单色显示屏 (31)控制微型打印机 (39)实验一:基本I/O 口的实训目的:通过对单片机的编程仿真,学会单片机仿真系统的基本工作过程。
要求:用LED 的亮/灭来体现单片机高/低电平的变化,连接单片机的基本1/0 口,对单片机 进行编程使其完成:(1) 8个LED 顺序点亮,顺序熄灭,依此循环4次。
(2) 8个LED,第1、3、5、7与2、4、6、8 LED 交替点亮,依此循环4次。
(3) (1)和(2)无限次循环。
原理:IK步骤:1,连接系统板的P1 口到LEDo2, 连接PC 机和仿真机的串口线。
3, 给仿真机接通电源。
4, 打开仿真机的电源开关,电源灯亮表示仿真系统已经带电。
5, 编程。
6, 调试。
7, 改换其它I/O 口,调试程序。
2s 」w9 8765433219XIX29—Rtsr±1P2OP21P22P23P24P25P26P2?RXD — TXD气 碱峠PSEN :—1A2A3Ao n 3 4 5 6 7 n 1— •11 1— Inpppppppp咖polwPOJPIMpos附PO?参考程序:ORG OOOOHMAIN: MOV P1,#OFFHMOV R7, #0411BACK1: SETB P3. 0CLR P1.0LCALL YSCLR Pl. 1LCALL YSCLR Pl. 2LCALL YSCLR Pl. 3LCALL YSCLR Pl.4LCALL YSCLR Pl. 5LCALL YSCLR Pl. 6LCALL YSCLR Pl. 7LCALL YSSETB P1.0LCALL YSSETB Pl. 1LCALL YSSETB Pl. 2LCALL YSSETB Pl. 3LCALL YSSETB Pl. 4LCALL YSSETB Pl. 5LCALL YSSETB Pl.6LCALL YSSETB Pl. 7LCALL YSCLR P3. 0DJNZ R7, BACK1MOV R7, #04HBACK2: SETB P3.0CLR Pl. 1CLR Pl. 3CLR Pl. 5CLR Pl. 7LCALL YSLCALL YSSETB Pl. 1SETB Pl. 3SETB Pl. 5SETB Pl. 7CLR P1.0CLR Pl.2CLR Pl. 4CLR Pl. 6LCALL YSLCALL YSSETB P1.0SETB Pl. 2SETB Pl. 4SETB Pl. 6CLR P3. 0DJNZ R7,BACK2LJMP MAINYS: MOV TMOD, #O1HMOV R5, #05HLOOP: MOV THO, #4CIIMOV TLO, #0011SETB TROJNB TEO, $CLR TFOCLR TRODJNZR5, LOOPRETSJMP $EXD心得体会:实验二:外部数据存储器的应用(6264》冃的:学会用单片机和外部数据存储器进行交流,了解单片机和外部数据进行交换时的时序 关系。
AT89C51单片机实验开发板使用手册

AT89C51单片机实验开发板是电子制作实验室网站专为单片机初学者设计并开发的一种实验兼开发板,站长开发这个产品的目的就是为了帮助单片机初学者快速学会单片机技术。
站长本人在自学单片机的过程中,通过做了一系列的实验,从而比较容易地领会了单片机哪些枯燥、难懂的专业术语,而且这款实验开发板弥补了市场上常见的单片机实验板的一些不足,有针对性地面向最终的实用控制功能,增加了实用的继电器接口,可以使实验板能够直接用于控制各种负载,成为一个实用化的嵌入式控制系统。
目前想要学习单片机技术的网友可以分成两类,一类是业余的电子爱好者,想通过自学单片机来提高自己的电子技术水平,以后能够运用到自己熟悉的领域中有所作为,这类网友的动手能力比较好,但是理论知识一般欠缺一些。
另一类是在校的电子专业学生,为了完成一些科技项目或者是把学校学到的知识转化成实际的电子作品,为以后的工作求职创造更好的条件,这类网友需要的就是实践经验了。
站长也是从这两方面需求来开发这个产品的。
网站开设的单片机教程会以一个个独立的单元电路的形式,使单片机初学者在本网站专门网页的详细操作演示的指导下,一步一步通过自己安装元件、调试电路,将网站提供的多个实验按照从简单到复杂,从实现基本功能到完成扩展功能一步一步地完成,脚踏实地全面提高理论知识和动手能力。
以套件的形式提供还有一个好处,就是给后续开发创造空间,比如以后需要设计完成一个独特的单片机控制系统时,可以直接利用实验开发板的一些硬件资源,只安装上需要的元件,把精力集中在编写软件,就能快速完成项目。
购买网站的单片机试验开发板时,会随产品寄出一张A4大小的黑白激光打印的原理图,供安装或试验时分析硬件结构。
网站教程构思:为了配合实验开发板的销售和使用,站长专门编写了一系列的实验教程,所有实验都按照从最简单到复杂原则,通过逐步的安装→实验→再安装→再实验的方式,最终完成所有实验。
网站提供所有实验的详细源程序,所有的程序都有详细的程序注释,而且都经过烧录验证的*.hex烧写文件。
单片机89c51部分程序

/*#include <reg51.h>//实验一:用数组方式控制跑马灯unsigned char lamp[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//将P0口,P0.0~P0.7依次亮的值放在数组中void main(){unsigned char a;while(1){for(a=0;a<8;a++){P0=lamp[a];//将数组中对应P0.0~P0.7依次亮的值送P0口}}}*/ //实验一程序到此#include <reg51.h>//实验二:在LED数码管上循环显示"0","1","2","3","4"void delay(unsigned char i);unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66};//将显示"0","1","2","3","4"对应led数码管的值放在数组中void main(){unsigned char a;P1=0x00;while(1){for(a=0;a<5;a++){P1=led[a];//将数组中"0","1","2","3","4"对应的led数码管的值送P0口delay(200);}}}void delay(unsigned char i){unsigned int j,k;for(k=0;k<i;k++)for(j=0;j<1000;j++);} //实验二程序到此/*#include <reg51.h>//实验三:按键K1接P3.3,在两个LED数码管上显示按键次数(静态)sbit P3_3=P3^3;void delay( );void main(void){unsigned char count=0;char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};P2=led[count/10];P1=led[count%10];while(1){if(P3_3==0){delay( );if(P3_3==0){count++;if(count==100) count=0;P2=led[count/10];P1=led[count%10];while(P3_3==0);}}}}void delay( ){unsigned char i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);} */。
基于89c51的超声波测距单片机课设

基于89c51的超声波测距单片机课设一、引言本文将探讨基于89c51的超声波测距单片机课设的相关内容。
通过该课设,我们可以学习到单片机的基本原理和应用,以及超声波测距技术的实现原理和方法。
二、超声波测距原理超声波测距是一种通过发送超声波脉冲并测量其返回时间来计算距离的技术。
基于89c51的超声波测距单片机,可以通过以下步骤实现测距:1.初始化超声波模块和显示屏模块。
2.发送超声波脉冲。
3.接收超声波返回信号,并计算返回时间。
4.根据返回时间计算距离。
5.在显示屏上显示测距结果。
三、硬件设计1. 单片机选择我们选择使用89c51单片机作为控制芯片,因为它具有丰富的外设接口和较高的运算性能,适合用于控制超声波模块和显示屏。
2. 超声波模块超声波模块包括超声波发射器和接收器。
发射器用于发送超声波脉冲,接收器用于接收超声波的返回信号。
选择合适的超声波模块可以确保测距的准确性和稳定性。
3. 显示屏模块显示屏模块用于显示测距结果。
可以选择液晶显示屏或数码管等适合的显示模块。
四、软件设计1. 系统初始化在系统初始化阶段,需要对单片机的外设进行初始化设置,包括超声波模块和显示屏模块。
2. 超声波模块驱动程序超声波模块驱动程序用于控制超声波的发送和接收。
通过发送脉冲并计算返回时间,可以得到距离的测量结果。
3. 显示程序设计显示程序设计用于将测距结果显示在显示屏上。
可以通过数码管、液晶显示屏等方式实现。
五、实验步骤以下是基于89c51的超声波测距单片机课设的实验步骤:1.硬件搭建:连接89c51单片机、超声波模块和显示屏模块。
2.编写初始化程序:对单片机的外设进行初始化设置。
3.编写超声波模块驱动程序:控制超声波的发送和接收。
4.编写显示程序:将测距结果显示在显示屏上。
5.调试程序:通过实验验证程序的正确性和稳定性。
6.测距实验:将物体放置在不同距离上,进行测距实验,并记录测量结果。
7.分析实验结果:根据实验结果对课设进行评估和改进。
at89c51实验报告

at89c51实验报告AT89C51实验报告引言:AT89C51是一款经典的8位单片机,被广泛应用于各种嵌入式系统中。
本实验报告将介绍我对AT89C51的实验过程和结果,以及对该单片机的一些理解和应用。
实验目的:1. 熟悉AT89C51单片机的基本特性和功能;2. 掌握AT89C51单片机的编程方法和调试技巧;3. 实现简单的功能模块并验证其正确性。
实验过程:1. 硬件准备在实验开始前,我准备了一块AT89C51开发板、一台电脑、一根USB数据线以及一些连接线。
将开发板与电脑连接,确保能够正常通信和编程。
2. 软件设置我选择了Keil C51作为开发工具,打开软件后,新建一个工程,并选择AT89C51作为目标芯片。
接着,我编写了一个简单的程序,用于点亮开发板上的LED灯。
3. 编程调试将编写好的程序下载到AT89C51单片机中,然后通过调试工具进行程序的调试和运行。
在调试过程中,我发现程序中存在一处错误,经过仔细排查后,成功修复了问题。
4. 功能实现在程序调试通过后,我开始尝试实现一些功能模块。
首先,我实现了一个简单的计数器,通过按下开发板上的按钮,可以实现数字的加减操作。
接着,我尝试了一些其他的功能,如LED灯的闪烁、蜂鸣器的发声等。
实验结果:经过一系列的实验和调试,我成功地实现了以上功能模块,并验证了其正确性。
AT89C51单片机表现出了良好的稳定性和可靠性,在进行各种操作时没有出现明显的延迟或错误。
对AT89C51的理解和应用:通过这次实验,我对AT89C51单片机有了更深入的了解。
AT89C51作为一款经典的8位单片机,具有较强的处理能力和丰富的外设接口,可以广泛应用于各种嵌入式系统中。
在实际应用中,AT89C51可以用来控制各种外设,如LED灯、LCD显示屏、温度传感器等。
通过编写相应的程序,可以实现各种功能,如数据采集、数据处理、控制操作等。
此外,AT89C51还支持多种通信协议,如UART、SPI、I2C等,可以与其他设备进行数据交互。
89C51单片机实验指导书

目录实验一系统认识实验 (2)实验二多字节加、减运算实验 (3)实验三多字节乘、除法运算实验 (4)实验四代码转换实验 (5)实验五布尔操作实验 (6)实验六中断系统实验 (7)实验七定时器/计数器实验 (9)实验八串行通讯接口实验 (12)实验九串并转换实验 (16)实验十存储器扩展实验 (18)实验十一8155键盘及显示接口实验 (20)实验十二ADC0809(模/数转换) (24)实验十三 DAC0832(数/模转换) (26)实验十四步进电机实验 (29)实验十五直流电机调速控制实验 (32)附录Windows版Wmd51 3.0使用说明 (34)实验一系统认识实验一.实验目的和要求1.学习和掌握本实验系统的基本操作;2.总结汇编程序的形成和调试过程;3.掌握循环程序的设计;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.软件延时若系统时钟为6MHZ,要求实现每隔250毫秒将P1.0口取反。
2.无符号数加法计算N个数据的和,即Y=∑Xi (i=1--6)。
若六个数据放在片内RAM的50H——55H地址单元中,求和的结果Y放在内部RAM的03H(高位)、04H (低位)地址单元中。
1).32H+41H+01H+56H+11H+03H2).95H+01H+02H+44H+48H+12H3).54H+0F6H+1BH+20H+04H+0C1H3.数据排序将内部RAM地址单元30H—3FH中的16个数据按小到大的顺序重新排序。
实验二多字节加、减运算实验一.实验目的和要求1.掌握多字节数的加、减法运算;2.进一步熟悉实验系统的使用方法;3.进一步熟悉汇编程序的调试过程;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数的加法2.多字节无符号数减法入口:被减数低字节地址在R0,减数低字节数地址在R1,字节数在R2;出口:差的低字节地址在R0。
字节数在R3。
3.多字节十进制BCD码减法入口:被减数低字节地址在R1,减数低字节地址在R0,字节数在R2。
89c51中文使用手册

概述该系列单片机是采用高性能的静态80C51设计由先进CMOS工艺制造并带有非易失性Flash程序存储器全部支持12时钟和6时钟操作P89C51X2和P89C52X2/54X2/58X2分别包含128字节和256字节RAM32条I/O口线3个16位定时/计数器6输入4优先级嵌套中断结构1个串行I/O口可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路此外由于器件采用了静态设计可提供很宽的操作频率范围频率可降至0可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU但RAM定时器串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复选型表特性特性y 80C51核心处理单元4k字节FLASH89C51X28k字节FLASH89C52X216k字节FLASH89C54X232k字节FLASH89C58X2128字节RAM89C51X2256字节RAM89C52X2/54X2/58X2布尔处理器全静态操作y 12时钟操作可选6个时钟通过软件或并行编程器y 存储器寻址范围64K字节ROM和64K字节RAMy 电源控制模式―时钟可停止和恢复―空闲模式―掉电模式y 两个工作频率范围6时钟模式时为0到20MHz12时钟模式时为0到33MHzy LQFP, PLCC或DIP封装y 扩展温度范围y 双数据指针y 3个加密位y 4个中断优先级y 6个中断源y 4个8位I/O口y 全双工增强型UART―帧数据错误检测―自动地址识别y 3个16位定时/计数器T0T1标准80C51和增加的T2捕获和比较y 可编程时钟输出y 异步端口复位y 低EMI (禁止ALE以及6时钟模式)y 掉电模式可通过外部中断唤醒订购信息P89C51X24K字节FLASH类型编号封装温度范围()P89C51X2BA PLCC44 0~+70P89C51X2BN DIP40 0~+70P89C51X2BBD LQFP44 0~+70P89C51X2FA PLCC44 -40~+85 P89C52X28K字节FLASH类型编号封装温度范围()P89C52X2BA PLCC44 0~+70P89C52X2BN DIP40 0~+70P89C52X2BBD LQFP44 0~+70P89C52X2FA PLCC44 -40~+85 P89C52X2FN DIP40 -40~+85 P89C52X2FBD LQFP44 -40~+85 P89C54X216K字节FLASH类型编号封装温度范围()P89C54X2BA PLCC44 0~+70P89C54X2BN DIP40 0~+70P89C54X2BBD LQFP44 0~+70P89C54X2FA PLCC44 -40~+85 P89C58X232K字节FLASH类型编号封装温度范围()P89C58X2BA PLCC44 0~+70P89C58X2BN DIP40 0~+70P89C58X2BBD LQFP44 0~+70P89C58X2FA PLCC44 -40~+85B=07040+85下表所示为操作模式电源电压以及最大外部时钟频率之间的关系操作模式电源电压最大时钟频率6-clock 5V10% 20MHz 12-clock 5V10% 33MHz框图1逻辑符号PLCC和CLCC封装及管脚功能DIP 封装及管脚功能 LQFP 封装及管脚功能管脚描述 管脚号名称 DIP LCC QFP 类型 名称和功能Vss 20 22 16I地 Vcc 40 44 38 I电源提供掉电空闲正常工作电压P0.0-0.739-32 43-36 37-30 I/O P0口 P0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入P0也可以在访问外部程序存储器时作地址的低字节在访问外部数据存储器时作数据总线此时通过内部强上拉输出1P1.0-1.7 1-8 1 22-92 340-44 1-3I/O P1口 P1口是带内部上拉的双向I/O 口向P1口写入1时P1口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P1口会因为内部上拉而输出电流(见DC 电气特性)P1口第2功能T2(P1.0) 定时/计数器2的外部计数输入/时钟输出(见可编程输出)T2EX(P1.1)定时/计数器2重装载/捕捉/方向控制P2.0-2.7 21-28 24-31 18-25 I/O P2口 P2口是带内部上拉的双向I/O 口向P2口写入1时P2口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P2口会因为内部上拉而输出电流(见DC 电气特性)在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址(MOVX @DPTR)此时通过内部强上拉传送1当使用8位寻址方式(MOV@Ri)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容P3口P3口被内部上拉为高电平可用作输入口输入脚时口会因为内部上拉而输出电电气特性)串行输入口INT0(P3.2)INT1(P3.3)WR(P3.6)当晶振在运行中期高电平即可复位内部有扩散电阻连接到VssVcc输出脉冲锁存地在正常情况下ALE输出信号恒定为并可用作外部时钟或定时注意每次访问外部数据时一个ALE可以通过置位ALE只能在执行程序存储使能当执行外部程序存储器代码时个机器周期被激活两次在访问外部数据存储器时访问内部程序存储器时外部寻址使能在访问整个外部程序存储器时如果EA将执行内部程序除非程序计数器包含大于片内FLASH的地址该引脚在(Vpp)如果保密位已编程在复位时由内部锁存反相振荡放大器输入和内部时钟发生电路输入反相振荡放大器输出注: 为了避免上电时的”latch-up”效应任意管脚Vpp除外上的电压任何时候都不能高于Vcc+0.5V低于Vss-0.5V表1 P89C51X2/52X2/54X2/58X2 特殊功能寄存器双字节指针高字节*号的#80C51修改而来或新增加的表示保留位1复位值由复位源确定存储器的内容存储单先进的沟道氧化工艺和低内部电场的结合使擦除和编程操作特性y 可编程加密位y 每字节最少10000次擦除/编程周期 y 数据最少可保存10年y 从一般销售商处可获得编程支持振荡器特性XTAL1和XTAL2为输入和输出可分别作为一个反相放大器的输入和输出此管脚可配置为使用内部振荡器要使用外部时钟源驱动器件时XTAL2可以不连接而由XTAL1驱动外部时钟信号无占空比的要求因为时钟通过触发器二分频输入到内部时钟电路但高低电平的最长和最短时间必须符合手册的规定时钟控制寄存器CKCON该器件提供通过一个SFR 位CKCON 的X2位和一个Flash 位保密块中的FX2控制选择6时钟/12时钟模式当X2置0时12时钟模式有效该位置1时系统切换到6时钟模式由于该功能是通过SFR 位实现的因此可以随时访问并修改需要注意的是将X2从0改为1将导致用户代码以两倍的速度执行因为所有的系统时间间隔都变成原来的1/2从6时钟模式变为12时钟模式会将运行代码的速度降低为1/2Flash 时钟控制位FX2可通过并行编程器编程取代X2位实现6时钟模式见表2表2FX2时钟模式位只能通过并行编程器设置X2位CKCON.0CPU 时钟模式擦除 0 12时钟模式默认擦除 1 6时钟模式 编程 X 6时钟模式可编程时钟输出可从P1.0编程输出50%占空比的时钟信号P1.0除了作为常规I/O 口外还有两个可选功能它可编程为1用于定时/计数器2的外部时钟输入2使用16MHz操作频率时12时钟模式下输出50%占空比的61Hz~4MHz时钟信号6时钟模式时为122Hz~8MHz要将定时/计数器2配置为时钟发生器C/T2(T2CON.1)必须清零而T2MOD中的T20E位必须置位要启动定时器2还必须将TR2(T2CON.2)置位时钟输出频率由振荡器频率和定时器2捕获寄存器的重新装入值确定公式如下振荡器频率n65536RCAP2H,RCAP2L此处n = 166时钟模式或3212时钟模式RCAP2H,RCAP2L RCAP2H和RCAP2L的内容作为一个16位无符号整数在时钟输出模式中定时器2的翻转将不会产生中断这和它作为波特率发生器时相似定时器2可同时作为波特率发生器和时钟发生器但需要注意的是波特率和时钟输出频率相同复位在振荡器工作时将RST脚保持至少两个机器周期高电平12时钟模式为24个振荡器周期6时钟模式为12振荡器周期可实现复位为了保证上电复位的可靠RST保持高电平的时间至少为振荡器启动时间通常为几个毫秒再加上两个机器周期复位后振荡器以12时钟模式运行当已通过并行编程器设置为6时钟模式时除外低功耗模式时钟停止模式静态设计使时钟频率可以降至0MHz(停止)当振荡器停振时RAM和SFR的值保持不变该模式允许逐步应用并可将时钟频率降至任意值以实现系统功耗的降低如要实现最低功耗则建议使用掉电模式空闲模式空闲模式见表3中CPU进入睡眠状态但片内的外围电路仍然保持工作状态正常操作模式的最后一条指令执行进入空闲模式空闲模式下CPU内容片内RAM和所有SFR保持原来的值任何被使能的中断此时程序从中断服务程序处恢复并继续执行或硬件复位与上电复位使用相同的方式启动处理器均可终止空闲模式掉电模式为了进一步降低功耗通过软件可实现掉电模式(见表3)该模式中振荡器停振并且在最后一条指令执行进入掉电模式降到2.0V时片内RAM和SFR保持原值在退出掉电模式之前Vcc必须升至规定的最低操作电压硬件复位或外部中断均可结束掉电模式硬件复位使所有的SFR重新设置但不改变片内RAM的值外部中断允许SFR和片内RAM都保持原值WUPD AUXR1.3从掉电唤醒使能或禁止通过外部中断唤醒掉电WUPD0禁止WUPD=1使能要正确退出掉电模式在Vcc恢复到正常操作电压范围之后复位或外部中断开始执行并且要保持足够长的时间 ( 通常小于10ms )以使振荡器重新启动并稳定下来使用外部中断退出掉电模式时INT0和INT1必须使能且配置为电平触发将管脚电平拉低使振荡器重新启动退出掉电模式后将管脚恢复为高电平一旦中断被响应RETI之后所执行的是进入掉电模式指令的后一条指令表3 空闲模式和掉电模式时外部管脚的状态器件在内部复位之前从停止处恢复程序正常运行时间为这段时间内片内硬件禁止对内部RAM但对当Idle模式被复位所中为了消除可能产生的误写操作应用模式指令后的指令不应执行写I/O口或写外部存储器操作进入件将ALE保持低电平模式时口处于悬浮状态持工作状态器件处于该模式时可用仿真器或测试CPU驱动电路执行正常复位时恢复正常操作定时器0和1的操作定时器0和1定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择这两个定时/计数器有4种操作模式通过TMOD的M1和M0选择两个定时/计数器的模式01和2都相同模式3不同如下所述模式0将定时器设置成模式0时类似8048定时器即8 位计数器带32分频的预分频器图2所示为模式0工作方式此模式下定时器寄存器配置为13位寄存器当计数从全为1翻转为全为0时定时器中断标志位TFn置位当TRn=1同时GATE=0或INTn=1时定时器计数置位GATE时允许由外部输入INTn 控制定时器这样可实现脉宽测量TRn为TCON寄存器内的控制位图3该13位寄存器包含THn全部8个位及TLn的低5位TLn的高3位不定可将其忽略置位运行标志TRn不能清零此寄存器模式0的操作对于定时器0及定时器1都是相同的两个不同的GATE位TMOD.7和TMOD.3分别分配给定时器0及定时器1模式1模式1除了使用了THn及TLn全部16位外其它与模式0相同模式2此模式下定时器寄存器作为可自动重装的8位计数器TLn如图4所示TLn的溢出不仅置位TFn而且将THn内容重新装入TLn THn内容由软件预置重装时THn内容不变模式2的操作对于定时器0及定时器1是相同的模式3在模式3中定时器1停止计数效果与将TR1设置为0相同此模式下定时器0的TL0及TH0作为两个独立的8位计数器图5为模式3时的定时器0逻辑TL0C/T GATETR0TH0TF1此时TH0控制定时器中断可用于需要一个额外的位定时器的场合定时器时80C513个定时计数器当定时器时定时器可通过开关进入它仍可用作串行端口的波特或者应用于任何不要求中断的场合复位值2 1 0 置位时只有在计数器清零时计数器用作定时器或计数器清零则用作定时器从内部系统时钟输入置位用作计数器从脚输入定时器模式选择定时器模式无预分频器当溢出时将计数器控制位控制1控制位控制图1 定时/计数器0/1模式控制寄存器TMOD图2 定时/计数器0/1的模式013位定时/计数器Interrupt00H定时计数器溢出时由硬件置位中断处理时由硬件运行控制位定时计数器溢出时由硬件置位中断处理时由硬件运行控制位由软件置位由软件置位图3 定时器/计数器控制寄存器TCON图4 定时/计数器0/1的模式28位自动重装Interrupt通过设置特殊功能寄存器位可将其作为定时见图6定时器有三种操作模式捕获递增或递减计数和波特率发生这三种模式由T2CON 中的位进行选择见表3捕获模式通过EXEN2设置两个选项如果定时器由T2CON TF2溢出标志位该位可用于产生IE 中断使能位如果EXEN21与以上描述相同即外部输入时将定时器2TL2和的当前值各自捕获到RCAP2L EXF22溢出中断地址相同定时器中断服务程序通过查询来确定引起中断的事件捕获模式如图在该模式中TL2计数器仍以跳变或振荡频率的1/12或6时钟模式递增递减计数器位自动重装模式中2可通过C/T2配置为定时器的方向是由DCEN 递减计数使能位确定的DCEN 位于T2MOD 寄存器见图8中当DCEN 0时定时器2默认为向上计数当DCEN 1时定时器2可通过T2EX 确定递增或递减计数图9显示了当DCEN 0时定时器2自动递增计数在该模式中通过设置EXEN2位进行选择如果EXEN2定时器2递增计数到0FFFFH 并在溢出后将TF2置位然后将RCAP2L 和RCAP2H 中的16位值作为重新装载值装入定时器2RCAP2L 和RCAP2H 的值是通过软件预设的如果EXEN2116位重新装载可通过溢出或T2EX 从10的负跳变实现此负跳变同时将EXF2置位如果定时器2中断被使能则当TF2或EXF2置1时产生中断在图10中DCEN 1时定时器2可递增或递减计数此模式允许T2EX 控制计数的方向当T2EX 置1时定时器2递增计数计数到0FFFFH 后溢出并置位TF2还将产生中断如果中断被使能定时器2的溢出将使RCAP2L 和RCAP2H 中的16位值作为重新装载值放入TL2和TH2当T2EX 置零时将使定时器2递减计数当TL2和TH2计数到等于RCAP2L 和RCAP2H 时定时器产生溢出定时器2溢出置位TF2并将0FFFFH 重新装入TL2和TH2当定时器2递增/递减产生溢出时外部标志位EXF2翻转如果需要可将EXF2位作为第17位在此模式中EXF2标志不会产生中断表4 定时器2工作方式图6 定时器/计数器2T2CON 控制寄存器溢出标志定时器溢出时置位必须由软件清除当TCLK 1时TF2将不会置位外部标志当EXEN21且的负跳变产生捕获或重装时置位定时器2中断使能时EXF21从中断向量处执行中断子程序EXF2位必须用软件清零在递增式DCEN 1中EXF2不会引起中断接收时钟标志RCLK 置位时定时器的溢出脉冲作为串行口模式模式的接收时钟RCLK 0时将定时器的溢出脉冲作为接收时钟发送时钟标志TCLK 置位时定时器和的发送时钟TCLK 0时将定时器的溢出脉冲作为发送时钟外部使能标志当其置位且定时器未作为串行口时钟时允的负跳变产生捕获或重装EXEN20时T2EX 的跳变对定时无效启动停止控制位置时启动定时器计数器选择定时器20内部定时器OSC/12或OSC/61外部事件计数器下降沿触发重装标志置位EXEN21T2EX 的负跳变产生捕获清零EXEN21时定时器2溢出或的负跳变都可使定时器自动重装RCLK 1TCLK 1时该位无效且定时器强制为溢出时自动重装图7 定时器2捕获模式保留将来之用2输出使能位定时器这些位在将来8051这种情况下以后用到复位时或非有效状态时而这些位为有效状态时它的值为1从保留位读到的值是不确定的图8 定时器2模式T2MOD 控制寄存器图9 定时器2自动重装模式DCEN=0EXEN 2T imer 2InterruptEXEN 2T IME R2图10 定时器2自动重装模式DCEN=1图11 定时器2波特率发生器模式波特率发生器模式寄存器T2CON 的位TCLK 和或RCLK 见表3允许从定时器1或定时器2获得串行口发送和接收的波特率当TCLK=0时定时器1作为串行口发送波特率发生器当TCLK=1时定时器2作为串行口发送波特率发生器RCLK 对串行口接收波特率有同样的作用通过这两位串行口能得到不同的接收和发送波特率 一个通过定时器1产生另一个通过定时器2产生图11所示为定时器2工作在波特率发生器模式与自动重装模式相似当TH2溢出时波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2H 和RCAP2L 的16位的值寄存器RCAP2H 和RCAP2LR 的值由软件预置当工作于模式1和模式3时波特率由下面给出的定时器2溢出率所决定定时器2溢出速率16定时器可配置成定时或计数方式在许多应用上定时器被设置在定时方式C/T2*=0当定时器2作为定时器时它的操作不同于波特率发生器通常定时器2作为定时器它会在每个机器周期递增1/6或1/12振荡频率当定时器2作为波特率发生器时它会在每个状态周期递增例如1/2振荡频率这样波特率公式如下模式1和模式3的波特率=(UP C OUNTING R E LOADV ALUE)T2EX PINEXEN 2RXClock TXClockT imer 1OverflowNote availability of additional external interrupt.[65536n = 166或12时钟模式RCAP2H,RCAP2L)=RCAP2H 的内容为11所示定时器作为波特率发生器仅当寄存器RCLK 和或TCLK=1定作为波特率发生器才有效溢出并不置位TF2也不产生中断这样当定时器中断不必被禁止外部使能标志被置位在中1的转换会置位EXF2T2外部标志位但并不导致TH2重装载RCAP2H RCAP2L因当定时器用作波特率发生器时如果需要可用作附加的外部中断当计时器工作在波特率发生器模式下,则不要对TH2和进行读写每隔一个状态时间或定时器在此情况下对进行读写是不准确的可对RCAP2但不要进行写否则将导致自动重装错误当对定时器进行访问时应关闭定清零表列出了常用的波特率和如何用定时器得到这些波特率表由定时器外部时钟信号由波特率为2溢出率则波特率为[n[65536(RCAP2H,RCAP2L)]]此处 n = 166时钟模式或3212时钟模式f OSC = 振荡器频率 自动重装值可由下式得到RCAP2H,RCAP2L=65536-[fosc/(n波特率)]定时器/计数器2的设置除了波特率发生器模式T2CON 不包括TR2位的设置TR2位需单独设置来启动定时器表6表7给出了T2作为定时器和计数器的设置表6 T2作为定时器T2CON模式内部控制注1外部控制注216位重装00H 08H16位捕获01H 09H波特率发生器接收和发送相同波特率34H 36H只接收24H 26H只发送14H 16H 表7 T2作为计数器TMOD模式内部控制注1外部控制注216位02H 0AH自动重装03H 0BH注1.仅当定时器溢出时进行捕获和重装2.当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装定时器2用于波特率发生器模式除外全双工增强型UART标准UART操作串口为全双工结构表示可以同时发送和接收它还具有接收缓冲在第一个字节从寄存器读出之前可以开始接收第二个字节但是如果第二个字节接收完毕时第一个字节仍未读出其中一个字节将会丢失串口的发送和接收寄存器都是通过SFR SBUF进行访问的写入SBUF的数据装入发送寄存器对SBUF 的读操作是对物理上分开的接收寄存器进行访问串口有4种操作模式模式0串行数据通过RxD进出TxD输出时钟每次发送或接收以LSB最低位作首位每次8位波特率固定为MCU时钟频率的1/12模式1TxD脚发送RxD脚接收每次数据为10位一个起始位08个数据位LSB在前及一个停止位1当接收数据时停止位存于SCON的RB8内波特率可变由定时器1溢出速率决定模式2TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB在前一个可编程第9位数据及一个停止位1发送时第9个数据位SCON内TB8位可置为0或1例如将奇偶位PSW内P位移至TB8接收时第9位数据存入SCON的RB8位停止位忽略波特率可编程为MCU时钟频率的1/32或1/64由PCON内SMOD1位决定模式3TxD脚发送RxD脚接收每次数据为11位一个起始位08个数据位LSB为首位一可编程的第9位数据及一个停止位1事实上模式3除了波特率外均与模式2相同其波特率可变并由定时器1溢出率决定在上述4种模式中发送过程是以任意一条以写SBUF作为目标寄存器的指令开始的模式0时接收通过设置R1=0及REN=1初始化其它模式下如若REN=1则通过起始位初始化多机通信UART模式2及模式3有一个专门的应用领域即多机通信在这些模式时接收为9位数据第9位存入RB8接下来为停止位UART可编程为接收到停止位时仅当RB8=1时串口中断才有效可通过置位SCON内SM2位来选择这一特性下述为多机系统利用这一特性的一种方法当主机需要发送一数据块给数台从机之一时首先发送出一个地址字节对目标从机进行识别地址与数据字节通过第9位数据区别其中地址字节的第9位为1而数据字节为0SM2=1时数据字节不会使各从机产生中断而地址字节则令所有从机中断这样各从机可以检查接收到的数据判断是否被寻址被寻址的从机即可清除SM2位以准备接收随后数据内容未被寻址的从机的SM2位仍为1则不理睬随后数据继续各自工作模式0时SM2无效模式1时SM2用于检验停止位是否有效在模式1时如果SM2=1那么只有接收到有效的结束位才可产生接收中断串行端口控制寄存器SCON串行端口控制及状态寄存器即SCON如图12所示其中包括模式选择位以及发送和接收的第9位数据TB8及RB8以及串行端口中断位TI及RISCON 地址98H7 6 5 4 3 2 1 0可位寻址复位值 00H SM0/FE SM1 SM2 REN TB8 RB8 TI RI 位符号功能SCON.7 FE 帧错误位当检测到一个无效停止位时通过UART接收器设置该位但它必须由软件清零要使该位有效PCON寄存器中的SMOD0位必须置1SCON.7 SM0 和SM1定义串口操作模式要使该位有效PCON寄存器中的SMOD0必须置0SCON.6 SM1 和SM0定义串行口操作模式见下表SM0 SM1 UART模式波特率0 0 0同步移位寄存器fosc/12或fosc/6取决于时钟模式0 1 18位UART 可变1 0 29位UART fosc /64或fosc /321 1 39位UART 可变SCON.5 SM2 在模式2和3中多处理机通信使能位在模式2或3中若SM2=1且接收到的第9位数据RB8是0则RI接收中断标志不会被激活在模式1中若SM2=1且没有接收到有效的停止位则RI不会被激活在模式0中SM2必须是0SCON.4 REN 允许接收位由软件置位或清除REN=1时允许接收REN=0时禁止接收SCON.3 TB8 模式2和3中发送的第9位数据可以按需要由软件置位或清除SCON.2 RB8 模式2和3中已接收的第9位数据在模式1中或sm2=0RB8是已接收的停止位在模式0中RB8未用SCON.1 TI 发送中断标志模式0中在发送完第8位数据时由硬件置位其它模式中在发送停止位之初由硬件置位在任何模式中都必须由软件来清除TISCON. 0 RI 接收中断标志模式0中接收第8位结束时由硬件置位其它模式中在接收停止位的中间时刻由硬件置位在任何模式(SM2所述情况除外)必须由软件清除RI图12 串行控制寄存器SCON波特率操作模式0的波特率是固定的为fosc/12模式2的波特率是MCU 时钟/64或MCU 时钟/32取决于PCON 寄存器中的SMOD1位的值若SMOD1=0复位值波特率为MCU 时钟/64若SMOD1=1波特率为MCU时钟/32在80C51中模式1和模式3的波特率由定时器1的溢出速率决定使用定时器1作波特率发生器 当定时器1用作波特率发生器模式1和3中波特率由定时器1的溢出速率和SMOD1的值决定在此应用中定时器1不能用作中断定时器1可以工作在定时或计数方式和3种工作模式中任何一个在最典型应用中它用作定时器方式工作自动重装载模式TMOD 的高半字节为0010B 它的波特率值由下式给出可以定时器1的中断实现非常低的波特率将定时器配置为16位定时器TMOD 的高半字节为0001B并使用中断进行16位软件重装图13列出了几个常用的波特率以及如何从定时器1获得OS CSMOD图13 由定时器1产生的通用波特率UART 模式0串行数据由RxD 端出入TxD 输出同步移位时钟发送或接收的是8位数据低位在先其波特率固定为MCU 时钟的1/12图14是串行口模式0的功能方框简图及相关的时序图执行任何一条把SBUF 作为目的寄存器的指令时就开始发送S6P2时刻的写SBUF 信号将1装入发送移位寄存器的第9位并通知发送控制部分开始发送写SBUF 信号有效后一个完整的机器周期后SEND 端有效SEND 使能RxD P3.0端送出数据TxD P3.1输出移位时钟每个机器周期的S3S4及S5状态内移位时钟为低电平而S6S1及S2状态内为高在SEND 有效时每一机器周期的S6P2时刻发送移位寄存器的内容右移一位数据位向右移时左边添加零当数据字节最高位MSB 移到移位寄存器的输出端时其左边是装入1的第9位再左的内容均为0, 此时通知Tx 控制模块进行最后一位移位处理后禁止SEND 并置位T1, 所有这些步骤均在写入SBUF 后第10个机器周期的S1P1时进行的接收初始化条件是REN=1及R1=0下一机器周期的S6P2时RX 控制单元向接收移位寄存器写入1111 1110并在下一个时钟使RECEIVE 端有效RECEIVE 使能移位时钟转换P3.1功能移位时钟在每个机器周期的S3P1及S6P1跳变在RECEIVE 有效时每一机器周期的S6P2时刻接收移位寄存器内容向左移一位从右移位进来的值是该机器周期S5P2。
飞利浦 ISP 89C51 PHILIPS实验板 说明书

ISP 89C51 PHILIPS 实验板说明书一、简介本实验板是为单片机初学者设计的一套实验兼开发的工具,能帮助你快速学会和掌握单片机基础知识。
本实验板可外接16*2液晶显示模块,并拥有万用板区,用户可根据自己的需要,随意加减外设,达到学习跟多方面知识的目的。
用户可利用Flash Magic 在线下载软件,即可在线下载程序 。
二、产品包括:(*注CD 中包括说明书,驱动程序,芯片资料和演示程序)序号 名称 数量1 ISP 试验板 1块2 RS232串口线 1条3 安装CD 1张 4说明书1份本实验板使用PHILIPS 的89C60X2芯片,可在线下载,16x2点阵液晶的驱动程序。
三、CON2管脚输出表(LCD 显示器)四、ISP 功能使用方法要运用ISP 功能第一步先要安装应用程序,打开光盘→选择“应用程序”→ 双击“WINISP ”您会见到如图:单击Next,会见到如下:2选择“I accept the agreement”,再单击“Next”,您会见到下图,请选择安装路径之后单击“Next”。
(PS::剩下步骤都单击“Next”)本实验板的ISP功能利用Flash Magic来实现,以下是使用的具体步骤。
1.先将实验板与PC连接,接法如图:2.打开桌面“开始”→“程序”→“Flash Magic”即可,如下图所视33.打开该程序后会弹出以下提示框,单击“确定”4.出现以下页面。
45. 选定之后单击“Start”,将会进行“擦除”、“编程”“校验”等步骤,直到出现“ Finish”即完成。
(注:这些功能在第4步时用户按自己的需求选定,选定后才会执行)6. 在进行ISP下载之前,需要对板上跳线J3进行设置(2-3短接),然后复位,否则不能与PC连接,软件提示出错。
7. ISP完成后,对跳线进行设置(1-2短接),然后复位。
实验板正常运行。
56。
单片机(微机原理)89c51电子时钟实验

天津**大学课程设计任务书课程名称:单片机原理及应用院(系、部、中心): *****专业: ******班级: ***姓名: *** 指导教师: ***电子时钟实验一、设计目的1、进一步掌握定时器的使用功能的使用和编程方法2、进一步掌握中断处理程序的编程方法3、进一步掌握数码显示电路的驱动方法二、设计要求利用CPU的定时器和试验仪上的提供的数码显示电路,设计一个电子时钟。
格式如下:XX XX XX 由左向右分别为:时、分、秒三、设备仪器1、LAB6000微控制器试验系统2、PC机一台3、试验导线若干四、试验步骤1、硬件电路设计本试验连接只需要接上显示/键盘的选择信号即可。
显示电路见附表中的键盘及LED显示电路或数码管显示试验。
2、程序框图电子钟程序框图3、程序流程图:OUTSEG EQU 08004H OUTBIT EQU 08002H ORG 0000HAJMP MAINORG 000BHAJMP TIMEORG 0300HMAIN:mov 20h,#00hMOV 21H,#00HMOV 22H,#00HMOV 23H,#00HMOV IP,#02H 、MOV IE,#82HMOV TMOD,#01H 、MOV TL0,#0B0HMOV TH0,#3CHSETB TR0 、MOV SP,#40H 、NEXT: LCALL DISP 、LCALL KEY 、JZ NEXT ;LCALL ANKEY 、SJMP NEXT 、NOPNOPNOPTIME: PUSH ACC PUSH PSWMOV TL0,#0B4H ;¸MOV TH0,#3CHINC 20H ;MOV A,20HCJNE A,#10,RETI1 MOV 20H,#00HMOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETI1 MOV 21H,#00H MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00HMOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00HRETI1: POP PSW ;POP ACCRETI ;NOPNOPDISP: ANL 2FH,#10H ; MOV A,21H ;´ANL A,#0FHORL A,2FHMOV 2FH,AMOV A,21HANL A,#0F0HSWAP AMOV 2EH,AANL 2DH,#10HMOV A,22H ;ANL A,#0FHORL A,2DHMOV 2DH,AMOV A,22HANL A,#0F0HSWAP AMOV 2CH,AANL 2BH,#10HMOV A,23H ;´ANL A,#0FHORL A,2BHMOV 2BH,AMOV A,23HANL A,#0F0HSWAP AMOV 2AH,AMOV R0,#2FHMOV R3,#06HMOV DPTR,#TABLEMOV A,#01HLOOP1: MOV B,A ;MOV DPTR,#OUTBITMOV A,#0MOVX @DPTR,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV DPTR,#OUTSEGMOVX @DPTR,AMOV DPTR,#OUTBITMOV A,BMOVX @DPTR,AMOV R2,#01H ;DJNZ R2,$DEC R0MOV A,BRL ADJNZ R3,LOOP1RETTABLE: db3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHKEY: MOV P3,#0FFH ;MOV A,P3CPL AANL A,#3CHJZ RETXLCALL DISP ;LCALL DISPMOV A,P3CPL AANL A,#3CH JZ RETXMOV R6,ALOOP2: LCALL DISP ; MOV A,P3CPL AANL A,#3CHJNZ LOOP2MOV A,R6RETX: RETNOPNOPANKEY: CLR EA ;LX: MOV A,R6JB ACC.2,L1 ;JB ACC.3,L2JB ACC.4,L3 ;JNB ACC.5,L12 ;JB 2BH.4,L6JB 2DH.4,L8JB 2FH.4,L9L12: LCALL DISP LCALL DISPLCALL KEY JZ L12 LJMP LXL2: MOV 25H,#00H ; CLR 2BH.4CLR 2DH.4CLR 2FH.4SETB EARETL3: JB 2BH.4,L61JB 2DH.4,L81JB 2FH.4,L91AJMP L12L1: MOV A,25HJZ LB1JB ACC.0,LB2JB ACC.1,LB3JNB ACC.2,L12LB1: MOV 25H,#01HSETB 2BH.4CLR 2DH.4CLR 2FH.4AJMP L12LB3: MOV 25H,#04H SETB 2FH.4CLR 2DH.4CLR 2BH.4AJMP L12LB2: MOV 25H,#02H SETB 2DH.4CLR 2BH.4CLR 2FH.4AJMP L12L61: AJMP L611 ; L81: AJMP L811 ; L91: AJMP L911L6: MOV A,23H ADD A,#01HDA AMOV 23H,ACJNE A,#24H,L15 L15: JC L112 MOV 23H,#00HL112: AJMP L12L8: MOV A,22H ; ADD A,#01HDA AMOV 22H,ACJNE A,#60H,L16 L16: JC L112 MOV 22H,#00H AJMP L12 L9: MOV A,21H ADD A,#01HDA AMOV 21H,ACJNE A,#60H,L17 L17: JC L112 MOV 21H,#00H AJMP L12L611: MOV A,23H ADD A,#99HDA AMOV 23H,ACJNE A,#99H,L112 MOV 23H,#23H AJMP L12L811: MOV A,22H ; ADD A,#99HDA AMOV 22H,ACJNE A,#99H,L112 MOV 22H,#59H AJMP L12L911: MOV A,21H ADD A,#99HDA AMOV 21H,ACJNE A,#99H,L112 MOV 21H,#59H AJMP L12NOPNOPEND4、程序调试:调试程序:打开LAB6000软件,录入程序以.ASM保存,编译,全速执行,观察试验结果。
单片机AT89C51

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPERO一Falsh Programmable and Erasable Read Only Memory )的低电压,高性能CMOS位微处理器,俗称单片机。
该器件采用ATMEI高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL勺AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C511 •主要特性:-8031 CPU 与MCS-51 兼容-4字节可编程FLASH存储器(寿命:1000写/擦循环)•全静态工作:0Hz-24KHz;POO [ACH<b] ; .pg. i t3>«苗□甲】:刖4 i4ACi) ;PG. j.530{ADJ) :PO.4J PO.S (ADfr)訂jJ则J J P 0. r (AD7 \ iB rifivpp fl A丄E V PRS13132呻■ D11;ur115<1:PZIM14\1 Z•PJ 3k1孑耐J P2.J (A«3» :* i1 4hP2 2 CA1&] t ■ F ■ 11 54A B > t P Je>(A411 &1 T24» A23■ »20?1H5T/VPP(吧(印P\O C (TXDIP3 1[ XTAL2 rXTAL1 V诽P3.2(INTI「1A P3.3 LP3.4{T1>PS.E4567ad1C□ VQC.:*PI.7I PI)尸讣:J Fl 4J P» 3J P<2J P1.1 |AIN1) Pto (AINO}P9.7AT89C2051rppp1i3-三级程序存储器保密锁定-128*8位内部RAM-3条可编程I/O线•两个16位定时器/计数器・6个中断源•可编程串行通道•低功耗的闲置和掉电模式•片内振荡器和时钟电路2.管脚说明:VCC :供电电压。
基于AT89C51芯片制作的数字时钟课程实训指导书

《单片机产品设计与制作》课程综合实训指导书2010年12月训练任务书一.训练任务利用AT89C51/AT89S51单片机,在以下项目中,由教师提前指定或学生自主选择一个综合产品,作为课程目标,集中一周时间完成产品的设计制作与调试任务,完成作品应通过检测实现规定的功能,并撰写实训报告通过答辩。
要求学生三人一组,分工协作进行。
1、音乐演奏器的设计与制作;2、电子时鈡的设计与制作;3、交通灯控制器的设计与制作;4、小型液晶显示器广告牌的设计与制作;5、利用语音芯片制作的录放机的设计与制作;6、超声波汽车倒车测距仪的设计与制作;7、单片机电机转速红外遥控装置的设计与制作;;8、单片机步进电机控制装置的设计与制作;9、单片机与微型打印机接口电路的设计与制作;10、单片机控制直流电动机PWM调速装置的设计与制作;11、用SMBus实现单片机与AT24C02及SAA1064的串行通信;12、单片机电阻炉温度控制装置的设计与制作。
二.训练目的通过课程实训,初步掌握简单单片机应用系统的设计、制作、调试的方法,培养团队合作精神,训练技术报告的撰写方法。
三.训练形式及进度安排1、团队形式进行,自由组合。
其中一人为项目组长,负责项目的总体设计与实施、软硬件联合调试问题解决、实训报告的撰写;1人负责硬件设计、制作与调试;1人负责软件设计与调试。
2、本次实训推荐制作项目一、音乐演奏器的设计与制作和项目二、电子时鈡的设计与制作,也可选择其它项目。
3、实训进度安排(1)第一天上午:布置任务、分组、确定题目。
(2)第一天下午和晚上:查找资料确定方案,画出系统组成框图、硬件电路图、软件流程图。
(3)第二天上午:同步进行元件购买和软件设计(4)第二天下午和晚上:同步进行软件设计与电路焊接(5)第三天上午:同步进行软件设计与电路焊接(6)第三天下午和晚上:同步进行软件仿真调试和电路调试(7)第四天上午:软硬件联调(8)第四天下午和晚上:软硬件联调,撰写实训报告(每组一份)(9)第五天上午和下午:产品测试与答辩四.电子时钟性能要求1、基本功能:1)上电或按复位键后显示“P”(5分)2)按下启动键后,以数码管形式显示当前的时、分、秒,显示分辨率为秒;(25分)3)具有时间设定按钮,可以设定当前时间(15分);4)计时精度为0.5秒;(5分)以上基本功能必须完成。
STC_89C51单片机学习手册

S7通讯的编程步骤-----自由口通讯 S7-200 通讯的编程步骤---自由口通讯S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯, 因此, 发送和接收指令不能同时执行。
自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。
SMB30/SMB130 各位的定义如下:图 1:通讯口工作模式寄存器使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。
发送指令(XMT) 一、 发送指令(XMT) 使用 XMT 发送指令可以把存于缓冲区中的数据, 一次发送一个或1多个字节的数据,最多为 255 个。
发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表) 。
图 2:中断事件表2发送缓冲区的格式如下表所示:图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。
T+1~T+255:要发送的数据字节和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。
SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。
由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1) 。
接收指令(RCV) 二、 接收指令(RCV) 使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个) ,并存于数据缓冲区。
接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示) 。
接收缓冲区的格式如下表所示:3图 4:接收缓冲区的格式 说明: 说明: T+0:接收字符计数,在接收到结束字符时自动清零 T+1:起始字符,在 SMB88(口 0)或 SMB188(口 1)中定义 T+2~T+244:接收到的数据字节 T+255:结束字符,在 SMB89(口 0)或 SMB189(口 1)中定义和接收有关的寄存器及定义如下表所示:45图 5:接收有关寄存器 说明: 说明: 1、SMB86/SMB186:接收终止状态信息寄存器,含有接收终止原因的信息; 2、SMB88/SMB188:信息起始位字节(如发送的信息有起始位,将把此寄存 器的内容和接受信息的每一字节相比较来, 检测确认后续字节是否是信息。
at89c51led闪烁实验汇编语言

at89c51led闪烁实验汇编语言1. 简介at89c51是一种经典的单片机芯片,被广泛应用于各种嵌入式系统中。
其中,led闪烁实验是单片机入门的必备实验之一,通过这个实验可以初步了解单片机的基本工作原理和汇编语言的编程方法。
2. 实验原理在at89c51单片机中,led是一种常用的输出设备,可以通过控制引脚的高低电平来实现闪烁效果。
通过学习汇编语言的编程方法,我们可以编写程序控制led引脚的状态,从而实现led的闪烁操作。
3. 实验步骤第一步:搭建硬件实验评台,将at89c51单片机与led灯连接。
第二步:编写汇编语言程序,通过设置端口的高低电平来实现led的闪烁效果。
第三步:将编写好的程序下载到at89c51单片机中,进行调试和验证。
4. 实验代码下面是一个简单的at89c51led闪烁实验的汇编语言程序:```assemblyorg 0h ; 程序从位置区域0开始执行mov P1, #0FFh ; 设置P1端口为输出loop:mov P1, #00h ; 将P1端口输出低电平acall delay ; 调用延时程序mov P1, #0FFh ; 将P1端口输出高电平acall delay ; 调用延时程序sjmp loop ; 无条件跳转至loop标号处delay:mov R1, #0Ah ; 设置延时计数值delay1:mov R2, #0FFh ; 设置内部计数值delay2:djnz R2, delay2 ; 内部计数减1djnz R1, delay1 ; 延时计数减1ret ; 返回end ; 程序结束```在这个程序中,我们首先设置P1端口为输出,并在一个循环中不断地将P1端口输出高低电平,通过调用延时程序来实现led的闪烁效果。
5. 实验总结通过这个实验,我们初步了解了at89c51单片机的基本工作原理和汇编语言的编程方法。
在以后的学习中,我们可以通过不断地深入实践和学习,掌握更多单片机和汇编语言的知识,从而实现更加复杂的功能和应用。
基于AT89C51的单片机综合实验设计

式集成温度传感器,能完成对温度信号的采集和
转换工作,并具有体积小、接口简单、使用方便
" 收稿日期: 作者简介:任建强( 用研究
),男,河北霸州人,廊坊师范学院数学系教师,主要从事计算机教育和微型计算机原理与应
··
等优点 其测温范围介于
之间;精
度
;温度输出形式为 位带符号串行二进制
数据 此芯片共三只引 脚: 、 ( )
第 卷第期
廊坊师范学院学报
年月
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
基于
的单片机综合实验设计"
任建强 ,张玲娟
( 廊坊师范学院 数学系,河北 廊坊
; 廊坊师范学院 物理系,河北 廊坊
)
摘 要:采用
单片机为核心,通过其串行口接收来自温度传感器的数据以探测室内温度,并由其 口输
出信号控制继电器通断,由继电器进一步控制加热器通断,从而构成“室温自动控制系统”并设计成综合实验,使学生
对 系列单片机应用系统的开发方法有更为全面的理解
关键词:
;单片机;自动控制
中图分类号:
文献标识码:
文章编号:
()
! 引言
单片机原理及其应用是高校计算机专业、
电子专业及机械专业的一门重要课程 本课
程注重 实 践, 教 学 中 必 须 设 法 安 排 好 实 验,
学生对实际开发过程的理解 因此,我们在
原实验基础之上增设了一些综合实验 本文
基于
设计了一个“室温自动控制系
统”综合实验,以使学生对 系列单片机在
实际中的应用方法有更深入更全面的理解
" 目标系统功能描述
AT89C51单片机实验及入门程序

Mcs-51单片机的引脚功能Vcc, GND: 电源端(+5V/3.3V/2.7V) XTAL1, XTAL2: 片内振荡电路输入、输出端RESET: 复位端(正脉冲有效,宽度>8 mS)EA/Vpp: 寻址外部ROM控制端/编程电源输入端。
ALE/PROG: 地址锁存允许/编程脉冲输入端。
P0口寻址外部低8位地址时接外部锁存器G端;ALE端平时会输出周期正脉冲:f ≈ fosc/6 ;对片内ROM编程时编程脉冲由此端加入。
P3口第二功能表:1.寄存器寻址从寄存器中读取操作数或存放操作数进寄存器例:MOV A,B ;(A)←(B)MOV 30H,R0 ;(30H)←(R0)MOV A,R1 ;(A)←(R1)2.立即寻址操作数直接就出现在指令中例:MOV A,#64H ;(A)←立即数64HADD A,#05H ;(A)←(A)+立即数05H任务一:控制一盏灯点亮JOB1: CLR P1.0 ;P1.0清“0”,亮红灯HERE: AJMP HERE ;原地等待,不做别的事任务二:红灯周期性地亮/灭JOB2: CPL P1.0 ;对P1.0取反:红灯亮/灭ACALL DELAY ;延时1秒AJMP JOB2 ;重复任务三:红外防盗报警JOB3: CLR P1.1 ; P1.1清“0”,亮绿灯REDO: SETB P1.3 ;将P1.3置“1”CHECK:JNB P1.3,CHECK ;检测传感器是否被阻断LOOP: …………;有入侵者,报警!AJMP REDO ;再跳回去检测例:两个十进制数“65”与“58”相加,根据常识,显然其和应当为“123”。
MOV A,#65HADD A,#58HDA A结果:(A)= 23H(CY)= 1任务一:控制一盏灯点亮任务二:红灯周期性亮/灭任务三:红外防盗报警0RG 0000HAJMP MAINORG 0003HRL AACALL DELAYRETIMAIN:MOV A,#80HSETB EX0SETB EAWAIT:JB ACC.0,JOB1JB ACC.1,JOB2JB ACC.2,JOB3AJMP W AITJOB1: CLR P1.0 ;亮红灯HERE: AJMP HEREJOB2: CPL P1.0 ;亮/灭ACALL DELAY ;延时1秒AJMP JOB2 ;重复JOB3: CLR P1.1 ;亮绿灯REDO: SETB P1.3CHECK:JNB P1.3,CHECK LOOP: …………;报警!AJMP REDO ;再检测程序的顺序/分支/循环三种基本结构例4-1:将R2中BCD码数转为二进制数存进R2ORG 2000HBCD2B:MOV A,R2 ;取入口数据ANL A,#0F0H ;取出十位SW AP A ;高4位低4位MOV B,#0AHMUL AB ;十位乘10MOV R3,A ;积暂存进R3MOV A,R2;再取入口数据ANL A,#0FH ;取出个位ADD A,R3MOV R2,A ;结果R2RET ;若不是子程序可用END例4-3-1 设有两个4字节的二进制数2F5BA7C3H和14DF35B8H,分别放在以40H和50H 为起始地址的单元中(低位在低地址),试编程求这个数之和,结果放在以40H为起始地址的单元中。
89C51实验三定时计数器实验

成绩实验报告实验名称定时计数器实验实验班级电子08-2姓名何达清学号12(后两位)指导教师实验日期2010年11月12日实验三定时/计数器实验一、实验目的1、掌握数码管的静态和动态扫描显示法。
2、掌握单片机定时计数器的初始化编程。
3、学会运用定时计数器进行单片机控制程序设计。
二、实验内容1、见图一,利用静态扫描显示法,让数码管显示数字6 。
(数码管元件7SEG-MPX1-CA,共阳极数码管)0RG 0000HMOV P0,#82HEND2、见图一,利用静态扫描显示法,让数码管显示数字0。
间隔时间1秒后,显示数字1。
间隔时间1秒后,显示数字2。
………间隔时间1秒后,显示数字F。
间隔时间1秒后,显示数字0 。
周而复始,循环不息。
图一程序如下:ORG 0000HLJMP MAINMAIN:MOV R0,#0FFHLOOP:INC R0CJNE R0,#16,SHOWMOV R0,#0SHOW:MOV A,R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AACALL DELAY1SAJMP LOOPDELAY1S: ;误差0usMOV R7,#0A7HDL1:MOV R6,#0ABHDL0:MOV R5,#10HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1NOPRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH END3、见图二,利用动态扫描显示法,,让数码管显示数字01234567 。
(数码管元件7SEG-MPX8-CA-BLUE,共阳极数码管)图二程序如下:ORG 0000HAJMP MAINORG 000BHAJMP TEFORG 33HMAIN:MOV SP,#60HMOV R4,#0MOV R3,#80HMOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB ET0SETB EASETB TR0LP:CJNE R4,#8,NEXTMOV R4,#0NEXT:MOV A,R4MOV DPTR,#TABMOVC A,@A+DPTRMOV R5,AAJMP LPTEF:PUSH ACCMOV A,R3RL AMOV P1,AMOV P2,R5INC R4MOV R3,APOP ACCRETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH END4、见图二,利用动态扫描显示法,,让数码管显示数字12.34.56,每隔一秒,数字变化相当于时间计时器。
单片机实验1-19

实验一开关量输入输出实验一、实验要求1.利用ATC89C51单片机的P0口作开关量输入口,P1口作开关量输出口;2.当P0.x端开关闭合时,对应的P1.x口的LED发光二极管点亮;当P0.x端开关断开时,对应的P1.x口的LED发光二极管不亮;3.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路。
4.完成全部程序和电路调试工作。
二、实验目的1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;三、设计提示1.P0口作I/O端口使用时需要上拉电阻;2.程序设计使用需要循环语句;四、主要元件实验二继电器控制输出实验一、实验要求1.利用AT89C51单片机的P1.2、P1.3口作开关量输入,P1.0和P1.1口作开关量输出,并控制一个5V的继电器和蜂鸣器,同时该继电器又控制一个220V,1Hz的交流回路,在该交流回路中有一个220V,200W的直流灯泡;2.当P1.2端开关闭合时,P1.0控制继电器闭合并控制灯泡闪亮;当P1.2端开关断开时,继电器触电断开,灯泡不亮;3.P1.0控制继电器需要采用三极管驱动放大;4.当P1.3端开关闭合时,P1.1控制蜂鸣器闭合并发出声音;当P1.3端开关断开时,蜂鸣器不响;5.P1.1控制蜂鸣器采用三极管驱动放大;6.画出AT89C51实现上述功能的完整电路图,包括单片机电源、复位电路、晶振电路和控制电路;7.完成全部程序和电路调试工作。
二、实验目的1.掌握AT89C51单片机的最基本电路的设计;2.了解单片机I/O端口的使用方法;3.了解继电器和蜂鸣器控制电路以及小电压控制大电压的方法三、设计提示1.在PROTEUS中无交流灯泡,采用1Hz交流电的目的是为了便于观察;2.为了防止继电器线圈断开时反电动势对三极管造成最好在继电器线圈两端并上一个肖特基二极管。
3. 由于采用5V蜂鸣器,三极管端也有压降,为了保证蜂鸣器鸣叫,需要将蜂鸣器内阻改为470欧姆左右。
AT89C51实验报告(DOC)

实验一MCS-51指令系统实验——数据排序一、实验目的熟悉MCS-51指令系统,掌握程序设计方法;加深对内部存储器读写的认识;熟悉仿真开发环境,学会源程序的编写、汇编/编译、调试;熟悉单片机硬件实验系统以及良好的实验习惯培养等;学会检查结果的正确性。
二、实验内容将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM,然后用冒泡法对其按从小到大的次序重新排列,并送到外部RAM 以8000H开始的地址单元内。
三、实验说明有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
四、程序流程图五、调试程序;第一步:将程序存储器的一个列表中的10个单字节无符号数据传送到内部RAM 40H~49H单元中。
ORG 0000HLJMP START1ORG 0030HSTART1: MOV R0,#40H ;设置R0为内部RAM首地址MOV R1,#10 ;设Rl为计数器MOV DPTR,#TAB1LOOP1: CLR A ; 累加器清零MOVC A,@A+DPTR ;外部数据送累加器A中MOV @R0,A ;送内部RAMINC R0 ;调整内部RAM指针,指向下一个数据INC DPTR ;调整外部RAM指针;第二步:排序。
把片内RAM 40H~49H单元中的10个无符号数逐一比较,并按从小到大的顺序依次排列在这片单元中。
START2: CLR F0 ;清除交换标志位F0MOV R3,#9 ;10个数据循环次数MOV R0,#40H ;数据存放区首址MOV A,@R0 ;取前数L2: INC R0MOV R2,A ;保存前数SUBB A,@R0 ;前数减后数MOV A,R2 ;恢复前数JC L1 ;顺序则继续比较SETB F0 ;逆序则建立标志位XCH A,@R0 ;前数与后数交换DEC R0 ;指向前数单元XCH A,@R0INC R0 ;仍指向后数单元L1: MOV A,@R0 ;取下一个数DJNZ R3,L2 ;依次重复比较JB F0,START2 ;交换后重新比较;第三步:将内部数据RAM中40H~49H单元的内容传送到外部数据存储器以8000H开始的连续单元中去。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录实验一系统认识实验 (2)实验二多字节加、减运算实验 (3)实验三多字节乘、除法运算实验 (4)实验四代码转换实验 (5)实验五布尔操作实验 (6)实验六中断系统实验 (7)实验七定时器/计数器实验 (9)实验八串行通讯接口实验 (12)实验九串并转换实验 (16)实验十存储器扩展实验 (18)实验十一8155键盘及显示接口实验 (20)实验十二ADC0809(模/数转换) (24)实验十三 DAC0832(数/模转换) (26)实验十四步进电机实验 (29)实验十五直流电机调速控制实验 (32)附录Windows版Wmd51 3.0使用说明 (34)实验一系统认识实验一.实验目的和要求1.学习和掌握本实验系统的基本操作;2.总结汇编程序的形成和调试过程;3.掌握循环程序的设计;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.软件延时若系统时钟为6MHZ,要求实现每隔250毫秒将P1.0口取反。
2.无符号数加法计算N个数据的和,即Y=∑Xi (i=1--6)。
若六个数据放在片内RAM的50H——55H地址单元中,求和的结果Y放在内部RAM的03H(高位)、04H (低位)地址单元中。
1).32H+41H+01H+56H+11H+03H2).95H+01H+02H+44H+48H+12H3).54H+0F6H+1BH+20H+04H+0C1H3.数据排序将内部RAM地址单元30H—3FH中的16个数据按小到大的顺序重新排序。
实验二多字节加、减运算实验一.实验目的和要求1.掌握多字节数的加、减法运算;2.进一步熟悉实验系统的使用方法;3.进一步熟悉汇编程序的调试过程;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数的加法2.多字节无符号数减法入口:被减数低字节地址在R0,减数低字节数地址在R1,字节数在R2;出口:差的低字节地址在R0。
字节数在R3。
3.多字节十进制BCD码减法入口:被减数低字节地址在R1,减数低字节地址在R0,字节数在R2。
出口:差(补码)的低字节地址在R0,字节数在R3(07H为符号位。
“0”为正,“1”为负)。
实验三多字节乘、除法运算实验一.实验目的和要求1.掌握多字节数的乘、除法运算;2.进一步熟悉MCS-51指令,了解编程方法;3.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.多字节无符号数乘法入口:被乘数低字节地址在R3,乘数低字节地址在R4,字节数在R5;出口:积低字节地址在R6,字节数在R2。
2.多字节无符号BCD码数除法入口: 30H为被除数低字节地址,40H为除数低字节地址,R3存字节数;出口:50H为商低字节地址,30H为余数低字节地址,74H存商字节数;实验四代码转换实验一.实验目的和要求1.熟悉不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.BCD码转十进制将累加器A中的8位二进制数转换成3位BCD码格式的十进制。
其中,百位数的BCD码放在21H单元中,十位和个位数放在22H单元中。
2.将累加器A中存放的两个BCD码拆开,求它们的乘积,并把乘积以压缩的BCD码形式送回A中。
实验五布尔操作实验一.实验目的和要求1.熟悉MCS-51指令,了解编程方法;2.掌握布尔指令的使用方法;3.了解8051位寻址的地址划分方法;4.画出程序流程图,编制程序并上机调试通过。
二.实验内容编程实现存放在位地址单元里的两个数进行异或运算,运算的结果放在位地址为02H的单元。
实验六中断系统实验一.实验目的和要求1.掌握单片机中断的原理及使用方法;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.通过定时器T1来产生中断控制P1.0线上的脉冲输出,并经三极管驱动扬声器,发出音调信号。
2.实验线路连接示意图ORG 0000HLJMP MAINORG 001BHCPL P1.0RETIORG 1000HMAIN: MOV R1,#00MOV R0,#23HMOV TMOD,#20HMOV IE,#88HL1: MOV DPTR,#3FFFHMOV A,R0INC R0MOVC A,@A+PCJZ MAINMOV R2,AMOV A,#0FFHCLR CSUBB A,R2RL AMOV TH1,ASETB TR1L2: CLR CMOV A,DPLSUBB A,#01MOV DPL,AMOV A,DPHSUBB A,#00MOV DPH,AORL A,DPLJNZ L2CLR TR1SJMP L1DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33HDB 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HDB 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HDB 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39HDB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DH DB 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HDB 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HDB 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHDB 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HDB 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00H, 00HEND实验七定时器/计数器实验一.实验目的和要求1.掌握定时器/计数器的定时方法;2.掌握定时器/计数器的计数方法;3.画出程序流程图,编制程序并上机调试通过。
二.实验内容1.设定两个定时器/计数器工作都为定时模式0,分别控制从P1.0和P1.2发出一个方波,用示波器测量其周期。
2.将定时器/计数器T1设定为计数器工作模式,计数容量为10,计数到后产生中断,中断服务产生一个方波由P1.1输出(计数脉冲由T1输入)。
实验线路连接示意图:ORG 0000HLJMP MAINORG 000BHCPL P1.1MOV TH0,#0F8HMOV TL0,#06HRETIORG 001BHCPL P1.2MOV TH1,#0F8HMOV TL1,#06HRETIORG 1000H MAIN: MOV TH0,#0F8H MOV TL0,#06H MOV TH1,#0F8H MOV TL1,#06H MOV TMOD,#00H MOV TCON,#50H MOV IE,#8AHL1: SJMP L1END3.测量脉冲的宽度。
设定定时器/计数器T1以模式1方式工作、外部中断INT1下降沿中断,测量INT1端的脉冲宽度。
实验线路连接示意图:实验八串行通讯接口实验一.实验目的和要求1.掌握8031单片机串行口的工作方式;2.画出程序流程图,编制程序并上机调试通过。
二.实验内容分别采用查询和中断的不同工作方式,按照自发自收的连接方式(将8031的TXD 和RXD连接起来),把内部RAM的30H-3FH中的数据通过串行口发出,再通过串行口接收,存放在内部RAM的40H-4FH单元中。
实验程序如下:;查询串行传输方式SUART1.ASM;本程序是将内部RAM30H~3AH单元中的数据转存到内部RAM40H~4AH单元;ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60HMOV 30H,#00H ;设置要发送的数据MOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV 34H,#44HMOV 35H,#55HMOV 36H,#66HMOV 37H,#77HMOV 38H,#88HMOV 39H,#99HMOV 3AH,#0AAHMOV 3BH,#0BBHMOV 3CH,#0CCHMOV 3DH,#0DDHMOV 3EH,#0EEHMOV 3FH,#0FFHMOV SCON,#50H ;串行口工作于方式1(0101 0000 B),即十位异步收发方式,;允许接收MOV TMOD,#20H ;T1工作于方式2,作为波特率发生器波特率=2SMOD/32 X T1 MOV TH1,#0F3H ;自动再装载数据MOV TL1,#0F3H ;加1计数器MOV 87H,#80H ;设定PCON波特率加倍MOV R2,#00H ;设置发送数据计数器MOV R0,#30H ;设置发送数据首地址MOV R1,#40H ;设置接收数据首地址SETB TR1 ;启动波特率发生器SEND: MOV A,@R0 ;取发送数据MOV SBUF,A ;启动发送SEND1:JBC TI,NEXT1 ;判TI位变量并清零TI,数据发送完毕则转NEXT1SJMP SEND1NEXT1:JBC RI,NEXT2 ;判RI位变量并清零RI,一个数据接收完毕则转NEXT2 SJMP NEXT1NEXT2:MOV A,SBUF ;读取数据GOOD: MOV @R1,A;INC R0 ;指向下一个发送数据存储单元INC R1 ;指向下一个接收数据存储单元INC R2 ;计数器加1CJNE R2,#10H,SEND;十六个数据发送完毕吗?未完转SEND继续SJMP $END;中断串行传输方式--自发自收SUART2.ASM;本程序是将内部RAM30H~3AH单元中的数据转存到内部RAM40H~4AH单元;;主程序ORG 0000HLJMP MAINORG 0023HLJMP L4ORG 0100HMAIN:MOV SP,#60H ;设置堆栈MOV 30H,#0CCH ;初始化数据MOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV 34H,#44HMOV 35H,#55HMOV 36H,#66HMOV 37H,#77HMOV 38H,#88HMOV 39H,#99HMOV 3AH,#0AAHMOV 3BH,#0BBHMOV 3CH,#0CCHMOV 3DH,#0DDHMOV 3EH,#0EEHMOV 3FH,#0FFHMOV SCON,#50H ;设置串行口为方式1,允许接收MOV TMOD,#20H ;波特率发生器为方式2MOV TH1,#72H ;计数重装值MOV TL1,#72H ;计数初值MOV 87H,#00 ;PCON中的SCON=0SETB TR1 ;启动计数SETB EA ;开放中断SETB ESMOV R1,#30H ;发送数据首地址MOV SBUF,@R1 ;启动发送INC R1 ;指向下一单元MOV R0,#40H ;设置接收首地址L1: SJMP L1 ;L2: MOV A,SBUFCLR RIMOV @R0,AINC R0CJNE R0,#50H,L3CLR ESRETIL3: MOV SBUF,@R1 INC R1RETI;;中断服务程序;L4: JNB SBUF,L2 CLR TIRETIEND实验九串并转换实验一.实验目的和要求3.掌握串行口扩展I/O的方法4.掌握串行口模式的使用方法5.画出程序流程图,编制程序并上机调试通过。