1、摘要本系统是基于AT89C51单片机的数字式低频信号发生器。采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和8位数码管等。通过按键控制可产生方波、三角波、正弦波等,同时用数码管指示其对应的频率。其设计简单、性能优好,可用于多种需要低频信号的场所,具有一定的实用性。各种各样的信号是通信领域的重要组成部分,其中正弦波、三角波和方波等是较为常见的信号。在科学研究及教学实验中常常需要这几种信号的发生装置。为了实验、研究方便,研制一种灵活适用、功能齐全、使用方便的信号源是十分必要的。本文介绍的是利用AT89C51单片机和数模转换器件DAC
2、0832产生所需不同信号的低频信号源,其信号幅度和频率都是可以按要求控制的。文中简要介绍了DAC0832数模转换器的结构原理和使用方法,AT89C51的基础理论,以及与设计电路有关的各种芯片。文中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路和软件编程。信号频率幅度也按要求可调。本次关于产生不同低频信号的信号源的设计方案,不仅在理论和实践上都能满足实验的要求,而且具有很强的可行性。该信号源的特点是:体积小、价格低廉、性能稳定、实现方便、功能齐全。关键词:AT89C51 DAC0832 LM324 8位数码管显示目 录摘 要目 录第一章 绪论1.1单片机概述1.2信号发生器的分类
3、1.3研究内容第二章 方案的设计与选择2.1方案的比较2.2设计原理2.3设计思想2.4设计功能第三章 硬件设计3.1硬件原理框图3.2主控电路3.3数、模转换电路3.4按键接口电路3.5时钟电路3.6显示电路第四章 软件设计4.1程序流程图第五章 总结与展望致 谢参考文献附录1电路原理图附录2 源程序附录3元件清单.3第一章 绪论1.1单片机概述随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小、成本
4、低,性能稳定、使用寿命长等特点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的9,10。1.2信号发生器的分类信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅
5、度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。1.3 研究内容本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。 4 第二章 方案的设计与选择2.1 方案的比较方案一:
6、采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系
7、数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。2.2 设计原理 数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通讯接口等,只要将89C51再配置键盘及其接口、显示器及其接口、数模转换及
8、波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。滤波放大D/A转换器接口电路89C51单片机图2.1 信号发生器原理框图89C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。2.3 设计思想(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。(2)将一个周期的信号分离成256个点(按X轴等分),每两点之间的时间间隔为T,用单片机的定时器产生,其表示式为:T=
9、T/256。如果单片机的晶振为12MHz,采用定时器方式0,则定时器的初值为: X=213T/Tmec (2.1) 定时时间常数为: TL =(8192T)/MOD256 (2.2) TH=(8T)/256 (2.3)MOD32表示除32取余数(3)正弦波的模拟信号是D/A转换器的模拟量输出,其计算公式为: Y=(A/2sint)+A/2 (其中A=VREF)(2.4) t=NT (N=1256) (2.5)那么对应着存放在计算机里的这一点的数据为: (2.6) (4)一个周期被分离成256个点,对应的四种波形的256个数据存放在以TAB1-TAB4为起始地址的存储器中。2.4 设计功能(1)
10、本方案利用8155扩展8个独立式按键,6个LED显示器。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出,“S3” 号键代表锯齿波输出。(2) “S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号,6个LED显示器输出信号的频率值,选用共阳极LED。(3)利用两片DAC0832实现幅度可调的信号源,(其中一片用来调节幅度,另外一片用来实现信号源的输出)。(4)频率范围:101000Hz。(5)输出波形幅度为05V。7第三章 硬件设计3.1 硬件原理框图硬件原理方框图如图3.
11、1所示。波形输出放大电路复位电路显示电路数/模转换电路键盘电路单片机图3.1 硬件原理框图3.2 主控电路 AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。 中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波
12、形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形6。 如图3.2所示,AT89C51从P0口接收来自键盘的信号,并通过P2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的PB口输出,并在数码管上显示出来。
13、 7图3.2 主控电路图3.3 数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。由图3.3可知,DAC0832的片选地址为7FFFH,当P25有效时,若P0口向其送的数据为00H, 则U1 的输出电压
14、为0V;若P0口向其送的数据为0FFH时, 则U1的输出电压为-5V. 故当U1 输出电压为0V时,由公式 得:Vout = - 5V.当输出电压为- 5V时,可得:Vout = +5V,所以输出波形的电压变化范围为- 5V+ 5V. 故可推得,当P0所送数据为80H时,Vout为0V4。图3.3 数模转换电路103.4 按键接口电路图3.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,AT89C51的P0口和8155的D0口相连,AT89C51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角
15、波输出。 “S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号3。 图3.4 按键接口3.5 时钟电路8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图3.5所示。电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形9。 图3.5 时钟电路3.6 显示电路显示电路是用
16、来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图3.6所示。图3.6 LED显示电路11第四章 软件设计4.1 程序流程图本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。 主程序的流程图如图4.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数
17、,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。 图4.1 主程序流程图12 图4.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换器将数据转换成模拟信号,形成所需波形信号。图4.2 子程序流程图1414第五章 总结与展望综合实验总结 三周的单片机课程设计,终于完成了我的数字温度计的设计,基本达到设计要求,从心底里来说,还是很高兴的,毕竟这次设计把实物都做了出来。但
18、高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的
19、细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。同时在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求我们应更加注重实践环节。最后还要在此感谢各位毕业设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。 参考文献1 程全.基于AT89C52实现的多种波形发
20、生器的设计J.周口师范学院学报,2005.22(5):5758.2 周明德.微型计算机系统原理及应用M.北京:清华大学出版社,2002.341364.3 刘乐善.微型计算机接口技术及应用M.北京:北京航空航天大学出版社,2001.258264.4 童诗白.模拟电路技术基础M.北京:高等教育出版社,2000.171202.5 杜华.任意波形发生器及应用J.国外电子测量技术,2005.1:3840.6 张友德.单片微型机原理、应用与实践M.上海:复旦大学出版社,2004.4044. 7 程朗.基于8051单片机的双通道波形发生器的设计与实现J.计算机工程与应用,2004.8:100103.8 张永
21、瑞.电子测量技术基础M.西安:西安电子科技大学出版社,2006.61101.9 李叶紫. MCS-51单片机应用教程M.北京:清华大学出版社,2004.232238.附录1 电路原理图附录2 源程序源程序:ORG 0000HAJM MAINORG 000BHLJMP TC0ORG 0030HMAIN:MOV DPTR,#9FFFH 指向DAC0832(1)MOV A,70HMOVX DPTR,A DAC0832(1)输出MOV DPTR,#7F00H 指向8155命令字端口地址MOV A,#06H 设置A口为输入,B口、C口为输出MOVX DPTR,A 送命令字MOV DPTR,#7F01H
22、指向A口地址MOVX A,DPTR 读入A口的开关数据JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP MAINLED1: MOV R3,#06H 设置6个LED显示MOV R2,#01H 选通第一位LED数据MOV R1,#30H 送显示缓冲区首址GN1:MOV DPTR,#7F03H 指向C口地址MOV A,R2 位选通数据送AMO
23、VX DPTR,A 位选通数据送C口RL A 选通下一位MOV R2,A 位选通数据送R2中保存18 MOV A, R1 取键值MOV DPTR,#TAB 送LED显示软件译码表首址MOVC A,A+DPTR 查表求出键值显示的段码MOV DPTR,#7F02H 指向B口地址MOV DPTR,A 段码送显示LCALL LOOP1 调延时子程序INC R1 指向下一位显示缓冲区地址DJNZ R3,GN1 循环显示6个LEDRETLOOP1:MOV R4,#08H 延时子程序LOOP:MOV R5,#0A0HDJNZ R5,$DJNZ R4,LOOPRETK10H:MOV 30H,#00H 显示1
24、0HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#01HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#15HMOV TH0,#9EHAJMP PDK100H:MOV 30H,#00H 显示100HzMOV 31H,#00HMOV 32H,#00HMOV 33H,#01HMOV 34H,#00H20MOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#08HMOV TH0,#0F6HAJMP PDK500H:MOV 30H,#00H 显示500Hz
25、MOV 31H,#00HMOV 32H,#00HMOV 33H,#05HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FEHAJMP PDK1K:MOV 30H,#00H 显示1KHzMOV 31H,#00H16MOV 32H,#01HMOV 33H,#00HMOV 34H,#00HMOV 35H,#00HLCALL LED1 调显示子程序MOV TMOD,#00HMOV TL0,#01HMOV TH0,#0FFHPD:JNB ACC.0,KE0 判断是否“0”号键按下,若是则转方波输出J
26、NB ACC.1,KE1 判断是否“1”号键按下,若是则转正弦方波输出JNB ACC.2,KE2 判断是否“2”号键按下,若是则转三角波输出JNB ACC.3,KE3 判断是否“3”号键按下,若是则转锯齿波输出LJMP PDKE0:MOV R7,#00HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE1:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GNKE2:MOV R7,#02HLCALL LED1 调显示子程序MOV R6,#00HAJMP GN KE3:MOV R7,#02HLCALL LED1 调显示子程序MOV R
27、6,#00HGN: SETB TR0SETB ET0SETB EALOP1:JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号22JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP LOP1TC0:CJNE R7,#00H,TC1 发送方波程序MOV DPTR,#TAB1 送方波数据表首址MOV A,R6 发送数据寄存器MOVC A,A+DPTRMOV DPTR,#0AFFFH 指向DA
28、C0832(2)MOVX DPTR,A DAC0832(2)输出MOV A,R6INC A MOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC1:CJNE R7,#01H,TC2 发送正弦波程序MOV DPTR,#TAB2 送正弦波数据表首址MOV A,R6MOVC A, A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC2:CJNE R7,#02H,QL1 发送三角波程序MOV
29、DPTR,#TAB3 送三角波数据表首址MOV A,R6MOVC A,A+DPTR24MOV DPTR,#0AFFFH 指向DAC0832(2)MOVX DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJNE A,#32,QL1MOV R6,#00HAJMP QL1TC3:CJNE R7,#03H,QL1 发送锯齿波程序MOV DPTR,#TAB4 送锯齿波数据表首址MOV A,R6MOVC A, A+DPTRMOV DPTR,#0AFFFH 指向DAC0832(2)MOVX DPTR,A DAC0832(2)输出MOV A,R6INC AMOV R6,ACJ
30、NE A,#32,QL1MOV R6,#00HQL1: RETITAB: DB 0C0H,0F9H,0A4H,0B0H,99H,82H,0F8H,80HTAB1: DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0
31、FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,
32、 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH, 0FFH DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H25 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H
33、, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 0
34、0HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HDB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00HTAB2: DB 80H, 83H, 86H, 89H, 8DH,90H,93H,96H DB 99H,
35、 9CH, 9FH,0A2H,0A5H,0A8H,0ABH,0AEH DB 0B1H, 0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H, 0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H DB 0DAH, 0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H DB 0EAH, 0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H DB 0F6H, 0F7H, 0F8H,0F9H, 0FAH, 0FBH,0FCH,0FDH DB 0FDH, 0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH
36、,0FFH DB 0FFH, 0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH DB 0FDH, 0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H DB 0F5H, 0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH DB 0E9H, 0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH DB 0D8H, 0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H DB 0C5H, 0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H DB 0AEH, 0ABH,0A8H,0A5H,
37、0A2H, 9FH, 9CH, 99H DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H DB 15H, 13H, 11H, 10H, 0EH,
38、0DH, 0BH, 0AH DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H D