微机与单片机课程设计报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机与单片机课程设计 专 业:测控技术与仪器 姓 名:赵 琦 学 号指导教师:李艳萍 目 录 一、 实验仪介绍 1 二、 实验所用芯片介绍 2 2.1 8254可编程间隔定时器 2 2.2 8259中断控制器 4 2.3 ADC0809模数转换器 8 2.4 DAC0832数模转换器 9 三、 数据采集系统综合设计实验 10 3.1 设计任务 10 3.2 程序流程图 10 3.3 程序源代码 11 3.4 程序效果 15 四、 简易波形发生器设计 16 4.1 设计任务 16 4.2 程序流程图 17 4.3 程序源代码 18 4.3.1 三角波 18 4.3.2 锯齿波 19 4.3.3 矩形波 20 4.3.4 阶梯波 21 4.3.5 正弦波 22 4.4 程序效果 23 五、 心得体会 25 实验仪介绍 唐都仪器是西安唐都科教仪器公司开发的微机原理教学实验系统,Wmd86 6.0此为微机原理教学实验系统的联机软件,该系统可以高效率地支持微机原理课程的开放式实验教学,为高校各个教学层次的微机原理教学提供了完善的解决方案。 唐都科教仪器公司的Wmd86 6.0联机软件支持汇编语言和C语言编译环境,具有高度可视化的源语言级跟踪调试界面,能够对寄存器和变量实时监视和即时修改,能够实时监视堆栈,集成专用图形显示窗口。总之,简单易用的功能和方便的操作平台将给你耳目一新的感觉。 实验所用芯片介绍 2.1 8254可编程间隔定时器 8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能: (1)有3个独立的16位计数器; (2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作于6种不同工作方式; (4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz); (5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容; (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: 其中,是输入时钟脉冲的频率,是输出波形的频率。       表2 8254读出控制字格式       图1     图2 初始化命令字2寄存器(ICW2)说明见图3所示。 图3 初始化命令字3寄存器(ICW3)说明,主片见图4,从片见图5。 图4 图5   图6   图7   图8 操作命令字3寄存器(OCW3)说明如图9所示。 图9   图10 在对8259进行编程时,首先必须进行初始化。一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。 系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。中断矢量地址与中断号之间的关系如下表所示:       图1           3.3 程序源代码 #include conio.h void interrupt mir7(void); typedef unsigned int uint; typedef unsigned char uchar; #define Start (outportb(0x640, 0x00)) // 启动AD #define Read (inportb(0x640)) // 读AD采样结果 #define M8254_A 0x600 #define M8254_B 0x602 #define M8254_C 0x604 #define M8254_CON 0x606 #define Rdata(port) inportb(port) #define Wdata(port, x) outportb(port, x) void delay(uint count) { uint i; for(i=0; icount; i++); } // 显示多个字符 void dispm(uchar *src, uchar len) { uchar i; for(i=0; ilen; i++) { _AL=*src; _asm{ mov AH, 01h int 10h } src++; } } // 显示单个字符 void disps(uchar val) { _AL=val; _asm{ mov ah, 01h int

您可能关注的文档

文档评论(0)

小蜗牛 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档