基于AVR128单片机世界电子时钟的设计

一、系统方案
上电初始化完成系统初始化,液晶滚动显示北京、莫斯科、东京、伦敦、巴黎、纽约等六个城市的标准时间,显示的内容包括地区名及相应地区的年、月、日、星期、时、分、秒。
使用K1按键控制滚动显示或稳定显示某个地区的时间。
使用K3、K4、K5按键可进行时间和日期的设定。在进行年、月、日、时、分、秒的调整时,被选中的调节对象能闪烁显示。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述
三、单片机软件设计
1、首先是系统初始化
unsigned char set_mode=0;
short time_offset=0;
unsigned char last_display_flag;
unsigned char i =0,set_obj=0;
CLI(); //disable all interrupts
PORTA = 0xFF;
DDRA = 0x00;//输入
PORTB = 0xFF;//低电平
DDRB = 0x00;//输入
PORTC = 0xFF;//低电平
DDRC = 0xFF;//输出
PORTE = 0xFF;
DDRE = 0xff;//输出
PORTD = 0xff;
DDRD = 0xFF;//输出
PORTD = 0xff;
PORTF = 0xFF;
DDRF = 0xFF;//输出
PORTG = 0xFF;
DDRG = 0xFF;//输出

LCD12864_Init();XDIV  = 0x00; //xtal divider
XMCRA = 0x00; //external memory
MCUCR = 0x00;
TCCR0 = (1<<CS02)|(1<<CS01);//T/C0工作于定时方式,系统时钟256分频
TCNT0 = 0x00;    //计数初值
TIMSK = 0x11; //timer interrupt sources
SEI();  //使能全局中断 //initial_ds1302();

2、液晶显示程序

void SendCommand(unsigned char command)
{
CheckState();
LGM12864_CLR_RS;
LGM12864_CLR_RW;
LCDa_DO = command;
delay_nus(2);
LGM12864_SET_EN;
delay_nus(2);
LGM12864_CLR_EN;
}

unsigned char LCD12864_RecData()
{
unsigned char temp;
CheckState();
LGM12864_SET_RS;
LGM12864_SET_RW;
LGM12864_SET_EN;
temp=LCDa_DI;
LGM12864_CLR_EN;

return (temp);

}
3、按键程序
if((PINA&0x01) == 0x00)
{
delay_nms(50);
while((PINA&0x01) == 0x00);
work_mode++;
if(work_mode>2)
{
work_mode = 0;
}
}
else if((PINA&0x02) == 0x00)
{
delay_nms(50);
while((PINA&0x02) == 0x00);
display_flag++;
if(display_flag>7)
{
display_flag=0;
}
}
else if((PINA&0x04) == 0x00)
{
delay_nms(50);
while((PINA&0x04) == 0x00);
work_mode=2;
display_flag=1;
set_obj++;
if(set_obj>8)
{
//work_mode=0;
set_obj=0;
initial_ds1302();
}
}
else if((PINA&0x08) == 0x00)
{
delay_nms(50);
while((PINA&0x08) == 0x00);
set_mode++;
if(set_mode>=2)
{
set_mode=0;
}
}
4、核心算法程序
if((display_flag != last_display_flag)||(work_mode0x02)||(work_mode0x01))
{
last_display_flag = display_flag;
if(display_flag==0)
{
LCD12864_Show_16_16(3,0,Title_Font_Arrary[0]);
LCD12864_Show_16_16(4,0,Title_Font_Arrary[1]);
LCD12864_Show_16_16(5,0,Title_Font_Arrary[2]);
}
else
{
LCD12864_Show_16_16(3,0,Title_Font_Arrary[3+(display_flag-1)*2]);
LCD12864_Show_16_16(4,0,Title_Font_Arrary[3+(display_flag-1)*2+1]);
LCD12864_Show_16_16(5,0,Title_Font_Arrary[13]);
}
ds1302_dec_data.second = H_D(ds1302_data.second);
ds1302_dec_data.minute = H_D(ds1302_data.minute);
ds1302_dec_data.hour = H_D(ds1302_data.hour)+time_offset;
ds1302_dec_data.week = H_D(ds1302_data.week);
ds1302_dec_data.day = H_D(ds1302_data.day);
ds1302_dec_data.month = H_D(ds1302_data.month);
ds1302_dec_data.year = H_D(ds1302_data.year);

		LCD12864_Show_8_16(0,1,Number_Font_Arrary[2]);LCD12864_Show_8_16(1,1,Number_Font_Arrary[0]);for(i=0;i<3;i++){LCD12864_Show_8_16(2+i*3,1,Number_Font_Arrary[(*(&ds1302_dec_data.year+i))/10%10]);LCD12864_Show_8_16(3+i*3,1,Number_Font_Arrary[(*(&ds1302_dec_data.year+i))%10]);if(i!=2)LCD12864_Show_8_16(4+i*3,1,TIME_Font_Arrary[0]);}for(i=0;i<3;i++){LCD12864_Show_8_16(0+i*3,2,Number_Font_Arrary[(*(&ds1302_dec_data.hour+i))/10%10]);LCD12864_Show_8_16(1+i*3,2,Number_Font_Arrary[(*(&ds1302_dec_data.hour+i))%10]);if(i!=2)LCD12864_Show_8_16(2+i*3,2,TIME_Font_Arrary[0]);}LCD12864_Show_8_16(0,3,Number_Font_Arrary[ds1302_dec_data.week/10%10]);LCD12864_Show_8_16(1,3,Number_Font_Arrary[ds1302_dec_data.week%10]);if(set_obj>0){delay_nms(200);if(set_obj<=0x03){LCD12864_Show_Anti_White_8_16(2+(set_obj-1)*3,1,Number_Font_Arrary[(*((unsigned char*)&ds1302_dec_data.year+set_obj-1))/10%10]); LCD12864_Show_Anti_White_8_16(3+(set_obj-1)*3,1,Number_Font_Arrary[(*((unsigned char*)&ds1302_dec_data.year+set_obj-1))%10]); }else if(set_obj<=0x04)	{LCD12864_Show_Anti_White_8_16(0,3,Number_Font_Arrary[ds1302_dec_data.week/10%10]); LCD12864_Show_Anti_White_8_16(1,3,Number_Font_Arrary[ds1302_dec_data.week%10]); }else if(set_obj<=0x07){LCD12864_Show_Anti_White_8_16(0+(set_obj-5)*3,2,Number_Font_Arrary[(*((unsigned char*)&ds1302_dec_data.year+set_obj-1))/10%10]); LCD12864_Show_Anti_White_8_16(1+(set_obj-5)*3,2,Number_Font_Arrary[(*((unsigned char*)&ds1302_dec_data.year+set_obj-1))%10]); }}}//}

