课程设计docWord格式文档下载.docx

上传人:b****2 文档编号:818555 上传时间:2023-04-29 格式:DOCX 页数:16 大小:241.58KB
下载 相关 举报
课程设计docWord格式文档下载.docx_第1页
第1页 / 共16页
课程设计docWord格式文档下载.docx_第2页
第2页 / 共16页
课程设计docWord格式文档下载.docx_第3页
第3页 / 共16页
课程设计docWord格式文档下载.docx_第4页
第4页 / 共16页
课程设计docWord格式文档下载.docx_第5页
第5页 / 共16页
课程设计docWord格式文档下载.docx_第6页
第6页 / 共16页
课程设计docWord格式文档下载.docx_第7页
第7页 / 共16页
课程设计docWord格式文档下载.docx_第8页
第8页 / 共16页
课程设计docWord格式文档下载.docx_第9页
第9页 / 共16页
课程设计docWord格式文档下载.docx_第10页
第10页 / 共16页
课程设计docWord格式文档下载.docx_第11页
第11页 / 共16页
课程设计docWord格式文档下载.docx_第12页
第12页 / 共16页
课程设计docWord格式文档下载.docx_第13页
第13页 / 共16页
课程设计docWord格式文档下载.docx_第14页
第14页 / 共16页
课程设计docWord格式文档下载.docx_第15页
第15页 / 共16页
课程设计docWord格式文档下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

课程设计docWord格式文档下载.docx

《课程设计docWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计docWord格式文档下载.docx(16页珍藏版)》请在冰点文库上搜索。

课程设计docWord格式文档下载.docx

3.2.各部分功能实现

3.2.1.控制部分(AT89C51)

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

单片机最小系统

单片机最小系统主要由复位电路,晶振电路,电源等几部分组成。

图二:

最小系统电路

3.2.2键盘控制系统设计

按键需要4个,分别实现为时间调整、小时的加、分钟的减、退出四个功能。

用单片机的4个I/O口接收控制信号,其电路如图。

图三:

键盘控制图

 

3.2.3.显示电路。

图四:

显示电路图

1602液晶概述

工业字符型液晶,1602是指显示的内容为16*2,能同时显示两行,每行16个字符。

常见的1602字符液晶有两种,一种显示绿色背光黑色字体,另一种显示蓝色背光白色字体,目前市面上绝大多数基于HD44780液晶芯片控制,原理是完全相同的。

本课题所用1602液晶模块,显示屏是蓝色背光白色字体。

图五:

1602图

1602引脚介绍

编号

符号

引脚说明

1

GND

电源地

2

VCC

电源正极

3

VO

液晶显示对比度调节端

4

RS

数据/命令选择端

5

R/W

读写选择

6

E

使能信号

7

D0

数据口

8

D1

9

D2

10

D3

11

D4

12

D5

13

D6

14

D7

15

BLA

背光电源正

16

BLK

背光电源负

1602字符液晶引脚说明

各个引脚具体功能说明:

第1脚:

GND为地电源。

第2脚:

VCC接5V正电源。

第3脚:

VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生重影,使用一个1K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

DB0~DB7为8位双向数据线。

第15~16脚:

背光灯电源。

1602字符液晶使用方法

操作

输入

输出

读状态

RS=L,RW=H,E=H

D0~D7=状态字

写指令

RS=L,RW=L,D0~D7=指令码,E=高脉冲

读数据

RS=H,RW=H,E=H

D0~D7=数据

写数据

RS=H,RW=L,D0~D7=数据,E=高脉冲

4.软件设计

4.1软件主要要完成的功能

(1)显示时间程序

用软件调节时间,通过程序的调节,最后用LCD现实时钟

(2)调节时间程序

按键调节时间,能实现时、分的调节

4.2软件设计的主要流程

(1)系统总的流程

主要功能是负责时间的显示,通过写地址和写数据来实现时间的调节和控制,最后通过调用显示子程序显示出来

(2)时间控制程序

时间控制程序,用中断准确的控制时间,采用60进制,60秒为一分钟,60分钟为一个小时,全天设置为24小时。

程序流程图如图:

.

图六:

程序流程图

程序用C语言编写,代码见附录,编程时采用KEILC,而仿真用PROTUES,仿真时仿真图如图。

图七:

PROTUES仿真图

图八:

实物图

5小结

众所周知,单片机是电子信息工程专业的一们重要的课程,也是当今电子行业的重要分支之一,应用范围之广,普遍程度之高大家有目共睹,所以学好单片机对于电子信息工程专业的学生来说至关重要,甚至直接关系到日后的就业。

正因为这重要性才需要我们去实践,去锻炼。

在此次课程设计中,在最初的写程序及设计时遇到了一些困难。

因为一开始课堂上接触的是汇编语句,但汇编语句不易读懂,所以难以下手。

后来经过上网了解知道有郭天翔老师的“十天学会单片机”,下载来认真看了后大有所得,也因为之前的C基础,比较容易上手,所以最后程序是用C程序编写。

这样来不仅进一步增强了自己对单片机的兴趣,也让自己对单片机的认识又有新的提高。

在经过后面的查阅,知道单片机深入我们生活的方方面又让我“一定要学好单片机”的念头更深了。

虽然此次的选题难度并不大,但是就是这样一个简单的题目却让我明白“纸上得来终觉浅”的深刻意义。

