单片机原理实验指导书
单片机实验指导书(6个实验)
单片机原理和接口技术实验指导书襄樊学院物理和电子信息技术系实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告。
2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。
2)对程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。
实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。
实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。
实验原理及环境:在计算机上已安装Keil C51软件。
这个软件既可以和硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不和硬件连接,仅在计算机上以虚拟仿真的方法运行程序。
如果程序有对硬件的驱动,就需要和硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。
实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。
2)加入C 源文件或汇编源文件。
3)用项目管理器生成各种使用文件。
4)检查并修改源文件中的错误。
5)编译连接通过后进行软件模拟仿真。
6)编译连接通过后进行硬件仿真。
7)I A P 编程操作2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。
单片机实验指导书
单片机实验指导书一、实验介绍单片机是一种集成电路,能够完成各种控制和计算任务。
本实验指导书将引导您进行单片机实验,以帮助您了解单片机的基本原理和应用。
在本实验中,您将学习如何搭建实验环境、编写程序以及进行各种实验操作。
二、实验准备1. 实验设备和材料:- 单片机开发板- USB数据线- 适配器- 数字电路元件(如LED、电位器等)2. 软件准备:- 单片机开发软件(如Keil、IAR EWARM等)- 编程软件(如C语言编辑器)- USB驱动程序三、实验步骤1. 搭建实验环境:- 将USB数据线连接单片机开发板和计算机。
- 通过适配器给单片机开发板供电。
- 检查驱动程序是否正确安装。
2. 编写程序:- 打开单片机开发软件,并创建一个新的工程。
- 选择适当的单片机型号和编程语言。
- 编写程序代码,实现所需功能。
- 编译程序并下载到单片机开发板。
3. 实验操作:- 根据实验要求连接相应的电路元件。
- 调试程序,确保程序能正确运行。
- 运行实验并观察结果。
四、实验注意事项1. 请确保您具备基本的电路和编程知识。
2. 在操作实验设备和元件时,请小心谨慎,避免发生触电等事故。
3. 如果遇到问题,请及时咨询实验指导人员或相关专家。
五、实验示例以下是一个简单的实验示例,用于演示如何控制LED灯的亮度:实验电路连接:将一个LED灯连接至单片机开发板的一个GPIO口。
程序代码:#include <reg51.h>sbit LED = P1^0;void delay(unsigned int time){unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<120;j++);}void main(){while(1){LED = 1; // 点亮LEDdelay(200); // 延时200msLED = 0; // 熄灭LEDdelay(200); // 延时200ms}}六、实验总结通过本次实验,我们学习了搭建实验环境、编写程序以及进行单片机实验操作的基本步骤和注意事项。
单片机原理实验指导书(2012.10)
《单片机原理》实验指导书计算机科学与技术系2012年8月目录第一部分单片机仿真实验 (1)实验一:流水灯实验 (1)实验二:中断实验 (4)实验三:定时器中断实验 (6)实验四:串行口实验 (9)实验五:矩阵式键盘输入识别 (13)实验六:LCD循环显示设计 (19)第二部分单片机硬件实验............................错误!未定义书签。
第一章试验箱系统概述 ...................................错误!未定义书签。
一、系统地址分配........................................... 错误!未定义书签。
二、系统接口定义........................................... 错误!未定义书签。
三、通用电路简介........................................... 错误!未定义书签。
第二章实验指导...............................................错误!未定义书签。
实验七P1口亮灯和P1口加法器实验........... 错误!未定义书签。
实验八简单I/O口扩展(选作).................. 错误!未定义书签。
实验九8255控制交通灯................................ 错误!未定义书签。
实验十128*64LCD液晶显示 .......................... 错误!未定义书签。
第一部分单片机仿真实验实验一:流水灯实验一、实验目的:通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。
二、实验原理图实验参考电路图如下:三、参考实验程序//流水灯实验#include<reg51.h> //包含单片机寄存器的头文件sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作/****************************************函数功能:延时一段时间*****************************************/void delay(void){unsigned char i,j;for(i=0;i<250;i++)for(j=0;j<250;j++); //利用循环等待若干机器周期,从而延时一段时间 }/*****************************************函数功能:主函数******************************************/void main(void){while(1){x=0xfe; //第一个灯亮delay(); //调用延时函数x=0xfd; //第二个灯亮delay(); //调用延时函数x=0xfb; //第三个灯亮delay(); //调用延时函数x=0xf7; //第四个灯亮delay(); //调用延时函数x=0xef; //第五个灯亮delay(); //调用延时函数x=0xdf; //第六个灯亮delay(); //调用延时函数x=0xbf; //第七个灯亮delay(); //调用延时函数x=0x7f; //第八个灯亮delay(); //调用延时函数}}四、实验思考题:修改程序使LED灯为18灯亮——27灯亮——36灯亮——45灯亮,再将LED 灯亮的顺序倒过来既:45灯亮——36灯亮——27灯亮——18灯亮,连续运行。
《单片机原理》实验指导书
《单片机原理》实验指导书For personal use only in study and research; not for commercial use山东华宇职业技术学院实训中心电子教研室目录第一章认识单片机实验系统 (3)3 第一部分系统介绍.......................................................................................6 第二部分银环MCS—51调试软件的使用........................................................第三部分键盘监控使用简介 (9)第二章软件实验 (15)实验一字处理程 (15)实验二数据处理程序 (17)实验三多分支程序 (20)实验四脉冲计数(定时/计数器实验) (22)第三章硬件实验 (26)实验一 P1口实验 (26)*实验一 P1口实验 (31)实验二 P1口输入\输出 (35)实验三 P3.3输入 P1口输出 (38)实验四工业顺序控制 (40)实验五简单I/O扩展实验一 (43)实验六简单I/O扩展实验一 (47)实验七定时器实验 (49)实验八 8255A可编程并行接口实验一 (52)实验九 D/A转换实验 (54)实验十 A/D转换实验 (60)实验十一存储器扩展实验 (64)附:实验报告要求 (66)实验注意事项及要求 (67)第一章认识单片机实验系统第一部分系统介绍一、整机介绍1、DICE型微机教学实验系统结构DICE型微机教学实验系统由电源、系统板、CPU板、可扩展的实验模板、微机串口通讯线、JTAG通讯线及通用连接线组成。
二、系统特点DICE 型微机/单片机教学实验系统是启东计算机有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。
旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。
单片机实验指导书
单片机实验指导书第一章实验概述本实验指导书旨在帮助学生掌握单片机基本原理和应用技巧。
通过实验的学习,学生将了解单片机的内部结构,学习单片机的编程方法,并能够用单片机实现简单的控制功能。
第二章实验准备2.1 实验器材准备本实验需要准备以下器材:- 单片机开发板- USB线- 电脑2.2 软件安装在开始实验之前,需要安装以下软件:- Keil C51开发环境- STC单片机系列驱动程序第三章实验步骤3.1 硬件连接将单片机开发板通过USB线连接到电脑上,并确保连接正常。
3.2 软件设置打开Keil C51开发环境,点击菜单栏中的“文件”选项,选择“新建”创建新的工程。
设置工程的名称和保存位置,确定后点击“保存”。
3.3 编写程序在Keil C51开发环境中,编写单片机程序。
首先需要包含相应的头文件,然后编写具体的程序逻辑,实现所需的功能。
3.4 编译和烧录程序在编写完程序后,点击菜单栏中的“编译”选项进行编译。
编译成功后,点击菜单栏中的“下载”选项将程序烧录到单片机开发板中。
3.5 实验验证将程序烧录完毕后,将开发板与外部模块连接,观察实验现象是否符合预期。
第四章实验注意事项4.1 安全注意事项在实验过程中,要注意使用安全电压和电流,避免短路和电击风险。
4.2 实验环境实验需要在安静、整洁的环境中进行,以避免干扰和误操作。
4.3 调试和故障排除如果遇到实验效果不理想或者出现故障的情况,可以参考开发板的说明书进行故障排查和调试。
第五章实验总结通过本次实验,我深入了解了单片机的基本原理和应用技巧。
通过编写程序并实际观察实验现象,我成功掌握了单片机编程的方法和技巧,并能够用单片机实现简单的控制功能。
本次实验还让我意识到了实验中的安全注意事项和环境要求的重要性。
在实验过程中,我严格遵守了安全规定,并在安静整洁的环境中进行操作,确保实验顺利进行。
通过反复实践和调试,我不断提高了自己的实验技巧和问题排查能力。
在遇到故障时,我能够通过检查并参考说明书,准确地找到并解决问题。
单片机原理实验指导书(6)
2.1 实验六I/O及其扩展实验一、实验目的加深对MCS-51单片机I/O及其扩展知识的理解。
二、实验设备Keil C单片机程序开发软件。
DP51-PROC单片机综合实验仪。
三、实验内容和步骤内容:1)利用8155实现并行扩展。
2)利用P1端口访问CA T24WC02(兼容AT24C02)。
实验程序:程序一:使用8155实现对并行接口的扩展。
利用8155的PA口输入KEY组各按键的状态信息,然后将该状态信息通过单片机的P1口输出到LED组显示。
设计思路:主程序在完成各项初始化设置后,可进入一死循环,在该循环里面不断的读取8155 PA口的信息并将其输出到单片机的P1口。
设计参考:①8155的地址分配:命令/状态寄存器7F00HPA口7F01H②8155命令/状态寄存器:PA 0=A口输入;1=A口输出PB 0=B口输入;1=B口输出PC2PC1 00=A口、B口基本输入输出,C口输入01=A口、B口基本输入输出,C口输出10=略11=略IEA 略IEB 略TM2TM1 略③8155芯片手册8155.PDF先将单片机内部RAM 中30H~37H 单元的值复制到CAT24WC02中的00H~07H 单元。
然后又将这8个数从CAT24WC02中复制到单片机内部RAM 的40H~47H 单元中 设计参考:① CAT24WC02的器件地址: 0A0H② CAT24WC02芯片手册CA T24WCxxx.pdf预习:1) 详细阅读两个芯片手册。
2) 编写好实验程序。
3) 根据编写的程序和实验步骤的要求制定调试仿真的操作方案。
实验单元电路:1) 8155电路。
2) CAT24WC02电路。
图2.6 系统中的8155电路PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 P3.6P3.7P0.5P0.2P0.4P0.0P0.1P0.3P0.6P0.7P2_IO2P2_CS 图2.7 系统中的CAT24WC02电路SCLSDA Vcc程序一:1)关闭实验仪电源,将D1区开关SW2拨在下方,按图2.8连接实验线路后再打开实验仪电源。
《单片机原理与应用》实验指导书1
《单片机原理与应用》实验指导书目录实验一无符号双字节乘法运算子程序实验二 BCD码与ASCII码转换实验三 P1口实验实验四定时器实验—循环彩灯实验实验五数码显示实验实验六 A/D转换实验实验一无符号双字节乘法运算子程序一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件。
熟悉汇编语言编程。
二、实验设备:EL-8051-III型单片机实验箱。
三、实验内容:(1)在(R2R3)和(R6R7)中输入双字节无符号整数。
(2)将(R2R3)和(R6R7)中双字节无符号整数相乘,积存入R2R3R4R5中。
(3)连续或单步运行所编程序。
检查R2R3R4R5中的内容是正确。
四、实验原理:R6 R7R2 R3R4 R5B AB AB A(B)R2 (B+B+A) R3 (R4+A+A) R4 R5五、实验调试1、打开Keil,新建Keil项目;2、选择CPU类型为ATMEL中的AT89C52单片机;3、根据流程图新建汇编源程序(*.asm),并保存;4、在项目管理器窗口(project windows)中,将新建的ASM源程序添加到“source group 1”中;5、在Keil中选择“project”->“build target”菜单,编译汇编源程序,如有错,修改后重新编译;6、选择“debug”->“start/stop debug session”菜单,进入程序调试环境;7、按“F11”键,单步运行程序,观察“project windows”中,寄存器R0~R7的变化情况,最后验证R2R3R4R5无符号双字节相差的结果是否正确(可和程序/附件计算器的相乘结果对比)。
六、参考程序实验二 BCD码与ASCII码转换程序一、实验目的:熟悉MCS-51指令系统,学会使用Keil C编程软件。
熟悉汇编语言编程。
二、实验设备:EL-8051-III型单片机实验箱。
三、实验内容:将本人的班号学号以压缩的BCD码的形式由低到高存放在50H开始的单元中,如10050941班,学号为01的同学,将1050H、0551H、0952H、4153H、0154H。
单片机原理实验指导书(简略)
第一章D VCC系列单片机仿真实验系统性能系统提供的主要实验项目如下:一、MCS—51部分软件实验1、清零程序实验 6、字符串查找并统计相同字符串个数2、拆字程序实验 7、双字节乘法程序3、拼字程序实验 8、多分支程序设计4、数据块传送实验 9、定时/计数器实验5、数据排序实验 10、电脑时钟实验二、MCS—51部分硬件实验1、8031单片机P3、P1口应用 11、步进电机控制2、工业顺序控制 12、直流电机控制3、并行I/O口8255应用 13、电子音响4、简单I/O口输入、输出扩展 14、继电器控制5、A/D转换0809应用 15、数据存贮器扩展和程序存贮器扩展6、D/A转换0832应用 16、8031串行口应用实验(一)—双机通信实验7、串并转换实验 17、8031串行口应用实验(二)—与PC机通信8、定时计数器8253A应用 18、温度测量实验(5G14433应用)9、可编程键盘显示8279A应用 19、压力测量实验10、打印机接口应用第二章MCS—51实验系统安装与启动§ 2.1 MCS51实验系统安装与启动1. DVCC系列实验系统在出厂时均为51状态2. 如果系统用于仿真外接用户系统,将40芯仿真电缆一头插入系统中J6插座,另一头插入用户系统的8051CPU位置,注意插入方向,仿真头上小红点表示第一脚,对应用户8051CPU 第一脚。
3. 接上+5V电源,将随机配备的2芯电源线,红线接入外置电源的+5V插孔,黑线接入外置电源地插座。
上电后,DVCC系列实验系统上显示“P.”闪动。
如果是独立运行,按DVCC系列用户手册进入键盘管理监控,就能马上做实验。
键盘管理监控操作详见第一分册第四章。
如果连上位机工作,必须将随机配备的D型9芯插头一端插入DVCC 系统J2插座,另一端插入上位机串行口COM1—COM2任选。
然后按DVCC实验系统PCDBG键,再运行上位机上的DVCC联机软件,双方建立通信,往后详细操作见用户手册第五章。
实验指导书(单片机)
《单片机原理》实验指导书徐迎曦张松灿河南科技大学电子信息工程学院自动化系2007年4月前言......................................................1 试验一 清零程序.........................................2 试验二 拆字程序..........................................4 试验三 拼字程序..........................................6 试验四 数据区传送子程序..................................8 试验五 数据排序程序.....................................10 实验六 8031单片机P3、Pl口应用.........................12 实验七 工业顺序控制器...................................14 实验八 并行接口芯片8255应用............................18 实验九 8279 键 盘、显 示 实 验...........................22 附录 DVCC实验装置及实验系统说明..........................27《单片机原理及应用》课程不仅是自动化专业的专业课,还是计算机应用等非电专业的选修课。
由于单片机具有良好的控制性能和灵活的嵌入品质,单片机在各种领域都得到了极为广泛的使用,这也使我们必须学好这门课程。
《单片机原理及应用》课程的主要内容包括单片机的结构、时序、指令系统与程序设计、中断系统、定时器/计数器、存储器扩展、接口技术(包括用户界面技术、串行通信技术、A/D及D/A转换接口技术)、开发系统的组成和功能等。
在学习本课程的过程中,只有通过上机做实验,能够更好地激发学生的学习兴趣,才能使学生真正掌握单片机原理、工作方式。
单片机原理实验指导书
实验一仿真软件的使用,简单程序设计一.实验目的:1.掌握单片机仿真软件的基本操作方法;2.熟悉汇编语言源程序的编辑、汇编、运行和检查运行结果的方法(能查看各存储空间中值的变化);3.掌握简单程序编写的基本方法和技巧;二.实验内容:1. 将内部RAM的30H—33H四个存储单元內分别存放01H、02H、03H、04H 四个数;然后送至工作寄存器R0—R3。
2.将内部RAM的30H—33H四个存储单元內的数分别传送至外部RAM的2030H--2033H存储单元中。
3. 将内部RAM的30—32H的连续3个字节中的无符号数相加,结果的低位送33H 单元,高位送34H单元实用文档三.实验步骤:1.实验内容1的步骤(1)新建文件,输入能实现实验内容1的源程序并以 .ASM为扩展名存盘;(2)编译并运行程序,检查运行结果:检查R0—R3的内容;(3)单步运行程序,并检查运行结果:检査R0—R3的内容;(4)查看程序的机器码。
2.实验内容2的步骤(1)新建文件,输入能实现实验内容2的源程序并以 .ASM为扩展名存盘(2)编译并运行程序,检查运行结果:检査外部RAM 2030H—2033H单元的內容(3)单步运行程序,并检查运行结果;(4)查看程序的机器码。
3.实验内容3的步骤(1)新建文件,输入能实现实验内容3的源程序并以 .ASM为扩展名存盘;(2)编译并运行程序,检查运行结果;实用文档(3)单步运行程序,并检查运行结果,检查33H、34H单元内容;(4)查看程序的机器码四.实验程序1.实验内容1的程序ORG 0000HMOV 30H,#00HMOV 31H,#01HMOV 32H,#02HMOV 33H,#03HMOV R0,30HMOV R1,31HMOV R2,32HMOV R3,33HEND实用文档2.实验內容2的程序ORG 0000HMOV 30H,#00HMOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV DPTR,2030HMOV R0,#30HMOV R1,#04HLOOP:MOV A,·R0HMOVX ·DPTR,AINC R0INC DPTRDJNZ R1,LOOPSJMP $实用文档END3.实验内容3的程序ORG 0000HMOV 30H,#0F8HMOV 31H,#0C6HMOV 32H,#0D9HCLR CMOV A,30HADD A,31HJC NEXT1SJMP NEXT2NEXT1:INC R1NEXT2:ADD A,32HMOV 33H,AJC NEXT3实用文档SJMP NEXT4NEXT3:INC R1NEXT4:MOV 34H,R1SJMP $五.实验报告要求:1.对实验内容1和实验内容2的程序加注释。
《单片机原理与应用》实验指导书
《单片机原理与应用》 实 验 指 导蒋艳红 编桂林电子科技大学电子工程学院2007.3目 录实验一 单片机开发系统的使用方法 (1)实验二 I/O口输入、输出实验 (7)实验三 定时器/计数器实验 (9)实验四 中断实验 (12)实验五 串行通讯实验 (15)附录一 逻辑分析工具 (17)附录二 系统自动检测功能 (21)实验一 单片机开发系统的使用方法一、实验目的1.学习单片机开发系统和仿真软件的使用及程序调试方法。
2.掌握汇编程序的编写方法及常用技巧。
二、单片机实验系统简介单片机的开发与应用需要借助于开发软件及硬件仿真系统进行。
在单片机应用系统的开发过程中,为了得到满足要求的用户程序,需要有一个对程序的调试过程,这项工作依靠单片机自身是无法完成的。
因为程序在机器内连续高速地运行,难以观测程序的运行情况。
此外,还需要把调试成功后的程序固化到单片机的程序存储器中,当单片机运行起来后,对整个用户样机系统的软硬件进行实时的诊断、调试。
因此需要有相应的仿真设备才能完成。
单片机实验系统LAB6000即是具有对应用程序进行输入编辑、修改等功能的设备,软硬件仿真可以实现对源程序进行编译,及程序的执行和检测。
在对目标系统的调试过程中,可以运用单步执行,设置断点执行、状态查询等功能,以达到设计目的、完成从用户程序的编写到单片机应用系统的正确运行之前的一切准备工作即仿真功能。
系统运行时,能够产生和单片机完全相同的实时信号,以实现对用户样机系统中软、硬件的故障诊断和调试。
LAB6000实验系统由硬件及软件两部分组成。
三、调试步骤(一)建立源文件并保存 双击桌面WAVE图标,进入伟福开发环境。
1、选择菜单:文件/新建文件,进入源程序编辑窗口,在此输入源程序。
如图1-1。
图 1-1选择菜单:文件/保存文件或直接点击工具栏上小磁盘图标,指定文件所要保存的位置,例如:F:\0820101文件夹,再确定文件名:sy1.ASM ,注意后缀应为 .ASM。
单片机实验指导书--单片机原理
单片机技术(1)实验指导书黎明大学电子工程系编目录软件实验1. 存储器块清零2. 二进制到BCD 码转换3. 二进制到ASCII 码转换4. 内存块移动5. 程序跳转表6. 数据排序硬件实验1. P1 口输入输出2. 继电器控制3. 计数器实验4. 外部中断实验5. 定时器实验软件实验一存储器块清零一、实验要求1.指定存储器中某块的起始地址和长度,要求能将其内容清零。
二、实验目的1.掌握存储器读写方法2.了解存储器的块操作方法三、实验说明通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编程,调试方法。
如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请学生修改程序,完成此操作。
四、程序框图软件实验二二进制到BCD 转换一、实验要求将给定的一个二进制数,转换成二十进制(BCD)码二、实验目的1.掌握简单的数值转换算法2.基本了解数值的各种表达方法三、实验说明计算机中的数值有各种表达方式,这是计算机的基础。
掌握各种数制之间的转换是一种基本功。
有兴趣的同学可以试试将BCD转换成二进制码。
四、程序框图软件实验三二进制到ASCII码转换一、实验要求给出一个BCD数,将其转换成ASCII值。
二、实验目的1.了解BCD值和ASCII值的区别2.了解如何将BCD值转换成ASCII值3.了解如何查表进行数值转换及快速计算。
三、实验说明此实验主要让学生了解数值的BCD 码和ASCII码的区别,利用查表功能可能快速地进行数值转换。
进一步了解数值的各种表达方式。
四、程序框图软件实验四内存块移动一、实验要求将指定源地址和长度的存储块移到指定目标位置二、实验目的1.了解内存的移动方法。
2.加深对存储器读写的认识。
三、实验说明块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。
另外,若源块地址和目标块地址有重叠,该如何避免?四、程序框图软件实验五程序跳转表一、实验要求在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。
单片机原理实验指导书(7)
2.1 实验七A/D与D/A实验一、实验目的加深对A/D和D/A基础知识的理解。
二、实验设备Keil C单片机程序开发软件。
Proteus仿真软件DP51-PROC单片机综合实验仪。
DT-2003数字万用表。
三、实验内容和步骤内容:利用ADC0809和DAC0832实现模拟电压信号的采集与输出。
实验程序:使用T1作为定时器(定时时间为50毫秒),每1秒时间后,启动ADC0809转换,在转换结束后(触发外部中断)读出A/D转换值,将该值输出到DAC0832,并同时显示到LCM显示器上(显示子程序/函数由实验库文件提供)。
本次实验程序需要使用实验库文件(LCMDRV_12864.LIB)。
该库中的子程序/函数占用单片机片内RAM中地址为18H~20H的单元,因此实验程序不能使用这些单元。
如果用汇编编写实验程序,必须先用$INCLUDE (LCMDRV_12864.INC )指令加载实验库头文件,实验五中的表2.5说明了LCMDRV_12864.LIB中子程序的功能和在汇编语言编程时的调用方法。
如果用C51编写实验程序,必须先用#include "LCMDRV_12864.h"语句加载实验库头文件,库函数的使用详见LCMDRV_12864.h中的说明。
设计思路:①主程序在完成对INT1和T1的设置后,可进入死循环(等待中断请求)。
②在T1的中断服务程序中需要使用一存储单元对T1的中断次数进行计数,当计数次数达20次时,意味着定时1秒时间到(参见实验五),此时才启动一次AD转换(通过向ADC0809的一次写操作实现)。
③AD转换的结束信号作为中断请求(INT1)。
在对该中断的响应和服务时,才读出本次AD转换的结果值,该值又作为DA转换的值(向DAC0832写)。
④为便于理解,数值在显示前应进行BCD转换(库文件自动完成转换)。
设计参考:①主程序需要设置的控制位如下:IT1 外部中断触发方式控制0=电平1=边沿(下降沿)EX1和ET1 外部中断允许控制0=屏蔽1=允许PX1和PT1 中断优先级级别控制0=低级1=高级EA 中断允许总控制0=屏蔽1=允许TR1 定时/计数器运行控制0=停止1=允许②定时/计数器工作方式控制寄存器(TMOD):GA TE 门控位0=由TR X控制定时/计数器运行1=TR X和INT X信号共同控制(X = 0或1)C/T 定时/计数方式选择0=定时1=计数M1M0 工作方式选择00=13位定时/计数器工作方式01=16位定时/计数器工作方式10=常数自动装入的8位定时/计数器工作方式11=两个8位定时/计数器工作方式(仅适用于T0)③中断服务程序的入口地址:0013H 外部中断1001BH 定时/计数器1④地址分配ADC0809 3C00H~3C07H(IN0 ~ IN7)DAC0832 3800H预习:1)编写好实验程序。
单片机实验指导书
目录实验一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、了解用弱电控制强电的方法二、实验说明现代自动控制设备中,都存在一个电子电路的互相连接问题,一方面要使电子电路的控制信号能控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路和电气电路提供良好的电气隔离,以保护电子电路和人身的安全。
《单片机原理》实验指导书
实验一实验开发装置的使用[实验目的]1.巩固和加深理解所学的基本概念,了解MC9S12单片机的结构特点和工作原理。
2. 熟悉开发环境、指令集和汇编语言编辑、调试方法,为下一步用好MC9S12单片机奠定坚实的基础。
3.通过汇编语言源程序的编辑、汇编、调试及输出结果的分析等过程,熟悉MC9S12编程开发工具的使用方法。
4.通过使用各种监控命令,体验通过监控程序实现用户与单片机的对话过程。
[实验设备]1. MC9S12DP256/DG128开发板2. CodeWarrior编译器3. 微型计算机[实验内容]1. 连接开发板与PC机,配置超级终端,设置串行口及其通信协议。
2. 使用不同监控命令,对开发板进行各种操作。
如查看内存的内容,修改RAM中的内容,显示堆栈指针和CPU寄存器的内容,改变页面寄存器的内容,擦除Flash中的内容,下载数据文件到RAM中,下载程序文件到Flash中,设置硬件断点,运行程序等。
3.使用CodeWarrior C编译器,建立工程文件,编写C语言应用程序,定义存储空间分配,编译应用程序,向开发板下载*.S19文件,运行应用程序。
4.尝试使用ASM汇编器,编写汇编语言源程序,并进行汇编、下载和运行。
[实验预习要求]1.认真领会本实验的实验目的和实验内容。
2.复习教材中的有关内容。
3. 预习MC9S12DP256/DG128开发板的使用方法和各种监控命令的作用。
[实验步骤]1. 将开发板与PC机用普通串口线相连,插上5V电源。
2. 配置超级终端首先打开超级终端,按下列顺序操作:开始-→程序-→附件-→通讯-→超级终端,操作界面如图1-1所示。
3. 选择Hypertrm,填入名称,这里用MC9S12DP256,选择“确定”。
操作界面如图1-2和图1-3所示。
4. 串行口设置如果开发板是连接到串口1,就选“直接连接到串口1”,如果开发板连接到串口2,就选“直接连接到串口2”。
选择“确定”,串口设置如图1-4所示。
单片机原理——实验指导书
《单片机原理》实验指导书张毅刚何谨孙震哈尔滨工业大学2005年4月目录序 ------------------------------------------------------------------------------------------------------------- 1实验1 单片机实验开发系统操作实验 ------------------------------------- 2实验2 单片机数据区传送程序设计------------------------------------------ 4实验3 数据排序实验 --------------------------------------------------------------------- 6实验4 查找相同数个数----------------------------------------------------------------- 8实验5 P1口转弯灯实验--------------------------------------------------------------- 10实验6 工业顺序控制 -------------------------------------------------------------------- 13实验7 8255控制交通灯--------------------------------------------------------------- 16实验8 A/D转换实验---------------------------------------------------------------------- 19实验9 D/A转换实验---------------------------------------------------------------------- 22实验10 电子时钟(定时器、中断综合实验) -------------------- 26附录1 DAIS-80958B单片机实验开发系统简介------------------- 36附录2 实验开发系统的字形/字位/键值表 --------------------------- 37序一、实验素养和一般知识1.实验前准备工作(1) 明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。
单片机实验指导书
实验一、输入输出接口编程一、实验目的1、掌握Keil软件的基本使用。
2、掌握单片机汇编语言基本编程。
二、实验内容1、学习用Keil软件进行51单片机的软件开发;学习Keil软件的一般操作,步骤为:项目建立、程序录入、添加文件、编译生成HEX文件、仿真调试。
(见参考程序一)2、霓虹灯控制程序设计用P1口控制8个LED,按P3口输入信号的不同模式选择4种16次循环点亮方式,用软件延时实现1秒的扫描周期。
将生成的HEX文件下载到实验板上验证。
(见参考程序二)三、实验原理1、Keil软件使用练习设(R0)=20H,(R1)=25H,(20H)=80H,(21H)=90H,(22H)=0A0H,(25H)=0A0H,(26H)=6FH,(27H)=76H,执行程序后,问程序完成什么功能,写出运行结果。
(见参考程序一)2、霓虹灯控制程序设计电路原理图如下,所需元件为:AT89C51、SW-SPST、LED-RED图中用单片机的P1口作输出口接8个LED ,8个LED 按共阳极连接,端口逻辑值为0点亮LED ;P3口作输入口接2个SW-SPST 开关,P3口内含上拉电阻,当开关打开时逻辑值为1,开关闭合时逻辑值为0。
本实验中要实现循环输出,最常用的方法是循环计数实现循环次数控制,对计数器值进行查表转换得出输出值,输出到P1口进行显示,灯亮表示输出为“0”,灯灭表示输出为“1”。
本实验中的延时,用软件延时方法产生,延时时间=程序总机器周期数*循环次数*机器周期。
输出表格确定发光模式,实验中定义表格如下:TAB1:DB 01H,02H,04H,08H,10H,20H,40H,80H (SW3,SW4为:00) TAB2:DB 03H,06H,0CH,18H,30H,60H,0CH,81H (SW3,SW4为:01) TAB3:DB 80H,40H,20H,10H,08H,04H,02H,01H (SW3,SW4为:10) TAB4: DB 用户自己定义(SW3,SW4为:11)输入信号使用P3口的2个位,如P3.2和P3.3,可以确定4种模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一LED 流水灯一、实验目的1. 学习单片机并口的使用方法。
2. 学习延时子程序的编写和使用。
3. 学习集成开发环境MedWin的安装与使用。
4. 学习STC单片机在线下载软件STC-ISP的使用。
二、实验内容所谓流水灯就是4 个发光二极管(LED)轮流点亮,周而复始。
实验板上以P3口作输出口,接有四只发光二极管,当单片机的引脚输出为低电平时发光二极管点亮,为高电平时息灭。
编写程序,使4 个发光二极管循环点亮,时间间隔约0.5 秒。
三、实验电路连线实验板上与本实验有关的硬件如下图所示。
4 个LED上串联4 个限流电阻,以防止其电流过大而烧坏。
单片机的主时钟为11.0592MHz。
四、实验说明1、P3 口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1 口用作输入口时必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
输出时需要接上拉电阻,P3 口内部有弱上拉,若将外围电路设计为低有效,高无效,则无需再外接上拉电阻。
2、为使每次点亮一个LED,应使P3.4~P3.7 4 个端口中有一个为低,其余均为高,延时一段时间后再点亮另一个LED。
3、编写for 循环构成的软件延时子程序,在MedWin 下模拟执行,根据MedWin 显示的执行时间,调整循环变量的终值,使延时时间约0.5秒,在晶振频率为11.0592MHz情况下,循环终值约27000。
程序如下:void delay(void){ unsigned int i,j,k,l;for(i=0;i<=27000;i++){j++; k++;l++;};}#include <REG51.H>void main (void){ unsigned char i,c[4] = {0xef,0xdf,0xbf,0x7f};// 从左往右流水i = 0;while(1){ P3 = c[i & 3];i++;11delay();}}五、思考1、如何使点亮的LED 从右往左移动?2、如何使点亮的LED 从两边往中间移动?实验二用一位数码管循环显示0~9一、实验目的1. 学习单片机并口的使用方法。
2. 学习延时子程序的编写和使用。
3. 学习LED数码管的驱动编码。
二、实验内容实验板上有4 个LED 数码管,编写程序,使最右边的一个LED 数码管循环显示0~9 十个数字。
时间间隔约0.5 秒___________,其余LED数码管关闭。
12三、实验电路连线实验板上与本实验有关的硬件如上页图所示。
4 个共阳的LED 数码管上同名的引脚连接在一起,通过限流电阻接到单片机的P0 口(段控制)。
单片机P2 口的4个引脚分别控制4个LED 数码管的公共端(位控制)。
单片机的主时钟为11.0592MHz。
四、实验说明1、P0 口和P2 都是准双向口,输出时需要接上拉电阻。
P0 内部没有上拉电阻,P2 口内部有弱上拉,本实验外围电路设计均为低有效,故无需外接上拉电阻。
2、下表为驱动LED 数码管的段代码表,“0”代表对应的笔段亮,“1”代表不亮。
若需要在最右边显示数字“5”,只要将从表中查得的段代码2CH 写入P0口,再将P2.4 置低即可。
g c h d e b f a数字P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0十六进制0 1 0 1 0 0 0 0 0 A01 1 0 1 1 1 0 1 1 BB2 0 1 1 0 0 0 1 0 623 0 0 1 0 1 0 1 0 2A4 0 0 1 1 1 0 0 1 395 0 0 1 0 1 1 0 0 2C6 0 0 1 0 0 1 0 0 247 1 0 1 1 1 0 1 0 BA8 0 0 1 0 0 0 0 0 209 0 0 1 0 1 0 0 0 28A 0 0 1 1 0 0 0 0 30b 0 0 1 0 0 1 0 1 25C 1 1 1 0 0 1 0 0 E4d 0 0 1 0 0 0 1 1 23E 0 1 1 0 0 1 0 0 64F 0 1 1 1 0 1 0 0 74- 0 1 1 1 1 1 1 1 7F3、实现最右边的一个LED 数码管循环显示0~9十个数字的C 语言程序如下:#define U8 unsigned charsbit P2_4 = P2^4;code U8 tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};void delay(void){ unsigned int i,j,k,l;for(i=0;i<=27000;i++){j++; k++;l++;};}13void main(void){ U8 i;P2_4 = 0;while(1){ P0 = tab[i];delay();i++;if(i==10) i = 0;}}五、思考题1. 分别写出六个字母(用于显示十六进制数)的段代码。
2. 能否交替点亮4个LED 数码管?实验三LED 数码管的动态驱动一、实验目的1、学习LED 数码管的动态驱动编程。
2、学习使用定时/计数器。
二、实验内容编写程序,使实验板上的4个LED数码管稳定显示4个不同的数字,并使这四位数从0000开始,每秒钟加一。
三、实验电路连线本实验有关的硬件见实验二。
四、实验说明在实验二中,我们已经能够让某一个LED数码管显示需要的数字,比如选让第一个LED显示“1”,隔一较短的时间(如5 毫秒)后关闭第一个LED,让第二个LED 显示“2”,如此周而复始,让4 个LED 依次显1、2、3、4,我们就能看到4 个LED 上稳定地显示4 个不同的数字。
当然,每个瞬间只有一个LED 被点亮,大家亮的时间相同,均为5 毫秒,4 个LED 数码管点亮一遍需要20 毫秒,一秒钟各亮50 次,所以看上去不会有闪烁感,但亮度只是实验二中LED亮度的四分之一。
要实现每隔5 毫秒变换一个LED,最好的方法是使用定时器中断。
C51 程序如下:#define U8 unsigned charU8 tab[] = {0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};U8 scn[] = {0x7f,0xbf,0xdf,0xef};//先点亮左边一个数码管14U8 buf[4] = {0,0,0,0};// 显示缓冲区,开机先显示"0000"U8 cnt = 0; // 扫描计数void main(void){ EA = 1; // 允许中断TMOD = 0x01; // 设定时器0 为模式1(16 位)ET0 = 1; // 定时器0中断允许TH0 = 0xee; // 晶振11.0592MHz,5mSTL0 = 0;TR0 = 1; // 开始计数while(1); // 死循环,等待中断}void timeint(void) interrupt 1 // 定时器0中断服务程序{ char i;TH0 = 0xee; // 设置定时器时间常数TL0 = 0;i = cnt & 0x03; // 求应点亮的LED 号(从左到右依次为0,1,2,3)P0 = tab[buf[i]]; // 笔划代码送P0 口P2 = scn[i]; // 控制扫描码送P2口if(cnt==200){ cnt=0; // 到1 秒钟,显示的数字加一for(i=3;i>=0;i--){ buf[i]++;if(buf[i]==10) buf[i]=0;// 加到10 向前进位else break;}}cnt++;}五、思考题如何让4 个LED 数码管从0000开始,每秒钟自动加1,前两位代表分,后两位代表秒?实验四数字电子钟一、实验目的进一步熟悉定时/计数器的使用。
二、实验内容15在实验板上编写程序,实现电子钟功能。
时间显示格式为HH.MM,中间的小数点每秒钟闪烁一次。
三、实验电路连线本实验有关显示部分的硬件见实验二,按钮连接见实验四。
四、实验说明实验二及实验三中LED 数码管的笔划代码均不含小数点(h 位为1,小数点不亮),为了让第2 个LED 的小数点在每一秒的前半秒亮,后半秒灭,应在定时器的中断子程序中,判断当前时间为前半秒,而且动态扫描到第2 个LED时,将其笔划代码取出,和0xDF 相与后再写入P0 口。
该电子钟在上电或复位后时间均从00 时00 分00秒开始,若要使电子钟断电后照常行走,应采取电池供电。
为了降低使用成本及减小体积,可采用两节5 号电池,其满电量时电压为3 伏,89C51单片机的正常工作电压范围为4.5~5.5 伏,无法使用,可选用89C2051 单片机(电压范围2.7~6 伏),最好使用工作电压更低的单片机(如工作电压为1.8伏的AVR单片机)。
为了延长电池使用寿命,必须采取一些节电措施,如将LED 换成液晶、让单片机不工作时进入休眠方式、适当降低单片机的时钟频率等。
五、思考题给电子钟加上能输入当前时间的功能。
实验五自动演奏乐曲一、实验目的(1)进一步熟悉89C51定时器/计数器的功能及应用;(2)掌握其初始化与中断服务程序的编程方法;(3)掌握用定时器/计数器产生不同频率方波的编程方法。
二、实验内容用单片机的定时器/计数器0 作定时器使用,工作于模式1,中断产生方波发声,根据简谱中各个音阶的频率,计算对应的定时时间常数,定时器中断后按此常数赋初值,从而发出对应的音调。
将歌曲的音调和节拍各编成一个表(数组),用音调作为定时器的初值,用节拍控制发音时间,就可以实现自动演奏乐曲。
三、实验电路连线本实验有关的硬件如右图所示。
四、实验说明16产生音阶定时初值的计算:根据下表的音阶频率,计算对应的音阶周期T,用T/2 计算定时周期数(晶振11.0592MHz),填入下表中。
定时器的计数初值为65536-定时周期数,由程序计算产生。
定时周期数增加1 倍,音阶降低八度,定时周期数降低1 倍,音阶升高八度。
音阶表的编码规则为,音阶1-7 用11-17 表示,高八度音阶1-7用21-27表示,低八度音阶1.-7.用1-7 表示。
节拍表的编码规则为,1 拍为16,约570mS,1/2 拍为8,1/4 为4,依此类推。
下面是《康定情歌》的简谱及编码,上一行数字是音阶编码,下一行数字是节拍编码。
自动演奏《康定情歌》乐曲的C51程序为:#include <REG51.h>#define U8 unsigned charcode unsigned int cyc[]={1800,1600,1440,1351,1200,1079,960};//音阶1-7 的半周期数code U8 tone[]={13,15,16,16,15,16,13,12,12,13,15,16,16,15,16,13,13, 13,15,16,16,15,16,13,12,12,15,13,12,13,12,11,12,6,6,12,15,13,12,6,6,15,13,12,13,12,11, 12,6,5,6,0xff};// 乐曲《康定情歌》的简谱表code U8 time[]={8,8,8,4,4,8,8,12,4,8,8,8,4,4,8,16,8,8,8,8,4,4,8,8,12,4,8,8,4,4,音阶(C 调) 1 2 3 4 5 6 7频率(Hz) 256 288 320 341 384 427 480周期(μs) 3906 3472 3125 2932 2604 2342 2083半周期数1800 1600 1440 1351 1200 1079 960174,4,8,24,8,24,8,24,8,16,8,8,8,4,4,4,4,8,16,8,32};// 节拍表U8 H0,L0,cnt;sbit P2_3 = P2^3;sbit P3_2 = P3^2;void cntint0(void) interrupt 1 // 定时器0中断用于产生音阶方波{ TH0=H0;TL0=L0;P2_3=~P2_3; // P2.3是音乐信号输出脚,P2.3反相,产生方波}void cntint1(void) interrupt 3 // 定时器1 中断用于产生节拍延时{ cnt++; // 计数初值为0,所以不用赋值}void main(void){ U8 i,a,t;unsigned int b;next:TMOD=0x11;EA=1;ET0=1;ET1=1;cnt=0;TR1=1;i=0;while(1){ t=tone[i]; // 读音调if(t==0xff) break; // 0xff 是结束符if(t!=0) // 0 是休止符{ b=cyc[t%10-1]; // 根___________据基本音阶,求出半周期数if(t<10) b=b*2; // 若是低八度音阶,半周期数加倍if(t>20) b=b/2; // 若是高八度音阶,半周期数减半H0=(65536-b)/256; // 根据半周期数,计算T0初值的高字节和低字节L0=(65536-b)%256;TR0=1; // 启动定时器0 发音}cnt=0;a=time[i]; // 读节拍while(a>cnt);TR0=0;i++;for(b=0;b<1000;b++); // 稍加延时,增强节奏感18}P2_3=1; // 关闭喇叭while(P3_2==1); // 等待按INT 键goto next; // 重放一遍}五、思考题将程序改成演奏别的乐曲。