四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/49213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Q/GDW 1597-2015《国家电网公司应用软件系统通用安全要求》

电力安全测试报告 电力行业检测标准 随着信息技术的快速发展和广泛应用&#xff0c;应用软件系统已成为企业信息化建设中不可或缺的重要组成部分。然而&#xff0c;应用软件系统的安全问题也随之而来&#xff0c;给企业和用户带来了潜在的风险和威胁。为了提高应用软件系统的…

信息与通信工程面试准备——信号与系统|10:23

8月16日 23:21 目录 ​编辑 1. 调制的作用 2. 放大器与振荡器的作用和区别 工作原理 输出信号 应用 反馈方式 设计复杂度 装置性质 3. 信号与系统&#xff1a;三大变换之间的关系&#xff1f; 4. 无码间串扰的条件 5. 冲激函数的作用&#xff1f; 研究的意义&…

Docker容器:docker数据管理、镜像的创建及dockerfile案例

文章目录 一、docker数据管理1.为何需要docker数据管理2.数据管理类型3.数据卷4.数据卷容器5.容器的互联 二.docker镜像的三种创建方法1.基于现有镜像创建1.1 启动镜像1.2 生成新镜像 2.基于本地模板创建2.1 OPENVZ 下载模板2.2 导入容器生成镜像 3.基于dockerfile创建3.1 dock…

Code Lab - 2

pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.10.2cu102.html pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.10.2cu102.html pip install torch-geometric pip install ogb 1. PyG Datasets PyG有两个类&#xff0c;用…

【Unity每日一记】SceneManager场景资源动态加载

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

elementui 修改日期选择器el-date-picker样式

1. 案例&#xff1a; 2. css /* 最外层颜色 */ .el-popper.is-pure {background: url("/assets/imgList/memuBG.png") no-repeat;border: none;background-size:100% 100%}/* 日期 1.背景透明 */ .el-date-picker{background: transparent; }/* 日期 2.标题、左右图…

关于css 的选择器和 css变量

css 选择器 常用的选择器 1. 后代选择器&#xff1a;也就是我们常见的空格选择器&#xff0c;选择的对象为该元素下的所有子元素 。例如&#xff0c;选择所有 元素下的 元素 div p{font-size:14px}2. 子元素选择器 ‘>’ 选择某元素下的直接子元素。例如&#xff0c;选择所…

