单片机实训报告_第1页
单片机实训报告_第2页
单片机实训报告_第3页
单片机实训报告_第4页
单片机实训报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、 单片机实训报告单片机实训报告 实训题目实训题目 一、实训目的一、实训目的 二、整体设计二、整体设计 三、硬件电路图三、硬件电路图 四四、程序、程序流程图流程图 五、源五、源程序程序 六、实训体会六、实训体会 一、一、实训目的实训目的 通过数字钟的设计与制作,将前面所学的单片机内部定时器资源、i/o 端 口、键盘和现实接口等知识融会贯通,锻炼独立设计、制作和调试应用系统的 能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方 法等,并掌握单片机应用系统的开发过程。 本设计主要实现以下功能: (1)自动计时,由 6 位 led 显示器显示时、分、秒; (2)具有校准功能,可以设置

2、当前时间; (3)具备定时启闹功能,可以设置启闹,启闹 1 分钟后自动关闭闹钟。 二、整体设计二、整体设计 1. 设计要求 (1)自动计时,由 6 位 led 显示器显示时、分、秒。 (2)具备校准功能,可以设置当前时间。 -按键调整时间 (3)具备定时启闹功能,可以设置启闹时间,闹 60 秒后自动关闭闹铃。 2. 系统总体设计方案 3.3.系统方案选择系统方案选择 (1)单片机选型及最小系统 选用 mcs-51 系列主流芯片 stc89c52rc,内部带有 4kb 的 flash rom,无须 外扩程序存储器。由于数字钟无需大量运算和暂存数据,片内 128 字节 ram 可以 满足设计要求。

3、 (2)计时方案选择 (1)实现时钟功能,各大厂家推出了一系列实时时钟电路,如 ds1287、ds12887、ds1302、pcf8563、s35190 等。这些芯片具备年、月、日、时、 分、秒计时功能和多点定时功能,计时数据每秒自动更新一次,不需程序干预。 单片机可通过中断或查询方式读取计时数据。 (2)利用单片机内部定时器进行中断定时,配合软件延时实现时、分、秒计时 功能。 (3)显示及键盘方案 利用单片机并行 i/o 口,实现 led 动态显示 该方案直接使用单片机并行口作为显示接口,无需外扩接口芯片,但占用 资源较多,且动态扫描显示方式需占用 cpu 时间。在非实时测控或单片机具有 足

4、够并行口资源的情况下可以采用。所以选用 led 数码管。 利用液晶 lcd1602 显示,实现液晶显示,该方案显示信息量大,编程麻烦。 mcu 显示模块 键盘模块 实时时钟ds1302模块 数据存储 eeprom 24lc02 串口通信模块 设计按键,按键采用 44 键盘,使显示结果更简洁。 功能键:时间设定,首先按下是时钟秒的调节;其次为时钟分的调节;再次 为时钟时的调节; 加 1 键:加 1 键为每次按下功能键时,分别对时、分、秒进行加 1; 减 1 键:减 1 键为每次按下功能键时,分别对时、分、秒进行减 1; 时钟与闹铃转换键:闹钟设置/启闹/停闹键。 三、硬件电路图三、硬件电路图 1

5、23456 a b c d 654321 d c b a title numberrevisionsize b date:26-dec-2011sheet of file:c:documents and settingsadministrator件件件件件件件backup1.ddbdrawn by: p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst 9 p3.0rxd 10 p3.1txd 11 p3.2int0 12 p3.3int1 13 p3.4 t0 14 p3.5 t1 15 p3.6 wr 16 p3.7 rd

6、17 xtal2 18 xtal1 19 vss 20 p2.0 21 p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale 30 ea 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 stc89c52 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 gnd 1k 200 22uf vcc reset vcc p00 p01 p02 p03 p04 p05 p06 p07

7、 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 vcc 1 f 2 g 3 e 4 d 5 vcc 6 dp 7 c 8 b 9 a 10 q1 pnp q2 pnp q3 pnp q4 pnp q5 pnp q6 pnp a 1 b 2 c 3 e1 4 e2 5 e3 6

8、y0 15 y1 14 y2 13 y3 12 y4 11 y5 10 y6 9 y7 7 u? 74ls138 r1 1k r2 1k r3 1k r4 1k r5 1k r6 1k vcc p00 p01 p02 a 7 b 1 c 2 d 6 lt 3 bi/rbo 4 rbi 5 a 13 b 12 c 11 d 10 e 9 f 15 g 14 u? 74ls47 r9 100 r10 100 r11 100 r12 100 r13 100 r14 100 r15 100 vcc p04 p05 p06 p07 c1+ 1 c1- 3 c2+ 4 c2- 5 t1 in 11 t2

9、in 10 r1 in 13 r2 in 8 gnd 15 vcc 16 vs+ 2 vs- 6 t1 out 14 t2 out 7 r1 out 12 r2 out 9 max232 1 6 2 7 3 8 4 9 5 j1 db9 + c2 10u + c310u + c5 10u + c610u + c7100u vcc rxd txd s1 s2 s3 s4 p14 p15 p16 p17 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 p10p11p12p13 ls1 speaker q7 pnp r20 10k r21 1k r22 200

