长沙理工大学《单片机课程设计》电子钟单片机实习报告

长沙理工大学《单片机课程设计》电子钟单片机实习报告
长沙理工大学《单片机课程设计》电子钟单片机实习报告

目录

一引言 (5)

二硬件设计 (5)

三软件设计 (5)

四调试过程及问题分析 (6)

五结论 (7)

六参考文献 (7)

附件 (8)

一引言

单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,单片机都起到了举足轻重的作用。

所以单片机技术也日趋成熟。单片机是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强。而52系列单片机是各单片机中最为典型和最有代表性的一种。

此次单片机原理及应用实习通过利用52单片机对电子钟的设计,从而达到学习、了解单片机相关指令在各方面的应用,以及初步了解开发软、硬件的知识。

二硬件设计

本次单片机原理及应用实习我们组用到的硬件为MCS51开发板和一个LCD12864液晶显示器。在MCS51开发板中,对于我们组做数字电子钟而言应用到ds1302芯片,蜂鸣器,LED点阵显示屏,STC89S52单片机,锁存器等等硬件设备。

通过对这些硬件的使用实现我们组规定的以及我们拓展的要求。

三软件设计

此次基于单片机的电子钟的实习基本要求为:

基本要求

(1)能通过键盘设定年月日时分秒;

(2)在LCD12864上显示年月日时分秒及星期;

(3)整点蜂鸣器响6次,每秒响一次,最后一响是整点;

(4)按学校的作息时间表定时打铃(可用一个LED灯模拟打铃)

扩展要求

自动计算和显示阴历

基于这些功能,我们用到了如下程序

(1) 时钟程序ds1302

(2) 按键控制程序keyscan

(3) 整点报时程序fengming

(4) 作息时间表程序schooltime fengming

(5) 显示程序LCD12864

(6) 自动计算阴历程序 Chinesecalender

(7) 自动计算星期程序conver_week

我们最初的整体思路是将我们的实习课题分成几个模块,每个人负责一个部分,争取第一周弄完个人部分.第二周主要进行不同模块的整合,以及整个程序的调试和改进.此外准备答辩的PPT,由组长答辩。

程序设计流程图如下:

在这一次单片机原理及应用的实习中,我学到了很多。虽然整个过程并不是一帆风顺的,但是通过

我们的共同努力,最终完成了任务。充分发挥了团队精神,我们互帮互助,共同提高。

我觉得在拿到一个课题的时候,我们首先应该思考的是干什么?然后才是怎么干?最后是如何优化。

于是我开始上网搜有关电子钟设计的相关资料,我了解到:我们本次是利用MCS51开发板和

LCD12864液晶显示器制作的,可以完成计时、计分、几秒和校时、校分的功能。微处理器是单片机的核心,完成运算和控制的操作串行口数据存储器与复位电路、时钟电路、校时电路由微处理器控制完成各自的任务。最后通过液晶显示器显示时分秒。

在这次实习中我负责的是显示程序LCD12864,刚开始我对于LCD显示程序并不是太了解。在校园网上找到了些相关的初步显示程序。通过LCD12864中的一些程序的调用,才能进行显示,但那是以图片的形式显示的,与我们所期望的显示还是有一定的差别,所以我又做进一步的修改,通过和组员的讨论,我才知道有一个显示汉字的程序是通过字模软件实现的,之后我们的显示这一块就可以依据我们自己的想法进行设计了。

而在整个的程序综合中,也遇到了一些问题。比如在阴历显示在屏幕上的时候,最初只显示阴历两个字,不显示具体的阴历,后来经过检查发现程序调用出现问题,改正后继续进行优化。

就这样,我们反复的修改调试,最终完成了我们的整个课程设计。

五结论

在本次的课程设计中,我们虽然走了些小弯路,但是通过我们的共同努力,最终完成了任务。我从中我学到了很多,比如团队协作精神,众人拾材火焰高。任何大问题,在一步一步细化之后,解决起来就轻松得多了!我相信只要付出了就会有收获。无论什么事情,只有当你用心去做了之后你才会发现它的真实意义所在。我觉得这一次实习是非常有意义的,不仅提高了专业素养,还培养了我们的合作精神。我要把握每一次学习的机会,认真对待,为以后的就业及更深层次的发展添砖加瓦。

六参考文献

一、谭浩强 C语言课程设计(第三版)清华大学出版社 2005.7

二、杨恢先黄辉先单片机原理及应用[M] 北京人民邮电出版社 2006.10

三、C编写组编常用C语言速查手册龙门书局 1995

附件

*********************************初始化LCD*******************************/ void Lcminit (void)

{ cbyte=DISPOFF;

WrL(cbyte);

WrR(cbyte);

cbyte=DISPON;

WrL(cbyte);

WrR(cbyte);

cbyte=DISPFIRST;

WrL(cbyte);

WrR(cbyte);

Lcmcls();

Locatexy(0,0);}

/***********************************LCD清屏********************************/ void Lcmcls(void)

{ uchar i,j;

for(i=0;i<8;i++){

delay(6);

for(j=0;j

delay(6);

Wrdata(0x0,i,j);

}

}

}

/************************************写左区*********************************/ void WrL(uchar x)

{

P0=0xFF;//P0口送FF,准备读

lck = 0;

P1 = 0x2a;//ELCD=1 /W=1(读),CSB=1,CSA=0

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;//ELCD=0,R/W=0(读),CSB=0,CSA=0

lck = 1;

P0 = x; //数据送到P0口

lck = 0;

P1 = 0x22;//ELCD=1,RW = 0(写),CSB=1,CSA=0

lck = 1;

lck = 0;

P1 = 0x00;//ELCD=0,RW = 0(写),CSB=0,CSA=0

lck = 1;

}

