#00~59分计数器和报警器实验报告_第1页
#00~59分计数器和报警器实验报告_第2页
#00~59分计数器和报警器实验报告_第3页
#00~59分计数器和报警器实验报告_第4页
#00~59分计数器和报警器实验报告_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

1、高级语言程序设计 I课程设计课题: 0059 分计数器 及 报警器姓名:指导老师:一、题目任务0059 分计数器及报警器流水灯二、方案设计我们小组这次的实验题目是 0059分计数器,首先我们需要用 C语言进行编 程,在 AT89S51 单片机的 P0 和 P2 端口分别接有两个共阴数码管, P0 口驱 动显示秒的时间的十位, 而 P2 口驱动显示秒的时间的个位。 在设计过程中我们 用一个存储单元作为秒计数单元, 当一秒钟到来时, 就让秒计数单元加 1,当秒 计数达到 60 时,就自动返回到 0,重新秒计数。对于秒计数单元中的数据要把它十位数和个位数分开,方法仍采用对 10 整除和对 10 求余

2、。三、硬件设计1. 原理图计时器电路图2. 说明此次,我们在设计中选用的是单片机 AT89C51、显示屏 7SEG-MPX1-CC、 30pF的电容器、 220的电阻、 10k 的电阻、电容。首先,我们将每块 LED 显示屏上面的 8 根二极管和单片机上面的不同接口 对应连接, 连接时可以用到直接连接的方法, 也可以用放置网络标号的方法。 直 接连接的方法,速度快,但是一旦选错元器件,删除元器件后,连接线也会同时 删除,会给画图带来很大麻烦,而且线路多,不容易看清连接线。放置网络符号 的方法,速度慢, 但是电路图整体看起来很干净, 而且可以让单片机的一个连接 口同时连接上很多元器件,很方便。单

3、片机一共有四个连接串口,分别为 P1、P2、P3、P4,每个串口还分 8 个分支。除 0 接口以外,其它 3 个串口都可以直接连接元器件,但是因为 0 串口, 所以需要有一个三极管、上拉电阻、外接 5伏电压来为 LED 屏幕提供电极,防 止共阳极或共阴极无法让显示屏正确显示。3.调试过程电路图连接完毕并进行调试调试完毕后四、软件设计一)流程图编程框图(二)程序设计C 语言#include <AT89X51.H> sbit L1=P10;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

4、; /建立字符串并且赋值unsigned char Second,min=0; /建立无符号字符 Second和 min void delay1s(void) /建立子函数,使延迟 1sunsigned char i,j,k; /建立字符 char、i 、j、k for(k=100;k>0;k-) /用 for 语句形成延时效果 for(i=20;i>0;i-)for(j=248;j>0;j-);void main(void) /建立主函数Second=0; / 使 second等于 0P0=tableSecond/10; /使 P0 显示秒数的十位数字 P2=tableSe

5、cond%10; /让 P2 端显示秒数的个位数字 while(1)delay1s(); /进入子函数,延迟 1s,形成视觉暂留,然后再使 second加 1 Second+;if(Second=60) /进入 if 条件句,当 second等于 60 时,清 0Second=0;P0=tableSecond/10; /让 P0 端显示秒数的十位数字 P2=tableSecond%10; /让 P2 端显示秒数的个位数字 P1=tablemin/10; /让 P1 端显示分钟数的十位数字P3=tablemin%10; /让 P3 端显示分数的个位数字if(P0=3&&P2=0)

6、L1=1汇编源程序Second EQU 30HORG 0000HSTART: MOV Second, #00HNEXT: MOV A, SecondMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,ALCALL DELY1SINC SecondMOV A,SecondCJNE A,#60,NEXTLJMP STARTDELY1S: MOV R5,#100D2: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: D

7、B 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END(三)软件清单73EG-MPX1-CC74F283AT89C51CRYSTALECU-E1H300JCQHITEMP10U50VMETALFILM10KMETALFILM220RMETALFILM270RPOLYPRO22PRX8(四)延时子程序1、10ms延时子程序/延时子程序 ,12MHz 晶振,一个机器周期 1sDELAY:MOVR6, #20/ 2 个机器周期,2sDLY_LP:MOVR7,#248/ 2 个机器周期,2sDJNZR7, $/ 2 个机器周期,2*248sDJNZR6, DLY_L

