第一篇:基于单片机的数字钟课程设计程序
#include
uchar num;
void delayms(uint z){ uint x,y;for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void write_com(uchar com){ lcdrs=0;P0=com;delayms(5);lcden=0;}
void write_data(uchar date){ lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;}
void init(){ lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}
void main()
//定义使能端、命令选择端
//延时函数
//写入命令函数
//写入数据 //初始化LCD
{
} init();write_com(0x80);for(num=0;num<11;num++){ write_data(table[num]);delayms(5);} write_com(0x80+0x40);for(num=0;num<13;num++){ write_data(table[num]);delayms(5);} while(1);
第二篇:基于单片机的数字钟课程设计程序
#include
#define uchar unsigned char #define uint unsigned int
uchar code table[]=“I LOVE YOU!”;uchar code table1[]=“2014:06:14”;sbit lcden=P3^5;
sbit lcdrs=P3^4;uchar num;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);}
void write_com(uchar com){
lcdrs=0;
P0=com;
delayms(5);
lcden=0;
}
void write_data(uchar date){
lcdrs=1;
P0=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void init()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void main()//定义使能端、命令选择端//延时函数//写入命令函数//写入数据 //初始化LCD
{}init();write_com(0x80);for(num=0;num<11;num++){write_data(table[num]);delayms(5);} write_com(0x80+0x40);for(num=0;num<13;num++){write_data(table[num]);delayms(5);} while(1);
第三篇:单片机数字钟的课程设计
设计任务书................I
第一章 绪论...............1
1.1课程设计的意义..........1
第二章 电路设计方案................2.1数字电子中4的基本原理..........2.2
第三章 电路的安装与调试............3.1电路的选用..............设计小节...........致谢.................参考文献............附录A............附录B.....第一章绪论
1.1课程设计的意义
在高新技术日新月异的今天,科学技术已经成为整个社会发展的源动力,电子领域的发展更是令人目不暇接,在其推动下,现代电子产品几乎渗透了社会的各个领域,遍迹了千家万户,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。使课程设计越来越受到人们的重视,通过课程设计。可以设计出更好更新的科技产品,这将给科技的发展带来很好的积极作用,也使科技的水平得到一定的提高。同时也可以提高同学们的逻辑思维能力和创新意识。
电子技术密切联系 实际,实用性很强,开展电子技术课程设计在电子电气类我认为非常重要,不近可以学好专业知识,还可以增强动手能力,有利于我们适应未来这个竞争激烈的社会,训练我们 综合运用知识能力资料素材的查阅及收集能力,电子元气件的采购,电子电路的组装和调试能力,特别是在电路;多样化的创新方面,从理性和感性上都得到了很大的提高,经过查阅资料,选择方案,设计电路,等过程。各方面都得到了训练。
现代社会,时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。尤其在医院,每次护士都会给病人作皮试,测试病人是否对药物过敏。注射后,一般等待5分钟,一旦超时,所作的皮试试验就会无效。手表当然是一个好的选择,但是,随着接受皮试的人数增加,到底是哪个人的皮试到时间却难以判断。所以,要制作一个定时系统。随时提醒这些容易忘记时间的人。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。
一.设计题目
数字电子钟
二、设计指标:
1.最大显示23时59分59秒。
2.以24小时制为一个周期
3.具有校时功能,可以对小时和分单独校时,对分校时的时候,停止分向小时进位。校时时钟源可以手动输入或借用电路中的时钟。
4.为了保证计时准确、稳定,由晶体振荡器提供标准时间的基准信号。
三、设计要求:
1.画出总体设计框图,以说明数字钟由哪些相对独立的功能模块组成,标出各个模块之间互相联系,时钟信号传输路径、方向和频率变化。并以文字对原理作辅助说明。
2.设计各个功能模块的电路图,加上原理说明。
3.选择合适的元器件,在面包上接线验证、调试各个功能模块的电路,在接线验证时设计、选择合适的输入信号和输出方式,在充分电路正确性同时,输入信号和输出方式要便于电路的测试和故障排除。
4.在验证各个功能模块基础上,对整个电路的元器件和布线,进行合理布局,进行整个数字钟电路的接线调试。
四、制作要求:
自行装配、接线和调试,并能检查和发现问题,根据原理、现象和测量的数据分析问题所在,加以解决。学生要解决的问题包括元器件和面包板故障引起的问题。
四、设计报告内容要求:
1.目的。
2.设计指标。
3.画出设计的原理框图,并要求说明该框图的工作过程及每个模块的功能。
4.元器件清单。
5.设计制作的进程,考虑时钟及控制信号的关系、测试、验证的顺序,写出自己的工作进程。
6.画出各功能模块的电路图,加上原理说明(如2、5进制到10进制转换,10进制到6进制转换的原理,个位到十位的进位信号选择和变换等)。
7.画出总布局接线图(集成块按实际布局位置画,关键的连接单独应画出,计数器到译码器的数据线、译码器到数码管的数据线可以简化画法,但集成块的引脚须按实际位置画,并注明名称。)
8.描述设计制作的数字钟的运行结果和操作。
第二章 电路的设计方案
2.1数字钟的基本组成及工作原理
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路.由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字钟.图1.1所示为数字钟的一般构成框图.⑴晶体振荡器电路 晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路.⑵分频器电路 分频器电路将32768Hz的高频方波信号经32768()次分频后得到1Hz的方波信号供秒计数器进行计数.分频器实际上也就是计数器.⑶时间计数器电路 时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器.⑷译码驱动电路 译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流.⑸数码管 数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管.2.2数字钟的工作原理
1)晶体振荡器电路
晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定.一般输出为方波的数字式晶体振荡器电路通常有两类,一类是用TTL门电路构成;另一类是通过CMOS非门构成的电路,如图1.2所示,从图上可以看出其结构非常简单.该电路广泛使用于各种需要频率稳定及准确的数字电路,如数字钟,电子计算机,数字通信电路等.CMOS非门U1与晶体,电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波.输出反馈电阻为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器.电容C1,C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能.由于晶体
具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确.2)分频器电路
通常,数字钟的晶体振荡器输出频率较高,为了得到1Hz的秒信号输入,需要对振荡器的输出信号进行分频.通常实现分频器的电路是计数器电路,一般采用多级2进制计数器来实现.例如,将32768Hz的振荡信号分频为1HZ的分频倍数为32768(),即实现该分频功能的计数器相当于15级2进制计数器.常用的2进制计数器有74HC393等.3)时间计数单元
时间计数单元有时计数,分计数和秒计数等几个部分.时计数单元以24进制计数器,其输出为两位8421BCD码形式;分计数和秒计数单元为60进制计数器,其输出也为8421BCD码.一般采用10进制计数器如74HC290,74HC390等来实现时间计数单元的计数功能.欲实现24进制和60进制计数还需进行计数模值转换.4)译码驱动及显示单元
计数器实现了对时间的累计以8421BCD码形式输出,为了将计数器输出的8421BCD码显示出来,需用显示译码电路将计数器的输出数码转换为数码显示器件所需要的输出逻辑和一定的电流,一般这种译码器通常称为7段译码显示驱动器.常用的7段译码显示驱动器有CD4511.5)校时电源电路
当重新接通电源或走时出现误差时都需要对时间进行校正.通常,校正时间的方法是:首先截断正常的计数通路,然后再进行人工出触发计数或将频率较高的方波信号加到需要校正的计数单元的输入端,校正好后,再转入正常计时状态即可.设计小节
时间过的真快,专眼间一周就过去了,这次课程设计也画上了一个圆满的句号。这次课程设计的主题是数字电子钟,在设计中需要用到振荡电路等通过 设计使我更进一步加深了对电的认识和理解。在设计中,首先是查找资料,我们主要是在图书馆和电脑上查找,先找出了一些芯片的关脚和功能,然后经过老师的检查,开始设计,但是由于时间的紧迫,这个设计没有进行仿真,比较遗憾,不过在设计的过程中还是是学到不少东西的,由于有些芯片我们在数字电子技术基础里没有学过的,我们在查找这些资料的过程中就学到很多东西,有些芯片本来我们不懂的,但是经过查资料使我对有些不是懂的芯片有了一定的了解。如果有时间,最好能够做出一个实物图就比较了解,但是时间实在太紧拉,虽然老师布置了很久,但是由于我们要考试复习就没有多少是时间去想,有点遗憾。
致谢
在本次电子技术课程设计过程中,得到了个老师和同学们的帮助,让我学到了很多东西,同时还感谢学校的图书馆给我们提供了很好的资料,让我们的设计更加能够轻松的完成,还有感谢各个网站提供的大量资料。
通过这次设计,在很高程度上弥补了我们的理论知识的不足,通过设计进一步巩固了我们的理论知识,让我们学的更扎实,对数电的认识更加形象。
总之,这次实习带给我很大的收获,再一次感谢学校给我们一个展现自己设计才能的机会,这对我们以后的工作和学习都有很好的作用。
第四篇:单片机课程设计_数字钟(C51版)
湖南工业大学
课程设计
资料袋
电气与信息工程学院学年第学期
课程名称单片机系统课程设计指导教师凌云职称教授学生姓名专业班级测控101学号题目数字钟(C51版)成绩起止日期 2012年12 月 10日~ 2012年 12 月 28 日
目录清单
湖南工业大学
课程设计任务书
2012 —2013 学年第1 学期
电气与信息工程学院测控技术与仪器专业101班 课程名称:单片机系统课程设计设计题目:数字钟(C51版)完成期限:自2012年12 月 17日至2012年12 月28日共2周单片机系统课程设计说明书 起止日期:
学
班
学
成数字钟(C51版)2012年 12 月 17 日 至2012 年 12 月 28 日 生姓名级号绩湖南工业大学电气与信息工程学院 2012年12 月10 日 3
第五篇:数字钟课程设计程序
#include
void chuanshu(void);
void shuchu(void);
void saomiao(void);
void delay(void);
unsigned int t;
unsigned char m;
unsigned char shi,fen,miao;
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char code wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned charxianshi[8]={0,0,0,0,0,0,0,0};
sbit DS=P2^2;
sbit ST_CP=P2^3;
sbit SH_CP=P2^4;
sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit key4=P3^5;
sbit niaoling=P1^0;
sbit dingshi=P1^1;
void delay(void)
{
char i,j;
for(i=0;i<50;i++)
for(j=0;j<100;j++);
}
void chuanshu(void)
{
unsigned char b,c,num;
if(b==0)
{
b++;
num=wei[m];//把位选放在第二个74hc595芯片上
for(c=0;c<8;c++)
{SH_CP=0;
DS=num&0x80;
num=num<<1;
SH_CP=1;//上升沿发生移位
}
}
if(b==1)
{
b--;
if(m==2||m==5)
{num=0xbf;}
else
{
num=duan[xianshi[m]];}
for(c=0;c<8;c++)
{SH_CP=0;
DS=num&0x80;
num=num<<1;
SH_CP=1;//数据在SH_CP的上升沿输入}
}
m++;
if(m==8)
{m=0;
}
}
void shuchu(void)
{ ST_CP=0;
ST_CP=1;//上升沿将数据送到输出锁存器
}
void saomiao(void)
{
if(key1==0)
{
delay();
if(key1==0)
{
miao=0;
while(key1==0);
}
}
xianshi[0]=miao%10;xianshi[1]=miao/10;
if(key2==0){
delay();
if(key2==0){
fen++;
while(key2==0);if(fen==60){
fen=0;}
}
}
xianshi[3]=fen%10;xianshi[4]=fen/10;
if(key3==0){
delay();
if(key3==0){
shi++;
while(key3==0);if(shi==24){
shi=0;}
}
}
xianshi[6]=shi%10;xianshi[7]=shi/10;
if(key4==0){
delay();
if(key4==0){
miao=0;fen=0;shi=0;}
}
}
void main(void)
{
TMOD=0X01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;
ET0=1;
TR0=1;
while(1)
{
saomiao();
chuanshu();shuchu();
}
}
void time0()interrupt 1{
t++;
if(t==20)
{t=0;
miao++;
if(miao==60){miao=0;fen++;
if(fen==60){fen=0;shi++;
if(shi==24){shi=0;}}}
}
}