void WrR(uchar data x)

{

P0=0xFF;//P0口送FF,准备读

lck = 0;

P1 = 0x29;//ELCD=1,R/W=1(读),CSB=0,CSA=1

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;//ELCD=0,R/W=0(读),CSB=0,CSA=1

lck = 1;

P0=x; //数据送到P0口

lck = 0;

P1 = 0x21;//ELCD=1,RW = 0(写),CSB=0,CSA=1

lck = 1;

lck = 0;

P1 = 0x00;//ELCD=0,RW = 0(写),CSB=0,CSA=0

lck = 1;

}

/**********************************显示定位***********************************/ void Locatexy(uchar row,uchar col)

{ uchar x, y, right;

switch(col&0xc0)

{ case 0:{

P0=0xFF;//P0口送FF,准备读

lck = 0;

P1 = 0x29;//ELCD=1,R/W=1(读),CSB=0,CSA=1

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;

lck = 1;

right = 1;break;}//置右半屏标志

case 0x40:{

P0=0xFF;//P0口送FF,准备读

lck = 0;

P1 = 0x2a;//ELCD=1,R/W=1(读),CSB=1,CSA=0

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;//ELCD=0,R/W=0(读) CSB=0,CSA=0

lck = 1;

right = 0;break;}//置左半屏标志

}

x=col&0x3f|SETX;//把列数据变成行命令

y=row&0x07|SETY;//把行数据变成行命令

if(right)

P1 = 0x29;

else

P1 = 0x2a;

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;

lck = 1;

/***********************************以上为判断忙标志**************************/ P0 = y;

lck = 0;

if(right)

P1 = 0x21;

else

P1 = 0x22;

lck = 1;

lck = 0;

P1 = 0x00;

lck = 1;

/************************************以上为送行命令*****************************/ P0=0xFF;

lck = 0;

if(right)

P1 = 0x29;

else

P1 = 0x2a;

lck = 1;

while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;

P1 = 0x00;

lck = 1;

/*************************************以上为判断忙标志***************************/ P0 = x;

lck = 0;

if(right)

P1 = 0x21;

else

P1 = 0x22;

lck = 1;

lck = 0;

P1 = 0x00;

lck = 1;

/*************************************以上为送列命令***************************/

else

statu = 0;//置左又半区标志

}

/*************************************数据写输出*******************************/ void Wrdata(uchar x,uchar row,uchar col)

{

Locatexy(row,col);//定位显示位置

lck = 0;

if(statu)

P1 = 0x05;//ELCD=0 R/W=0(写),D/I= 1 ,CSB=0,CSA=1

else

P1 = 0x06;//ELCD=0,R/W=0(写),D/I= 1 ,CSB=1,CSA=0

lck = 1;

P0 = x;

lck = 0;

if(statu)

P1 = 0x25;//ELCD=1,R/W=0(写),D/I= 1 ,CSB=0,CSA=1

else

P1 = 0x26;//ELCD=1,R/W=0(写),D/I= 1 ,CSB=1,CSA=0

lck = 1;

lck = 0;

P1 = 0x00;

lck = 1;

}

/**********************************半角数据点阵输出******************************/ void Puthalf(uchar *strch,uchar row,uchar col)

{

uchar i,bakerx;

bakerx = row;

for(i=0;i<16;i++)//上半字输出

{ cbyte=strch[i];

Wrdata(cbyte,bakerx,col);

cbyte=strch[i+1];

Wrdata(cbyte,bakerx+1,col);

col++;

i++; }

}

void Puthz(uchar *str,uchar row,uchar col)

{

uchar i,bakerx;

bakerx=row;

for(i=0;i<32;i++)

cbyte=str[i];

Wrdata(cbyte,row,col); //上半字节输出

i++;

row=bakerx+1;

cbyte=str[i];

Wrdata(cbyte,row,col); //下半字节输出

row=bakerx;

col=col+1;

}

}

/****************************字符型点阵行--》列转换************************/

void VtoH8x16change(uchar *hzbuf)

{ uchar i,j,k, cash[16];

uchar newbyte, savebit[8];

for(k=0;k<16;k++){

newbyte = 0;

for(i=0;i<8;i++){

savebit[i]=hzbuf[i] & 0x80;}

for(j=0;j<8;j++){

savebit[j] = savebit[j] >> (7-j);

newbyte = newbyte | savebit[j]; }

cash[k] = newbyte;

newbyte = 0;

for(i=8;i<16;i++){

savebit[i-8]=hzbuf[i] & 0x80; }

for(j=0;j<8;j++){

savebit[j] = savebit[j] >> (7-j);

newbyte = newbyte |savebit[j]; }

cash[k+1] = newbyte;

for(j=0;j<16;j++){

hzbuf[j] = hzbuf[j] <<1; }

k++; }

for(i=0;i<16;i++)

hzbuf[i] = cash[i]; }

/*******************************显示英文和符号字符*******************************/ void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag)

{uchar ucXArray[16],i;

if(flag){ // 反白显示英文

for(i = 0; i < 16; i++)

ucXArray[i] = ~ch[i];}else{

for(i = 0; i < 16; i++)

ucXArray[i] = ch[i]; }

VtoH8x16change(ucXArray);

Puthalf(ucXArray,row,col);}

