1 / 72
文档名称:

硬件课程设计报告.doc

格式:doc   大小:2,397KB   页数:72页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

硬件课程设计报告.doc

上传人:AIOPIO 2020/4/17 文件大小:2.34 MB

下载得到文件列表

硬件课程设计报告.doc

文档介绍

文档介绍:硬件课程设计报告专业班级学号姓名中国矿工业大学计算机科学与技术学院2011年12月目录一、概要 3二、焊接工艺总结 3三、程序设计 3(一)LED灯应用 3(二)数码管显示 12(三)蜂鸣器播放音乐 21(四)按键识别 23(五)串口通信 26(六)时钟——定时器中断应用 33(七)时钟日历——时钟芯片DS1302应用 37(八)数字温度计——温度传感器DS18B20应用 47四、体会与建议 53概要实验开发板配置为STC89C52RC单片机,内置8K的ROM程序存储器,支持串口ISP在线下载。实验板上有8位数码管,可做静态显示、动态扫描以及数字时钟显示等;16位LED发光二极管,可进行流水灯等实验;6个按键可实现按键查询、按键中断等;利用蜂鸣器可进行报警提示、播放音乐等;利用DS1302时钟芯片可进行时钟精确计时,制作简易的时钟日历;通过温度传感器DS18B20接口可编程获取环境温度,制作数字温度计;MAX232芯片构成标准的RS232串行通信接口,可与PC机、单片机开发板进行串行通信,也可由计算机直接下载程序至单片机进行程序的烧录。通过编程设计与本开发板配套的程序,完成相关硬件设备的应用,充分理解与掌握单片机的原理与应用,提高动手实践与编程的综合能力。焊接工艺总结本实验板为双面板,2条腿以上的元件,焊上后拆下重焊比较困难。应按照顺序先焊易焊元件如电阻、小电容、12M和32768HZ的晶振、小开关等无极性元件。在焊电路板时,首先焊接电源部分的元器件,J1、J2、S1、E1、E2、R5,然后接电源,检查电路板是否正常;然后焊接7段LED显示器下面的元件,并安装好7段LED显示器下的一个橡胶垫;然后焊其它元件,焊接元件按低高顺序,先焊低的,后焊高的,再焊集成电路插座,最后焊接7段LED显示器和串口插座等。焊接过程中应注意排阻的公共端不能焊反,以及四位的LED数码管和LED发光二极管等具有极性的元件的电极也不能焊反。三、程序设计(一)LED灯应用1. 流水灯(1)实现功能在实验板上点亮第一个LED灯后,再熄灭第一个LED灯,然后延时一段时间,接着再点亮第二个LED灯,接着再熄灭第二个LED灯……直至16个灯依次被点亮和熄灭,如此循环构成16个LED灯亮灭显示的流水灯。(2)编程思想①利用循环移位先将P2赋值为0xff关闭右边8个灯,再将P0口赋值为0xfe点亮第一个LED灯,延时50ms后,将0xfe循环左移一位再赋给P0,接着再延时50ms,如此循环下去,待P0口控制的8个灯循环完毕后,再将P0赋值为0xff关闭左边8个灯将P2口赋值为0xfe,重复上述的循环操作。这样可使16个LED灯实现右移的流水灯。实现左移的流水灯时,可先将P0赋值为0xff关闭左边8个灯,再将P2口赋值为0x7f,然后延时50ms,接着将0x7f循环右移一位再赋给P2,如此循环下去,循环完毕后再将P0口赋值为0x7f重复上述循环操作。这样可使16个LED灯实现左移的流水灯。②利用取表方式定义两个数组a,b,数组a中存放依次点亮8个灯时P0和P2口应赋的8个值,然后让P0和P2循环取遍a中的值,如此可构成右移的流水灯,数组b中反序存放数组a中8个值,然后让P0和P2循环取遍b中的值,如此可构成左移的流水灯。(3)程序框图①循环移位方式主程序框图:右移函数框图:P0=0xff,P2=0xfe开始P2=0xff,P0=0xfe延时50ms延时50msP2口的值0xfe循环左移1位P0口的值0xfe循环左移1位循环8次?循环8次?否否结束是是左移函数框图:P2=0xff,P0=0x7f开始P2=0x7f,P0=0xff延时50ms延时50ms否P0口的值0x7f循环右移1位P2口的值0x7f循环右移1位否循环8次?循环8次?结束是是②取表方式主程序框图:右移函数框图:P0=0xff开始P2=0xffP2=a[i]延时50msP0=a[i]延时50ms否i自增1i自增1否循环8次循环8次?结束是是左移函数框图:P2=0xff开始P0=0xffP0=b[i]延时50msP2=b[i]延时50msi自增1i自增1循环8次?循环8次?否否结束是是(4)程序代码①循环移位方式#include<>#include<>#defineuintunsignedint#defineucharunsignedcharuchartemp,i,j;voiddelayms(uchar);voidyouyi();voidzuoyi();voidmain(){while(1) {youyi();zuoyi();}}voidyouyi(){temp=0xfe;P2=0xff;P0=temp;for(i=0;i<8;i++){ delayms(50); temp=_