




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 目录第1章 课程设计任务书.2第2章 设计目的.2第3章 设计原理与分析.2第4章 所选元件清单.6第5章 课程设计心得.7第6章 参考文献.7附录.8 第一章、课程设计任务书本设计以MCS-51系列单片机为核心,采用常用电子器件设计。要求能显示出秒、分、时、天,可调整各个时间,采用LED八段数码管显示。 第二章、课程设计目的1、掌握51系列单片机编程原理(1)掌握单片机C51语言程序编程的思想及方法,加深对单片机的更深层次的理解,熟悉单片机的内部硬件资源。(2)定时器中断服务子程序和外中断服务子程序各个程序段所实现的功能和编写。(3)通过此次课程设计,学会怎么利用所学单片机知识独立设计系统
2、,达到学于致用的目的,加深了解C51设计编程思想及开发系统的一般过程,并不断创新。2、掌握矩阵式键盘电路的接法及工作原理(1)掌握矩阵式键盘的接法及工作原理。(2)掌握键盘消抖的工作原理。3、掌握矩阵式键盘电路的接法及工作原理(1)掌握矩阵式键盘键盘扫描程序的编写。(2)掌握键盘消抖程序的编写。4、掌握共阳八段码显示器连接,做成可调节的电子表,简单的了解单片机对显示器的控制过程;能在此基础上做成可调节的万年历。 第三章、设计原理与分析1、实验硬件电路的原理与设计A.键盘扫描识别1、识别键的闭合,通常采用行扫描法和行反转法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所
3、读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。2、程序设计时,要学会灵活地对STC89C52的各端口进行方式
4、设置。可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。3、利用实验箱上的STC89C52可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0F),用发光二极管将该代码显示出来。B.显示器的显示原理:数码管需要驱动电路来驱动数码管的各个段码才能显示我们需要的数字。根据数码管的驱动方式不同,可以分为静态驱动和动态驱动两种方式。静态显示驱动:静态驱动也称直流驱动。是指每个数码管的第一个段码都是由同一个单片机的I/O端口进行驱动,或者使用如BCD码二十进制译码器译码进行驱动。动态显示驱动:动态驱动是数码
5、管是单片机中应用最为广泛的一种驱动方式。动态驱动是将所有数码管的八个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,各选通由各自独立的I/O线控制,当单片机输出这形码时,所有数码管都接收到相同的字形码,哪个数码管会显示字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示的过程中,每位数码管的点亮时间为12ms。动态显示的效果和静态显示是一样的,但能节省大量的I/
6、O端口,而且功耗更低。由于静态显示需要数据锁存器等硬件,接口复杂一些,考虑时钟显示只有八位, 且系统没有其它复杂的处理任务,所以决定采用动态扫描实现LED的显示。 单片机采用易购的STC89C52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩展功能。时钟计时器电路系统的总体设计框图如图1。STC89C52P1 P0单片机控制器 P2八段数码管矩阵键盘列驱动图12、实验步骤:时钟计时器的硬件电路如图2所示。该电路采用51单片机最小系统,采用共阳八段数码管LED显示器,P0口输出段码数据,P2.0P2.5口作列扫描输出;P1口接矩阵键盘,实现时间的调整。系统的功能由键盘上1、2、3键完成
7、。 如图23、系统程序的设计(1)主程序本设计中计时采用定时器T0中断完成。主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。其主程序流程如图3。(2) 显示子程序时间显示子程序每次显示8个连续内存单元的十进制BCD码数据,首地址在调用显示程序时先指定。显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应数码管选中供电,就能显示该地址单元的数据值。(3) 定时器T0中断服务程序定时器T0用于时间计时。定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计20次(即50ms×20=1s)时,对秒计数单元进行加1
8、操作。在计数单元中,采用十进制BCD码计数,满10进位。T0中断计时程序流程图如图4所示。T0中断保护现场定时初值校正加1s处理恢复现场,中断返回1s到?NY开始初始化键盘初始化显示取键值进入功能程序调用显示子程序图3图2(4) 调时功能程序调时功能程序的设计方法是:按下1键,可以选择要修改的位,按下按2键和3键键,对选中的位进行加减操作,修改完成之后,再按下XW键对其它位进行修改。具体如下:第一次按下1键时,可以修改秒。第二次按下1键时,可以修改分。第三次按下1键时,可以修改时。第四次按下1键时,退出子程序。第四章、所选元件清单1、 元件清单原件数量八段共阳数码管2S8550三极管81K电阻
9、8150电阻851最小系统1线若干2、程序实际接线数码管的不同笔段的组合构成了不同字符的字形。为了获得不同的字形,各笔段所加的电平也不同,因此各个字形所形成的编码是不一样的。例如,对于共阳极数码管,如果要显示字符2,则笔段a、b、g、e、d发光,对应的引脚为低电平;其余各笔段不发光,对应的引脚为该电平。所以字符2的字形编码gfedcba=10100100B=A4H。阴极数码管的字形编码与用阳极数码管的字形编码是逻辑“非”的关系。根据上述编码方法可以得出数码管显示的字符与对应的字形编码的关系,如下表所示此次实验用的共阳数码管,所以按照阳极数码管的字形编码进行设计。 附录:程序#include&l
10、t;reg52.h> #define uint unsigned int#define uchar unsigned char uchar miao,fen,shi,m,f,s,num,num1,num2; uchar code table1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void delay(uint z) uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-); void xiansi( uchar aa,uchar bb,uchar cc) P2=0xdb; P0=0xb
11、f; delay(1); P0=0xff; / num2+; if(num1=1&num2=0|num1=1&num2=1) P2=0xff;P0=table1aa%10; delay(1); P0=0xff;P2=0xff; P0=table1aa/10; delay(1); P0=0xff; else P2=0x7f; P0=table1aa%10; delay(1);P0=0xff; P2=0xbf;P0=table1aa/10; delay(1); P0=0xff; if(num1=2&num2=0|num1=2&num2=1) P2=0xff; P0=
12、table1bb/10; delay(1); P0=0xff; P2=0xff; P0=table1bb%10;delay(1); P0=0xff; else P2=0xf7; P0=table1bb/10; delay(1); P0=0xff; P2=0xef; P0=table1bb%10; delay(1); P0=0xff; if(num1=3&num2=0|num1=3&num2=1) P2=0xff; P0=table1cc/10; delay(1); P0=0xff; P2=0xff; P0=table1cc%10; delay(1); P0=0xff; else
13、 P2=0xfe;P0=table1cc/10; delay(1); P0=0xff;P2=0xfd; P0=table1cc%10; delay(1); P0=0xff; /if(num2=256)num2=1; void jishi( ) if(num=20) num=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; if(miao=0&fen=0); xiansi(miao,fen,shi); void init(void) TMOD=0x01; TH0=0x3c; TL0=
14、0xb0; TH1=0x3c;TL1=0xb0; EA=1; ET0=1; TR0=1; ET1=1; TR1=1; void key() P1=0xfe; if(P1=0xee) delay(10); if(P1=0xee) while(P1=0xee)xiansi(miao,fen,shi); num1+; TR0=0; if(num1=4)num1=0;TR0=1; xiansi(miao,fen,shi); if(num1!=0) if(P1=0xde) /时间加 delay(10); if(P1=0xde) while(P1=0xde)xiansi(miao,fen,shi); switch(num1) case 1 : miao+; if(miao=60)miao=0; break; case 2 : fen+; if(fen=60)fen=0; break; case 3 : shi+; if(shi=24)shi=0; break; if(P1=0xbe);/时间减 delay(10); if(P1=0xbe) while(P1=0xbe)xiansi(miao,fen,shi); switch(num1) case 1 : miao-; if(miao=-1)miao=59; break; case 2 : fen-; if(fen=-1)fen=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国际数学奥林匹克(IMO)模拟试卷:几何问题中的代数数论综合解法
- 2025年护士执业资格考试专业实务外科护理卷护理安全与急救试题集
- 2025年学生乘车安全条例:家校合作共育安全学子
- 包皮术后病人的护理
- 2025年Python递归函数的考试题及答案
- 2025年专升本地质工程真题汇编与押题预测卷
- 2025年会计职称考试《初级会计实务》财务管理基础历年真题解析试卷
- 2025年学校基建项目招标程序与施工进度监管新规定解读
- 财务成本管理考试准备全攻略及试题答案
- 2025年欧洲女子数学奥林匹克模拟试卷:几何证明与组合分析竞赛准备策略
- 2024 大模型典型示范应用案例集-1
- 医院血透室6S管理汇报
- 《小红帽》绘本故事-课件
- 金融合规培训
- 感性工学完整版本
- DB21T 3411-2024 城市园林绿化智慧养护技术规程
- 【MOOC】当代社会中的科学与技术-南京大学 中国大学慕课MOOC答案
- 【MOOC】信息检索与利用-江南大学 中国大学慕课MOOC答案
- 【MOOC】消费者行为学-湖南大学 中国大学慕课MOOC答案
- 南宁红林大酒店扩建工程筹资方案设计
- 安全管理-终结性考试-国开(SC)-参考资料
评论
0/150
提交评论