void vWrite8x16String(uchar *str,uchar row, uchar col, bit flag)

{

unsigned char i, j,thiscol;

j = strlen(str);

for(i = 0; i < j; i++)

{ thiscol = (i % 16) * 8 + col;//计算列地址

if(str[i] < 0xa1)//当前显示内容为英文字符

vWrite8x16Character(&char_Table[str[i]-0x20][0],row,thiscol,flag); }}

/************************v_RTInputByte*************************/

void v_RTInputByte(uchar ucDa)

{

uchar i;

ACC = ucDa;

for(i=8; i>0; i--)

{

T_IO = ACC0; /*相当于汇编中的RRC */

T_CLK = 1;

T_CLK = 0;

ACC = ACC >> 1;

}

}

/********************** uchar uc_RTOutputByte*************************/

uchar uc_RTOutputByte(void)

{

uchar i;

for(i=8; i>0; i--)

{

ACC = ACC >>1; /*相当于汇编中的RRC */

ACC7 = T_IO;

T_CLK = 1;

T_CLK = 0;

}

return(ACC);

}

/************************v_W1302 *************************************/

void v_W1302(uchar ucAddr, uchar ucDa)

{

lck = 0;

P1 = 0x00;

lck = 1;

T_CLK = 0;

lck = 0;

P1 = 0x10;

lck = 1;

v_RTInputByte(ucAddr); /* 地址,命令*/

v_RTInputByte(ucDa); /* 写1Byte数据*/

T_CLK = 1;

lck = 0;

P1 = 0x00;

lck = 1;

}

/**************************uc_R1302***********************************/

uchar uc_R1302(uchar ucAddr)

{

uchar ucDa;

lck = 0;

P1 = 0x00;

lck = 1;

T_CLK = 0;

lck = 0;

P1 = 0x10;

lck = 1;

v_RTInputByte(ucAddr); /* 地址,命令*/

ucDa = uc_R TOutputByte(); /* 读1Byte数据*/

T_CLK = 1;

lck = 0;

P1 = 0x00;

lck = 1;

return(ucDa);

}

/************************* v_Set1302 *********************************/

void v_Set1302(uchar *pSecDa)

{

uchar i;

uchar ucAddr = 0x80;

v_W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/

for(i =7;i>0;i--)

{

pSecDa++;

ucAddr +=2;

}

v_W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/

}

/*******************************v_Get1302**************************************/

void v_Get1302(uchar ucCurtime[])

{

uchar i;

uchar ucAddr = 0x81;

for (i=0;i<7;i++)

{

ucCurtime[i] = uc_R1302(ucAddr);/*格式为: 秒分时日月星期年*/

ucAddr += 2;

delay(100);

}

}

/**********************************屏幕显示*********************************/ void pingmu(){

uchar disp,copymt;

uchar temp;

copymt = 0xff;

P0=0xff;

v_Get1302(&buffer); //读取DS1302

Conver_week(0,buffer[6],buffer[4],buffer[3]);

Chinesecalender(0,buffer[6],buffer[4],buffer[3]) ;

disp = buffer[0] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],2,100,0);//秒个位

temp =buffer[0] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],2,92,0);//秒十位

copymt = buffer[1];

disp = buffer[1] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],2,68,0);//分个位

temp =buffer[1] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],2,60,0);//分十位

disp = buffer[2] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],2,30,0);//时个位

temp =buffer[2] & 0x7f;

temp = temp/16;

vWrite8x16Character(&char_Table[disp-0x20][0],2,22,0);//时十位

disp = buffer[3] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,100,0);//日个位

temp =buffer[3] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,92,0);//日十位

disp = buffer[4] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,68,0);//月个位

temp =buffer[4] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,60,0);//月十位

disp = buffer[6] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,30,0);//年个位

temp =buffer[6] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,22,0);//年十位

disp = buffer[7] % 0x10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,14,0);//年百位

temp =buffer[7] & 0x7f;

temp = temp/16;

disp = temp%10 + '0';

vWrite8x16Character(&char_Table[disp-0x20][0],0,6,0);//年千位}

基于51单片机的数字钟

专业课程设计报告 专业班级 课程 题目基于51单片机的数字钟的设计报告学号 学生姓名 指导教师 成绩 2013年6月20日

基于A T89C51的数字钟总体设计说明书 目录 1. 51单片机设计数字钟设计的现实意义 (2) 2. 总体设计 (2) 2.1.开发与运行环境 (2) 2.2.硬件功能描述 (2) 2.3.硬件结构 (3) 3. 硬件模块设计 (3) 3.1.描述 (3) 3.1.1. AT89C51单片机简介 (3) 3.1.2. 键盘电路的设计 (4) 3.1.3. 显示器的选择 (5) 3.1.4. 蜂鸣器驱动电路 (5) 3.1.5. 各部分功能 (6) 4. 嵌入式软件设计 (7) 4.1.流程逻辑 (7) 4.2.算法 (7) 4.2.1. 中断定时器的设置 (27) 4.2.2. 闹钟子函数 (28) 4.2.3. 计时函数 (29) 4.2.4. 键盘扫描函数 (31) 4.2.5. 时间和闹钟的设置 (32) 5. 实验器材清单 (33) 6. 测试与性能分析 (33) 6.1.测试结果 (33) 6.2.优点 (33) 6.3.结论 (34) 7. 心得体会 (36) 8. 致谢 (36) 9. 参考文献 (37)

