微机与单片机1137.docx
- 文档编号:6205576
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:13
- 大小:135.33KB
微机与单片机1137.docx
《微机与单片机1137.docx》由会员分享,可在线阅读,更多相关《微机与单片机1137.docx(13页珍藏版)》请在冰点文库上搜索。
微机与单片机1137
微机与单片机设计
班级:
测控三班
姓名:
戴维
学号:
20121137
一、数据采集系统综合设计实验:
设计任务:
1.采用定时/计数器8253产生1秒钟的定时脉冲,并作为中断控制器8259的中断请求信号。
2.CPU响应8259的中断请求后,启动ADC0809对实验仪上的电位器引入的模拟电压进行A/D转换。
3.变换后的结果送8279显示两位十六进制数,同时经并行接口8255的PB口送8位发光二极管显示二进制数。
最终的结果:
当调节电位器旋钮时,数码管和8位发光二极管会同时显示与模拟输入电压相应的数字量值。
(1)8253的原理图:
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
(2)8259:
8259芯片采用的是最新的CMOS图像传感器APS技术(Active-Pixel-Sensor,主动像素传感器),使图像品质得到了大幅提升。
与上一代PPS技术(Passive-PixelStructure,被动像素结构)的产品比,有很大的提升。
研发团队对该芯片投入了大量的时间研发优化,调整色彩还原度,使颜色极为逼真艳丽。
优化了清晰度彩色清晰度达到700电视线,黑白清晰度超过700电视电。
保证清晰度的前提下优化了低照度,夜视噪点小,亮度高效果好;采用特殊设计,保证了产品的热稳定性,在业内处于领先地位。
设计1程序:
#include"conio.h"
#defineM8254_A0x6c0
#defineM8254_B0x6c2
#defineM8254_C0x6c4
#defineM8254_CON0x6c6
#defineRdata(port)inportb(port)
#defineWdata(port,x)outportb(port,x)
#defineStart(outportb(0x640,0x00))//启动AD
#defineRead(inportb(0x640))
typedefunsignedintuint;
typedefunsignedcharuchar;//读AD采样结果
voidinterruptmir7(void);
voiddelay(uintcount)
{
uinti;
for(i=0;i } //显示多个字符 voiddispm(uchar*src,ucharlen) { uchari; for(i=0;i { _AL=*src; _asm{ movAH,01h int10h } src++; } } //显示单个字符 voiddisps(ucharval) { _AL=val; _asm{ movah,01h int10h } } //Hex转换为ASC码,转换低4位 ucharHex2AscL(ucharval) { //uchartemp; val&=0x0f; if(val>9) val+=0x37; else val+=0x30; returnval; } //Hex转换为ASC码,转换高4位 ucharHex2AscH(ucharval) { //uchartemp; val=(val&0xf0)>>4; if(val>9) val+=0x37; else val+=0x30; returnval; } staticucharflag[]="DAC0809IN0: "; staticucharkg[]=""; voidmain(void) { _asm{ PUSHDS MOVAX,0000H MOVDS,AX MOVAX,OFFSETmir7//取中断入口地址 MOVSI,003CH//中断矢量地址 MOV[SI],AX//填IRQ7的偏移矢量 MOVAX,CS//段地址 MOVSI,003EH MOV[SI],AX//填IRQ7的段地址矢量 CLI POPDS } //初始化主片8259 Wdata(0x20,0x11);//ICW1 Wdata(0x21,0x08);//ICW2 Wdata(0x21,0x04);//ICW3 Wdata(0x21,0x01);//ICW4 Wdata(0x21,0x6f);//OCW1 //初始化8254 Wdata(M8254_CON,0x36); Wdata(M8254_A,0xe8); Wdata(M8254_A,0x03); Wdata(M8254_CON,0x76); Wdata(M8254_B,0xe8); Wdata(M8254_B,0x03); _asmsti while (1); } //中断处理程序 voidinterruptmir7(void) { ucharADval; Start;//启动AD采样 delay(0x100); ADval=Read;//读采样结果 dispm(flag,13);//显示: DAC0809IN0: disps(Hex2AscH(ADval));//显示高位 disps(Hex2AscL(ADval));//显示低位 dispm(kg,8); delay(0xf000); delay(0xf000); _asmint10h _AX=0x0120; _asmint10h Wdata(0x20,0x20); } 二、简易波形发生器设计 设计任务: 1.利用8279为键盘、显示核心构成人机接口,设计一个简单的波形发生器,该波形发生器可以输出三角波、锯齿波、方波、矩形波、阶梯波和正弦波。 2.各种波形参数,例如: 波形类别、频率、振幅(小于5V)、矩形波的占空比、锯齿波正向斜坡持续时间、阶梯波每个阶梯的持续时间等均需要用户从键盘输入,规定如下: A键: 设置波形类型,其中: 1键代表三角波,2键代表锯齿波,3键代表方波,4键代表矩形波,5键代表阶梯波,6键代表正弦波 B键: 设置波形频率,单位Hz C键: 设置波形幅度,单位mV D键: 设置矩形波的占空比(百分比的分子) E键: 设置锯齿波正向斜坡持续时间与周期之比(百分比的分子) F键: 设置阶梯波每个阶梯的持续时间与周期之比(百分比的分子) G键: 确认参数更新,使系统按最新设置的参数产生波形 H键: 终止程序 3.利用用户输入的参数控制DAC0832输出符合要求的波形,变换后的波形接到示波器上显示出来 4.按键的检测程序要求消抖功能 5.程序设计可参考程序框图 设计要求: (1)完成软件设计并在实验仪上调试通过 (2)完成设计报告,内容要求如下: A、对实验仪进行简单介绍,并对8253、8279等芯片进行必要的介绍 B、软件设计的必要介绍及详细流程图 C、完整的软件程序及必要的注释 D、调试过程中的心得体会 E、其它必要的说明 三角波程序框图 设计2程序: //延时 voiddelay(uintcount) { uinti; for(i=0;i } //三角波 voidTriWave(void) { uchari=0; while (1) { wdata(0x600,i); delay(5); i++; } } //锯齿 voidZigWave(void) { uchari=0; for(i=0;i<255;i=i+10) { wdata(0x600,i); delay(5); } for(i=255;i>0;i--) { wdata(0x600,i); delay(5); } } //方波 voidRecWave(void) { while (1) { wdata(0x600,0x00); delay(5); wdata(0x600,0x7f); delay(5); } } //阶梯波 voidLadWave(void) { uchari; for(i=0;i<255;i=i+10) { wdata(0x600,i); delay(5); } } //正弦波 voidSinWave(void) { uchari; for(i=0;i<255;i++) { wdata(0x600,sin[i]); delay(5); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 单片机 1137
![提示](https://static.bingdoc.com/images/bang_tan.gif)