单片机课程设计报告-数字电压表.doc_第1页
单片机课程设计报告-数字电压表.doc_第2页
单片机课程设计报告-数字电压表.doc_第3页
单片机课程设计报告-数字电压表.doc_第4页
单片机课程设计报告-数字电压表.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一.课程设计的目的和意义1二.系统方案设计及提出22.1 系统方案的提出22.2 方案比较及确定2三.系统硬件设计33.1 at89s51最小系统设计33.1.1 时钟电路硬件设计73.1.2 复位电路硬件设计73.2 a/d转换电路的设计83.3 键盘电路硬件设计103.4 显示电路硬件设计10四.系统软件设计114.1 系统软件设计内存分配及芯片地址介绍114.2 系统主程序设计114.3 a/d转换子程序设计124.4 八路循环显示控制子程序134.5 单路显示控制子程序144.6 显示子程序154.7 按键子程序16五.系统调试175.1 仿真环境介绍175.2 仿真步骤205.2.1 连接仿真器205.2.2 windows软件安装205.2.3 编程及调试20六.总结21七.参考文献22附录23附录一:程序清单23附录二:系统硬件原理图32一.课程设计的目的和意义学校为我们安排了为期三周的单片机课程设计,可以说让我们受益匪浅。细想,其目的及意义主要有以下几点:目的通过单片机课程设计,加深对单片机的更深层次的理解,熟悉单片机的内部硬件资源,掌握单片机的编程方法及技巧,要学会对单片机的各部硬件资源的控制,分配,特别是掌握单片机中断,定时器的编程方法。灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到pcb制版,再到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。能够上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。独立完成一个小的系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。通过这次设计,要学会怎么利用所学单片机知识独立设计系统的能力,达到学于致用的目的,要学会发散创造设计编程思想,要学会开发系统的一般过程,并不断创新。意义作为一名自动化专业的大三学生,做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业基础课及专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似本次的课程设计就为我们提供了良好的实践平台。在这次课程设计中,我们运用到了以前所学的专业课知识以及一些实践性很强的软件和工具,如:protel制图、伟福仿真设备、汇编语言编译软件、单片机的原理等。虽然在过去的学习中曾独立地学习了它们中的一部分,但都不知道学的那些东西具体可以运用在那些领域。可是在本次课程设计中,我们将所学的知识都汇聚到了一起,并适当地加入了一定的其它知识,让我们自己动手动脑完成一项单片机任务,我认为这是很有意义的。而且在学习的过程中带着问题去学我发现效率很高,利用仿真设备去发现问题并解决问题也让我们学到了不少在课堂上无法学到的东西,这是我本次课程设计的巨大收获。并掌握了目前自动化仪表的一般设计过程,锻炼了我们的动手能力和分析,解决问题的能力;积累经验,培养按部就班、一丝不苟的工作和对所学知识的综合应用能力。二.系统方案设计及提出2.1 系统方案的提出a.课程设计内容及技术指标简易数字电压表可以测量05v范围内的8路输入电压值,并在4位led数码管上8路循环显示或单路选择显示。其测量最小分辨率为0.02v。注:1、4位led显示,一位显示模拟量通道数,三位显示电压值(0.005.00v);2、使用按键切换8路循环显示和单路显示;3、在单路显示是,使用按键选择待显示的通道;4、按键可采用查询方式,也可采用中断和查询相结合的方式。b.系统设计方案框图图2.1 系统设计方案框图2.2 方案比较及确定a.单片机89c51:与mcs-51 兼容、4k字节可编程闪烁存储器、1000写/擦循环、数据保留时间为10年、128*8位内部ram、32可编程i/o线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。89s51:在89c51的基础上增加了很多新的功能,性能有了较大提升,价格基本不变,甚至比89c51更低。比较可知,功能强大的微型计算机的at89s52可为许多嵌入式控制应用系统提供高性价比的解决方案,因此选用89s51为此次课程设计中的单片机。b.a/d转换器adc0804:8位逐次逼近型a/d转换器,一个a/d 转换器和一个三态输出锁存器组成,输入方式为单通道,转换时间约为100s,它的非线形误差为1lsb,电源电压为单一+5v。adc0809: 8位逐次逼近型a/d转换器。它由一个8路模拟开关、一个地址锁存译码器、一个a/d 转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8 路模拟量分时输入,共用a/d 转换器进行转换,转换时间约为100s,它的非线形误差为1lsb,电源电压为单一+5v。比较可知,adc0809较符合本次课程设计的要求,因此选用adc0809作为a/d转换器。c.显示方式静态显示:数据分开地送到每一位led上,显示亮度很高,占用口线较多。动态显示:数据送到每一个led上,再根据位选线来确定是哪一位led被显示,占用的口线数目较少,适合用在显示位数较多的场合,但显示位数的增多,将占用大量的cpu时间。比较可知,选择动态显示对我们本次课程设计是比较方便的,因此选用动态显示。三.系统硬件设计3.1 at89s51最小系统设计at89s51是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。at89s51具有如下特点:40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 此外,at89s51设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有pdip、tqfp和plcc等三种封装形式,以适应不同产品的需求。1主要特性: 8031 cpu与mcs-51 兼容 4k字节可编程flash存储器(寿命:1000写/擦循环) 全静态工作:0hz-24khz 三级程序存储器保密锁定 128*8位内部ram 32条可编程i/o线 两个16位定时器/计数器 6个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路2管脚说明:vcc:供电电压。gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3.0 rxd(串行输入口)p3.1 txd(串行输出口)p3.2 /int0(外部中断0)p3.3 /int1(外部中断1)p3.4 t0(记时器0外部输入)p3.5 t1(记时器1外部输入)p3.6 /wr(外部数据存储器写选通)p3.7 /rd(外部数据存储器读选通)p3口同时为闪烁编程和编程校验接收一些控制信号。i/o口作为输入口时有两种工作方式即所谓的读端口与读引脚读端口时实际上并不从外部读入数据而是把端口锁存器的内容读入到内部总线经过某种运算或变换后再写回到端口锁存器只有读端口时才真正地把外部的数据读入到内部总线上面图中的两个三角形表示的就是输入缓冲器cpu将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作这是由硬件自动完成的不需要我们操心1然后再实行读引脚操作否则就可能读入出错为什么看上面的图如果不对端口置1端口锁存器原来的状态有可能为0q端为0q为1加到场效应管栅极的信号为1该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1若先执行置1操作则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入由于在输入操作时还必须附加一个准备动作所以这类i/o口被称为准双向口89c51的p0/p1/p2/p3口作为输入时都是准双向口接下来让我们再看另一个问题从图中可以看出这四个端口还有一个差别除了p1口外p0p2p3口都还有其他的功能 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3.1.1 时钟电路硬件设计时钟电路即晶振电路:典型的晶振取11.0592mhz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合,计算的初值为整数,可减小误差)/12mhz(产生精确的us级时歇,方便定时操作),晶振两端各接一个30pf的微调电容然后接地,可使晶振工作在稳定状态,如图3.1.1。图3.1.1 单片机时钟电路3.1.2 复位电路硬件设计单片机的复位电路通常采用上电自动复位和按钮复位两种方式,为了电路运行方便,我们采用按钮复位电路。复位电路:由电容串联电阻构成,由图并结合电容电压不能突变的性质,可以知道,当系统一上电,rst脚将会出现高电平,并且,这个高电平持续的时间由电路的rc值来决定.典型的51单片机当rst脚的高电平持续两个机器周期以上就将复位,所以,适当组合rc的取值就可以保证可靠的复位.选取电容电阻的原则就是要让rc组合可以在rst脚上产生不少于2个机周期的高电平,我选择的是电容22f,电阻一个为1k,一个为200,如图3.1.2。图3.1.2 单片机复位电路3.2 a/d转换电路的设计a/d转换电路硬件电路设计的原理主要有:1. 采用如图3.2.1所示的模拟信号采样电路采集模拟信号,并输入带adc0809的模拟信号输入端。2. 由于at89s51的ale引脚输出的频率为1/6fosc(我们使用的晶振为11.0592mhz,即ale为2000khz),而adc0809的clk引脚的标准工作频率为500khz,所以ale信号必须经过四分频才能送到clk引脚上(一个d/q触发器为一次2分频),由此可得分频电路图3.2.2。3. 由于adc0809的eoc引脚为转换结束信号引脚,且转换结束后eoc=1,而单片机在复位后p0p3口都为高电平,因此eoc引脚在接到i/o端口前必须加一个反相器或者非门。如图3.2.3所示。图3.2.1 ad采样电路图3.2.2 ad分频电路图3.2.3 adc0809芯片引脚电路3.3 键盘电路硬件设计采用查询方式设置键盘电路,在按键未按下时引脚为高电平,按键按下后,对应的引脚变为低电平,如图3.3。图3.3 键盘电路3.4 显示电路硬件设计设计过程中采用动态的显示方式,利用p1.3p1.6为位选线,并利用反相器作为驱动器。p0口为段选线,并利用74ls244为驱动器。由于led的额定电压为1.8v2.4v,额定电流为5ma25ma,因此限流电阻为72480,结合电阻的阻值,我选择的限流电阻为510。如图3.4.1和图3.4.2.。图3.4.1 led显示电路接线图图3.4.2 数码管驱动电路及限流电阻接线图四.系统软件设计4.1 系统软件设计内存分配及芯片地址介绍30h:模拟量通道数31h33h:电压值显示40h47h:数字量电压50h:八路单路切换按键的标志位51h52h:单路增加按键的标志位4.2 系统主程序设计根据课程设计的要求设计主程序,主程序流程图如图4.2所示图4.2 主程序流程图4.3 a/d转换子程序设计adc0809的时序图如图4.3.1所示。图4.3.1 adc0809时序图根据时序图可编写出a/d转换测量子程序流程图,如图4.3.2所示。注:在判断模拟量是否转换成数字量时,有两种方式,可用查询方式,还可调用延时子程序,但此延时子程序必须大于128us,我采用的是查询方式。图4.3.2 a/d转换子程序流程图4.4 八路循环显示控制子程序八路循环显示控制子程序流程图如图4.4所示注:1.标度变换 y=(ymax-ymin)*(nx-nmin)/(nmax-nmin)+ymin 在本次课程设计中,将此公式化简得y=nx/512.判断按键是否按下时,可采用查询方式,也可采用中断方式。查询方式要不断的判断引脚的电瓶高低,满足条件则执行中断程序;中断方式则不需要查询,一旦满足条件,则执行中断程序。中断方式比查询方式效率高,我采用的是中断方式。判断按键k0是否按下的方法:在程序开始时将50h清零,当产生一次中断0时对50h加一,在判断k0按键是否按下时判断50h单元的内容的第0位是否为1即可,为1则表示按键k0按下了一次,为0则表示按键k0没有按下,当按下一次之后,判断按键k0是否第二次按下时判断50h单元中的内容的第0位是否为0即可, 为0表示按键再次按下了,为1表示按键没有再次按下。图4.4 八路循环显示控制子程序流程图4.5 单路显示控制子程序单路显示控制子程序流程图如图4.5所示。注:判断按键k1是否按下的方法:在程序开始时将51h和52h清零,当产生一次中断0时对51h加1,在判断按键k1是否按下时,将51h与52h相比较,若相等表示按键k1并没有按下,不相等则表示按键k1按下了,在按键k1按下后且显示完数据后将51h内的内容传给52h,这样在按键k1再次按下时,继续使用这种方法进行判断时即可成功地判断。图4.5 单路显示子程序流程图4.6 显示子程序显示子程序流程图如图4.6所示。注:1.显示程序中,由于测量出的电压为0.00v5.00v,可得不论显示的电压是何值时,四位led显示中的第二位的小数点都显示,所以在编程中,可直接将第二位显示的小数点直接显示即可。 2.调用的延时程序可选用1s或2s延时。图4.6 显示子程序流程图4.7 按键子程序由于我采用的是中断方式,所以按键子程序即为中断子程序,需要注意的是在中断子程序中必须进行按键消抖,方式为在延时10ms后判断按键是否释放。五.系统调试本次课程设计中我们采用单片机语言进行编程,在编程的过程中,我们需要一边编程一边调试,先将小的子程序编写完成并调试成功,在编写大的程序,这样一步一步得调试才能更方便地将我们所需要的大的程序成功地实现我们的要求。而学校为我们提供的调试环境及调试软件为伟福仿真器。5.1 仿真环境介绍仿真环境包括伟福仿真器及伟福仿真软件,在此主要介绍伟福仿真软件,由于软件中的内容过多,因此只对常用的功能进行介绍。1.文件(f)文件| 打开文件打开用户程序,进行编辑。如果文件已经在项目中,可以在项目窗口中双击相应文件名打开文件.文件| 保存文件保存用户程序。用户在修改程序后,如果进行编译,则在编译前,系统会自动将修改过的文件存盘.文件| 新建文件建立一个新的用户程序, 在存盘的时候,系统会要求用户输入文件名.文件| 另存为将用户程序存成另外一个文件, 原来的文件内容不会改变文件| 退出退出系统,如果在退出以前有修改过的文件没有存盘,系统将会提示是否把文件存盘.2.编辑(e)编辑| 撤消键入取消上一次操作编辑| 重复键入恢复被取消的操作编辑| 剪切删除选定的正文,删除的内容被送到剪贴板上编辑| 复制将选定的内容,复制到剪贴板上编辑| 粘帖将剪贴板的内容插入光标位置编辑| 全选选定当前窗口所有内容。3.搜索(s)搜索| 查找在当前窗口中查找符号,字串。可以指定区分大小写方式,全字匹配方式,可以向上向下查找。搜索| 在文件中查找可以在指定的一批文件中查找某个关键字。搜索| 转到当前pc 所在行将光标转到pc 所在的程序位置。4.项目(p)项目| 编译编译当前窗口的程序。如有错误,系统将会指出错误所在的位置。项目| 全部编译全部编译项目中所有的模块(程序文件),包含文件。如有错误系统会指出错误所在位置。5.执行(r)执行| 全速执行运行程序执行| 跟踪跟踪程序执行的每步,观察程序运行状态。执行| 单步单步执行程序,与跟踪不同的是,跟踪可以跟踪到函数或过程的内部,而单步执行则不跟踪到程序内部。执行| 执行到光标处程序从当前pc 位置,全速执行到光标所在的行。如果光标所在行没有可执行代码。则提示“这行没有代码”执行| 暂停暂停正在全速执行的程序。执行| 复位终止调试过程,程序将被复位。如果程序正在全速执行,则应先停止。执行| 设置pc将程序指针pc,设置到光标所在行。程序将从光标所在行开始执行。执行| 自动单步跟踪/单步模仿用户连续按f7 或f8 单步执行程序。执行| 编辑观察项观察变量或表达式的值,可以将需要检查和修改的值或表达式放到观察窗口里以便检查和修改。(图:观察项对话框)执行| 设置/取消断点将光标所在行设为断点,如果该行原来已为断点,则取消该断点。所有断点通过断点窗口进行管理。6.窗口(w)窗口| 刷新刷新打开的所有窗口,及窗口里的数据。窗口| 项目窗口打开项目窗口,以便在项目中加入模块或包含文件。(图:项目窗口)窗口| 信息窗口显示系统编译输出的信息。如果程序有错,会以图标形式指出,窗口| 观察窗口项目编译正确后,可以在观察窗口中看到当前项目中的所有模块,及各模块中的所在过程和函数,及各个过程函数中的各个变量,结构。如果能充分利用观察窗口的强大功能,可以加快你开发速度。7.仿真器(o)仿真器| 仿真器设置仿真器设置包括仿真器类型,仿真头(pod)类型,cpu 类型,显示格式和产生的目标文件类型。5.2 仿真步骤5.2.1 连接仿真器本次使用的伟福仿真器采用的仿真头为podh8x5x型,仿真器类型为e6000/l。在将伟福仿真器与单片机芯片插销接好之后,接着将仿真器与计算机连接好,并对单片机模板通电,这样,仿真环境的硬件方面就做好了。5.2.2 windows软件安装步骤:1.将光盘放入光驱,光盘会自动运行,出现安装提示。2.选择“安装windows”软件。3.按照安装程序的提示,输入相应内容。4.继续安装,直至结束。若光驱自动运行被关闭,用户可以打开光盘的icessofte2000w目录(文件夹),执行setup.exe,按照安装程序的提示,输入相应的内容,直至结束。在安装过程中,如果用户没有指定安装目录,安装完成后,会在c:盘建立一个c:wave6000 目录(文件夹)。5.2.3 编程及调试1.打开伟福仿真软件,在【仿真器】中选择【仿真器设置】,在【仿真器】中选择仿真头为podh8x5x型,选择cpu为e6000/l型,选择使用伟福软件模拟器为89s51,单击【好】。再次在【仿真器】中选择【仿真器设置】,在【通信设置】中检测串行口是否工作正常,若不正常则检查仿真器的接口是否连接正常、仿真器及单片机模板是否接通电源等,直到串行口工作正常为止。2.在【文件】中选择【新建文件】,并将其保存,路径可自己选择,要注意的是命名必须是全英文,且以“.asm”结尾,保存完成后即可进行正常的编程及调试了。3.将程序输入到编辑窗口后,选择【项目】中的【全部编译】,观察是否有语法错误,若有则改正,直到无错误无警告为止。接着选择【执行】中的【全速运行】,观察是否是我们想得到的结果,不是则继续调试,并编译、运行。六.总结三周的单片机课程设计终于结束了,期间我学到了很多在课堂上学不到的东西。老师将我们两个班分为三组,每组的课题都不一样,我被分在了第三组,课题是简易数字电压的设计,老师都说我们这组是最简单的,感觉自己很幸运,因为自己的单片机本来就不好,对与编程的东西一看到就头疼,在以前的单片机实验中也是蒙混过关的,这次简单一些我就不用那么辛苦了,可是在实习的过程中,不知不觉地就发现了自己的单片机真的太差了,而且单片机要考试了,就想趁着这次的实习好好地学一学。我们的指导老师是张欣老师,老师说第三组虽然是最简单的,但是硬件部分还是比较麻烦的,而且在实习的前几天主要就是上网查资料并将硬件电路图画出来,在绘制的过程中,遇到了一些问题,在请教了同学和老师并通过自己的努力,终于将硬件电路图绘制出来了,虽然在最后经过老师检查的时候还是发现了一些问题,但改正后的电路图还是可以基本实现本次课程设计的要求的。硬件电路图经过老师检查后,就要进行焊板及软件设计了,这时老师将我们这组的同学分成了六小组,而我也由同学推荐当了小组长,我自认为我无法胜任,但是老师都已经这么安排了,我就试一试吧,顺便锻炼一下自己。为了方便我们的焊板及编程,老师给我们统一了硬件电路图,并为我们准备好了印刷完成的电路硬板,我们花了将近半天的时间才将电路板焊接完。接下来要做的就是编程了。我感觉软件的设计还是比较难的,特别是调试方面。使用软件编程调试之前,老师让我们编写一个小的显示程序,用来检测我们焊接的电路板是否连接完好,若不显示的话说明电路板有问题必须好好检查了,幸好我们这个小组的同学焊电路板式都认真地做了,所有人的电路板都是好用的。接下来就是程序的编写及调试了。首先要调试的是显示子程序,因为整个大程序中它是最基础的小程序,由于我在课下上网找了资料,改一改显示程序就编出来了。显示程序编完之后,接着就是a/d转换子程序了,我把自己编的a/d转换子程序输入进去后,led显示器上并不显示,而且我还找不出错误,顿时我就失去了信心,越找不出错误我就越来越急躁,这样就越来越找不出错误来了。在我将要失去信心的时候,老师耐心地替我解读程序,并为我找出了出错的原因所在,接着我将错误的地方改了改,重新编译运行了一次,a/d转换子程序终于能够正常运行了。转换程序完成后,就表示八路循环显示程序能够正常运行了。这时需要将八路/单路切换按键即按键k0功能程序加入转换程序中。接着将单路通道显示增加按钮即按键k1功能程序加入即可,由于在自己已经想好了判断按键的方法,因此将构思好的程序加入进去就好用了。到此为止,我以为我的程序就已经编好了,可是在最后一次调试的时候,老师检查发现我的单路显示延时的时间过长,不能立即反应,而且显示的电压也不能随着电阻的变化而变化。在自己的努力和老师的帮助,我改正了错误,成功地将能够满足要求的程序编写完成了。通过这次的课程设计,我对单片机有了新的认识,也学到了一些以前并不知道的知识,感谢同学的帮助,更感谢老师的教导!七.参考文献1.单片机原理及应用 张毅刚 彭喜元 董继成 高等教育出版社2.mcs-51实用汇编子程序设计 张毅刚 哈尔滨工业大学出版社3.智能仪器与数据采集系统中的新器件及应用 杨振江 西安电子科技大学出版社4.单片机器件应用手册 王毅 人民邮电出版社5.计算机控制技术及工程应用 林敏 丁金华 田涛 国防工业出版社6.基于proteus的单片机可视化软硬件仿真林志琦 郎建军 李会杰 佟大鹏 北京航空航天大学出版社7.单片机学习指导及习题解答 张志良 机械工业出版社8. 基于proteus的电路及单片机电路及单片机系统设计与仿真 周润景 张丽娜 北京航空航天大学出版社附录附录一:程序清单led_0 equ 30hled_1 equ 31hled_2 equ 32hled_3 equ 33hkey00 equ 50hkey01 equ 51hkey02 equ 52hst bit p2.4oe bit p2.5eoc bit p3.0ale bit p2.3org 000hljmp startorg 0003hljmp intx0org 0013hljmp intx1start:mov led_0,#00 mov led_1,#00 mov led_2,#00 mov led_3,#00 mov 40h,#00h mov 41h,#00h mov dptr,#table mov r3,#00h mov key00,#00h mov key01,#00h mov 52h,#00h setb ex0 setb it0 setb ex1 setb it1 setb eal0: mov r0,#40h mov r2,#08h mov p2,#00h lcall meas1 ;采样子程序 mov r1,#40h mov r2,#08h lcall loop2 ;标度变换子程序 sjmp l0intx0:push dpl push dph push acc lcall delay2 lcall delay2 jb p3.2,l1 inc key00l1: pop acc pop dph pop dpl retiintx1:push dpl push dph push acc lcall delay2 lcall delay2 jb p3.3,l2 mov 52h,key01 inc key01l2: pop acc pop dph pop dpl retimeas1:setb p2.3 ;采样子程序 nop nop clr p2.3 nop nop setb p2.4 nop nop clr p2.4 nop noploop3:jnb p3.0,loop3 setb p2.5 mov a,p0 mov r0,a clr p2.5 inc p2 inc r0 djnz r2,meas1 retloop2:mov r4,#30h ;标度变换 mov a,r1 mov b,#51 div ab mov led_2,a clr f0 mov a,b subb a,#1ah mov f0,c mov a,#10 mul ab mov b,#51 div ab jb f0,biao0 add a,#5biao0:mov led_1,a clr f0 mov a,b subb a,1ah mov f0,c mov a,#10 mul ab mov b,#51 div ab jnb f0,biao1 add a,#5biao1:mov led_0,a mov a,r1 subb a,#40h mov led_3,a lcall disp ;调显示子程序 mov a,key00 ;判断第一个按键是否按下 jnb acc.0,loop0 sjmp key0loop0:inc r1 djnz r2,loop2 retdisp:mov a,led_3 ;显示子程序 mov dptr,#table movc a,a+dptr clr p3.7 mov p1,a lcall delay2 setb p3.7 mov p1,#0ffh mov a,led_2 movc a,a+dptr clr p3.6 anl a,#7fh mov p1,a lcall delay2 setb p3.6 mov p1,#0ffh mov a,led_1 mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论