1、D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。a.主要特性参数:分辨率为8位电流稳定时间1us;可单缓冲、双缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+5V+15V);低功耗,200mW。b芯片结构:D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:片选信号输入线(选通数据锁存器),低电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入
2、数据线变换,LE1的负跳变时将输入数据锁存;XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2:电流输出端2,其值与IOUT1值之和为一常数;Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc:电源输入端,Vcc的范围为+5V+15V;V
3、REF:基准电压输入线,VREF的范围为-10V+10V;AGND:模拟信号地DGND:数字信号地c.工作方式:根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。(2)8255简介:a 一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的口.b 具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3).A组可设置为基本的I/O口,闪控(STROBE)的
4、I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.c 8255引脚功能:RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。 CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输. RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。WR:写入信号,
5、当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。D0D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含一个4位的
6、锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择.(3)AT89S52简介:a主要性能 :与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空
7、闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符b功能特性描述:P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作
8、为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器
9、能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。P3口亦
10、作为AT89S52特殊功能(第二功能)使用,在flash编程和校验时,P3口也接收一些控制信号。端口引脚P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断0)P3.3INT1(外中断1)P3.4TO(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)三、硬件电路设计1、显示电路与AT89S52单片机接口电路设计2、AT89S52单片机最小系统利用AT89S52单片机、晶振电路、复位电路、电源构成单片机最小应用系统,在此基础上扩展显示电路、驱动电路。3、DAC0832与AT89S52单片机接口电路设
11、计4、D/A 转换0832 电路5、微型直流电机电路四、软件设计1、主程序框图初始化寄存器R0(用于存储输出电压的值),R1(用于存储数码管显示值)。初始化 8255A设定其工作方式为0方式,PA口为数码管片选信号端,PB口接数码管显示端。判断总开关K0的状态,若其为低电平则死循环(继续读取开关量),若为高电平,则程序顺序执行。读取其他开关量,将读取的数值存储到R0,通过对DAC0832寻址,输出驱动电流,带动电机转动。同时查表将档位值显示到数码管上。五、调试与测试结果分析1、实验系统连接图2、硬件线路调试:(1)按照系统硬件连线图在实验箱上连线,将开关k0K7与AT89S52的P1.0 P1
12、.7连接,与单片机进行数据交换。使数码管能正确显示档位的变化(2)利用Keil uVision2 软件使程序处于单步运行状态,分别调试各子程序,验证子程序功能的正确性。(3)通过拨动开关,观察电机的速度、数码管显示的变化。六、程序清单与注释说明程序清单:ORG 0000H; LJMP START ORG 0003H LJMP B0 ORG 0013H LJMP B7 ORG 0100HSTART: SETB EA SETB EX0 SETB IT0 SETB EX1 SETB IT1 MOV DPTR ,#0FF23H ;设置8255控制状态字 MOV A, #80H ;给8255赋初值,82
13、55工作于方式0 MOVX DPTR, AB3: JNB P3.0,B4M0T1: MOV DPTR,#0FF80H ;选中DAC0832MOV P1,#0FFH ;将P1设置为输入口MOV A,P1 ;将拨码开关的状态送入A 中MOVX DPTR, A ;将拨码开关的状态送入DAC0832中SUBB A,R5ADD A,R6ACALL DIS ;调用显示子程序LJMP B3 ;循环?DIS: MOV R0,A MOV R3,#2FH ;选中百位数码管 MOV A,R3 MOV DPTR,#0FF20H ;将8255的PA口地址送入数据指针 MOVX DPTR,A MOV A,R0 ;将拨码开
14、关送入A 中 MOV B,#64H ;(B)=100 DIV AB ;A / B MOV DPTR,#TAB ;把表首地址送入数据指针 MOVC A,A+DPTR ;查表获得显示码 MOV DPTR,#0FF21H ;将8255的PB口地址送入数据指针 MOVX DPTR,A ;把显示数据码送PB口 ACALL DELAY ;调用延时子程序 MOV R3,#37H ;选中十位数码管 MOV DPTR,#0FF20H ;将8255PA 口地址送入数据指针 MOVX DPTR,A MOV A,B ;把余数送到A MOV B,#10 ;(B)=10 DIV AB ;取十位上的数 MOV DPTR,#
15、TAB查表取取十位的显示码把8255的PB地址送入数据指针显示十位数据 MOV R3,#3BH ;选中个位数码管 MOV A,R3将8255PA的地址送入数据指针 MOV A,B ;A=B MOV DPTR,#TAB ;将列表首地址送入数据指针将要显示的个位数据对应的代码送入A中显示个位数 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H; 0 1 2 3 4 DB 92H,82H,0F8H,80H,90H 5 6 7 8 9DELAY: MOV R7,#40 DEL3: MOV R6,#123 NOP DEL4: DJNZ R6,DEL4 DJNZ R7,$ RETB0:
16、 INC R5 RETIB7: INC R6B4: MOV DPTR,#0FF80H MOV A,#00H MOVX DPTR,AACALL DISLJMP B3END 七、课程设计总结与体会在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。虽
17、然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。另外,这次
18、课程设计让我感到了团队合作的重要性。在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响。还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。近一周的课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。八、参考文献:1、单片机原理与接口技术(第二版)(马淑华编著) 北京邮电大学出版社。2、单片机基础( 李广弟等编著) 北京航空航天大学出版社。3、数字电子技术基础 (阎石编著)(第三版) 高等教育出版社。4、微型计算机原理与接口技术(第二版) 清华大学出版社。5、单片机原理与接口技术实验指导书6、微型计算机原理与接口技术实验指导书
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1