《微机与单片机实验2》
指 导 书
微机原理与接口技术实验室
实验守则
1.学生必须按时到实验室上实验课,不得迟到早退。
2.进入实验室要保持安静,不得高声谈笑,不准抽烟,不准随地吐痰和乱扔纸屑杂物。 3. 不准动用与本实验无关的仪器设备和室内其它设施。
4. 学生做实验前要预习,认真阅读实验指导书,复习有关基础理论,并接受教师的检查。
5. 一切准备工作就绪后,须经指导老师同意,方可动用仪器设备,进行实验。
6. 实验中要细心观察,认真记录实验数据,不准马虎从事,抄袭别人数据,不得擅自离开操作岗位。
7. 实验中要注意安全,严格遵守操作规程,尽量节约水电与其它消耗材料。如损坏仪器设备等应立即向指导教师汇报,事后写出损坏报告,由实验室及校主管部门根据情况处理。
8. 实验中如出现事故,要保持镇静,要及时采取措施(如断水、断电),防止事故扩大。 9. 尊重实验室管理人员的职权,对不遵守操作规程又不听劝告者,实验室管理人员有权令其停止实验。对违章操作造成事故,要追究责任,损坏仪器要赔偿。
10.实验室一切物品(仪器、模型、标本、药品等)不得带离实验室,违者除追回物品外,要批评教育,丢失要赔偿。
11.实验完毕后,必须断电、断水,整理好仪器设备、标本、模型等,经老师允许后方可离开实验室。
12.学生要求重做实验或做规定外的实验,应征得指导老师同意后,方可进行实验,以免发生事故。
13.开放式实验室由任课教师提前安排好,按实验规则要求,由实验室管理人员具体执行。
二〇〇七年八月
实验要求
课前要做好实验预习工作,课上认真完成每项实验,课上未完成的实验内容在课后实验室开放时间补上,实验报告书写要认真规范。
实验报告书写要求: 1、封面课程名称要准确,学院、专业、班级、学号要写全,不得简写。 2、每项实验名称要准确。
3、实验组别、实验日期以及同组实验者要真实。不允许出现同组实验者不同日期、组别和结果数据现象。
4、正文要求以下项目要齐全:
(1)实验目的 (2)实验设备 (3)实验内容
(4)实验电路图(硬件) (5)实验步骤
(6)实验流程图及程序 (7)实验结果及结果分析。
5、字迹要清晰、规范、工整,字迹颜色要一致,程序框图采用标准符号。
目 录
实验一 数据传送指令 .................................................................................................. 1 实验二 二进制数的运算 .............................................................................................. 2 实验三 分支结构程序的设计 ...................................................................................... 3 实验四 循环结构程序设计 .......................................................................................... 4 实验五 子程序程序设计 .............................................................................................. 5 实验六 外部中断系统的应用 ...................................................................................... 6 实验七 定时器/计数器实验 ........................................................................................ 7 实验八 键盘扫描显示实验 .......................................................................................... 8 实验九 串行通信实验 .................................................................................................. 9 实验十 A/D转换实验 .............................................................................................. 10 实验十一 D/A转换实验 .......................................................................................... 12 实验十二 利用MCS-51单片机控制交通灯(综合实验) .......................................... 13 实验十三 电脑时钟(综合实验) ............................................................................ 14 附录1 SDUST-CEE-UC单片机实验箱介绍 .................................................................. 15 附录2 Keil uVision3 操作指南 ............................................................................... 30 附录3 编译错误信息 ............................................................................................... 35
实验一 数据传送指令
1.1 实验目的
通过实验熟悉Keil uVision3软件仿真环境和MCS-51系列单片机指令系统。掌握简单的程序编制、调试方法。加深对MCS-51系列单片机硬件结构的认识。
1.2 实验内容
1、把R1中内容传送至R0中。
2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中。 3、把外部数据存储器20H单元中的内容传送至内部数据存储器20H单元中。 4、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中。 5、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。 6、把外部数据存储器2050H单元、2060H单元中的内容相互交换。 *7、执行以下程序后,问SP=?,(71H)=?,(72H)=? MOV SP, #70H
MOV A,#7CH MOV B,#0F0H
PUSH ACC
PUSH B POP B POP ACC
8、应用MOVC A,@A+DPTR指令求累加器A的平方值Y(设Y<=255),并把结果送至R7中保存。
*9、应用MOVC A,@A+DPTR指令求累加器A的立方值(设立方表的每个元素用两个字节表示),并把结果送至R2、R3保存。
说明:以上*表示选作内容,其余为必作内容,以下实验同。
1
实验二 二进制数的运算
2.1实验目的
掌握并熟悉MCS-51指令系统,熟练掌握单字节及多字节二进制无符号数的运算方法。
2.2实验内容
1、下列程序执行后累加器A和PSW中的内容是什么? (1) MOV A,#7EH
ADD A,#82H (2) MOV A,#82H ADD A,#84H
2、将(R2R3)和(R4R5)中的双字节无符号数相加,结果存放在40H、41H和42H单元中。
3、将(R2R3)和(R4R5)中的双字节无符号数相减,结果存放在43H和44H单元中。
4、已知在内部数据存储器M1、M2、M3单元中存有三个无符号数X1、X2、X3,请编程将他们相加,并把和存入R0和R1(R0中为高八位)中。
*5、被乘数为十六位无符号数(低八位在M1单元,高八位在M1+1单元),乘数为八位无符号数存放在M2单元中,请编程将它们相乘并将积存入R2、R3、R4中(R2存放高八位数,R4存放低八位数)。
*6、将(R2R3)和(R4R5)中双字节无符号数相乘,结果存放在44H,45H,46H,47H(由高到低存放)中。
7、试编出能完成以下操作的程序
(1)使20H单元中的数的高两位变为0,其余位不变。 (2)使20H单元中的数的高两位变为1,其余位不变。 (3)使20H单元中的数的高两位取反,其余位不变。 (4)使20H单元中的数据的所有位变反。
实验三 分支结构程序的设计
3.1实验目的
熟悉并掌握分支结构程序的编程方法和技巧。
3.2实验内容
*1、在内部数据存储器BLOCK为首地址的缓冲区中存放有一组带符号数,数的个数已在LEN单元中,请编程实现:统计其中的正数和负数的个数并存入NUM和NUM+1单元中。
2、设自变量X为一无符号数,存放在内部数据存储器的VAX单元,函数Y存放在FUNC单元,请编写满足如下关系的程序:
当x>=50时 y=x; 当50>x>=20时 y=5x; 当x<20时 y=2x。
实验四 循环结构程序设计
4.1实验目的
熟悉并掌握循环结构程序的编程方法和技巧。
4.2实验内容
1、在外部数据存储器从2000H到20FFH地址单元中存放有一数据块,请将它们分别传送至3000H单元到30FFH单元中(注意循环次数)。
2、在内部数据存储器以BLOCK为始址的100个单元中,找出其最小值并把它送入MIN单元。
*3、在内部数据存储器以BLOCK开始的存储区中有10个单字节十进制数(每个字节有两个BCD数),请编程求BCD数的和(和为三位的BCD数),并把和存放在SUM和SUM+1单元(SUM为低字节)。
实验五 子程序程序设计
5.1实验目的
熟悉并掌握子程序的编程方法和技巧。
5.2实验内容
1、将8051片内的数据存储器20H单元、21H单元中存放的单字节二进制数,转化为ASCII码,存放在30H~33H单元中,(要求将ASCII码转换部分设计为子程序)。
*2、设8051单片机外部数据存储器从1000H单元开始存放有100个无符号8位二进制数,要求编一子程序将他们从大到小依次存入片内数据存储器从10H开始的存储区。
实验六 外部中断系统的应用
6.1 实验目的
熟悉SDUST-CEE-UC单片机实验系统,熟悉并掌握外部中断的编程方法和技巧,并加深对MCS-51系列单片机中断系统硬件结构的认识。
6.2实验内容
采用下降沿触发的中断方式设计一个事故检测装置。
要求:设备正常工作时,绿色指示灯亮,红色指示灯灭;设备出现故障时,绿色指示灯灭,红色指示灯亮。
硬件联线:
(1)根据选择的输出引脚,用排线连接到选择的指示灯插针(J6或J22); (2)将脉冲输出引脚插针J21与CPU模块上的单片机P30插座P3.2(INT0)或P3.3(INT1)连接。
6.3实验预习
1、熟悉MCS-51系列单片机中断系统硬件结构以及中断系统的工作原理。 2、熟悉中断源的选择,中断标志的设置,中断请求的控制,中断优先级的控制等。
3、掌握中断系统的初始化。
6.4实验说明
中断信号由单脉冲按钮AN产生。
6.5注意事项
1、注意中断的嵌套的使用方法。
2、注意中断资源初始化的两种方法:可采用位操作指令,也可采用字节访问。
实验七 定时器/计数器实验
7.1实验目的
熟悉定时器/计数器的工作原理并掌握其编程方法和技巧,加深对中断的理解及运用。
7.2实验内容
1、利用定时器T0的方式1编制一段程序。在某一I/O输出引脚(如P1.0)输出一个方波控制一个红色指示灯。
①输出周期为40ms的方波,观察指示灯的变化,并采用示波器观察输出波形。 ②输出周期为200ms的方波,观察指示灯的变化,并采用示波器观察输出波形。
2、设单片机的时钟为12MHz,请利用定时器T0编出使P1.0引脚输出2ms的矩形波程序,要求占空比系数为1:3。
3、利用计数器T1(P3.5)记录脉冲的个数。每计满10个脉冲,使灯亮1秒,然后重新计数,循环以上操作。
7.3实验预习
1、熟悉MCS-51系列单片机定时器/计数器系统硬件结构与工作原理。 2、掌握定时器/计数器的编程方法,初值的计算方法等。 3、掌握查询方法和中断方式两种方法处理定时/计数的问题。 7.4注意事项
1、注意定时器/计数器4种工作模式的选择以及初值的计算方法。 2、注意中断程序的应用方法。
7.5硬件联线:
(1) 使用排线将编程使用的引脚(如P1.0)与LED指示灯控制插针(J6或J22)连接;
(2) 脉冲输出插座J21(选择高电平脉冲)与CPU板的P3.4(T0)或P3.5(T1)连接;
实验八 键盘扫描显示实验
8.1实验要求
利用实验系统提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块。
①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。
8.2实验目的
1、掌握键盘和显示器的接口方法和编程方法。 2、掌握键盘扫描和动态显示的工作原理。
8.3实验说明
本实验系统自带一个8×2的键盘,如图xx所示,在判断有键按下后,要有一定的延时,防止键盘抖动。
8.4实验步骤
(1)设计选择需要的字形口、字位口和键盘输入引脚; (2)根据硬件设计,连接联线;
(3) 编制键盘扫描程序和动态扫描显示程序,并编译; (4) 下载程序;
(5) 观察测试按键及显示。
+5VJ4312345678J4412345678C0C1C2C3C4C5C6C7ABCDEFGDpAC24E6G8Dp11F13D15B17119U?74LS2401Y11Y21Y31Y42Y12Y22Y32Y4181614129753764211095abcdefgdpDPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdpR?8*2001A11A21A31A42A12A22A32A41G2GDS?共阴+5V8VCCP10123POWERU?FULN2003cmcmcmcmcmcmcmcmcmcmcm33838383838161514131212R0R1U?AULN2003U?BULN2003U?CULN2003U?DULN2003U?EULN200311J45cm矩阵键盘显示K6K7+5VR?12345K0K1K2K3K4K5R0K8K9K10K11K12K136K14K15R1R?C0C1C2C3C4C5C6C7R0J46图1 行列式键盘、动态扫描显示电路图
实验九 串行通信实验
9.1实验目的
熟悉并掌握串行通信的工作原理以及编程方法和技巧。加深对MCS-51系列单片机UART硬件结构的认识。
9.2实验内容
现有两台单片机应用系统。甲机发送内存中以TR_BUF为首地址的10个数据串,乙机把接收到的数据存入以RC_BUF为首地址的内存单元中。设甲、乙两机的振荡频率为12MHz,串行口均工作在方式1下。要求甲机用查询方式编程,乙机用中断方式编程。
9.3实验预习
1、熟悉串行异步通信和同步通信两种方式,半双工和全双工两种制式。 2、熟悉串行口控制寄存器SCON和电源控制寄存器PCON在串行通信时的设置。
3、熟悉串行通信的四种工作方式。
9.4实验步骤
1、编制程序,编译,下载;
2、将甲机的P3.1(TxD)和乙机的P3.0(RxD)相连。 3、运行程序,观察传输结果。 注意:
(1)下载程序时要断开两实验箱之间的通讯联线。 (2)运行程序时将编程按钮PROG断开。
9.5注意事项
1、重点掌握串口方式1的波特率的计算方法。
2、注意串行口在异步通信时中断的使用方法和查询的使用方法。 3、注意中断标志的软件清除处理方法。 4、注意通信双方的计算机的通信速率是否一致。
5、注意必须接收机先工作,处于接收状态后,发送机才能发数。
实验十 A/D转换实验
10.1实验目的
1、掌握A/D转换与单片机的接口方法。
2、了解A/D芯片ADC0809转换性能及编程方法。 3、通过实验了解单片机如何进行数据采集。
10.2实验内容
利用实验箱上的ADC0809做A/D转换实验,实验仪上的电位器RP1/RP2提供模拟量输入。编制程序,将模拟量转换成数字量,通过八位LED发光二极管显示。
10.3实验预习
1、熟悉A/D的转换原理及转换方法。
2、掌握ADC0809的用法以及与单片机的接口电路。 3、掌握单片机系统中数据采集的方法。
10.4实验说明
ADC0809属逐次逼近式8位A/D转换器。每采集一次一般需100μs。由于ADC0809转换结束后会自动产生EOC信号(高电平有效),取反后将其与8032的INT0相连,可以用中断方式读取A/D转换结果。
10.5实验接线图
U2J2312345678J24123456WRRDDA-CSAD-CSAD-CLKAD-EOC74LS32A21AD-CS374LS02B54RD6+5VCLK74LS74A2DAD-CLKVCC39610D0D1D2D3D4D5D6D7AD-EOCD7D6D5D4D3D2D1D097825242322212019188151417ADC0809IN-0IN-1IN-2IN-3IN-4EOCIN-5ADD-AADD-BADD-CALEENABLESTARTCLOCKref(-)ref(+)16+5V12IN-6IN-726272812345IN0IN1IN2IN3IN4IN5IN6IN7J2512345678msb2-12-22-32-42-52-62-7lsb2-874LS02C10WRCD123+5VCLKQ6VCC1SDP44Q5+5VU1BIout1Iout2RfbVref11129+5V865LM3247+5V20U2DAC0832D0D1D2D3D4D5D6D7DA-CS765416151413117218lsbDI0DI1DI2DI3DI4DI5DI6msbDI7CSXferWR1WR2R110KR310KD/A-VOVccR25.1KU1C910LM3248J2612R410KILE19WR
图2 A/D、D/A转换原理图
+5V+5VJ18321J19321RP1RP247K47K 图3 模拟电压输出调节电路
10.6实验步骤
1、用排线将J18与J25连接(模拟量输入);
2、用排线将CPU的P00或P01插针与J23连接(数据总线) 3、J24的WR/RD线分别与CPU板上的WR/RD连接;
4、J24的AD_CS 片选信号可以连接P2.7(或P2的其它引脚); 5、J24的AD_CLK 时钟输入接ALE引脚;
6、J24的AD_EOC ADC转换结束输出信号,可以接P1或中断输入信号; 7、编程编译、下载;
8、缓慢调节电位器,观察分析LED发光二极管的亮灭规律。
10.7注意事项
注意A/D转换结果的读取方法。
实验十一 D/A转换实验
11.1实验目的
1、了解D/A转换与单片机的接口方法。
2、了解D/A转换芯片DAC0832的性能及编程方法。 3、了解单片机系统中扩展D/A转换芯片的基本方法。
11.2实验内容
利用D/A转换器DAC0832输出一个方波。
11.3实验预习
1、熟悉D/A的转换原理及转换方法。
2、掌握DAC0832的用法以及与单片机的接口电路。 3、掌握单片机系统中数据采集的方法。
4、熟悉DAC0832数摸转换输出不同波形的实现方法。
11.4实验接线及步骤
参照AD0809实验,进行硬件连线。
1、用排线将CPU的P00或P01插针与J23连接(数据总线) 2、J24的/WR线分别与CPU板上的/WR连接;
3、J24的DA_CS 片选信号可以连接P2.7(或P2的其它引脚); 4、编程编译、下载;
5、使用示波器观察DA输出波形(J26)。
11.5思考
三角波、梯形波与锯齿波波的实现方法有何不同?正弦波呢?
实验十二 利用MCS-51单片机控制交通灯(综合实验)
12.1实验目的
熟悉并掌握MCS-51系列单片机的工作原理以及编程方法和技巧。全面掌握MCS-51系列单片机硬件结构。
12.2实验内容
1、当A、B道均有车时轮流放行。A道放行10秒,B道放行10秒,转换时黄灯亮0.5秒。时间显示采用数码管显示。
2、一道有车时,另一道无车时,立即让有车的道放行。
3、当有紧急车辆时(如警车,救护车)通行时,禁止普通的车辆通行(A、B道皆亮红灯)。
实验十三 电脑时钟(综合实验)
13.1实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
13.2实验内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
13.3实验步骤
连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。
13.4思考
1、电子钟走时精度和程序中哪些常数有关?
2、修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。
附录1 SDUST-CEE-UC单片机实验箱介绍
该实验箱针对在国内8位单片机领域应用范围较多的MCS-51单片机的学习与仿真而研制。利用此平台,采用STC89C5x(DIP 40封装)单片机时可以通过计算机的RS232串行通信口完成程序的下载任务,或借用第三方的仿真工具实现对51系列单片机实时仿真。也可以对AT89S5x系列单片机下载。本机配备了mini51仿真器,可以实现对常见51单片机的仿真功能。
1. 实验箱特点
1) CPU单元模块化设计,便于更换实现对不同单片机的仿真学习。 实验箱将主控芯片独立设计为一个模块,模块CPU插座采用DIP40自锁插座,方便更换或程序的下载,通过更换该
CPU模块上的CPU芯片,实现对不
同厂家和不同型号51单片机的仿真学习。
2) 加大实验教学中的动手实践、有效提高教学效果。
在进行实验学习或仿真过程中,各模块间的连线均要求学习者自己根据实验要求设计选择,并自己动手连接,实验学习灵活性强。
3) 实验项目多,内容丰富,新知识、新技术应用
本实验箱除可以完成基本的I/O实验、可编程I/O接口芯片8255A、并行A/D、D/A、外部中断、计数功能等实验项目外,还包括了1-Wire总线、SPI总线、I2C总线、点阵液晶、红外线通讯等新技术、新型功能芯片的电路应用,很好地跟踪了新技术的发展。
4) 综合性、创新型实验项目加强
通过本实验箱可以完成交通灯、日历时钟、多点温度测量系统、温度控制系统、电机控制、频率/计数计等多个综合性实验系统。
5) 可维护性好
由于原实验箱购买,基于知识产权的保护和设备的更新换代等因素,目前设备实验过程中设备损坏后维修困难,部分器件非得以依赖厂家,本实验箱电路完全开放,有关人员完全可以自己维护。
15
附图1 实验箱图片
2. 实验箱电路模块及功能 本实验箱由多个模块单元组成. 1) 51系列CPU模块
可以使用STC89C5x系列或AT89S5x系列PDIP40引脚的CPU,或其他经一定转换后的CPU,也可使用第三方的DIP40仿真器。
该CPU模块的 P0-P3均设置有10k上拉电阻,每个口设计有2个SIP-8针插座,便于组成一套应用系统时使用。电路如图1.1所示。
该模块设置上电复位和手动复位电路,并且设有电源开关,以便控制电源上电或进入下载编程状态,开关为POWER/PROG。 注:程序下载具体方法见附录。 2) LED发光二极管显示模块
+5V8*1k8*1kL0-RL1-GL2-YL3-RL4-GL5-YL6-RL7-GL8-YL9-RL10-GL11-YL12-RL13-GL14-YL15-R181614121816141274HC24497531Y11Y21Y31Y42Y12Y22Y32Y474HC2441A11A21A31A42A12A22A32A41A11A21A31A42A12A22A32A41G2G1Y11Y21Y31Y42Y12Y22Y32Y49753246811131517119246811131517J6 附图2 LED发光二极管指示单元原理图
J2212345678实验系统设计有L0-L15共16只发光二极管及相应驱动电路,输入低电平亮。可用于完成各种状态指示,红、黄、绿三种颜色二极管交错排列,可以实现交通灯等应用系统中的指示信号使用。
3) 基本I/O扩展模块
J3212345678D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7WR1234781314171812345678L8L90L1L11L12L13L14L15L0L1L2L3L4L5L6L774LS377D0D1D2D3D4D5D6D7CLKEQ0Q1Q2Q3Q4Q5Q6Q7256912151619Q0Q1Q2Q3Q4Q5Q6Q71191G2GJ341234567874LS32J331234WRRDCS1CS2CS2A311174LS244D0D1D2D3D4D5D6D71816141297531Y11Y21Y31Y42Y12Y22Y32Y41A11A21A31A42A12A22A32A4246811131517I0I1I2I3I4I5I6I7J3512345678P6123+5VVCCRDCS1121374LS32D111191G2G 附图3 基本输入、输出扩展模块原理图
本模块电路选择在应用系统中应用较为广泛的输出扩展芯片和输入扩展芯片组成,由八D输出锁存器74LS377和双-四驱动器74LS244构成。
4) 并行输入-串行输出转换
并入串出模块电路可以完成使用串行输入方式读取8个开关状态的输入功能,实现用较少的输入口读入较多开关量的目的,从而节省了输入口。本模块电路选择74LS165完成并入串出转换电路。
74LS165SER10111213143456B0B1B2B3B4B5B6B7+5VJ1712345678J16123PLCLKQ121597PLCLK1CLK2Q7Q7P0P1P2P3P4P5P6P7
附图3 并入串出扩展模块电路原理图
5) 逻辑电平开关模块
+5V10K*8S0S1S2S3S4S5S6S7K0K1K2K3K4K5K6K7K0K1K2K3K4K5K6K7J3612345678 附图4 逻辑电平开关模块原理图
实验系统设计有8只波动开关,J24插座实现电平状态的输出,可以为实验过程提供高低两种电平的切换。
6) 温度测量模块(1-wire总线)
R44.7k+5VT1J2612CON2DQGND32118B20 附图5 温度测量模块原理图
实验系统设计有两个温度传感器18B20, 该温度传感器采用1-wire总线技术,通过开关J25可以进行单温度传感器和多温度传感器的应用学习。 7) 日历时钟及串行EEPROM模块(IIC总线)
+5VRP?10K*4D?41481234EX1R21KD412345+5VJ81234INTCLKSCLSDACLKSCLSDA8765U?PCF8563OSCIOSCOINTVSSVDDCLKOUTSCLSDAINT32.768C110p+5VU?8765AT24C04VCCWPSCLSDAA0A1A2GND1234+5v 附图6 日历时钟及串行EEPROM应用模块原理图
实验系统设计有日历时钟及IIC EEPROM电路。分别配置了PCF8563和24C04,可以完成日历时钟和EEPROM存储器的读写功能。 8) 8255A模块单元
J2812345678J2712345WRRDCSA0A1D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7RDWRA0A1CSRSTU?343332313029282753698635D0D1D2D3D4D5D6D7RDWRA0A1CSRESETPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC743214039383718192021222324251415161713121110PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7PA0PA1PA2PA3PA4PA5PA6PA7J2912345678J30PB0PB1PB2PB3PB4PB5PB6PB712345678J318255PC0PC1PC2PC3PC4PC5PC6PC712345678 附图7 8255 并行I/O扩展电路
实验系统的8255模块单元可以进行8255A基本扩展I/O功能实验。 9) 脉冲发生电路
实验系统采用555设计了脉冲发生电路,通过调节电位器实现对输出信号频率的调节,产生的脉冲信号可供计数或测量频率实验使用。
R?1KRP?10kU?555J20Q3123R?20kC?10+5V4R?1k7DIS26C?0.1TRIGTHRRVCC8CVolt51GND 附图8 脉冲发生电路
10) 模拟电压给定调节模块
+5V+5VRP1J18321RP247KJ1932147K 附图9 模拟电压输出调节电路
11) 数码管静态显示模块
VCC3LM317TVin+Vout23 81KCOMCOMCOMCOMCOM0.1uADJ1400 9 1 0 7 6 5 4 2 1 g f a b dp c d e g f a b dp c d e g f a b dp c d e g f a b dp c d e g f a b dp c d e345601111213345601111213345610111213345601111213345601111213+5VCCJP8+5VQ0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7Q0Q1Q2Q3Q4Q5Q6Q7U374HC164U474HC164U574HC164U674HC164U574HC164CLKCLKCLKCLKCLKCLKMRMRMRMRMR1289128912891289128912812CLKSDI9J55VCCVCCVCCVCCVCCMRVCCABABABABABABQ0Q1Q2Q3Q4Q5Q6Q7U634560111121374HC164 附图10 数码管静态显示模块
12) 数码管和键盘动态扫描模块
J5612345678ABCDEFGDpACEGDpFDB246811131517119C0C1C2C3C4C5R0R1+5V74LS2401A11A21A31A42A12A22A32A41G2GDS?1Y11Y21Y31Y42Y12Y22Y32Y4181614129753764211095abcdefgdpDPYafegdbcdp764211095abcdefgdpDPYaDS?fegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp764211095abcdefgdpDS?DPYafegdbcdp8*360J5712345678cmcmcmcmcmcmcmcmcmcmcm383838383831615141312AULN2003BULN2003CULN2003DULN2003EULN200311FULN2003+5VCCJP9+5V12345K0K1K2K3K4K56cm8+5V10KR0K6K7K8K9K10K11R110KC0C1C2C3C4C5 附图11 数码管和键盘动态扫描模块
13) RS232串行接口模块
+5VJ120.11627384950.11615141312111090.10.10.112345678C1+VCCV+GNDC1-T1outC2+R1inC2-R1outV-T1inT2outT2inR2inR2out123TKTXD/P3.1RXD/P30MAX232
附图12 RS232串行接口模块
14) 单脉冲模块
VCCR?5.1KU?A1274LS003121113ANu?B74LS00691074LS0074LS00U?C8J211234CON4U?D5R?5.1K4
附图12 RS232串行接口模块
实验箱配置单脉冲电路,采用RS触发器产生正负单脉冲。每按一次AN按钮开关,即可从J43输出正负脉冲,供中断、计数等实验使用。
15) 红外收发单元模块
+5V红外收发U7A4001D1LEDR5360R4150KU7B5461340014001Q1901311R73K132U7D12R322MY1C220P38KC420PJ4321TTLTXDRXDJ21838123+5vR6100C510u 图1.22 红外收发单元模块原理图
16) LCD12864液晶显示
+5VCCJP12+5VVCC128*641234567891011121314151617181920J5412345RSRWECS1CS2J5312345678D0D1D2D3D4D5D6D7RSR/WED0D1D2D3D4D5D6D7CS1CS2RW2VOVCC 图1.25 点阵液晶126*64模块原理图
3. 实验箱可完成的硬件实验项目
1) PI口驱动LED发光二极管实验
2) 数码管驱动显示实验(164串行静态8位,动态扫描显示8位) 3) P0-P3口输入输出实验 4) 工业顺序控制
5) 定时、计数应用(脉冲计数、测脉宽):可以调整555输出波形脉宽 6) 外部中断系统的应用 7) 简单I/O扩展
8) 可编程I/O接口芯片8255A实验 9) 并行A/D、串行AD转换实验 10) D/A转换实验 11) 8279键盘显示实验
12) 模拟IIC接口(日历时钟PCF8583,2402) 13) 温度测量DS18B20应用 14) 继电器隔离控制 15) 步进电机控制
16) MCS51串行口应用实验
1. TTL(RS232)双机通讯 2. RS232 PC机通讯实验
3. RS485接口通讯实验(双机之间) 4. 红外串行通讯实验
17) 液晶2*lcd显示实验 18) 外部存储器扩展实验6264 19) 12832点阵图形显示 4. 程序下载方法 4.1 STC单片机下载方法
(1)将PC机与实验箱后面的DB9用直连串口线连接;
(2)将实验箱CPU模块右上角按键开关打开(按下锁定位置); (3)将实验箱左下侧的串口开关PROG按下;
(4)将欲编程的STC 单片机的CPU安放到PDIP锁紧座中,并锁住; (5)点击运行PC机桌面上的STC_ISP_V479.exe软件,出现如图xx所
示下载画面,按图示步骤操作,根据窗口下部的信息提示小窗口提示,打开左上角红色船型开关上电,完成下载。
第1步:选择芯片型号第2步:打开文件第3步:设置串口属性第4步:设置芯片特性第5步:点击下载状态信息提示4.2 艾特梅尔AT89S5x系列单片机下载方法 (请参阅有关资料)
附录2 Keil uVision3 操作指南
为方便源代码调试,本节将介绍目前较常用的调试环境Keil C51。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言的开发系统,该软件提供了丰富的库函数和功能强大的集成开发调试工具,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件,然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目前Keil的版本已经出到Keil uVision4,但该版本还没普及,本节将针对普遍使用的Keil uVision3介绍。
1.2.1 Keil uVision3主界面 图1.2.1是Keil uVision3的主界面示意图。由这个界面可以看出该软件的主要功能,及其各功能在软件中的位置,利用界面中的菜单栏和工具栏即可完成工程的新建、源文件的添加、编译、连接、调试及仿真等工作。
菜单栏 工具栏 项目管理窗口 源程序编辑窗口 输出窗口 状态观察窗口 图1.2.1 Keil uVision3主界面示意图
1. 菜单栏及工具栏
该部分提供WINDOWS常用工具,如打开、保存、打印、复制、剪切等工具。同时,提供了源程序的新建、编辑、编译、连接及仿真等工具,相应功能可以通过菜单栏实现,也可以通过工具栏中的快捷键实现,方便快捷。
2. 项目管理窗口
该窗口用于添加、查看并管理与项目有关的文件,如与项目相对应的源文件、头文件、目标文件等。
3. 源程序编辑窗口
用于对源程序进行编辑,可以是C语言或是汇编语言。具有WINDOWS编辑器的所有功能,如剪切、复制、查找等。除此,用户还可以选择字体、文本颜色等。调试时可在源程序中设置断点。
4. 输出窗口
该窗口用于显示汇编器输出文件和列表文件。 5. 状态观察窗口
用于观察程序运行时PC寄存器等的状态。 1.2.2 Keil uVision3操作步骤
首先打开Keil uVision3调试环境,如图1.2.2所示:
图1.2.2 Keil uVision3起始界面
建立一个新工程,选择菜单中的“Project”—>“New Project”,进入“Create New Project”界面,如图1.2.3所示:
图1.2.3 Create New Project界面
选择保存新项目的位置,并为新项目取名(一般为英文名),点击“保存”按钮,进入“Select Device for Target ‘Target 1’”界面,即CPU选择界面,其中左侧“Data base”框内列出了当前可用的CPU类型,右侧“Description”框
内为所选CPU的介绍,如图1.2.4所示:
图1.2.4 CPU选择界面
选择所需要的CPU,点击“确定”按钮,此时出现图1.2.5所示询问框,选择“否”进入图1.2.6所示界面。
图1.2.5 询问框
图1.2.6 新工程界面
至此,新工程建立完毕,下一步需要新建源程序文件。选择“File”—>“New”,如图1.2.7所示,源程序编辑窗口中出现编辑界面,输入需要调试的程序(C51或ASM),点击“File”—>“Save”将源程序保存,如图1.2.8所示:
图1.2.7 新建空源文件
图1.2.8 保存源文件
注意,在保存源文件时,如果所调试的源程序是C51程序,文件名应为“XXX.c”;如果所调试的源程序是ASM程序,文件名应为“XXX.asm”。将源文件保存后,在“项目管理窗口”中右键点击项目文件夹,如图1.2.9所示,选择“Add Files to Group“XXXX””,进入源文件选择界面,如图1.2.10所示:
图1.2.9 向工程中添加源文件
图1.2.10 选择要添加的源文件
选择要添加的源文件,点击“Add”按钮,然后关闭该界面,即可发现“项目管理窗口中”出现刚添加的源文件,如图1.2.11所示:
图1.2.11 源文件添加完毕
至此,新工程的建立、源文件的建立以及源文件如何添加至新工程均操作完毕,然后便可以对源程序进行编译、仿真等操作。如:选择“Project”—>“Rebuild all target files”可以对源程序进行编译;选择“Debug”—>“Start/Stop Debug Session”可以对源程序进行在线仿真。
附录3 编译错误信息
01:Bad operation
操作码错 操作数错 常数错 字符串错
重复定义或常数。汇编程序期望一个标识符,但却出现一个常数,或虽是一02:Bad operand 03:Bad constant 04:Bad string
05:Repeat define or constant 个标识符,但它已被定义过。 06:Divide by zero
除数为0,表达式中0作为除数。 07:Invalid character
无效字符,该字符在汇编语言中无定义。 字符串长度为0
在包含文件中出现了不期望的“END”,一个程序不能在包含文件中结束。 期望“(” 期望“)” 期望“CR”
汇编程序已成功的汇编了一行,但这行中还有内容未用到。 期望“,”
过程名应是一个未定义的标识符,汇编程序期望一个标识符,但却出现一个常
08:Null string
09:UnExpected\"END\" in include file 10:“(”Expected 11:“)”Expected 12:“CR”Expected
13:“,”Expected 14:Procedure name error
数,或虽是一个标识符,但它已被定义。 15:PROC symbol not define
过程已结束,但还有过程入口没有定义。
期望文件名。INCLUDE,USES命令行中需要文件名。 ORG定义的地址错 跳转出范围
太多的向前定义(大于2K个)
程序中标号太多(>1K)。程序中的标号太多,建议使用汇编程序提供的过程16:File name Expected 17:Bad ORG
18:Jump out of range 19:Too many FORWARD define 20:Too many labels in program 结构。
21:Too many lables in procedure
过程中标号太多(>1K)。一个过程中的标号太多,一个过程不应这样大,您可将这个过程分成若干个小规模的过程。 22:Too many debug file
被调试的文件太多,一个程序最多可调试含48个子文件的源程序。
23:Bad bit address
位地址错。位地址的范围是: (1)20H~2FH
(2)大于80H且能被8整除
过程中不能定义过程,过程是不可嵌套的
过程的入口太多,一个过程最多可有30个入口,如果您的过程入口多于30个,
24:PROC can not in procedure 25:Too many Entry in procedure 请分成若干个小规模的过程。 26:Symbol not define
标号未定义
程序超出了程序存储器的地址空间
DB或DW太长。每个DB和DW最多允许定义255字节。 您可用几个DB或DW来定义大量数据。 行超出范围
过程中不期望的“END”。过程已结束,但还有入口没有被定义。 在列表时标号太多
单元中的过程必须在单元中结束 期望“END” 期望标题
TITLE语句中必须有一标题字符串,如果不想打印标题可设为一空白字符串,27:Program out of range 28:DB or DW too long
29:Too many lines
30:UnExpected“END”in procedure 31:Too many lables 32:PROC not end in init 33:“END” Expected 34:TITLE String Expected
TITLE的初值即为一空白串。 35:String too long
字符串太长,字符串的最大长度为255字节。 IF嵌套太深,最多可嵌套8层。
汇编源程序文件太大,一个文件最大为64K,可用INCLUDE语句将源程序放置在
36:IF too deep 37:File too deep 几个文件中。
38:“┌”Expected
期望“┌” 期望“┐” 期望“IF” 期望“ENDIF” 期望“=” 39:“┐”Expected 40:IF expected 41:ENDIF expect 42:“=” expect
因篇幅问题不能全部显示,请点此查看更多更全内容