- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子闹钟的控制系统设计
基于atmega16单片
一、设计目的
此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力,以及一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题目的分析与设计,达到技术性能要求。
二、设计要求
1、能显示时时-分分-秒秒。
2、能够设定定时时间、修改定时时间。
3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。
三、设计的总体结构
3.1 整体设计思路
利用Mega16单片机内部时钟作为时间基准,通过软件编程控制可编程器件Mega16单片机,实现秒,分,时,日,月,年的控制,最终通过LCD液晶显示屏显示结果。此外还可以实现时间调整 ,定时多种实用功能,整个设计分硬件和软件俩大部分。硬件部分采用Mega16单片机作为可编程芯片,1602字符液晶作为信号显示;软件部分利用C语言作为设计语言,对Mega16进行编程实现各种功能
3.3软件设计
各部分电路设计
主电路主要就是芯片的运行,加载程序后,在外部时钟的作用下,将按照程序运行,从而可以实现设计的要求,进行时钟时间和定时时间的调整,并且能够在到达定时时间后控制蜂鸣器发出声响。利用仿真仿真软件画出的电路图
1, 显示电路
显示电路即可以让我们看到时间的调整和定时时间的调整,显示调整后的时间。
2仿真电路的总体原理框图
3.3软件设计
软件的设计思路框图
四,C语言程序设计
#include
#define uchar unsigned char
#define uint unsigned int
sbit spk=P1^7;
sbit led=P1^5;
sbit DQ=P1^0;
sbit RS=P2^4;
sbit RW=P2^5;
sbit EN=P2^6;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit IO=P3^6;
sbit RST=P3^7;
sbit SCLK=P3^5;
uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
int nian,xing,yue,ri,shi,fen,miao;
uchar num,temp,c,d,time[7],a,b,aa,bb,ns,ng,ys,yg,rs,rg,ss,sg,fs,fg,ms,mg,flag;
/*******************1602************************/
void delay(int z)
{
int x,y;
for(x=z;x0;x--)
for(y=100;y0;y--);
}
void write_com(uchar com) //写命令
{
RS=0;
P0=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
void write_data(uchar date) //写数据
{
RS=1;
P0=date;
delay(5);
EN=1;
delay(5);
EN=0;
}
void init() //初始化
{
RW=0;
EN=0;
write_com(0x38); //显示模式设置
write_com(0x0c); //开显示 不显示光标 不闪
write_com(0x06); //写一个字符 地址指针 光标 加一 整屏不移动
write_com(0x01); //显示清零
write_com(0x80+0x04);
write_data(2);
write_com(0x80+0x05);
write_data(0);
write_com(0x80+0x00);
write_data(c);
write_com(0x80+0x01);
write_data(a);
write_com(0x80+0x02);
write_data(i);
write_com(0x80+0x4e);
write_data(0xdf);
write_com(0x80+0x4f);
write_data(C);
write_com(0x80+0x4b);
write_data(0x2e); //显示。
}
/**************DS18B20****************/
void
文档评论(0)