单片机数字时钟课程设计完整版.docx
《单片机数字时钟课程设计完整版.docx》由会员分享,可在线阅读,更多相关《单片机数字时钟课程设计完整版.docx(17页珍藏版)》请在冰豆网上搜索。
单片机数字时钟课程设计完整版
课程设计任务书
学生姓名:
江勇峰专业班级:
自动化0607
指导教师:
刘教瑜工作单位:
武汉理工大学自动化学院
题目:
简易数字时钟
初始条件:
用C语言编写程序,实现简易数字时钟的功能。
要求完成的主要任务:
(1)简易数字时钟能实现时、分、秒的数字显示;
(2)可以对时钟、分钟进行调节并且校正。
近几年,单片机在各个领域得到广泛的应用。
从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。
在它问世之前,自动控制设备不能被广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。
在第一台微处理器成功研制不久,第一个单片机就问世了。
因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。
今天,单片机成为了解决低复杂度,中等复杂度控制问题的传统选择。
文章介绍了单片机在定时方面的基本功能。
生活中,我们发现:
时间的准确显得格外的重要。
我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。
文章首先介绍了单片机的基本知识,然后同时给出了框图,流程图等。
论文涵盖了从需求分析,系统设计,编程,原理图等产品开发的基本过程。
关键词:
单片机,软件仿真,原理图
Abstract
SingleChipMicrocomputerhasachievedaimmemsepopularityinallfiledsinrecentyears.Fromindustrytopeople’scommonlives,mostoftechnicalapplicationsarecontrolledbySCM.Beforeitappeared,theautomaticdevicescould’tbewidelyusedbecauseoftheirhugesize,largequantityofpowercostandhighprice.ThefirstSCMappearedassoonasthefirstMCU(MicroControllerUnit)wassuccessfullydeveloped.Duetoitssmallsize,lowpowercostandhighperformance,ithasbeenwelcomedbypeople.
Nowadays,SCMhasbeenselectedasatraditionalsolutionforlow or mediumcomplexityproblemsaboutdevicescontrolling.ThisessayshowsabasicapplicationofSCMintimingforpeople’slife.Timeaccuracyisavitalfactorthateffectstheresults.
TheapproachwechooseisthecommonwayforSCMdevelopingfromwhichwecangetanacknowledgeabouttheSCMdevelopflowingprocess.Thepaperfirstintroducesknowledgeon51serialSCM,thenAtitalsoshowsblockdiagrams,flowingprocessdiagramsandsoon.Itpresentstheprocessincludingrequirementanalysis,systemdesign,SCMprogramming,programemulation,whichformsacompleteprocedureforproductmanufacture。
Keywords:
SCM,softwareemulation,schemetic
目录
1单片机的基本知识5
1.1数码管动态显示原理5
1.2键盘扫描原理6
2程序说明和流程图6
2.1程序说明6
2.2流程图8
3程序设计9
4实验仿真和验证13
5心得体会14
6参考文献15
简易数字时钟
1单片机的基本知识
1.1数码管动态显示原理
图1数码管显示原理图
如图1数码管显示原理图所示,使用LED显示器时,要注意是共阴还是共阳,要注意区分这两种不同的接法。
为了显示数字或字符,必须对数字或字符进行编码。
七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。
我们用的是共阴LED显示器,根据电路连接图显示16进制数的编码已列在下表。
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
012345
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
6789AB
0x39,0x5e,0x79,0x71,0x00
CDEF无显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效,由另一位控制显示码值。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
我们这里正是利用的数码管动态显示来完成显示功能。
1.2键盘扫描原理
键盘分编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生按键编码号或键值的称为编码键盘,如计算机键盘。
而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的,我们这里用的就是非编码键盘。
如图2键盘图所示,当按钮按下时;端口会变成低电平,我们设计一段扫描程序来判断那个端口是低电平来判断是否有按键按下。
图2键盘图
2程序说明和流程图
2.1程序说明
此实时时钟的设计与实现,主要采用了6只LED数码管,加Atmega128单片机,包括显示模块,运算模块和校时模块三大功能模块。
显示模块:
用Atmega128控制,用数码管的显示功能来设计。
显示部分硬件用六只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。
通过在这8只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的数字。
该模块主要是将运算模块和校时模块运算出来的十进制表示的时位、分位和秒位数值,并通过6只数码管显示出来。
该模块实现的硬件是7seg-mpx6-ca单元,采用软件译码,即在程序中设置一个段选码表。
CPU直接往LED输出八段代码,省去了硬件译码器。
A0~A3作为8段数据输出口到达各LED。
只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使6只LED依次出现数字显示。
运算模块:
该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。
该模块可以细分为秒定时模块和运算模块。
延时程序实现延时功能,由于CPU运算模块中的指令消耗一定的时间,所消耗的时间可以用来延时。
当演示完成后才能让秒单元内的数值加1。
在主程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。
当时加到24时,直接清零。
然后转到调用处。
校时模块:
该模块主要功能是修改时、分、秒内存单元的数值。
每按一次键,对应的显示值便加1。
分、秒加到59后变为00;小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;但小时不发生改变)。
2.2流程图
1.主函数
开始
初始化(定时器、显示区、输入输出、计数单元等)
初始化时,分,秒并在秒上自加一位
秒计数到60
Y
N
分钟自加一位,秒钟归零
分钟到60
Y
N
时钟自加一位,分钟归零
键盘输入
Y
N
修改分钟,小时
调用显示子程序
2.显示子程序
3程序设计
#include
#include
//#pragmainterrupt_handlert1_int:
13
unsignedcharled_table[26]=//数码管段码表
{0xC0,/*0*/
0xF9,/*1*/
0xA4,/*2*/
0xB0,/*3*/
0x99,/*4*/
0x92,/*5*/
0x82,/*6*/
0xF8,/*7*/
0x80,/*8*/
0x90,/*9*/};
unsignedintm;
unsignedcharm6,m5,m4,m3,m2,m1;
voiddisplay()
{DDRE=0XFF;
DDRB=0XFF;
PORTE=0X00;
PORTB=0Xff;
PORTE|=BIT(0);
PORTB=led_table[m6];
delay(3);
PORTB=0XFF;
PORTE=0X00;
PORTE|=BIT
(1);
PORTB=led_table[m5]-0X80;
delay
(2);
PORTB=0XFF;
PORTE=0X00;
PORTE|=BIT
(2);
PORTB=led_table[m4];
delay
(2);
PORTB=0XFF;
PORTE=0X00;
PORTE|=BIT(3);
PORTB=led_table[m3]-0X80;
delay
(2);
PORTB=0XFF;
PORTE=0X00;
PORTE|=BIT(4);
PORTB=led_table[m2];
delay
(2);
PORTE=0X00;
PORTB=0X00;
PORTE|=BIT(5);
PORTB=led_table[m1];
delay
(2);}
voiddelay(intm)
{inti,j;
for(i=0;ifor(j=0;j<500;j++);}
voidmain()
{unsignedcharq;
m=0;
DDRB=0XFF;
PORTB=0XFF;
DDRF=0X00;
PORTD=0X00;
DDRD=0XFF;
PORTD=0XFF;
while
(1)
{m6=m/;
m5=m%/10000;
m4=m%10000/1000;
m3=m%1000/100;
m2=m%100/10;
m1=m%10;
m++;
if(m2==5&&m1==9)
{m+=100;
m-=59;}
if(m3==9&&m4==5&&m1==9&&m2==5)
{m+=10000;
m-=5900;}
for(q=0;q<10;q++)
{display();
PINF==0X00;
if(PINF==0X01)
{m=m+100;
delay(50);}
if(PINF==0X02)
{m=m-100;
delay(50);}
if(PINF==0x04)
{m=m+10000;
delay(50);}
if(PINF==0X08)
{m=m-10000;
delay(50);}
}}}
4实验仿真和验证
我们跟据试验原理设计了仿真图,将程序在Iccv7中运行后,将生成的HEX档加载、运行,来看是否能实现我们要求的功能,并看是否有错误。
如图3实验仿真图所示,这与我们想要的结果是一致的。
可见我们的程序是正确的,并且能够实现我们想要的功能。
图3实验仿真图
5心得体会
通过本次实验,能初步理论联系实际、应用C语言、能简单设计出程序、并且能通自己的调试进行修改。
课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,计算机已经成为当今社会生活工作中空前活跃的领域,在生活中可以说得是无处不在。
回顾起此次单片机原理课程设计,至今我仍感慨颇多。
的确,从选题到定稿、从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说如何对程序的初始进行编程,如何利用流程方块图……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多思路、编程问题,最后在刘教瑜老师的辛勤指导和同学的帮助下,终于游刃而解。
6参考文献
[1]《微机原理与接口技术》主编:
周佩玲彭虎傅忠谦出版社:
电子工业出版社2007
[2]《微机原理与接口技术学习指导》主编:
周佩玲彭虎傅忠谦出版社:
电子工业出版社2007
[3]《计算机高级应用》主编:
章工荣出版社:
高等教育2004
[4]《计算机程序设计基础》主编:
李文成出版社:
科学出版社2007
[5]《C语言高级程序设计及其讲解》主编:
张锦程出版社:
机械工业出版社2000
本科生课程设计成绩评定表
姓名
江勇峰
性别
男
专业、班级
自动化专业自动化0607
课程设计题目:
简易数字时钟
课程设计答辩或质疑记录:
1.数字钟的原理实现过程?
答:
设计中用到89C51单片机的部分功能:
包括内部定时器、程序中断、串口通信等。
用一个六位的共阳极八段显示器,通过一个输入/输出口作为显示器数据发送端,显示时钟数字;另一个输入/输出口的六位作为显示器各位的片选信号,另一个输入/输出口作为键盘扩展口使用,进行按键设置。
2.如何进行时钟数字显示?
答:
时钟数字显示涉及到两个操作:
发数据和改片选信号。
先发片选,再发数据,单片机一个输入/输出口作为显示器数据发送端;另一个输入/输出口的六位作为显示器各位的片选信号。
3.怎样做到时钟的校时设置?
答:
通过编程,当设置端口接入低电平时,相应的显示器数据发送端的数据就自增1,再通过ucharcodetable1向数码显示管送入数据,按一次键,数据自增1,至满进制在向高位加1,可以达到校时效果。
成绩评定依据:
序号
评定项目
评分成绩
1
选题合理、目的明确(10分)
2
设计方案正确,具有可行性、创新性(20分)
3
设计结果可信(25分)
4
态度认真、学习刻苦、遵守纪律(15分)
5
设计报告的规范化、参考文献充分(不少于5篇)(10分)
6
答辩(20分)
总分
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日