经过一次次的修改程序和软件调试,使我了解了KEILC和PROTUES软件的使用,为日后自己主动地去设计一些东西打下了基础。

在设计硬件部分时,动手能力的确得加强,很感谢同学的无私帮忙和耐心协助才得以电路板一次成功,让我明白合作总比一个人无谓的单干要好的多。

当然在此期间也出现了不少问题,如:

1.在写程序的时候,中断的灵活使用掌握不是很好;

2.焊电路板时一开始没有焊接液晶1602的调背光电阻,使得显示效果不是很好。

但这些问题最后都迎刃而解,让我知道查阅资料的重要性。

通过此次课程设计,我们懂得不管做什么事都要有恒心,只要坚持一切都会会实现的。

让我了解了1602的基本知识和使用方法,激发了强烈的兴趣,也重新让我温习了下WORD的使用。

感谢老师的教导,感谢同学的帮助。

参考文献

[1]陈权昌,李兴富.单片机原理及应用.广州:

华南理工大学出版社,2007.8

[2]李庆亮.C语言程序设计实用教程.北京:

机械工业出版社,2005.3

[3]王艳春现代通信综合实验教程哈尔滨工业大学出版社2011.7

[4]刘宁.单片机多功能时钟的设计.浙江:

浙江海洋学院,2009.

[5]汪文,陈林.单片机原理及应用.湖北:

华中科技大学出版社,2007.

[6]康华光.电子技术基础数字部分.北京:

高等教育出版社,2008.

[7]杨欣.电子设计从零开始.北京:

清华大学出版社,2005.

[8]唐勇.基于单片机的电子钟的设计.湖南:

湖南工学院,2007.

附录

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

#defineKEY_IOP3

//#defineLCD_IOP0

sbitLCD_RS=P2^0;

sbitLCD_RW=P2^1;

sbitLCD_EN=P2^2;

sbitSPK=P1^2;

sbitLED=P2^4;

bitnew_s,modify=0;

chart0,sec=50,min=59,hour=23;

charcodeLCD_line1[]="

DesignedbyZELD"

;

charcodeLCD_line2[]="

Timer:

00:

00:

00"

charTimer_buf[]="

23:

59:

50"

//---------------------------------------------------

voiddelay(uintz)

{

intx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

/*voidW_LCD_Com(ucharcom)//写指令

{

LCD_RS=0;

P0=com;

//LCD_RS和R/W都为低电平时,写入指令LCD_EN=1;

delay(5);

LCD_EN=0;

//用EN输入一个高脉冲

}//************************/

voidW_LCD_Com(ucharcom)

LCD_RS=0;

P0=com;

//P1

LCD_EN=1;

LCD_EN=0;

}

/*voidW_LCD_Dat(uchardat)//写数据

LCD_RS=1;

P0=daLCD_ENt;

//LCD_RS为高、R/W为低时,写入数据LCD_EN=1;

}*/

voidW_LCD_Dat(uchardat)

LCD_RS=1;

P0=dat;

voidW_LCD_STR(uchar*s)//写字符串

while(*s)W_LCD_Dat(*s++);

}//---------------------------------------------------

voidW_BUFF(void)//填写显示缓冲区

Timer_buf[7]=sec%10+48;

Timer_buf[6]=sec/10+48;

Timer_buf[4]=min%10+48;

Timer_buf[3]=min/10+48;

Timer_buf[1]=hour%10+48;

Timer_buf[0]=hour/10+48;

W_LCD_Com(0xc0+7);

W_LCD_STR(Timer_buf);

}

ucharread_key(void)

ucharx1,x2;

KEY_IO=255;

x1=KEY_IO;

if(x1!

=255){

delay(100);

x2=KEY_IO;

=x2)return255;

while(x2!

=255)x2=KEY_IO;

if(x1==0x7f)return0;

elseif(x1==0xbf)return1;

elseif(x1==0xdf)return2;

elseif(x1==0xef)return3;

elseif(x1==0xf7)return4;

return255;

voidInit()

LCD_RW=0;

W_LCD_Com(0x38);

delay(50);

W_LCD_Com(0x0c);

W_LCD_Com(0x06);

W_LCD_Com(0x01);

W_LCD_Com(0x80);

W_LCD_STR(LCD_line1);

W_LCD_Com(0xC0);

W_LCD_STR(LCD_line2);

TMOD=0x01;

//T0定时方式1

TH0=0x4c;

TR0=1;

//启动T0

PT0=1;

//高优先级,以保证定时精度

ET0=1;

EA=1;

voidmain()

uinti,j;

ucharKey;

Init();

while

(1){

//-------------------------------

if(new_s){//如果出现了新的一秒,修改时间

new_s=0;

sec++;

sec%=60;

if(!

sec){min++;

min%=60;

min){hour++;

hour%=24;

W_BUFF();

//写显示

if(!

sec&

&

!

min){//整点报时

for(i=0;

i<

200;

i++){

SPK=0;

for(j=0;

j<

100;

j++);

SPK=1;

}}

Key=read_key();

//读出按键

switch(Key){//分别处理四个按键

case0:

modify=1;

break;

case1:

if(modify){min++;

W_BUFF();

}

case2:

if(modify){hour++;

}case3:

modify=0;

voidtimer0(void)interrupt1//T0中断函数,50ms执行一次

{

t0++;

t0%=20;

//20,一秒钟

if(t0==0){new_s=1;

LED=~LED;

if(modify)LED=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2