10、vcc p33 四四、程序、程序流程图流程图 开始 初始化 启动定时器 显示时钟 检测键盘 键盘模块 显示模块 响闹钟 停止 n y 是否有键按下 闹钟时间是否到 主函数 是否有键按下 切功能键显示模块 分加 调试程序 分加 1 分减时加时减 调试程序 分减 1 调试程序 时加 1 调试程序 时减 1 y yyyy y n 键盘模块键盘模块 显示模块 切换键按下 u=1 显示时钟显示闹钟 yy u=2 显示模块显示模块 五、源五、源程序程序 #include #define uchar unsigned char #define uint unsigned int sbit p10=p10;

11、sbit p14=p14; sbit p15=p15; sbit p16=p16; sbit p17=p17; sbit p3=p33; uchar t0;/定义 hang lie key t0 uint n,x,p,w,z,h; int i,j,m,a,b,c,d,k,e,f,r,y,a1,b1,c1,d1,e1,f 1,u,h1,k1,r1,v; uchar code tab=0 x00,0 x10,0 x20,0 x30,0 x40,0 x50,0 x60,0 x70,0 x80,0 x90; void delay(uint q);/延时函数声明 void saomiao();/键盘扫描

12、函数声明 void xianshi(); void naozongxianshi(); void dingshi(); void saomiao(); /*显示 */ void xianshi() a=h%10; b=h/10; c=k%10; d=k/10; e=r%10; f=r/10; p0=taba; delay(1); p0=tabb+0 x01; delay(1); p0=tabc+0 x02; delay(1); p0=tabd+0 x03; delay(1); p0=tabe+0 x04; delay(1); p0=tabf+0 x05; delay(1); /*闹钟显示 */

13、 void naozongxianshi() a1=h1%10; b1=h1/10; c1=k1%10; d1=k1/10; e1=r1%10; f1=r1/10; p0=taba1; delay(1); p0=tabb1+0 x01; delay(1); p0=tabc1+0 x02; delay(1); p0=tabd1+0 x03; delay(1); p0=tabe1+0 x04; delay(1); p0=tabf1+0 x05; delay(1); /*定时器 t0*/ void dingshi() ea=1; et0=1; tmod=0 x01; th0=(65536-50000

14、)/256; tl0=(65536-50000)%256; tr0=1; void timer() interrupt 1 th0=(65536-50000)/256; tl0=(65536-50000)%256; m+; if(m=20) m=0; h+; if(h=60) h=0; k+; if(k=60) k=0; r+; if(r=24) r=0; /*键盘扫描函数*/ void saomiao() unsigned char hang=0,lie=0,key=0; p1=0 x0f; /赋初值 if(p1!=0 x0f) /判断是 否有键按下 hang=p1; /读行号 p1=0 x

15、f0; /行列反 转 lie=p1; /读列号 key=hang|lie; /读键值 switch(key)/根据键值不同 调用 不同的处理函数 case 0 xee:n=1;break; case 0 xde:n=2;break; case 0 xbe:n=3;break; case 0 x7e:n=4;break; case 0 xed:n=5;break; case 0 xdd:n=6;break; case 0 xbd:n=7;break; case 0 x7d:n=8;break; case 0 xeb:n=9;break; case 0 xdb:n=10;break; case 0

16、 xbb:n=11;break; case 0 x7b:n=12;break; case 0 xe7:n=13;break; case 0 xd7:n=14;break; case 0 xb7:n=15;break; case 0 x77:n=16;break; /*延时函数*/ void delay(uint o ) for(i=0;i0;j-); /*功能选择键 */ void gongnengjian() if(n=5) if(n!=5); n=0; u+; if(u=3) u=1; delay(30); /*时间调试+闹钟调试 */ void shijiantiaoshi() if(u

17、=1) if(n=1) if(n!=1); n=0; k+; delay(30); if(k=60) r=r+1; k=0; if(r=24) r=0; if(n=2) if(n!=2); n=0; k-; delay(30); if(k=0) k=59; if(n=3) if(n!=3); n=0; r+; delay(30); if(r=24) r=0; if(n=4) if(n!=4); n=0; r-; delay(30); if(r=-1) r=23; xianshi(); /*闹钟 */ if(u=2) if(n=1) if(n!=1); n=0; k1+; delay(30);

18、if(k1=60) k1=0; r1=r1+1; if(r1=24) r1=0; if(n=2) if(n!=2); n=0; k1-; delay(30); if(k1=0) k1=59; if(n=3) if(n!=3); n=0; r1+; delay(30); if(r1=24) r1=0; if(n=4) if(n!=4); n=0; r1-; delay(30); if(r1=-1) r1=23; naozongxianshi(); /*闹钟 */ void naozhong() if(k=k1)v50;v+) p3=0; p3=1; /*主函数*/ void main() dingshi(); while(1) saomiao(); gongnengjian(); shijiantiaoshi(); naozhong(); 六、实训体会六、实训体会 十天的单片机实训结束了,这次让我学到了很多东西, 为期 10 天的单片机实训虽然不是 很长,但是让我感觉到了原来编程不是很简单,先开始的显示时钟不是很难,下面的闹钟设置 及调试部分就花费了相当长的时间,本来还以为编程会很简单

温馨提示

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

评论

0/150

提交评论