您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 实验四51单片机最小系统应用
《电子系统设计》实验报告实验四:51单片机最小系统应用2班级:11电科2班姓名:张俊为学号:Xb11640218一、设计任务与要求(1)用两个按键来控制D1的亮灭;(2)让显示的数据动起来,比如做一个0到9的秒表(用软件延时);(3)从ADC0804的通道IN+输入0-5V之间的模拟量,通过ADC0804转换成数字量在数码管上以十进制形成显示出来。(4)要求通过DAC0832芯片,控制一个红色的发光二极管,从亮到灭逐渐变化的过程。二、总体设计和各功能模块设计:介绍系统和所涉及的功能模块的框图及原理(1)只要判断P3.2的电平就可以知道按键是否被按下;而在按键按下的过程中,由于机械抖动,将产生干扰,电平高低变化。可以采用软件滤波的方法去除这些干扰信号,在程序设计时,一旦发现P3.2为低电平,进入按键判断状态,软件延时10-20ms,从而避开了干扰信号区域,再重新检测P3.2状态,看按键是否真的已经按下。(2)用数码管LED的个位,静态显示数字“0--9”的字样(3)AD数模转换模块由芯片ADC0804、滑动变阻器和数码管实现。ADC0804是属于连续渐进式的A/D转换器。D0-D7为数字量输出端,输出结果为八位二进制结果;VIN为模拟电压输入端;CS为片选信号;WR为写信号输入端;RD为读信号输入端。VREF/2为参考电压,等于2.5V。具体电路设计时,VREF/2连在2个串联的1K电阻中来获得2.5V电压;VIN两端与一个滑动变阻器相连,用以模拟变化的电压值;D0-D7与P1口相连,将转换好的数字量传输给单片机,然后单片机将获得的数据传输给数码管,最后数码管将读入的结果显示出来。(4)DA数模转换模块有芯片DAC0832和一个LED灯实现。DAC0832是8分辨率的D/A转换集成芯片。有直通方式、单缓冲方式和双缓冲方式三种工作方式。D0~D7是8位数据输入端;ILE是数据锁存允许控制端,高电平有效;CS是片选信号;WR1是数据锁存器写选通输入端;XFER是数据传输控制信号输入端,低电平有效;Rfb是反馈信号输入端;IOUT1和IOUT2是电流输出端,其值随DAC寄存器的内容线性变化。具体电路设计时,WR2、XFER、IOUT2接地,ILE接高电平。D0~D7与单片机的P0口相连,用以读入单片机输出的数据;IOUT1作为输出端与LED相连,用LED灯的亮暗程度来显示转换完成的数据的大小,同时由于IOUT1的输出电流较小,要改变其工作电流,使灯的亮暗比较明显。三、程序设计:主要程序流程图、主要程序介绍(1)用两个按键来控制D1的亮灭:#includeAT89X52.HsbitINT_0=P3^4;//定义按键的输入端sbitINT_1=P3^5;sbitD1=P1^0;//D1小灯定义voiddelay10ms(void)//延时程序{unsignedchari,j;for(i=20;i0;i--)for(j=248;j0;j--);}key()//按键判断程序{if(INT_0==0)//判断是否按下键盘{delay10ms();//延时,软件去干扰if(INT_0==0)//确认按键按下{D1=0;}//D1亮灭交替变化while(INT_0==0);}//按键锁定,每按一次D1只变化一次elseif(INT_1==0)//判断是否按下键盘{delay10ms();//延时,软件去干扰if(INT_1==0)//确认按键按下{D1=1;}//D1亮灭交替变化while(INT_1==0);}}//按键锁定,每按一次D1只变化一次main(){while(1)//永远循环,扫描判断按键是否按下{key();}}//对于此处CPU只按键判断一直扫描;(2)显示的数据动起来:voiddelay(uintx)//延时子函数{uinti,j;for(i=x;i0;i--)for(j=50;j0;j--);}main(void){intk;while(1){shuma=1;d5=1;shuma=0;dula=1;for(k=0;k10;k++){P0=time[k];delay(1000);}}}(3)通过DAC0832芯片,控制红色的发光二极管,从亮到灭逐渐变化#includereg52.hsbitwela=P2^7;//数码管位选sbitdula=P2^6;//段选sbitdawr=P3^6;//DA写数据sbitcsda=P3^2;//DA片选unsignedcharj,k;voiddelay(unsignedchari)//延时{for(j=i;j0;j--)for(k=125;k0;k--);}voidmain(){wela=0;dula=0;csda=0;dawr=0;while(1){P0=0x00;//给a不断的加一,然后送给DAdo{delay(50);P0=P0+1;}while(P00xff);P0=0xff;do{delay(50);变量及相关端口设置将D/A数据送P0口将WR和INT0置0关闭数码管P0=P0-1;}while(P00x00);P0=0x00;}}四、实验总结本次实验的内容对于我们的专业水平有了显著的提高。在过程中,我和搭档工作分配合理,积极的学习。这次课程我们对于查资料看关键有了更进一步的认识,对于编程动手能力也有了一定提高,在程序的理解上相较于以前能够更快的进入思路,更好的理解。总之,我获益匪浅,也会珍惜这次机会。
本文标题:实验四51单片机最小系统应用
链接地址:https://www.777doc.com/doc-2459675 .html