河北联合大学轻工学院
信息科学技术部
课程设计说明书
设计题目 数字时钟设计
班 级 11电科一班
姓 名 王晓云
学 号 201124420115
指导教师 邢玉秀
2014年 11 月 7日
时间
2014.10.27-2014.11.7
地点
11207实验室
课程设计内容
一 绪论
数字时钟是采用数字
电路
模拟电路李宁答案12数字电路仿真实验电路与电子学第1章单片机复位电路图组合逻辑电路课后答案
实现,对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。因此,研究数字钟及扩大其应用,有着非常现实的意义。本设计要求使用单片机构建时钟系统,并额外拓展例如日期等功能。本设计要求使用单片机构建时钟系统,并额外扩展例如日期等功能。
二内容
1.1 以单片机为核心设计数字钟的电路,绘制原理图
1.2编写调试单片机程序,实现流水灯、数字钟的时间设置及运行3种功能
1.3 利用protues仿真软件模拟仿真
三整体
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计
1.数字钟电路设计
设计数字钟的功能描述如下: 以单片机最小系统为基础,包括电源、晶振电路及复位电路,以P1口连接发光二极管和拨码开关,利用发光二极管可实现流水灯功能,P0口连接4个共阴极数码管的段选引脚,P2口连接数码管的位选引脚和2个按键,4个数码管用以显示数字钟的分钟和秒值,通过按键可进行时间设置。流水灯、数字钟的时间设置及运行3种功能通过拨码开关进行选择。最后利用Protues进行仿真
基于上述功能设计电路原理图如下:
AT89C2051单片机,带有2KB Flash可编程、可擦除只读存储器(E2PROM)的低压、高性能8位CMOS微型计算机。拥有15条可编程I/O引脚,2个16位定时器/计数器,6个中断源,可编程串行UART通道,并能直接驱动LED输出。
2.按键电路设计
根据功能需要,本时钟需要设置以下功能键:功能选择键,加1操作键,减1操作键。
按照键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口线,每根I/O口线上的按键不会影响其他I/O口上按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口,在按键数量较多时,I/O口线浪费较大,且电路结构复杂。矩阵式键盘适合按键较多时使用。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
3.中断设计
3.1中断结构图
3.2中断寄存器
单片机有10个寄存器主要与中断程序的书写控制有关
1.中断允许控制寄存器IE
2.定时器控制寄存器TCON
3.串口控制寄存器SCON
4.中断优先控制寄存器IP
5.定时器工作方式控制寄存器TMOD
6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)
4.定时器/计数器
4.1计数是指对外部事件进行计数,外部事件的发生以输入脉冲的形式表示,因此计数功能的实质就是对外来的脉冲进行计数,在单片机中对应引脚T0和T1,两个脉冲输入端。外部输入的脉冲在负跳变时有效(即外部脉冲由1变化到0),计数器加1.
4.2 定时器是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机的内部,因此定时器的实质是对内部脉冲的计数,在单片机中,每个机器周期产生一次计数脉冲,计数器加1.
5.数字钟的软件设计
系统设计中用到 89 C51单片机的部分功能:包括内部定时器,键盘扩展,程序中断, 串口通信等。用一个四联体的共阴极八段显示器,可通过一个输入/输出口作为显示器数据发送端;另一个输入/输出口的四位作为显示器各位的片选信号,另四位作为键盘扩展口使用。采用一个频率为32.768k Hz 的晶振构成时钟电路。结构图如图所示:
设计思想的程序
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图:
C语言程序:
#include
//51单片机用的头文件
#include
#define wei P1
#define dua P0
#define uint8 unsigned char
#define uint16 unsigned int
#define key P2
#define led P3
sbit light = P1^0;//拨码开关
sbit set = P1^1;
sbit run = P1^2;
sbit text=P3^7;
uint8 codenum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9数码管显示
uint8 buf[4]={0xff,0xff,0xff,0xff};
void delayms(uint16 ms);
void disbuf(void);
void t0int(void);
int button(void);
uint8 light_mode(void);
uint8 set_mode(void);
int share(uint8 n);
void run_mode(void);
uint8 temp_num;
uint8 temp_led=0xfe;
uint16 num;
uint8 pos=103;
void main(void)
{
uint8 min,sec;
t0int();
while(1)
{
if(temp_num==50)
{
num++;
temp_num=0;
if(36000;i--)
for(j=110;j>0;j--);
}
void t0int(void) //时间运行
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
TR0=1;
}
void t0() interrupt 1
{
TH0=0x4c;
TL0=0x00;
temp_num++;
}
int button(void) //按键设计
{
uint8 temp,crol=0,row=0;
temp=0xf0;
key=temp;
if(key!=0xf0)
{
switch(key)
{
case 0xe0:crol=1;break;
case 0xd0:crol=2;break;
case 0xb0:crol=3;break;
case 0x70:crol=4;break;
}
}
temp=0x0f;
key=temp;
if(key!=0x0f)
{
switch(key)
{
case 0x0e:row=1;break;
case 0x0d:row=2;break;
case 0x0b:row=3;break;
case 0x07:row=4;break;
}
}
return (row-1)*4+crol;
}
uint8 light_mode(void)// 流水灯程序
{
temp_led=_cror_(temp_led,1);
led=temp_led;
delayms(500);
if(1==light)
{
delayms(10);
if(1==light)
{
led=0xff;
return 0;
}
}
if(0==set || 0==run)
{
return 0;
}
return 1;
}
int share(uint8 n)
{
uint8 i,j;
uint8 ret_but;
switch(n)
{
case 0:
{
for(i=20;i>0;i--)
{
dua=0x00;
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
ret_but=button();
for(i=10;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
break;
}
case 1:
{
for(i=20;i>0;i--)
{
wei=0xef;
dua=buf[0];
delayms(2);
wei=0xdf;
dua=0x00;
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
ret_but=button();
for(i=10;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
break;
}//case1
case 2:
{
for(i=20;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=0x00;
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
ret_but=button();
for(i=10;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}
break;
}
case 3:
{
for(i=20;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=0x00;
delayms(2);
}
ret_but=button();
for(i=10;i>0;i--)
{
dua=buf[0];
wei=0xef;
delayms(2);
wei=0xdf;
dua=buf[1];
delayms(2);
wei=0xbf;
dua=buf[2];
delayms(2);
wei=0x7f;
dua=buf[3];
delayms(2);
}//case3
break;
}
}//switch
return ret_but;
}
uint8 set_mode(void)
{
uint8 min,sec;
TR0=0;
while(5!=button())
{
if(1==share(pos%4))
{
pos+=1;
}
if(2==share(pos%4))
{
pos--;
}
if(3==button())
{
switch(pos%4)
{
case 3:
{
num+=1;
break;
}
case 2:
{
num+=10;
break;
}
case 1:
{
num+=60;
break;
}
case 0:
{
num+=600;
break;
}
}
}
if(4==button())
{
switch(pos%4)
{
case 3:
{
num-=1;
break;
}
case 2:
{
num-=10;
break;
}
case 1:
{
num-=60;
break;
}
case 0:
{
num-=600;
break;
}
default:break;
}
}
min=num/60;
sec=num%60;
buf[0]=codenum[min/10];
buf[1]=codenum[min%10];
buf[2]=codenum[sec/10];
buf[3]=codenum[sec%10];
if(0==run||1==set)
{
TR0=1;
break;
}
if(num>=3600 || num<0)
{
num=0;
}
}
return 0;
}
void run_mode(void)
{
uint8 min,sec;
TR0=1;
while(0==run)
{
if(temp_num==50)
{
num++;
temp_num=0;
if(3600
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
节时、省力,经济、方便。
仿真结果:
.
实习收获
我们学习了单片机原理及应用,对单片机有了一些初步了解,但那都是一些
理论的东西。通过这次数字钟的实验设计,我们才把学到的知识与实践相结合。从而对我们学的知识有了更进一步的理解,使我们进一步加深了对所学知识的记忆。
在此次的数字钟设计过程中,我更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。学习使用了protues仿真软件,也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题,同时我们也掌握了做设计的基本流程,为我们以后进行更复杂的设计奠定了坚实的基础。设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。至于设计的成绩无须看的太过于重要,而是设计的过程,设计的思想和设计电路中的每一个环节,电路中各个部分的功能是如何实现的。各个芯片能够完成什么样的功能,使用芯片时应该注意那些要点。同一个电路可以用那些芯片实现,各个芯片实现同一个功能的区别。另外,我们设计要从市场需求出发,既要有强大的功能,又要在价格方面比同等档次的便宜。
学生:
(手写签名)
2014 年 11 月 7 日
成绩评定
优秀
良好
中等
及格
不及格
指导教师: