毕业设计(论文)-多功能实验板设计.doc_第1页
毕业设计(论文)-多功能实验板设计.doc_第2页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

本科生实习论文(设计)题目:多功能实验板 姓名: 学号: 0310401039 系别: 物理与电子信息科学系 专业: 电子信息科学与技术指导教师: 起止日期: 2006年10月2006年11月 2006年11月 3 日目录引言.3关键词.31总体设计方案.32硬件电路.3 21 芯片说明3 211 at89c513 212 ds18b205 22 八位数码直读显示电路7 23 4*4矩阵十六键键盘电路.7 24 电源电路83制板过程.831 基本流程.832 注意的问题.84实现功能.841 电子时钟.8 42 秒表.14 43 温度测量.14 44 计算器.195总结.206致谢.207参考文献.20附录.21 附录一:总电路原理图21附录二:pcb板图21附录三:电路板实物图22附录四:元件清单22引言:单片微机简称单片机,其为可编程芯片,应用范围非常广泛。本设计将用单片机有主体,制作一个简单的系统。关键词:动态扫描,单线技术1总体方案设计:本设计主要用单片机at89c51来实现,单片机为可编程的,在单片机能正常工作的基础之上,用其并口进行扩展,接入两个四位的数码管,并用74ls245驱动,4*4的十六键矩阵键盘,这样就基本上构成了一个简单的系统.l 输入单元-十六键键盘.l 处理单元-at89c51.l 输出显示单元-两个四位数码管.2硬件结构: 21 芯片说明 211 at89c51at89c51是一个低电压,高性能cmos 8位单片机,片内含4k bytes的可反复擦写的flash只读程序存储器和128 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,内置功能强大的微型计算机的at89c51提供了高性价比的解决方案。 at89c51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,at89c51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。p0口:p0口是一组8位漏极开路型双向i/o口,也即地址/数据总线复用口.作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口写1可作为高阻抗输入端用.p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路.对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill).p2口:p2是1个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路.对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill).p3口:p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能,如下表所示:p3口还接收一些用于flash闪速存储器编程和程序效验的控制信号.rst:复位输入.当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位. ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节.即使不访问外部存储器,ale仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的.要注意的是:每当访问外部数据存储器时将跳过一个ale脉冲.psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c51由外部程序存储器取指令(或数 据)时,每个机器周期两次psen有效,即输出两个脉冲.在此期间,当访问外部数据存储器,这两次有效的psen信号不出现.ea/vpp:外部访问允许.欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地).需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态.xtal1:振荡器反向放大器的及内部时钟发生器的输入端.xtal2:振荡器反向放大器的输出端.时钟振荡器:at89c51中有一个用于构成内部振荡器的高增益反向放大器,引脚xtal1和xtal2分别是该放大器的输入端和输出端.这个放大器与作为反馈元件的片外石英晶体一起构成自激振荡器.外接石英晶体及电容c1.c2接在放大器的反馈回路中构成并联振荡电路.对外接电容c1.c2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低.振荡器工作的稳定性.起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30pf+-10pf212 温度传感器ds18b20ds18b20温度传感器是美国dallas半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。ds18b20的性能特点如下:l 独特的单线接口仅需要一个端口引脚进行通信;l 多个ds18b20可以并联在惟一的三线上,实现多点组网功能;l 无须外部器件;l 可通过数据线供电,电压范围为3.05.5;l 零待机功耗;l 温度以或位数字;l 用户可定义报警设置;l 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;l 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; ds18b20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/lsb形式表达,其中s为符号位。这是12位转化后得到的12位数据,存储在18b20的两个8比特的ram中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125的数字输出为07d0h,+25.0625的数字输出为0191h,-25.0625的数字输出为ff6fh,-55的数字输出为fc90h。ds18b20温度传感器的存储器ds18b20温度传感器的内部存储器包括一个高速暂存ram和一个非易失性的可电擦除的e2ram,后者存放高温度和低温度触发器th、tl和结构寄存器。暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是th、tl的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。该字节各位的意义如下: tm r1 r0 1 1 1 1 1 低五位一直都是1 ,tm是测试模式位,用于设置ds18b20在工作模式还是在测试模式。在ds18b20出厂时该位被设置为0,用户不要去改动。r1和r0用来设置分辨率,如下表所示:(ds18b20出厂时被设置为12位)分辨率设置表: r1r0分辨率温度最大转换时间009位93.75ms 0110位187.5ms 1011位375ms 1112位750ms 根据ds18b20的通讯协议,主机控制ds18b20完成温度转换必须经过三个步骤:每一次读写之前都要对ds18b20进行复位,复位成功后发送一条rom指令,最后发送ram指令,这样才能对ds18b20进行预定的操作。复位要求主cpu将数据线下拉500微秒,然后释放,ds18b20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主cpu收到此信号表示复位成功。22 八位数码管直读显示八位数码显示是由两个四位数码管构成。八字段接在p0口,p0口接入了1k的上拉电阻,而八个位选端经驱动芯片74ls245接入p2口,如下两表:数码管字段码显示表(对应p0口代码表)如下:(不带小数点)显示数学p0.7p0.6p0.5p0.4p0.3p0.2p0.1p0.0p1gchdefab00101111105fh101000001041h21001101109bh3110100110d3h4110001010c5h5110101100d6h6110111100deh701000011043h8110111110dfh9110101110d7h(注:1.数码管为共阴极的 2.带小数点7fh,61h,0bbh,0f3h,0e5h,0f6h,0feh,63h,0ffh,0f7h)数码管位选表:(对应p2口)数码管1数码管2千百十个千百十个p2.7p2.6p2.5p2.4p2.3p2.2p2.1p2.0 (注:p2口低电平有效)23 十六键键盘4*4矩阵分部键盘有十六个微动开关,以4*4矩阵分部,接入p1口,这种接入文法可以有效的利用并口,因为at89c51单片机的并口是有限的。具体电路见总原理图。 24 电源电路 如下图: 该电路只有稳压的作用,输入电压为直流,范围在7.515v之间。3电路制板过程: 31 基本流程 本次电路的pcb板制作用到的是protel 99软件。用该软件做好pcb电子模板后,然后转印到敷铜板上,经过腐蚀,电路板就制成。 32 遇到的问题 制板的关键就在于转印到敷铜板上是否成功。在这一步中要我们有耐心。通过转印机后,一定要等其冷却。4实现功能: 41 电子时钟时钟由六位八字段数码显示,依次为小时,分钟,秒钟,各有两位显示。上电初始化时为零时零分零秒,并开始运行.小时,分钟,秒钟都可调.由四个微动开关控制,分别为:1.时,分,秒选择键-由小数点跟踪确定.2.确认键-时间调好后,按该键可以退出调整,继续进行记时.3.加,减两键-在时,分,秒选择好后,分别对其进行加,减操作(精度为1).程序如下:org 0000hajmp mainorg 000bhajmp timeorg 0030hmain:mov 20h,#00hmov 21h,#00hmov 22h,#00hmov 23h,#00hmov ip,#02h ;ip,ie初始化mov ie,#82hmov tmod,#01h ;设定定时器工作方式?mov tl0,#0b0hmov th0,#3chsetb tr0 ;启动定时?mov sp,#40h ;重设堆栈指针next: lcall disp ;调用显示子程序?lcall key ;调用按键检测子程序jz next ;lcall ankey ;调用按键处理子程序sjmp next ;重新循环nopnopnop;定时中断处理程序:time: push acc ;保护现场push pswmov tl0,#0b4h ;赋定时初值mov th0,#3chinc 20h ;mov a,20hcjne a,#20,reti1mov 20h,#00h ;一秒钟时间到mov a,21hadd a,#01hda amov 21h,acjne a,#60h,reti1mov 21h,#00h ;一分钟时间到mov a,22hadd a,#01hda amov 22h,acjne a,#60h,reti1mov 22h,#00h ;一小时时间到mov a,23hadd a,#01hda amov 23h,acjne a,#24h,reti1mov 23h,#00h ;到时间达到24小时,清零.reti1: pop psw ;恢复现场pop accreti ;中断返回?nopnop;显示子程序disp: anl 2fh,#10h ;处理小数点mov a,21h ;处理秒21h-2dh,2ehanl a,#0fhorl a,2fhmov 2fh,amov a,21hanl a,#0f0hswap amov 2eh,aanl 2dh,#10hmov a,22h ;处理分钟22h-2ch,2dhanl a,#0fhorl a,2dhmov 2dh,amov a,22hanl a,#0f0hswap amov 2ch,aanl 2bh,#10hmov a,23h ;处理小时23h-2ah,2bhanl a,#0fhorl a,2bhmov 2bh,amov a,23hanl a,#0f0hswap amov 2ah,amov r0,#2fh ;显示偏移量mov r3,#06hmov dptr,#tablemov a,#11111110bloop1: mov b,a ;mov p2,amov a,r0movc a,a+dptrmov p0,a ;送显示mov r2,#80h ;延时djnz r2,$dec r0mov a,brl adjnz r3,loop1 ;循环显示rettable: db 05fh,41h,09bh,0d3h,0c5h,0d6h,0deh, ;不带小数点db 043h,0dfh,0d7h,00,00,00,00,00,00db 07fh,61h,0bbh,0f3h,0e5h,0f6h,00feh,63h ;带小数点db 0ffh,0f7h,00,00,00,00,00,00nopnop;按键判断程序key: mov p1,#0fh ;mov a,p1cpl aanl a,#0fhjz retx ;无键按下则返回lcall disp ;lcall dispmov a,p1cpl aanl a,#0fhjz retx ;键盘去抖动。mov r6,a ;将键值存入r6。loop2: lcall disp ;mov a,p1cpl aanl a,#0fhjnz loop2 ;等待键释放mov a,r6retx: retnopnop;按键处理子程序ankey: clr ea ;关中断lx: mov a,r6jb acc.0,l1 ;是功能键转l1jb acc.1,l2 ;是确认键转l2jb acc.2,l3 ;是减1键转l3jnb acc.3,l12 ;不是增1键,转l12jb 2bh.4,l6 ;判断使哪一位(时、分、秒)的值加1jb 2dh.4,l8jb 2fh.4,l9l12: lcall displcall displcall key ;判断有无键按下。jz l12ljmp lxl2: mov 25h,#00h ;确认键处理程序clr 2bh.4clr 2dh.4clr 2fh.4setb earetl3: jb 2bh.4,l61 ;增一键处理程序jb 2dh.4,l81jb 2fh.4,l91ajmp l12l1: mov a,25h ;功能键处理程序jz lb1jb acc.0,lb2jb acc.1,lb3jnb acc.2,l12lb1: mov 25h,#01h ;25h单元是标志位,(25h)=01h调节时单元的值setb 2bh.4clr 2dh.4clr 2fh.4ajmp l12lb3: mov 25h,#04h ;25h单元是标志位,(25h)=01h调节秒单元的值setb 2fh.4clr 2dh.4clr 2bh.4ajmp l12lb2: mov 25h,#02h ;25h单元是标志位,(25h)=01h调节分单元的值setb 2dh.4clr 2bh.4clr 2fh.4ajmp l12l61: ajmp l611 ;l81: ajmp l811 ;l91: ajmp l911l6: mov a,23h ;时加一add a,#01hda amov 23h,acjne a,#24h,l15l15: jc l112mov 23h,#00hl112: ajmp l12l8: mov a,22h ;分加一add a,#01hda amov 22h,acjne a,#60h,l16l16: jc l112mov 22h,#00hajmp l12l9: mov a,21h ;秒加一add a,#01hda amov 21h,acjne a,#60h,l17l17: jc l112mov 21h,#00hajmp l12l611: mov a,23h ;时减一add a,#99hda amov 23h,acjne a,#99h,l112mov 23h,#23hajmp l12l811: mov a,22h ;分减一add a,#99hda amov 22h,acjne a,#99h,l112mov 22h,#59hajmp l12l911: mov a,21h ;秒减一add a,#99hda amov 21h,acjne a,#99h,l112mov 21h,#59hajmp l12nopnopend42 秒表秒表的程序设计跟时钟差不多,这里就不再说明了。43 温度测量 主要用到ds1820以及单总线技术,硬件的接入非常的简单(见测温硬件)。由于硬件的一线结构,单线传输,因此,在软件编程就会有比较严格的时序要求。 以下程序可测量显示精度为0.06的温度值。用四位数码管显示,前两位是整数部分,后两位是小数部分。显示范围为0100摄氏度。dat bit p3.1 ;数据通信口wdlsb data 30h ;读出的温度低字节wdmsb data 31h ;读出的温度高字节;*org 0000hljmp mainorg 000bhsjmp timer0 ;定时显示;*;定时显示子程序,采用循环扫描方式;显示缓冲区40h47horg 0040htimer0:mov dptr,#tabmov a,40hmovc a,a+dptrmov p0,a;最后一位值送p0mov p2,#11111110b; 点亮最后一位call t1msmov dptr,#tabmov a,41hmovc a,a+dptrmov p0,amov p2,#11111101bcall t1msmov dptr,#tab1mov a,42hmovc a,a+dptrmov p0,amov p2,#11111011bcall t1msmov dptr,#tabmov a,43hmovc a,a+dptrmov p0,amov p2,#11110111bmov th0,#low(65536-10000) ;定时器10ms中断mov tl0,#high(65536-10000)retit1ms: mov r5,#00h ;延时子程序tt: mov r6,#9djnz r6,$djnz r5,ttrettab:db 5fh,41h,9bh,0d3h,0c5h,0d6h,0deh,43h,0dfh,0d7htab1:db 7fh,61h,0bbh,0f3h,0e5h,0f6h,0feh,63h,0ffh,0f7h;*;主程序:main: mov sp,#60hmov p1,#0ffhmov r2,#8mov r0,#40h ;over: mov r0,#00hinc r0djnz r2,overmov tmod,#01hmov th0,#low(65536-10000)mov tl0,#high(65536-10000)setb easetb et0setb tr0loop: lcall dswd ;调用读出ds18b20温度程序sjmp loop ; 读出ds18b20温度程序dswd:clr ealcall rstjnb f0,kend ;如果没有应答,返回主程序mov r0,#0cchlcall send_byte ;跳过rom匹配mov r0,#44h ;发出温度转换命令lcall send_bytesetb eamov p1,#00001111bmov 48h,#1 ;廷时75ms以上准备读ss2: mov 49h,#255ss1: mov 4ah,#255ss0: djnz 4ah,ss0djnz 49h,ss1djnz 48h,ss2mov p1,#11111100bclr ealcall rstjnb f0,kendmov r0,#0cch ;跳过rom匹配lcall send_bytemov r0,#0beh ;发出读温度命令lcall send_bytelcall read_bytemov wdlsb,alcall read_bytemov wdmsb,alcall trans12kend: mov p1,#01010101bsetb earet;*;温度转换程序:精确到:0.06 ;trans12:mov a,30hanl a,#0f0hmov 3ah,amov a,31hanl a,#0fhorl a,3ahswap amov b,#10div abmov 43h,amov 42h,b ;mov dptr,#tabbmov a,30hanl a,#0fhmov b,#2mul abmovc a,a+dptrmov 41h,amov a,30hanl a,#0fhmov b,#2mul abinc amovc a,a+dptrmov 40h,arettabb: db 0,0,0,6,1,2,1,8,2,5,3,1,3,7,4,3,5,0db 5,6,6,2,6,8,7,5,8,1,8,7,9,3;*send_byte: ;发送一个字节程序mov a,r0mov r5,#8sen3: clr crrc ajc sen1lcall write_0sjmp sen2sen1: lcall write_1sen2: djnz r5,sen3 ; 循环8次,写一个字节retread_byte: ;读一个字节程序mov r5,#8read1: lcall readrrc adjnz r5,read1 ; 循环8次,读一个字节mov r0,aret;复位程序,如果复位置位f0,没有就复位f0rst: setb datnopnopclr datmov r6,#250 ;主机发复位脉冲持续3s200=600sdjnz r6,$mov r6,#50djnz r6,$setb dat ;主机释放总线,口线改为输入mov r6,#15djnz r6,$call chck ;调用应答检查程序mov r6,#60djnz r6,$setb datretchck: mov c,datjc rst0setb f0 ;检测到信号,置位f0sjmp chck0rst0: clr f0 ;未准备好f0复位chck0: retwrite_0: ;写0clr datmov r6,#30djnz r6,$setb datretwrite_1:clr dat ;写1nopnopnopnopnopsetb datmov r6,#30djnz r6,$ret;读一位数据程序read: setb dat ;先复位至少1us产生读起始信号nopnopclr datnopnopsetb dat ;置位dat准备接收数据nopnopnopnopnopnopnopmov c,datmov r6,#23djnz r6,$retend44 计算器对计算器的设计我把它分为四个部分:l 键盘输入.l 储存.l 运算.l 显示.在这

温馨提示

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

评论

0/150

提交评论