1、(三)蜂鸣器播放音乐21(四)按键识别23(五)串口通信26(六)时钟定时器中断应用33(七)时钟日历时钟芯片DS1302应用37(八)数字温度计温度传感器DS18B20应用47四、体会与建议53一、 概要实验开发板配置为STC89C52RC单片机,内置8K的ROM程序存储器,支持串口ISP在线下载。实验板上有8位数码管,可做静态显示、动态扫描以及数字时钟显示等;16位LED发光二极管,可进行流水灯等实验;6个按键可实现按键查询、按键中断等;利用蜂鸣器可进行报警提示、播放音乐等;利用DS1302时钟芯片可进行时钟精确计时,制作简易的时钟日历;通过温度传感器DS18B20接口可编程获取环境温度,
2、制作数字温度计;MAX232芯片构成标准的RS232串行通信接口,可与PC机、单片机开发板进行串行通信,也可由计算机直接下载程序至单片机进行程序的烧录。通过编程设计与本开发板配套的程序,完成相关硬件设备的应用,充分理解与掌握单片机的原理与应用,提高动手实践与编程的综合能力。二、 焊接工艺总结 本实验板为双面板,2条腿以上的元件,焊上后拆下重焊比较困难。应按照顺序先焊易焊元件如电阻、小电容、12M和32768HZ的晶振、小开关等无极性元件。在焊电路板时,首先焊接电源部分的元器件,J1、J2、S1、E1、E2、R5,然后接电源,检查电路板是否正常;然后焊接7段LED显示器下面的元件,并安装好7段L
3、ED显示器下的一个橡胶垫;然后焊其它元件,焊接元件按低高顺序,先焊低的,后焊高的,再焊集成电路插座,最后焊接7段LED显示器和串口插座等。焊接过程中应注意排阻的公共端不能焊反,以及四位的LED数码管和LED发光二极管等具有极性的元件的电极也不能焊反。三、程序设计(一)LED灯应用1.流水灯(1)实现功能在实验板上点亮第一个LED灯后,再熄灭第一个LED灯,然后延时一段时间,接着再点亮第二个LED灯,接着再熄灭第二个LED灯直至16个灯依次被点亮和熄灭,如此循环构成16个LED灯亮灭显示的流水灯。(2)编程思想利用循环移位先将P2赋值为0xff关闭右边8个灯,再将P0口赋值为0xfe点亮第一个L
4、ED灯,延时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循环取
5、遍a中的值,如此可构成右移的流水灯,数组b中反序存放数组a中8个值,然后让P0和P2循环取遍b中的值,如此可构成左移的流水灯。(3)程序框图循环移位方式 主程序框图:右移函数框图:P0=0xff,P2=0xfe开始P2=0xff,P0=0xfe延时50ms P2口的值0xfe循环左移1位P0口的值0xfe循环左移1位循环8次?否 否结束 是 是左移函数框图:P2=0xff,P0=0x7fP2=0x7f,P0=0xff 否 P0口的值0x7f循环右移1位P2口的值0x7f循环右移1位否 是 是取表方式主程序框图:P0=0xffP2=0xffP2=aiP0=aii自增1循环8次P0=biP2=bi
6、 否 否 是 是(4)程序代码#include#include #define uint unsigned int #define uchar unsigned char uchar temp,i,j;void delayms(uchar);void youyi();void zuoyi();void main() while(1) youyi(); zuoyi(); void youyi() temp=0xfe; P2=0xff; P0=temp; for(i=0;i8;i+) delayms(50); temp=_crol_(temp,1); P0=temp; P0=0xff; temp=
7、0xfe; P2=temp; for(j=0;j0;x-)for(y=248;yy-);uchar code a=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;uchar code b=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;while(1)youyi(); zuoyi(); P2=0xff; P0=ai; delayms(50); P2=aj;P0=0xff; P2=bi; P0=bj; uchar x,y;2.闪烁灯在实验板上点亮第一个LED灯后延时一段时间再熄灭第一个LED灯,然后再点亮第一个LED灯延时一段时间再熄灭第一个LED灯,让第一个灯总共这样亮灭4次,接着再让第二个LED灯亮灭4次,如此下去实现16个灯的亮灭闪烁并且能循环右移和左移。定义两个数组a,b,数组a中存放依次点亮8个灯时P0和P2口应赋的8个值,然后让P0和P2循环取遍a中的值,每取a中的一个值时按如下方式循环4次:P0和P2每次取值后先延时100ms再赋值为0xff再延时100ms。这样下去可构成循环右移的闪烁灯。数组b中反序存放数组a中8个值,然后让P0和P2按上述方式循环取遍b中的值,如此可构成循环左移的闪烁灯。右移闪烁函数程序框图:左移闪烁函数程序框图:void youshan();void zuoshan();whil
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1