Java算法_ BST 中第 k 个最小元素 (LeetCode_Hot100)

题目描述&#xff1a;给定一个二叉搜索树的根节点 &#xff0c;和一个整数 &#xff0c;请你设计一个算法查找其中第 个最小元素&#xff08;从 1 开始计数&#xff09;。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Aut…

LeetCode150道面试经典题-- 二叉树的最大深度(简单)

1.题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 2.示例 3.思路 深度优先遍历 一个二叉树要查询到最大深度&#xff0c;可以将问题转为从根节点出发&#xff0c;查看左右子树的最大深度&am…

基于swing的教务管理系统java jsp学生教师信息mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的教务管理系统 系统有3权限&#xff1a;管…

c++ qt--信号与槽(一) (第三部分)

c qt–信号与槽(一) &#xff08;第三部分&#xff09; 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明&#xff0c;在mainwindow.cpp中添加槽函数的定义 在mainwindow…

伦敦银和伦敦金的区别

伦敦银河伦敦金并称贵金属交易市场的双璧&#xff0c;一般投资贵金属的投资者其实不是交易伦敦金就是交易伦敦银。相信经过一段时间的学习和投资&#xff0c;不少投资者都能分辨二者的区别。下面我们就来谈谈伦敦银和伦敦金有什么异同&#xff0c;他们在投资上是否有差别。 交易…

vue与vueComponent的关系

创建完组件之后 就会创建一个vueComponent构造函数 当注册成功这个组件并且在页面使用之后 就会创建一个vueComponent实例对象&#xff0c; 所以为了避免组件在使用过程中data对象中的值混乱 组件中的data要写成函数&#xff0c; 使得每次创建的组件实例对象都可以返回一…

Sui第四轮资助:16个团队瓜分

近日&#xff0c;Sui基金会公布了第四轮开发者资助名单&#xff0c;受助项目均是集中在DeFi、支付、基础设施、游戏、预言机等领域的Sui生态项目&#xff0c;他们是从2023年7月1日之前提交的申请中选出的。在此时间之后提交的任何项目目前正在审查中。 在前三轮资助中累积发放…

Linux存储学习笔记

相关文章 Linux 存储系列&#xff5c;请描述一下文件的 io 栈&#xff1f; - tcpisopen的文章 - 知乎 https://zhuanlan.zhihu.com/p/478443978 深入学习 Linux 操作系统的存储 IO 堆栈 - KaiwuDB的文章 - 知乎 https://zhuanlan.zhihu.com/p/636720297 linux存储栈概览 - st…

2023 Android 折叠屏适配详解,是时候点亮新技能了

自 2019 年三星发布了第一台&#xff08;柔宇不算&#xff09; Galaxy Z Fold 之后&#xff0c;Android 厂商们都陆续跟进了各自的可折叠方案&#xff0c;之后折叠屏手机市场一直保持快速增长&#xff0c;例如 2023 年上半年整体销量 227 万台&#xff0c;同比增长 102.0%。 虽…

pytorch 入门1-tensor 广播 view reshape

tensor 的四则运算broadcast import torch import numpy as np # 张量tensor 随机初始化 x torch.rand(4,3) print(x) y torch.randn(4,3) print(y)# 初始化全零 张量 a torch.zeros((4,4),dtypetorch.long) print(a) #初始化全一 张量 b torch.ones(4,4) print(b) c tor…

Spring相关知识

0、Spring的核心就是AOP和IOC IOC&#xff1a; AOP&#xff1a;AOP&#xff08;Aspect Oriented Programming&#xff09;是面向切面编程&#xff0c;它是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&#xff09;的一种补充。面向对象编程将程序抽象成各个层次的…

5、css学习5(链接、列表)

1、css可以设置链接的四种状态样式。 a:link - 正常&#xff0c;未访问过的链接a:visited - 用户已访问过的链接a:hover - 当用户鼠标放在链接上时a:active - 链接被点击的那一刻 2、 a:hover 必须在 a:link 和 a:visited 之后&#xff0c; a:active 必须在 a:hover 之后&…

【广州华锐互动】VR工厂消防安全演习提供了一种全新、生动的安全教育方式

在工业生产环境中&#xff0c;安全永远是首要的考虑因素。近年来&#xff0c;随着科技的发展&#xff0c;虚拟现实(VR)技术在各种领域的应用越来越广泛&#xff0c;包括教育和培训。其中&#xff0c;VR工厂消防安全演习就是一个典型的例子&#xff0c;它为员工提供了一种全新的…