1.51单片机设计数字钟设计的现实意义 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 2.总体设计 2.1.开发与运行环境 在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 2.2.硬件功能描述 硬件部分设置了的三个按键S1、S2、S3、S4。当按键S1第一次按下时,停止计时进

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

单片机实习报告

目录一、绪论 二、流水灯 三、拉幕灯 四、六十秒倒计时 五、ARES软件应用 六、心得体会

一、绪论 本次实习利用Proteus7 professional软件中的ISIS软件和ARES软件进行仿真电路连接.利用Keil uvision4进行编程。从而实现对AT89C51单片机的控制。 图1-1 图1-2

图1-3 1、ISIS软件 双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional”→“ISIS 7 Professional”,出现如图2-1所示屏幕,表明进入Proteus ISIS集成环境。 图2-1 Proteus ISIS集成环境 进入之后的界面类似如图2- 2 所示。 图中已经标注各个部分的作用,我们现在就使用软件提供的功能进行工作。

图2-2 ISIS主窗口 选择器件→进行连接→执行 在原理图编辑窗口下面有一排按钮,利用它 可以控制仿真的过程。点击按钮开始仿真,开始以后按钮的小三角 变成绿色,点击按钮单步仿真,点击按钮暂停和继续仿真切换,点击按钮停止仿真。 以简单项目P1P2为例,说明仿真效果。点击开始仿真按钮,电路如 图2-20所示。

图2-20 运行仿真 观察发现,单片机P1,P2,P3口引脚的每一根线的旁边都有一个红色的小方框,表明当前引脚是高电平,如果小方框是蓝色,表明引脚当前是低电平。如果小方框是灰色,说明此引脚是悬空,P1口的8个引脚就是悬空。与电源VCC相连的引脚都是高电平。与地线GND相连的引脚都是低电平。 点击图中的一个按键,对应的发光二极管会亮。放开按键发光二极管就灭。 点住一个按键不放,观察对应的P1口导线旁边的小方框,变成蓝色,和其对应的P2口的输出线旁边的小方框也变成蓝色,对应的发光二极管亮。这是程序的作用,我们的程序就是将P1口的输入传送到P2口进行输出。 2、keil uvision软件 单击桌面上实验软件,选择如图1的图标或者单击屏幕左下方的 “开始”→“程序”→实验软件→keil uvision.然后出现如图二

基于单片机的数字钟设计-(1)

基于单片机的数字时钟摘要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。 关键词:数字钟,单片机,数码管

Abstract Author:cheng dong Tutor:wang xin Electronic technology has been developed rapidly in the 20 century,with its modern electronic products, pushed by almost permeated every area of society has vigorously promoted social productive forces development and improvement of social informatization level, also make modern electronic product performance further improved, and the rhythm of upgrade its products is becoming more and more quickly. The most common SCM module is a digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds, the timing device with mechanical clock compared with higher accuracy and intuitive and no mechanical device, has more longer service life, so it has been widely used. This topic research is the digital clock design based on SCM, AT89C51 SCM as the main control chip system, external LED display circuit, key circuits, crystals circuit, reset circuit module constitute a simple digital clock. Through the key circuits can respectively the diffculties, minutes and seconds setting and real-time adjustment, and the result showed that in the digital tube. Key words:digital clock SCM ; digital

单片机课程设计--简易电子钟.doc

单片机课程设计报告设计课题:简易电子时钟的设计 专业班级:07通信1班 学生姓名:黎捐 学号:0710618134 指导教师:曾繁政 设计时间:2010.11.5—2010.12.20

一、设计任务与要求 (1)设计任务: 利用单片机设计并制作简易的电子时钟,电路组成框图如图所示。 (2)(2) 设计要求:1)制作完成简易的电子时钟,时间可调整。 2)有闹钟功能。 二、方案设计与论证 简易电子时钟电路系统由主体电路和扩展功能电路两主题组成,总体功能原理是以STC89C52单片机为主要的控制核心,通过外接4个独立式键盘作为控制信号源,八个七段数码管作为显示器件,蜂鸣器作为定时器件,单片机实时的去执行相应的功能。在数码管上显示出来,此时通过不同的按键来观看和调节各种数据。CPU 控制原理图如图1所示。 图1. CPU 控制原理图 三、硬件系统的设计 3.1 STC89C52控制模块 STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O )端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。 MCS-52单片机内部结构 8052单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器(RAM): 8052内部有128个8位用户数据存储单元和128 个专用寄存器单元,它们是统一编 时间显示显示 主控器(51单片机) 时间 调整 声音报 时 (选做)

实习报告 单片机实习报告范文3篇

单片机实习报告范文3篇 本文目录单片机实习报告范文单片机生产实习报告单片机课程设计实习报告这次实习我们使用控制电路的单片机是at89s51型号的。通过它实现对八盏双色灯发光二极管的控制p0和p2口控制四盏灯。在at89s51的9引脚接复位电路,对电路实现复位控制。在电路中接入74s164译码器和共阴极数码管,通过at89s51的p3口数据的输入对共阴极数码管的控制。同时也可实现双色发光的二极管与共阴极数码管的共同作用。在at89s51的p3.2口接上中断控制电路,p3.5口接入蜂鸣器,使电路实现中断作用,也使电路便于检测。尽量朝"单片"方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。系统中的相关器件要尽可能做到性能匹配。如选用cmos芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。 硬件电路设计: 1)确保硬件结构和应用软件方案相结合。硬件结构与软件方案会相互影响,软件能实现的功能尽可能由软件实现,以简化硬件结构。必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用cpu时间; 2)可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板的合理布线、各元器相互隔离等; 3)尽量朝"mcs-51单片"方向设计硬件系统。系统器件越多,器件

