1、 单片机学习机及编程器的设计与制作 摘 要:详细论述了 51系列单片机学习机及编程器的设计思路和实现方法,该学习机既是仿真器又是编程器,他可以编程 EPROM 和 E PROM 及 AT89C51(2),在该机上可以进行机器语言程序的输入、调试、修改和运行;同时软件编程可以在 PC机上完成,通过串行通信下裁到该机的仿真 RAM 中运行。该装置是一款物美价廉的单片机软、硬件的学习工具和开发工具,有着重要的使用价值和推广价值。 关键词:单片机;仿真器;编程器;串行通信 1 系统简介 本系统用 AT98C52单片机组成一个学习机, 他可以开发 MCS-51系列的任何单片机。 其中 8 k的 FLAS
2、HROM存放仿真器监控程序。用 3片 8 k静态 RAM6264作为外 24 k RAM ,可以扩展为 64 k。同时每片 6264可换为 E PROM2864进行编程。并行口选用一片 8155作为键盘显示控制器,另外一片并行口 8255作为 EPROM 编程器驱动器,同时可以驱动打印机。 本系统键盘配有 3O个小按键, 1个复位键, 16个数字键, 13个命令键。本系统用 6个共阴极数码管作为显示器,其中左边高 4位显示地址或状态,低 2位显示数据或代 码。 本系统借助片内的 SIO,通过一片 MAX232形成简易的 RS 232串行接口,可以与 PC机或单片机串行通信。在 PC机上完成 5
3、1汇编语言或者 C51程序的编写、汇编、调试,最后变成 HEX (16进制 )格式,通过串行通信口写入到仿真器中从 2000H开始的内存单元,在仿真机上运行程序。 本装置将 PSEN与 RD相与形成统一的读信号线,这样片外的 RAM 既是数据存贮器又是程序存贮器。 本系统特点: (1)可以作为单片机原理及单片机汇编语言的学习机,用户可以用键盘直接输入机器语言程序,进行运行、调试程序。 (2)又是 EPROM, E PROM 和 AT89C51(2)的编程器。 (3)能与 PC机实现串行通信,在 PC机上完成汇编程序或 C51的编写、调试汇编,最后转换成 HEX格式,通过串行通信写入到仿真器的从
4、 2000H开始的内存单元运行调试程序。 (4)还可以与其他单片机进行串行通信,实现数据交换。 (5)还可以把 ROM 中数据移动到 RAM 中或 EPROM中去,同时在 RAM 和 E PROM 之间互相移动数据。 (6)还可演示交通灯、 8字旋转、实时时钟和电子音乐等。并能进行 A D和 D A转换及定时器实验。 (7)还可作为一个精确 的电子时钟使用,或作为自动打铃器使用。 2 学习机电路原理 2 1 键盘显示器电路 键盘显示电路原理如图 1所示。 本系统采用一片 8155作为键盘扫描显示器接口。字位口用达林顿集成电路 UNL2OO3A驱动,字形口用 74LS244驱动, 8155的 A
5、 口输出字形码, B口输出字位码, C口作为键回扫信号。 6个高亮度数共阴极数码管作为显示器。 30个小按键,其中 16个是数字键, 13个为命令键, 1个为复位键。 图 1 键盘显示电路原理图 2 2 主电路 主电路原理图如图 2所示。 图 2 主电路原理图 主电路由 AT89C52作为控制器,扩展 3片 RAM6264或 E PROM2864,系统的 RAM 为 24 k,扩展 1片 8255A作 为 EPR0M 编程和 AT89C51(2)编程接口电路。为了满足固化程序的需要,扩展了 1片 74LS02实现或逻辑。同时为了满足固化信号时序的需要,用三极管 91O3和 91O5及二极管 D
6、3、 D4组成电压放大和电压切换电路,为固化程序提供 + 5 V 和 + 12 V 电压。本系统可以固化 EPROM2764和 27128及 AT89C51 (2)。 电阻 R2和 D1, D2组成或逻辑,使仿真 RAM 既可作数据存贮 器又可作程序存贮器使用。 主电路扩展了 1片 MAX232EC作为电平转换,实现本系统与 PC机的串行通信。 主电路扩展了 1片 ADC0809用以完成 8通道的 A D转换,本系统只用了一个输入通道,用WI改变输入模拟电压的大小,其转换的数字量显示在数码管上。 本系统扩展了 1片 DAC0832作为 D A转换,为了得到电压输出使用了 1片运算放大器 LM3
7、24作为电流一电压转换放大电路。 本系统用 74LS138作地址译码器为各芯片提供片选信号。 RAM1的 cE接 YO, RAM2的 cE接 Y1,RAM3的 CE接 Y2, 8155的 CS接 Y3, 8255的 CS接 Y4, 0809接 Y50832接 Y6。 3 系统资源的使用 (1)用户仿真数据存贮器空间为 00005FFFH。其中 RAM1为 0000H1FFFH, RAM22000H3FFFH,RAM3为 4000H5FFFH。 (3)系统上并行 I O 接口 8255的端口地址为: A 口为 8F00H; B口为 8F01H; C口为 8F02H;控制口为 8F03H (4)系
8、统上并行 I O 口接 8155的端口地址为:控制口为 7F00H; A 口为 7F01H (字位口 );B口为 7F02H (字形口 ); C 口为 7F03H 内部 RAM 地址为: 7E000H 7EFFFH (监控占用 )。 (5)A D转换器的地址为 BF00H, D A转换器的地址为 DFo0H。 (6)监控程序使用 AT89C52内部的 RAM 分配如下: 3AH, 3BH, 3CH, 3DH, 3EH, 3FH为源首址低位、源首址高位、目的首址低位、目的首址高位存贮单元。 79H, 7AH, 7BH, 7CH, 7DH,7EH 为显示缓冲区。位地址 78H为 UP键标志, 7C
9、H为错误标志。 4 系统软件说明 4 1 监控程序说明 键盘监控程序固化在 AT89C52 FLASHROM 中,地址为 0000H1FFFH,共 8 kB,用户程序数据存贮器空间为 0000H5FFFH, 8155的内部 RAM 供监控占用,用户不能使用。 AT89C52内部 RAM 的128 B全部给用户使用。 4 1 1 单板态 在本状态时显示器显示 P-8031字符,表示开发机处于初始化状态,等待操作。在计算机接通电源自动复位时处于单板状态;按压 RESET键复位后使本机处于单板状态;在单板状态下可以进行以下操作: (1)按任一数字键,显示该键输入的数字。 (2)按 PCCOM键,进入
10、与 PC机通信、调试状态,显示器全暗; PC机的 程序可以传到单机RAM 中。 (3)按 EXEC键,从 ROM 中或从仿真 RAM 中连续执行用户程序。 (4)按 BAZI键,显示 8字循环;说明本系统良好。 (5)按 PCCH键,检查要固化的 EPR0M 是否为空;空时返回监控,不空时返回 EPROM 中第 个不空的地址和数据。 (6)按 PAD键,可以将模拟信号转换为数字信号并显示在显示器上。 (7)键盘入 2位数字,再按下 EXAM 键或 READ键盘可以进行片内 RAM 或 SFR的检查。 (8)键盘入 4位数字,再按下 EXAM 键或 READ键可以进行外部 RAM 的 内容检查。
11、 (9)按 WRIT键,可以给显示的地址的单元写入数据,写入数据后地址加 I。 (10)按标志键 F,装入源程序首址,即把当前显示器的内容作为源程序首址,装入本机的约定单元,并显示 “ 1”标志符;再按标志键“ F”,装入源程序末址,即把当前显示的内容作为源程序末址,装入本机约定的单元,并显示“ L”标志符。按标志 F可以进行的操作为: 按 MOVE键,进入程序数据块移动,操作如下: 源首址, F,源末址, F, 目标首址, MOVE。 按 TIME键,显示 000000,要输入时间初值,按 EXE键运行时钟。 4 1 2 上功能键盘状态 按下 UP键时,显示器显示“ P”字 表示系统处于上功
12、能态。上功能态的操作有: (1)EPROM编程操作:源程序首址, F,源程序末址, F,目标首址, BAZI。 (2)E。 PROM 编程操作:源程序首址, F,源程序末址, F, 目标首址 MOV。 (3)单片机之间接收操作:源程序首址, F,源程序末址, F, 目标首址, RAD。 (4)单片机之间发送数据操作:源程序首址, F,源程序末址 F, WRIT。 (5)单步执行程序:源程序首址, EXEC。 (6)固化区内容移入目标 RAM 操作:源程序首址, F,源程序末址, F, 目标首址, EPCH。 (7)播放电子音乐: UP, TIME。 (8)交通灯演示: UP, PAD。 (9)
13、AT89C52编程: UP, PDA。 4 2 系统监控软件分析 系统监控软件用 C51语言编写。系统软件框图如图 3所示。系统程序由显示子程序、主控程序、键盘扫描子程序、键功能程序等组成。 4 2 1 主控程序 主控程序首先调用初始化程序和键盘扫描子程序,得到键值以后进行判断,如果键值16则为功能键,再去查功能表转去执行相应的功 能程序;如果键值 16则为数字键,则执行数字键处理程序。数字键处理程序是把键值显示在数码管上,显示的顺序是由右向左。 4 2。 2 键盘扫描子程序 键盘扫描子程序的特点:利用两次调用显示子程序作为延时程序来消除键抖动,这样就可以不用再编写延时程序,简化了程序的编写。
14、扫描子程序返回主程序的变量是 A,其值为键号。 4 2 3 AT89C51(2)编程器程序设计 AT89C51编程流程图如图 4所示。 图 3 系统软件图 图 4 AT89C51编程流程图 在要编程的 AT89C5I的 XTAL1和 XTAL2端接 6MHZ的晶振, VCC接 +5 V, VSS接地, 8255的 PB口与 AT89C51的 P0口相接, 8255的 A 口与 AT89C51的 P1口相接作为低地址信号, 8255的 C口低 5条线与 AT89C51 的 P2口相接,作为高位地址信号。由 8255的 PC7产生其 ALE PRG信号。由 P1 7控制 EA VPP=+12 V和
15、 EA VPP=+5 V的信号转换。 首先在 PC机上编写程序,然后进行编译、连接,再转换成 HEX文件格式, PC机以串行通信的方式下载到仿真 RAM,最后在单片机控制下由仿真 RAM 写入 AT89C51的 FLASHROM 中。 AT89C51(2)的擦除时序是:首先使 P2 6一 +5 V, P2 7=0 V, P3 6 0 V, P3 7 0 V,EA VPP一 +12 V。 ALE PRG一 0 V,延时 10 ms,然后使 ALE PRG: +5 V, EA VPP一 +5 V。这样就可以完全擦除芯片。在 AT89C51编程前必须先擦除芯片。 AT89C51(2)的编程时序是:首
16、先用 8255的 A 口和 C口送地址到 P1口和 P2口,用 8255的 B口送数据到 P0口;再使主控 CPU 的 P3 2 0 V, P3 3=+5 V, P3 4=+5 V, P3 5一 +5 V,P1 7 0 V, (即 EA VPP一 +12 V), 8255的 PC7一 +5 V (即 ALE PRG一 0 V);然后延时 2O ms;最后使 EA VPP一 +5 V, ALE PRG一 +5 V。如此反复直到数据写完为止。 主电路图中的 R15, R16, +12 V 的稳压管 D9及三极管 Q3组成 VPP由 +12 V和 +5 V之间的转换电路。其原理是:当 P1 7为 0
17、时, Q3截止, D9输出 +12 V电压;当 P1 7: =: +5 V时, Q3导通, D9输出的 +12 V电压由 R15和 R16分压,稳压器近似输出 +3 5 V的电压。实践证明这是可行的。 在编程中用延时 (延时 20 ms)的方法代替校验方式,经过实践证明,不会出现错误。 4 2 4 EPROM 固化程序设计 EPROM 编程采用快速智能化编程方法,利用多次执行调用显示程序来实现写入延时,这样即可以实现延时又可以完成显示。根据 EPROM 的编程时序, 8255的 A 口向 EPROM 的数据口传送数据, 8255的 B口和 C 口为 EPROM 提供地址, 8255的 PC7为
18、其提供 PROG信号, 8255的 PC6控制 OE信号和 +12 5 V 电压与 +5 V 电压的转换,主电路 图中的 Q1, Q2, D3, D4, R4, R5,R6及 74LS02组成了 0E信号和 VPP一 + 12 5 V 与 VPP一 +5 V的转换电路。 EPROM在固化前必须进行擦除,紫外线擦除后要检测其是否空,因此本系统又提供了查空子程序。为了把固化的程序读出来运行,本系统又提供了固化区程序移动子程序。这里要注意的是, VPP电压必须稳定在 +12 5 V,对 VPP电压要加电源滤波电路。主电路图中 C15和C16实现滤波功能。 4 3 PC机的软件包 在 PC机上利用现成
19、的 KEIL C51的 Windows集成开发环境 VISION51和软件仿真器DSCOPE51(网上可免费下载 ),他可以完成源程序的编辑、调试、编译、连接定位到目标文件的仿真调试等全部工作。在 PC机上运行与单片机的通信程序 P51 EXE可以把 HEX 目标文件发送给本系统,进行运行或编程。或者接收本系统中 ROM 或 RAM中的内容进行进一步的调试。 PC机的通信程序用 c语言编写,波特率设置为 9600 B s,通信格式为 1位起始位, 8位数据位,无奇偶校验, 1位停止位。 PC机上发送的是 16进制数据,而且发送的文件必须符合 INTEL的 HEX格式。 由于 PC机的波特率是标
20、准波特率 ,而单片机由于其使用的晶振不同,其波特率的设置往往不是标准的。为了满足波特率相匹配,本系统采用了晶振为 11 059 2 MHz。这时只要将单片机中的定时器 1设置为方式 2作为波特率发生器,且置 TH1=250, SMOD=1; PC机中设置除数寄存器的值为 0CH,波特率为标准的 9 600 B s。如果采用 6 MHz的晶体,那么单片机就难设置成标准的波特率。这时只要将 PC机的除数寄存器设置为 0BH,单片机 T1方式 2,置 TH1 253, SMOD-1,则波特率近似为 10 417 B s。 虽然可以实现通信但会产生一定的 误差。 在 DOS环境下的操作是:在单片机上按
21、下 COMM 键,在 PC机上输入命令: p51 r hex文件名 (回车 )。这时就可以把首地址从 0000H书写的应用程序的 hex文件发送到单片机的从 0000H 开始的地址单元去;或者把从 2000H书写的应用程序的 hex文件发送到单片机的从 2000H开始的地址单元去。这时就可以从 2000H处运行程序。在单片机上按下 UP+COMM键,同时给出传输的字节长度 (4位 ),在 PC机上输入命令: p51 S hex文件名 (回车 ), PC机就可以把单片机中从2000H开始的、长度为给定值的 数 据传送到 PC机中的 HEX文件中去。 5 结 语 本装置体积小,功能强,性价比高。既
22、是学习机,又是编程器,还可以进行程序仿真和演示,是一款实用的学习单片机软、硬件的工具。实践证明其性能良好、稳定可靠、写片速度快、精度高,在单片机应用系统开发中有重要的推广价值。 参考文献 1 张毅刚 MCS-51单机应用设计 M哈尔滨:哈尔滨工 业大学出版社, 2000 2 何立明单片机应用技术选编 M北京:北京航空航天 大学出版社, 1996 3 李朝青 PC机及单片机 数据通信技术 M北京:北京航 空航天大学出版社, 2002 4徐爱钧,彭秀华单片机高级语言 C51Windows环境编程与应用 M北京:电子工业出版社, 2003 5 李振格微机高级语言与汇编语言接口技术和实例 M 北京:北京航空航天大学出版社, 1994 ,