单片机原理及运用作业
班级:电气工及其自动化10级5班 学号:10021040515 姓名: 彭 祥 林
一、实验设计
1、电路原理图
2、AD与动态显示接口电路分析
A/D转换器采用集成电路ADC0808。ADC0808具有8路模拟量输入信号IN0~IN7(1~5脚、26~28脚),地址线C、B、A(23~25脚)决定哪一路模拟输入信号进行A/D转换,本电路将地址线C、B、A均接地,即选择0号通道输入模拟量电压信号。22脚ALE为地址锁存允许控制信号,当输入为高电平时,对地址信号进行锁存。6脚START为启动控制信号,当输入为高电平时,A/D转换开始。本电路将ALE脚与START脚接到一起,共同由单片机的P2.0脚和WR
脚通过或非门控制。7脚EOC为A/D转换结束信号,当A/D转换结束时,7脚输出一个正脉冲,此信号可作为A/D转换是否结束的检测信号或向CPU申请中断的信号,本电路通过一个非门连接到单片机的P3.2脚。9脚OE为A/D转换数据输出允许控制信号,当OE脚为高电平时,允许读取A/D转换的数字量。该OE脚由单片机的P2.0脚和RD脚通过或非门控制。10脚CLOCK为ADC0808的实时时钟输入端,利用单片机30引脚ALE的六分频晶振频率得到时钟信号。数字量输出端8个接到单片机的P0口。
3、编程思路阐述
流程图如下
开始 系统初始化 启动A/D转换 按键按下 Y 启动中断程序进入中断处理 N 显示学号 A/D转换 N 读取A/D转换结果保存在变量tmp 按键松开 Y 根据tmp值计算出当前电压值 结束中断返回 显示当前电压值 结束
程序如下:
#include unsigned char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //字模 unsigned int tmp; //定义中间变量 sbit p2_0=P2^0; //定义四个数码管 sbit p2_1=P2^1; sbit p2_2=P2^2; sbit p2_3=P2^3; sbit START=P2^5; //定义ADC0808启动标志位 sbit EOC=P2^6; //定义ADC0808转换结束标志位 sbit OE=P2^7; //定义ADC0808输出使能标志位 void delay( unsigned int time) //延时函数 { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++) ; void show () //数码管动态显示函数 { unsigned i,j; p2_0=0; j=tmp/1000;i=j ;P0=led_mod[i]; delay(10); //显示千位 p2_0=1;p2_1=0; j=tmp/100;i=j%10;P0=led_mod[i]; delay(10); //显示百位 p2_1=1; p2_2=0; j=tmp/10;i=j%10;P0=led_mod[i]; delay(10); //显示十位 p2_2=1;p2_3=0; i=tmp%10; P0=led_mod[i]; delay(10); //显示个位 p2_3=1; } key0() interrupt 0 // 中断函数 { p2_0=0;P0=led_mod[0];delay(10); //显示字模0 p2_0=1;p2_1=0;P0=led_mod[5];delay(10); //显示字模5 p2_1=1;p2_2=0;P0=led_mod[1];delay(10); //显示字模1 p2_2=1;p2_3=0;P0=led_mod[5];delay(10); p2_3=1; //显示字模5 } void main() //主函数 { EA=1; IT0=0;EX0=1 ; //总中断允许,电平触发,INT0允许 while(1) { START=0;START=1; //启动AD转换 START=0; while(EOC==1); //等待AD转换结束 OE=1; //AD转换结果输出 tmp=P1; //输出结果赋给tmp tmp=(int)tmp*19.6 ; OE=0; show(); //输出转换数据 } } ———— 4、仿真运行效果截图 按下KEY学号显示 5、实验总结 通过本次实验,深刻的了解了课本知识运用到实践的困难。本实验是使用A/D转换器将模拟信号,电位器输出电压,转换为数字信号,A/D转换器与80C51接在一起,转换结果通过80C51以十进制形式动态显示在四个共阴极数码管上,通过改变模拟信号大小可以显示不同电压值。了解了ADC0808转换的工作原理和工作过程,掌握了AT89C51单片机采集与显示程序的编写与调试更加熟练了Proteus软件的使用和程序的编写。 二、课程学习总结 学习了《单片机原理及应用》这门课程,了解到单片机基础知识、MCS-51单片机的结构及原理、单片机的汇编语言与程序设计、单片机的C51语言、单片机的中断系统、单片机的定时/计数器、单片机的串行口及应用、单片机接口技术。 其中单片机基础知识概述包括单片机概述、预备知识、Proteus简介。着重讲了MCS-51单片机的结构及原理,包括它的存储器结构、复位时钟时序、并行I/O口。单片机的汇编语言与程序设计学习了汇编语言的基础知识,比如一些指令格式、寻址方法等,还有MCS-51 指令系统,有数据传送与交换指令、算数云散指令、逻辑运算及位移指令、控制类指令、伪指令。还有Proteus仿真开发系统。C51语言学习了C51语言的程序结构、C51的数据结构如变量和指针。着重学习了C51与汇编语言的混合编程,学习了在C51中调用汇编程序和在C51中嵌入汇编代码。还学习了C51仿真开发环境。单片机的中断控制系统,介绍了中断的概念,中断控制系统,详细说明了中断处理过程,学习了一些中断编程和应用的例子。在学习单片机的定时计数器中,先学习了定时计数器的结构和工作原理,以及定时计数器的控制,定时计数其实质是一样的。知道了定时其计数器的四种工作方式,还有定时计数点的编程及应用。最后学习了单片机的串行工作方式,介绍了四种工作方式及应用。 单片机从诞生至今,对科技生产力发展产生深远的意义重大的影响,在各行各业都有重要作用。单片机技术门槛相对计算机来说较低,是一种适合大众掌握的先进技术。作为电气类学生,学习这门课程非常有必要。其预备知识要求不高,只需了解计算机基础知识。但是随着课程深入,我发现这门课程也是博大精深,绝不可松懈的学习,必须要严谨的科学素养。老师是用牵引性的教学方法来教授知识的,激发学生的自我创造力。在做完老师布置的课程设计后,我又深感这门课程绝不是只了解理论即可,还要有把理论知识与实践结合的能力。在完成实验的过程中,遇到各种困难,总感到要把课本东西转换成实际的力不从心。和同学讨论,上网查资料都是学习的方法。只有在动手中才能更熟练的掌握知识运用知识。 对于这门课程的建议,我是这样想的,单片机这门课程是一个理论性和实践性都很强的课程,理论知识比较抽象,逻辑性强,不容易理解,所以要求模电数电等基础课程功底扎实。老师教学多数用多媒体教学,信息量很大,学生不容易集中注意力接收。老师应要求学生熟练掌握基础知识,布置作业应加深学生的理解。 三、成绩评价 自我打分:平时成绩 优 实验设计 优 因篇幅问题不能全部显示,请点此查看更多更全内容