之间相互干扰也越强,所消耗功耗也增大,也不可避免地降低了系统的稳定性; 4)系统中的相关器件要尽可能做到性能匹配。如选用cmos芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。 1.1 单片机型号及特性 单片机型号是at89s51。特性是:⑴8031 cpu与mcs-51⑵兼容4k 节可编程flash存储器(寿命:1000写/擦循环) ⑶全静态工作:0hz-24khz ⑷三级程序存储器保密锁定⑸128*8位内部ram ⑹32条可编程i/o线⑺两个16位定时器/计数器⑻6个中断源⑼可编程串行通道⑽低功耗的闲置和掉电模式⑾片内振荡器和时钟电路1.2 晶振电路 单片机晶振的两个电容的作用这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度,晶振的负载电容=[(cd*cg)/(cd+cg)]+cic+△c式中cd,cg为分别接在晶振的两个脚上和对地的电容,cic(集成电路内部电容)+△c(pcb上电容)经验值为3至5pf。各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器, 或者是奇数个反相器串联。在晶振输出引脚xo 和晶振输入引脚xi 之间用一个电阻连接, 对于cmos 芯片通常是数m 到数十m 欧之间. 很多芯片的引脚内部已经包含了这个电阻, 引脚外部就不用接了。这个电阻是为了使反相器在振荡初

arm 嵌入式系统基础教程 - 广州周立功单片机发展有限公司

ARM嵌入式系统基础教程 周立功等编著 北京航空航天大学出版社 2005年1月定价:32.00元 内容简介 本书是《ARM嵌入式系统系列教程》中的理论课教材。以PHILIPS公司LPC2000系列ARM微控制器为例,深入浅出地介绍嵌入式系统开发的各个方面。全书共分为3部分:第1章和第2章为理论部分,主要介绍嵌入式系统的概念及开发方法。第3~5章为基础部分,主要介绍ARM7体系结构、指令系统及LPC2000系列ARM微控制器的结构原理。第6~8章为应用部分,主要以LPC2000系列微控制器为例介绍如何设计嵌入式系统,包括硬件的设计、μC/OSII的移植以及建立软件开发平台的方法。本书可以作为高等院校电子、自动化、机电一体化计算机等相关专业嵌入式系统课程的教材,也可作为从事嵌入式系统应用开发工程师的参考资料。本书配套多媒体教学课件。 序 1. ARM嵌入式系统的发展趋势 由于网络与通信技术的发展,嵌入式系统在经历了近20年的发展历程后,又进入了一个新的历史发展阶段,即从普遍的低端应用进入到一个高、低端并行发展,并且不断提升低端应用技术水平的时代,其标志是近年来32位MCU的发展。 32位MCU的应用不会走8位机百花齐放、百余种型号系列齐上阵的道路,这是因为在8位机的低端应用中,嵌入对象与对象专业领域十分广泛而复杂;而当前32位MCU的高端应用则多集中在网络、通信和多媒体技术领域,32位MCU将会集中在少数厂家发展的少数型号系列上。 在嵌入式系统高端应用的发展中,曾经有众多的厂家参与,很早就有许多8位嵌入式MCU厂家实施

了8位、16位和32位机的发展计划。后来,8位和32位机的技术扩展侵占了16位机的发展空间。传统电子系统智能化对8位机的需求使这些厂家将主要精力放在8位机的发展上,形成了32位机发展迟迟不前的局面。当网络、通信和多媒体信息家电业兴起后,出现了嵌入式系统高端应用的市场;而在嵌入式系统的高端应用中,进行多年技术准备的ARM公司适时地推出了32位ARM系列嵌入式微处理器,以其明显的性能优势和知识产权平台扇出的运行方式,迅速形成32位机高端应用的主流地位,以至于使不少传统嵌入式系统厂家放弃了自己的32位发展计划,转而使用ARM内核来发展自己的32位MCU。甚至在嵌入式系统发展史上做出卓越贡献的Intel公司以及将单片微型计算机发展到微控制器的PHILIPS公司,在发展32位嵌入式系统时都不另起炉灶,而是转而使用ARM公司的嵌入式系统内核来发展自己的32位MCU。 网络、通信、多媒体和信息家电时代的到来,无疑为32位嵌入式系统高端应用提供了空前巨大的发展空间;同时,也为力不从心的8位机向高端发展起到了接力作用。一般来说,嵌入式系统的高、低端应用模糊地界定为:高端用于具有海量数据处理的网络、通信和多媒体领域,低端则用于对象系统的控制领域。然而,控制系统的网络化、智能化的发展趋势要求在这些8位机的应用中提升海量数据处理能力。当8位机无法满足这些提升要求时,便会转而求助32位机的解决办法。因此,32位机的市场需求发展由两方面所致:一方面是高端新兴领域(网络、通信、多媒体和信息家电)的拓展;另一方面是低端控制领域应用在数据处理能力的提升要求。 后PC时代的到来以及32位嵌入式系统的高端应用吸引了大量计算机专业人士的介入,加之嵌入式系统软/硬件技术的发展,导致了嵌入式系统应用模式的巨大变化,即使嵌入式系统应用进入到一个基于软/硬件平台、集成开发环境的应用系统开发时代,并带动了SoC技术的发展。 在众多嵌入式系统厂家参与下,基于ARM系列处理器的应用技术会在众多领域取得突破性进展。Intel 公司将ARM系列向更高端的嵌入式系统发展;而PHILIPS公司则在向高端嵌入式系统发展的同时,向低端的8位和16位机的高端应用延伸。Intel公司和PHILIPS公司的发展都体现了各自的特点,并充分发挥了各自的优势。因此,在32位嵌入式系统的应用中,ARM系列会形成ARM公司领军,众多厂家参与,计算机专业、电子技术专业以及对象专业人士共同推动的局面,形成未来32位嵌入式系统应用的主流趋势。这种集中分工的技术发展模式有利于嵌入式系统的快速发展。 面对这种形势,近年来,嵌入式系统业界人士掀起了广泛学习嵌入式系统理论及应用开发的热潮,相关的出版物和培训班如雨后春笋不断出现。无论是原有的嵌入式系统业界人士,还是刚进入嵌入式系统的人们,都渴望了解嵌入式系统理论,掌握嵌入式系统的应用技术。高等院校面对这种形式,也迫切需要开设相应的课程。因此,为了满足高等院校嵌入式系统教学以及社会上各种培训的需要,作者结合几年来在嵌入式系统领域教学与开发的经验和特点,编写了本套《ARM嵌入式系统系列教程》。 2. 本套教程的组成 本套教程由理论教材、实验教材和学习指导3部分(共5册)组成,且配套的所有教学实验平台都是基于PHILIPS公司的LPC2000系列ARM微控制器(基于ARM7TDMI S核心)而设计。 理论教材 《ARM嵌入式系统基础教程》 ——含开放式多媒体教学课件,可自行添加或删减内容 实验教材 《ARM嵌入式系统实验教程(一)》 ——含开放式多媒体实验教学课件,可自行添加或删减内容 ——配套EasyARM2200教学实验平台 《ARM嵌入式系统实验教程(二)》 ——含开放式多媒体实验教学课件,可自行添加或删减内容