8、P/ 2 个机器周期,2*20sRET/总延时时间 2+(2+2*248 )*20+2*20=2+498*20+2*20=10.002ms 依此类推 对应的 C 语言程序为 void delay02s(void) /延时 0.2 秒子程序unsigned char i,j,k; for(i=20;i>0;i-) for(j=20;j>0;j-) for(k=248;k>0;k-);五、创新通过这次的课题设计, 我们萌生了一个灵感: 报警器。 我们的初步想法是这 样的,在原有设计的基础上,增加一个 LED 灯,在规定时间时明亮表示警告。有 了这个想法之后,我们编写了一个新的程序

9、(如下)。#include <AT89X51.H>sbit L1=P10;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /建立字符串并且赋值unsigned char Second; /建立无符号字符 Second 和 min void delay1s(void) /建立子函数,使延迟 1s unsigned char i,j,k; /建立字符 char、i 、j、k for(k=100;k>0;k-) /用 for 语句形成延时效果 for(i=20;i>0;i-

10、) for(j=248;j>0;j-);void main(void) /建立主函数Second=0; / 使 second等于 0P0=tableSecond/10; /使 P0 显示秒数的十位数字P2=tableSecond%10; /让 P2 端显示秒数的个位数字 while(1)delay1s(); /进入子函数,延迟 1s,形成视觉暂留,然后再使 second加 1 Second+;if(Second>=10)P1=0x00;P0=tableSecond/10; /让 P0 端显示秒数的十位数字P2=tableSecond%10; /让 P2 端显示秒数的个位数字/让 P

11、1 端显示分钟数的十位数字/让 P3 端显示分数的个位数字六、流水灯F 5 I IHS ,ofc=onu 9e Me XMQ Q-EMSI电 *再££ s WeSe SA-OKE336®Si.: +>q 声 QbQ xfi,*Hi -* H S EE>XX &&bjIQRrS8XM*AS p-3CRVSELEDIEDeBY EGGf IEDeFG §*U4 L£D$Z IIDAED EYTUDW Ep xQ XftASXRKQ-8-5 3 JnBT SSo30>8 POHAD- Po 22P03AP04MW P

12、o 6/AM >8PO 7支SQi P2*e& P22M0 P23± P24i2 P26i3 P26id P2y5P3 47D3s- P36/圍3iI3P3egEfw0*EmPTOJ”“P¾"F"- U Teras4 -g Q-WF-K 2rcF 4r*r Fg、马 i Hrtt3*一3 s* YYySnlHQned 後 t"、»«漏粉»«一8 void a<”t»-<o*w出出出39岂筈n-gBd OharM5-S8ocP1OMFsbw 21Mxl÷M<

13、;R41*m½皿樹同It - flaa YMS;- - ,JIH4J3lrlKoell"oooorF"prOJt? 、M-am >MSO-”0Xe“ 、*»SMM、hfa-曲 tDM(3EwllHft 岀屆MKffl IIIliml! 气 SS 胃»«沖4響>&»SUSPS f WaX SWsS 4>QM<MB占MMI 53ay6*3 ,9999S ±void y-0n-gnad»£43 WtH-2er” c七、总结在大一上学期接近尾声的时候,我们的 C 语言课程

14、展开了单片机实验课程。 说实话,接触单片机对我们来说, 确实有一定的困难, 因为我们所学的知识还是 皮毛。但是,我知道,老师开这个课程是为了让我们提早接触专业知识,锻炼我 们的实践能力。开始,通过老师的讲解,我们初步实践了 ISIS 7 Professional软件的画图步 骤,通过不断地画图实践,我们逐渐熟悉了软件,从而慢慢掌握了软件的操作, 这对于我们来说是一个对陌生软件操作的锻炼。 后来,到了真正实践的环节, 老 师为我们出了五个设计题, 我们选择了第一个。 其实,开始我们感觉还是有一定 的困难,有很多不懂的东西。 但是通过我们小组两个人的合作和探讨, 加上询问 其他同学的看法,我们还是逐渐克服了一个又一个的难题。 通过我们的不懈努力, 我们终于画出了设计图,并且演示成功,成功的那一刻,我们十分欣喜。通过这次的单片机设计, 我们多方面都有所提高。 第一, 我们对单片机有了 初步的认识, 为今后专业的学习奠定了坚实的基础。 第二,激发了我们对程序设 计的潜力, 培养了我们对专业学习以及程序设计的兴趣, 提高了我们思考问题和 创新的

温馨提示

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

评论

0/150

提交评论