张家庆现代电子系统设计综合实习.docx
- 文档编号:29408007
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:45
- 大小:318.35KB
张家庆现代电子系统设计综合实习.docx
《张家庆现代电子系统设计综合实习.docx》由会员分享,可在线阅读,更多相关《张家庆现代电子系统设计综合实习.docx(45页珍藏版)》请在冰豆网上搜索。
张家庆现代电子系统设计综合实习
张家庆现代电子系统设计综合实习
CHANGSHAUNIVERSITYOFSCIENCE&TECHNOLOGY
现代电子系统设计综合实习
题目:
电子时钟
学生姓名:
张家庆
学号:
202157050113
班级
:
电子1201
专业:
电子信息工程
指导教师:
贺科学范必双袁志辉
名目
2.2AT89C52单片机模块3
1电子时钟简介
1.1电子时钟概念
电子钟是一种利用数字电路来显示的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
随着人们生活环境的不断改善和美化,在许多场合能够看到数字电子钟。
1.3电子时钟的设计要求
本课题的要紧内容是采纳单片机实现一个简单的带闹钟定时功能的电子时钟,通过那个实习进一步加深«C语言程序设计»、«单片机原理及应用»等相关课程中的理论知识,熟练把握单片机的编程、调试和应用系统的开发。
具体任务要求:
1、显示〝时.分〞进行显示,例如〝12.18〞,其中小数点每秒闪耀一次。
2、能够校正时刻的时和分,按键分为5个功能键
〔1〕设定键:
在计时模式时,按下此键时停止计时,进入设置状态,并切换到分钟的设置状态,再按一次切换到小时的设置状态,每按下一次完成时.分设置的切换,用点亮时.分个位的数码管小数点表示分或秒处于设置状态。
在闹钟时刻设定状态时,按下此键同样进入设置状态,完成分、秒设置的切换。
〔2〕递增键:
在设置状态时,按一次递增键,被设置的分钟数字或时钟数字增1,连续按下数字自动增1。
〔3〕递减键:
在设置状态时,按一次递减键,被设置的分钟数字或时钟数字减1,连续按下数字自动增1。
〔4〕计时键:
在设置状态或闹钟时刻设定状态时,按下此键那么单片机切换到计时的显示模式,按照新的时.分设置值进行计时。
假如差不多在计时状态那么此键无效。
〔5〕闹钟键:
在计时模式时,按下此键那么单片机切换到闹钟时刻设定状态的显示模式。
等待〝设定键〞、〝递增键〞、〝递减键〞来设定分钟和秒钟。
3、当计时到闹钟设定时刻,用发光二极管闪耀,十秒钟后终止闪耀,正常计时。
发挥部分:
用掉电不丢失的24C01储备闹钟时刻,用音乐作为闹铃
2操纵系统的硬件设计
2.1硬件电路的总体框图
总体电路是以单片机为要紧操纵器,操纵LCD液晶屏来显示数字时刻,同时LED灯的闪耀和蜂鸣器的蜂鸣也受其操纵,更据具有检测扫描按键电路,并向24C02储备芯片读取和写入数据的作用。
·
图2.1总体框图
2.2AT89C52单片机模块
AT89C52为8位通用微处理器,采纳工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其要紧用于会聚调整时的功能操纵。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整操纵,会聚测试图操纵,红外遥控信号IR的接收解码及与主板CPU通信等。
要紧管脚有:
XTAL1〔19脚〕和XTAL2〔18脚〕为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd〔9脚〕为复位输入端口,外接电阻电容组成的复位电路。
VCC〔40脚〕和VSS〔20脚〕为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口〔32~39脚〕被定义为N1功能操纵端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线操纵端口,分别连接N1的SDAS〔18脚〕和SCLS〔19脚〕端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的操纵功能。
图2.2AT89C52单片
各引脚说明:
Vcc:
电源电压
GND:
接地
P0:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸取电流的方式驱动8个TTL逻辑门电路,对端口P0写〝1〞时,可作为高阻抗输入端用。
在访问外部数据储备器或程序储备器时,这组口线分时转换地址〔低8位〕和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动〔吸取或输出电流〕4个TTL逻辑门电路。
对端口写〝1〞,通过内部的上拉电阻把端口拉到高电平,现在可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动〔吸取或输出电流〕4个TTL逻辑门电路。
对端口P2写〝1〞,通过内部的上拉电阻把端口拉到高电平,现在可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序储备器或16位地数据储备器〔例如执行MOVX@DPTR指令〕时,P2口送出高8位地址数据。
在访问8位地址的外部数据储备器〔如执行MOVX@RI指令〕时,P2口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些操纵信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸取或输出电流〕4个TTL逻辑门电路。
对P3口写入〝1〞时,它们被内部上拉电阻拉高并可作为输入端口。
P3口除了作为一样的I/0口线外,更重要的用途是它的第二功能,RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平常刻。
ALE/PROG:
当访问外部储备器时,地址锁存承诺的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平常,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
PSEN:
外部程序储备器的选通信号。
在由外部程序储备器取址期间,在每个机器周期会动作两次。
但在访问外部数据储备器时,这两次有效的PSEN信号将不显现。
EA/VPP:
当EA接高电平常,单片机读取内部程序储备器。
当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。
EA接低电平常,单片机直截了当读取外部〔ROM〕。
因为现在我们使用的单片机都有内部ROM,因此在设计电路时此引脚始终接高电平。
2.3液晶屏显示模块
本设计使用的是1602液晶屏。
其屏由5V电压驱动,带背光,可显示两行,每行16个字符,不显示汉字内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。
图2.31602液晶屏
1602字符型液晶屏各接口信号如表2-1所示:
表2-1
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据口
2
VDD
电源正极
10
D3
数据口
3
VO
液晶显示对比度调剂端
11
D4
数据口
4
RS
数据/命令选择端〔H/L〕
12
D5
数据口
5
R/W
读写选择端〔H/L〕
13
D6
数据口
6
E
使能信号
14
D7
数据口
7
D0
数据口
15
BLA
背光电源正极
8
D1
数据口
16
BLK
背光电源复极
在与单片机相连时,8个数据口直截了当与P0口相连,同时必须接上上拉电阻。
RS端与单片机的P3.5口相连,E端与单片机的P3.4口相连,因为电子时钟不向液晶读取任何数据,只向其写入命令和显示数据,因此R/W端始终为写状态,直截了当接地。
当在1602液晶屏第一行的00H-0FH、第二行的40H-4FH地址中任一处写入显示数据时,液晶都赶忙能显示出来。
2.4储备芯片模块
串行E2PROM是基于I2C-BUS的储备器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器外表及工业自动化操纵中得到大量的应用。
图2.424C02与单片机的接线
其各接口功能:
A0,A1,A2为器件地址线,WP为写爱护引脚,SCL,SDA为二线串行接口,与单片机直截了当相连,符合I2C总线协议。
在进行操作时,需要进行总线初始化、启动信号、应答信号、停止信号、写字节、读字节等操作。
2.5蜂鸣器模块
在电路中,蜂鸣器的一端接电源,一段与单片机FM端相连,当FM端为低电平常P1.7口也同时为低电平。
现在,由于二极管的一段为高电平而另一端为低电平,便致使LED灯亮,同时蜂鸣器的FM端为低电平而蜂鸣器发出响声。
图2.5蜂鸣器
2.6键盘电路设计
此电子时钟共有五个按键,设定键〔S1〕、增大键〔S2〕、减小键〔S3〕、闹钟键〔S5〕和计时键〔S4〕。
图2.6矩阵键盘和独立按键
2.7晶振电路模块
晶振电路是驱动单片机和操纵中断的重要部分,它是由一个11M的晶振和两个30pF的电容组成。
图2.6晶振电路
3操纵系统的软件设计
3.1软件的总体流程图
程序采纳定时器0进行50ms的定时,通过20次的溢出为一秒,进行时刻的刷新显示。
图3.1总体流程图
3.2液晶屏
RS操纵写数据依旧写命令。
RS=1;写数据。
RS=0,写命令。
R/W是读/写选择。
R/W=1,读。
R/W=0,写。
RS=1,R/W=0,写数据。
RS=0,R/W=0,写命令。
E端为使能端,当E端由高电平跳变成低电平常,液晶模块执行命令。
图3.21602液晶屏流程图
液晶屏操作程序:
voidwrite_com(ucharcom)
{
lcden=0;
rs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)
{
lcden=0;
rs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
3.3键盘扫描
本设计的电子时钟共有五个键,设定键〔S1〕、增大键〔S2〕、减小键〔S3〕、闹钟键〔S5〕和计时键〔S4〕,由4*4矩阵键盘的最后一列〔四个〕、独立按键其中的一个提供。
图3.3键盘扫描流程图
3.4蜂鸣器
有键按下时蜂鸣器蜂鸣,到达整点时蜂鸣器蜂鸣十秒,闹钟时刻到达时,蜂鸣器蜂鸣十秒,同时二极管闪耀十秒。
voiddi()
{
beep=0;
delay(100);
beep=1;
}
if((shi==nshi)&&(fen==nfen)&&(miao==0))
{
for(i=1;i<=200;i++)
{
d8=~d8;
beep=~beep;
delay(50);
};
d8=1;
beep=1;
}
if((fen==0)&&(miao==0))
{
for(i=1;i<=200;i++)
{
beep=~beep;
delay(50);
};
beep=1;
}
3.5储备芯片
在进行操作时,需要进行总线初始化、启动信号、应答信号、停止信号、写字节、读字节等操作。
voidwrite_add(ucharaddress,uchardate)
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
charread_add(ucharaddress)
{
uchardate;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
returndate;
}
3.6软件仿真结果
在Proteus中把原理图画好,在单片机中添加程序的hex文件,点击开始仿真,仿真结果如下:
图3.4Proteus仿真图
图3.5开发板时刻
4实习总结
在写报告的时候,差不多是实习设计的最后2天了,14天的从零到有做了许许多多的情况。
在实习的前几天进行资料的查询和收集,再将其整合在一起,形成完善的设计方案,然后在已有的知识储备的基础上进行加深和巩固,做到能够较为具体地把握整个设计模块的各部分功能,并能进行基础的软件编写。
前一周的时刻是最为重要的时刻,因为软件的编写是这次实习的难点,攻克这道难关是需要韧性和聪慧的。
将各个部分的软件分别编写出来便是一个不小的挑战了,而后又要将各个模块的软件设计按照一定的逻辑顺序串连起来,便要求对整个设计目的和框架有充分的认识。
不管是用C语言依旧C++语言,关于我来说真心死了专门多的脑细胞啊。
接下来的一周便是较为轻松的一周了,在上次课程设计中便使用了proteus软件了,因此这是第2次使用这软件了,假如还不轻松的话,那确实确实是前一个课程设计没有认真了。
一日将晶振模块和蜂鸣器模块的仿真图画好,再花了一日的时刻将单片机、扫描键盘、和显示器模块的仿真图画好。
紧接着自然而然便是将各模块来连接起来。
在讲仿真图画好后,便是导入程序到芯片当中,便开始仿真了。
第一次仿真并非完全成功的,在闹钟模块出了些许的问题,这便需要改程序了,真是件苦恼的情况,改了程序后再进行仿真,如此的流程循坏了多次,终于成功了,在成功的那一刻,内心面确实专门兴奋。
总的来说,此次实习确实充满了艰辛和汗水,但在自己成功地完成自己的作品时,就感受一切差不多上值得的了,在此十分感谢老师的指导和同学们的热情关心。
参考文献
[1]李鸿等.单片机原理及应用[M].湖南大学出版社,2005.
[2]何立民.单片机高级教程---应用与设计[M].北京航空航天大学出版社,2000,8.
[3]戴佳.51单片机C语言应用程序设计实例精讲[M].北京:
电子工业出版社,2006.
[4]于京. 51系列单片机C程序设计与应用案例[M].北京:
中国电力出版社,2006.
[5]孙育才. ATMEL新型AT89S52系列单片机及其应用[M].北京:
清华大学出版社,2005.
[6]李华.MCS-51系列单片机有用接口技术[M].北京:
北京航空航天大学出版社,2000.
附录A硬件电路原理图
附录B源程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdula=P2^6;//定义锁存器锁存端
sbitwela=P2^7;
sbitrs=P3^5;//定义1602液晶Rs端
sbitlcden=P3^4;//定义1602液晶LCDEN端
sbits1=P3^0;//功能键
sbits2=P3^1;//增大键
sbits3=P3^2;//减小键
sbits4=P3^6;//计时键
sbits5=P3^3;//闹钟键
sbitrd=P3^7;//矩阵列
sbitd8=P1^7;//LED灯
sbitbeep=P2^3;//蜂鸣器
bitwrite=0;
sbitsda=P2^0;
sbitscl=P2^1;
ucharcount,s1num,i,sta=0;
charmiao,shi,fen,nmiao,nfen,nshi;
ucharcodetable[]="CSUSTCLOCK";//液晶屏第一行显示的内容
voiddelay0()//超短延时程序
{;;}
voidstart()//24C02启动信号
{
sda=1;
delay0();
scl=1;
delay0();
sda=0;
delay0();
}
voidstop()//24C02停止信号
{
sda=0;
delay0();
scl=1;
delay0();
sda=1;
delay0();
}
voidrespons()//24C02应答信号
{
uchari;
scl=1;
delay0();
while((sda==1)&&(i<250))i++;
scl=0;
delay0();
}
voidinit_24c02()//初始化24C02
{
sda=1;
delay0();
scl=1;
delay0();
}
voidwrite_byte(uchardate)//写字节
{
uchari,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay0();
sda=CY;
delay0();
scl=1;
delay0();
}
scl=0;
delay0();
sda=1;
delay0();
}
ucharread_byte()//读字节
{
uchari,k;
scl=0;
delay0();
sda=1;
delay0();
for(i=0;i<8;i++)
{
scl=1;
delay0();
k=(k<<1)|sda;
scl=0;
delay0();
}
returnk;
}
voidwrite_add(ucharaddress,uchardate)//向24C02写入数据
{
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
charread_add(ucharaddress)//读取24C02的数据
{
uchardate;
start();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start();
write_byte(0xa1);
respons();
date=read_byte();
stop();
returndate;
}
voiddelay(uintz)//延时毫秒的程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=112;y>0;y--);
}
voiddi()//蜂鸣器蜂鸣
{
beep=0;
delay(100);
beep=1;
}
voidwrite_com(ucharcom)//液晶屏写命令
{
lcden=0;
rs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_date(uchardate)//液晶屏写数据
{
lcden=0;
rs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
voidwrite_sfm(ucharadd,chardate)//写时刻,2位一起写
{
ucharshi,ge;
shi=date/10;//分解一个2位数的十位
ge=date%10;//分解一个2位数的个位
write_com(0x80+0x40+add);//设置显示位置
write_date(0x30+shi);//送去液晶显示十位
write_date(0x30+ge);//送去液晶显示个位
}
voidinit()//初始化函数
{
ucharnum;
rd=0;//将矩阵键第四列一端置低以分解出独立按键
dula=0;//关闭两锁存器锁存端,防止操作液晶时数码管乱码
wela=0;
lcden=0;
fen=0;//初始化分钟秒钟时钟变量
miao=0;
shi=12;
nmiao=0;//初始化闹钟的时分秒
nfen=0;
nshi=7;
count=0;//计数器清0
s1num=0;//按键次数清0
init_24c02();
write_com(0x38);//初始化1602液晶屏
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)//在第一行显示〔USCSTCLOCK〕
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40+6);//在第二行显示时钟与分钟间的冒号
write_date(':
');
delay(5);
write_com(0x80+0x40+9);//分钟与秒钟间的冒号
write_date(':
');
delay(5);
nmiao=read_add
(1);//上电时读取24C02中闹钟的时刻
nfen=read_add
(2);
nshi=read_add(3);
write_sfm(10,miao);//把初始时刻显示在液晶屏上
write_sfm(7,fen);
write_sfm(4,shi);
TMOD=0x01;//设置定时器0工作模式1
TH0=(65536-45872)/256;//定时器装初值
TL0=(65536-45872)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器
}
voidkeyscan()
{
ucharmiaoshi,miaoge,fenshi,fenge,shishi,shige;
ucharnmiaoshi,nmiaoge,nfenshi,nfenge,nshishi,nshige;
if(s4==0)
{
delay(5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 张家庆 现代 电子 系统 设计 综合 实习