基于单片机的数字钟设计

毕业设计论文 作者学号 系部 专业 题目基于单片机的多功能数字钟设计 指导教师 评阅教师

完成时间: 毕业设计(论文)中文摘要

毕业设计(论文)外文摘要

目录1 绪论5 1.1背景资料5 1.1.1设计多功能数字钟的目的5 1.1.2电子线路CAD与Prote99 SE软件的简介5 1.1.3单片机简介7 1.2本设计的主要工作8 2 系统功能和设计说明9 2.1总体方案设计9 2.1.1本课题主要技术要求9 2.1.2总体方案比较与论证9 2.1.3总体设计原理方框图10 2.2 硬件模块电路设计10 2.2.1电压有效值测量设计10 2.2.2时钟电路的设计12 2.2.3温度检测电路设计13 2.2.4频率测量设计13 2.2.5键盘显示设计15 2.2.6报警电路16

2.2.7单片机最小系统16 2.3 软件设计19 2.4测试方法20 2.5总结21 结论23 致谢24 参考文献24 1绪论 1.1背景资料 1.1.1设计多功能数字钟的目的 目前市售的电子产品很多,一般只能显示时间信息,功能单一. 但在一些特殊行业,如电力部门,为了工作的便利,要求数字钟不仅能显示时间信息,最好还能直接显示供电情况,电力运行情况。这样,市场上销售的数字钟就显得功能单一,不能满足需求。这里我们所要设计的是专门用于电力部门的多功能数字钟。 本文所设计的多功能数字钟是利用单片机技术,采用了几种新型的芯片而共同构成的。它具有基本的电子时钟,闹钟功能,并且能够显示环境温度,电网电压,电网频率及实现过压欠压报警。本系统充分挖掘了单片机的资源和运算控制功能,具有功能多,显示全,成本低的特点。 1.1.2电子线路CAD与Prote99 SE软件的简介 本设计的电子线路图和PCB线路版图都采用计算机辅助制图,现介绍使用的做图软件及方法。

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:2012197213 2012118029 班级:自动化1211 指导老师:阮海容

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分

基于单片机的数字时钟

郑州科技学院 《单片机原理及应用》课程设计

目 录 0 引言3 1 设计方案4 2 系统设计7 2.1 硬件原理12 2.2 软件原理16 3 实验与仿真19 4 结论21 参考文献22 附录1 程序23 附录2 仿真电路图26 0 引言 近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 因此从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的时钟,现代人对时间的精度和观察时间的方便有了越来越多的需求。人们要求随时随地都能快速准确的知道时间,并且要求时钟能够更直观、更可靠、价格更便宜。这种要求催生了新型时钟的产生。 除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有

了体积小、功耗低的要求。 传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。 另外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 1 设计方案 1.1 任务及要求 ①通过单片机内定时器控制走时,准确持续走时,调时不影响走时。 ②在八个数码管上显示时、分、秒及两个小数点。 ③含有闹钟功能,可以选择闹钟开关,可以设定闹铃时间。 ④到达闹钟时刻蜂鸣器警报,可以关掉警报。 1.2 系统功能说明 电子钟的格式为:XX.XX.XX ,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该钟使用T0作250us的定时中断。 走时调整:走时过程中直接调整且不影响走时准确性,按下时间选择键对“时、分、秒”显示进行调整,每按一下时间加,即加1,时间减,即减1。

单片机课程设计 电子日历时钟显示器设计

目录 1.题目设计要求 (1) 2.开发平台简介 (1) 3.系统硬件设计 (2) 3.1设计原理 (2) 3.2器件的功能与作用 (2) 3.2.1 MCS51单片机AT89C51 (2) 3.2.2复位电路 (3) 3.2.3晶振电路 (4) 3.2.4 DS1302时钟模块 (4) 3.2.5 引脚功能及结构 (4) 3.2.6 DS1302的控制字节 (5) 3.2.7 数据输入输出(I/O) (5) 3.2.8 DS1302的寄存器 (6) 3.2.9 液晶显示LCD1602 (6) 3.2.10 串行时钟日历片DS1302 (8) 4.系统软件设计 (10) 4.1程序流程 (10) 4.2程序代码 (10) 5.系统仿真调试 (20) 5.1仿真原理图设计 (20) 5.2仿真运行过程 (21) 5.3仿真运行结果 (21) 6.总结 (21) 7.参考文献 (22)

1.题目设计要求 通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。要求LCD上显示的日期和时间与当前系统时间保持一致。 2.开发平台简介 2.1系统仿真平台Proteus Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史,在全球得到了广泛应用。Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩。和我们手头其他的电路设计仿真软件,他最大的不同即它的功能不是单一的。另外,它独特的单片机仿真功能是任何其他仿真软件都不具备的。 2.2软件开发平台Keil C Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。Keil C51生成的目标代码效率之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

单片机实习报告

单片机原理与应用课程设计 题目:计数器数码管综合设计 专业班级:电自化1201班 学号:20122835 姓名:邱胜朋 2016年11月12日

目录 1.摘要及关键词 (1) 1.1主要问题 (1) 1.2 解决思路 (1) 2.简介 (2) 2.1 系统特性及其功能 (2) 2.2 设计的具体方案 (2) 3.系统设计 (2) 3.1 硬件电路 (3) 3.1.1使用的主要器件 (4) 3.1.2主要部分器件说明 (5) 3.2 软件设计 (7) 3.2.1 程序流程图 (7) 3.2.2 程序设计内容 (9) 3.2.3 实验程序及部分注释 (9) 4.实验结果 (14) 5.实习总结 (15) 参考文献 (15) 附录 (15)

1.摘要及关键词 1.1主要解决问题 随着当今社会的快速发展,大部分的自动化生产过程中的流水线的自动装箱或自动装配都需要用的自动计数,而怎样对流水线上的产品需要进行实时的、有效率的、精确地自动技术成为广泛关注的问题。传统的机械式或电子式计数器比较复杂,元器件数量较多,故障率较高,维修比较困难,而且设置不方便,功能不易更改,适用范围较窄。 1.2解决思路 基于单片机的自动计数器已经成为比较成熟的产品,应用于各种需要计数的场合,具有计数准确,操作方便,显示准确计数功能形式多样化的特点,被广泛的应用,能够实现数据统计的搜集,有效的节省劳动力高质量地完成任务。基于单片机构成的产品自动计数器研究的主要内容包括:如果构成检测电路、STC89C51单片机用何种方式对外部计数脉冲进行计数显示控制、LED显示驱动模块的选择、STC89C51单片机的扩展。在这个设计中主要需要解决的问题便是如何提高单片机的抗干扰能力以及稳定性。 本文以单片机为核心的技术设计,阐述了系统的原理、硬件电路和软件设计相关内容。 关键词:单片机,数码管,计数显示,流水线 2.简介 2.1系统特性及其功能 本次实习设计以STC89C51系列单片机开发板为基础开发环境,编制程序实现饮料包装流水线从0~36的饮料瓶数字实时显示。设计具体思路是:综合单片机开发板按键模块和led数码管模块,使用按键的闭合模拟流水线上检测装置检测到的计数脉冲,送入STC89C51单片机控制单元,通过对单片机编程实现计数然后由led数码管显示,实现实时计数功能。可以实现的功能有:

单片机课程设计电子钟汇编语言

ORG 0000H MOV 40H,#00H MOV 41H,#00H MOV 42H,#00H MOV 43H,#00H MOV 44H,#00H MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV R0,#00H MOV R1,#00H CLR P3.0 CLR P3.1 UU: MOV TMOD ,#00H MOV TH0,#00H MOV TL0,#00H CLR TR0 MM: MOV A,40H MOV 50H,#11111110B MOV P2,50H MOV DPTR ,#TAB MOVC A,@A+DPTR MOV P0,A LCALL YY MOV A,50H RL A MOV 50H,A MM1: MOV P2,50H MOV DPTR,#TAB MOV A,41H ADD A,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM2: MOV P2,50H MOV DPTR,#TAB MOV A,42H

MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM3: MOV P2,50H MOV DPTR,#TAB MOV A,43H ADD A,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM4: MOV P2,50H MOV DPTR,#TAB MOV A,44H MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM5:MOV P2,50H MOV DPTR,#TAB MOV A,45H ADD A ,#0AH MOVC A,@A+DPTR MOV P0 ,A LCALL YY MOV A,50H RL A MOV 50H,A MM6: MOV P2,50H MOV DPTR,#TAB MOV A,46H

基于单片机的数字钟设计毕业设计

基于单片机的数字钟设计毕业设计 目录 1. 引言 (1) 2. 关于单片机 (3) 2.1单片机的发展 (3) 2.2 单片机的开发背景 (5) 2.2 单片机的开发背景 (6) 2.3 AT89S52单片机 (7) 2.3.1 AT89S52单片机引脚功能 (8) 2.3.2 AT89S52单片机硬件结构的特点 (9) 2.3.3 AT89S52单片机的硬件原理 (11) 3. 方案设计与论证 (13) 4. 系统总体结构框图 (14) 5. 系统的硬件设计 (14) 5.1 显示部分电路的设计 (14) 5.1.1 LED数码显示管的基本原理 (14) 5.1.2 数码管显示模块分析 (15) 5.1.3 LED显示电路 (16) 5.2 控制部分电路的设计 (16) 5.2.1 时钟模块 (16) 5.2.2 温度模块 (16) 5.2.3 音乐模块 (17) 5.2.4 复位模块 (17) 5.2.5 光识模块 (18) 6. 系统的软件设计 (19) .参考资料.

6.1 各模块的程序设计 (19) 6.1.1 计时程序 (19) 6.1.2 定时闹钟程序 (19) 6.1.3 温度程序 (19) 6.2 系统程序设计的总体框图 (20) 7. 系统电路的制作与调试 (21) 7.1 电路硬件焊接制作 (21) 7.2 调试的主要方法 (21) 7.3 系统调试 (21) 7.3.1 硬件调试 (21) 7.3.2 软件调试 (21) 7.3.3 联机调试 (22) 7.3.4调试中遇到的问题及解决方法 (22) 结论 (24) 参考文献 (25) 附录1 数字钟电路图 (27) 附录2 程序清单 (27) 附录3 英文资料 (65) 附录4 英文资料翻译 (76) 致谢 (84) .参考资料.

大学生单片机实习总结

大学生单片机实习总结 ,我们将为大家提供关于20XX年实习报告的信息,敬请期待! :xx :实习报告范文| 实习报告模板| 会计实习报告 | 大学生实习报告 | 顶岗实习报告 | 金工实习报告 | 毕业实习报告 | 土木工程实习报告 | 生产实习报告 |实习周记 | 3000字范文 大学生单片机实习总结 随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。本学期我们就学习了单片机这门课程,感觉是有点难呢。也不知道整个学习过程是怎么过来得,可是时间不等人。 时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实习课题也在一周内完成了。俗话说“好的开始是成功的一半”。说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。其次,老师对实验的讲解要一丝

不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。 虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。 当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

基于单片机的数字钟设计

基于单片机的数字钟设计及时间校准研究﹡ 陈姚节戴泽军 (武汉科技大学计算机学院 430081 ) 摘要用单片机来设计数字钟,软件实现各种功能比较方便。但因软件的执行需要一定的时间,所以就会出现误差。对比实际的时钟,查找出误差的来源,并作出调整误差的方法,使得误差近可能的小,使得系统可以达到实际数字钟的允许误差范围内。 1 , 串 使用。采用一个频率为 11.0592 MHz 的晶振构成时钟电路。系统原理图如图 1 : 图1 系统原理图 2.软件实现与流程 2.1 主程序

由于系统的主要功能都是有程序中断来完成的,主程序基本上没什么事可做,但因键盘扫描是通过程序查询的方式实现的,所以主程序只循环扫描键盘。主程序流程图如图2所示: 2.2 定时和串口程序 2.3 数据的显示与刷新 更新显示器涉及到两个操作:发数据和改片选信号。但实践发现,代码中无论是先改片选信号还是先发数据信号,都会出现重影(即相邻两位显示差不多)这也是动态扫描引起的。实践先该片选,则前一位的数据会在下一位显示一段时间;先发数据,则后一位的数据会在前一位显示一段时间。因而出现重影。解决这个问题的办法是先进行一个消影操作,然后再发片选,最后发数据。这样就很好地解决了重影问题。这样做的关键在于,在极短

的一段时间内让显示器都不亮,等一切准备工作都做好了以后再发数据,只要显示频率足够快,是看不出显示器有闪烁的(程序用定时中断频率作为显示更新频率,在表 1 中,只当更新率??00 赫兹时,才发现显示器有闪烁)。这段显示程序代码如下: P1=0 x00; // 消影 作为一次还是多次处理,必须有一个标准。程序中我用到了一个标志位,相当于中断系统的中断标志。当用户按下键时,标志清零,松开键时,标志恢复;键按下超过一定时间(靠一扫描计数器判定)后,恢复标志,则经过一定的时间延迟(也靠一扫描计数器判定)可以响应一次按键(即一次按键的多次响应)。而事实上,键盘响应程序就是一个事件触发器,键盘的每一个状态(按下,松开, 点击)都可能引发一段响应程序(如:重新设定键按下 =>

51单片机课程设计-电子时钟Word版

课程设计 课程名称:单片机课程设计 题目名称:单片机电子时钟 学院:电信学院 专业:电子工程 姓名:曾代科 学号: 200820313201 指导教师:杨加国 2010年11月7日

一、课程设计名称:51单片机电子时钟 二、设计方案: 1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。 2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。 三、设计内容: 这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。 此外还要实现对时间的调整功能,89C52的P1.0、P1.1、P1.2外接三个独立按键,当按下P1.0按键时,系统进入调时间的状态或启动时间显示的功能;当按下P1.1按键时,

对显

示的数码管进行加一的功能;当按下P1.2按键时,对显 示的数码管进行减一的功能,达到调整时间的目的。 四、系统软件程序设计 1.主程序 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。 2、数码管显示模块 本实验有8个数码管,从右到左为妙、横线、分、横线、时。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。 3、定时器/计数器T0中断服务程序 T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标

相关文档
最新文档