当前位置: 首页 > news >正文

基于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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

相关文章:

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

一、系统方案 上电初始化完成系统初始化&#xff0c;液晶滚动显示北京、莫斯科、东京、伦敦、巴黎、纽约等六个城市的标准时间&#xff0c;显示的内容包括地区名及相应地区的年、月、日、星期、时、分、秒。 使用K1按键控制滚动显示或稳定显示某个地区的时间。 使用K3、K4、K5按…...

Electron学习2 使用Electron-vue和Vuetify UI库

Electron学习2 使用Electron-vue和Vuetify UI库 一、Electron-vue简介二、安装yarn三、创建Electron-vue项目1. 关于 electron-builder2. 安装脚手架3. 运行4. 打包应用程序 四、background.js说明1. 引入模块和依赖&#xff1a;2. 注册协议&#xff1a;3. 创建窗口函数&#x…...

Java“牵手”根据商品分类ID获取速卖通商品分类详情页面数据获取方法,速卖通API实现批量商品数据抓取示例

速卖通商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取速卖通商品分类详情和商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问速卖通商城的网页来获取商品分类详情信息。以下…...

QT 使用图表

目录 1、概念 1.1 坐标轴-QAbstractAxis 1.2 系列-QAbstractSeries 1.3 图例-Legend 1.4 图表-QChart 1.5 视图-QChartView 2、 QT 折线图 2.1 Qt 折线图介绍 2.2 Qt 折线图实现 Qt 图表是专门用来数据可视化的控件 Qt 图表包含折线、饼图、棒图、散点图、范围图等。…...

SSRF 服务器端请求伪造

文章目录 SSRF(curl)网址访问通过file协议访问本地文件dict协议扫描内网主机开放端口 SSRF(file_get_content)网站访问http协议请求内网资源通过file协议访问本地文件 SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用…...

shell 05(shell索引数组变量)

一、数组 shell 支持数组 (Array)&#xff0c;数组是若干数据的集合&#xff0c;其中的每一份数据都称为数组的元素. 注意Bash shell 只支持一维数组&#xff0c;不支持多维数组。 在 Shell 中&#xff0c;用括号( )来表示数组&#xff0c;数组元素之间用空格来分隔. 语法为&…...

爬虫异常处理:异常捕获与容错机制设计

作为一名专业的爬虫程序员&#xff0c;每天使用爬虫IP面对各种异常情况是我们每天都会遇到的事情。 在爬取数据的过程中&#xff0c;我们经常会遇到网络错误、页面结构变化、被反爬虫机制拦截等问题。在这篇文章中&#xff0c;我将和大家分享一些关于如何处理爬虫异常情况的经…...

Python自动化小技巧21——实现PDF转word功能(程序制作)

案例背景 为什么这个年代PDF转word&#xff0c;某wps居然还要收费.....很多软件都可以实现这个功能&#xff0c;但是效果都有好有坏&#xff0c;而且有的还付费&#xff0c;很麻烦。 那就用python实现这个功能吧&#xff0c;然后把代码打包为.exe的程序&#xff0c;这样随便在…...

Vue使用Element的表格Table显示树形数据,多选框全选无法选中全部节点

使用Element的组件Table表格&#xff0c;当使用树形数据再配合上多选框&#xff0c;如下&#xff1a; 会出现一种问题&#xff0c;点击左上方全选&#xff0c;只能够选中一级树节点&#xff0c;子节点无法被选中&#xff0c;如图所示&#xff1a; 想要实现点击全选就选中所有的…...

SpringBoot生成和解析二维码完整工具类分享(提供Gitee源码)

前言&#xff1a;在日常的开发工作当中可能需要实现一个二维码小功能&#xff0c;我参考了网上很多关于SpringBoot生成二维码的教程&#xff0c;最终还是自己封装了一套完整生成二维码的工具类&#xff0c;可以支持基础的黑白二维码、带颜色的二维码、带Logo的二维码、带颜色和…...

Redis的基本知识(偏八股)

前言 本文篇概念&#xff0c;着重介绍Redis的执行效率、功能作用、数据类型、 执行效率 江湖上都流传这Redis的执行效率是挺快的&#xff0c;那为什么说它快呢&#xff1f;有以下几个原因&#xff1a; 基于内存单线程模型高效数据结构非阻塞I/O 基于内存: 内存的读写效率是…...

react使用antd的table组件,实现点击弹窗显示对应列的内容

特别提醒&#xff1a;不能在table的columns的render里面设置弹窗组件渲染&#xff0c;因为这会导致弹窗显示的始终是最后一行的内容&#xff0c;因为这样渲染的结果是每一行都会重新渲染一遍这个弹窗并且会给传递一个content的值&#xff0c;渲染到最后一行的时候&#xff0c;就…...

c++代码代码逻辑走查

自助生物采集代码 C部分流程...

CSS scoped 属性的原理

scoped 一、scoped 是什么&#xff1f;二、实现原理 一、scoped 是什么&#xff1f; 在 Vue 组件中&#xff0c;为了使样式私有化&#xff08;模块化&#xff09;&#xff0c;不对全局造成污染&#xff0c;可以在 style 标签上添加 scoped 属性以表示它的只属于当下的模块&am…...

git 查看某个分支是从哪个分支拉出来的

原文链接&#xff1a;https://blog.csdn.net/allanGold/article/details/102478157 git reflog show 分支名git reflog --datelocal | grep 分支名git reflog --datelocal | grep 分支名 $ git reflog --datelocal | grep release3 5c50761 HEAD{Thu Jun 29 12:53:45 2023}: c…...

vue helloworld.vue 点击按钮弹出 dialog,并给dialog传值

1 DataAnalysisVue.Vue -->应该组件文件名和 name: 的名字一致 <template><div><el-dialog :title"dataAnalysisMsg" :visible.sync"dataAnalysisvalue" :before-close"handleClose"><span>{{ dataAnalysisMsg }}&l…...

html动态爱心代码【三】(附源码)

目录 前言 特效 内容修改 完整代码 总结 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直…...

mmseg——报错解决:RuntimeError: CUDA error: an illegal memory access was encountered

可能解决方法汇总 GitHub issue相关汇总RuntimeError: CUDA error while trainingCUDA error: an illegal memory access was encountered记录使用mmseg时在计算交叉熵损失遇到的RuntimeError问题与解决方案...

AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题

1、给instances权限 action > Security > modify IAM role 把提前创建好的role给这个instance即可 2、复制到bucket aws s3 cp gogo.tar.gz s3://ee547finalbucket不需要手动安装GPU驱动 如果要自己安装&#xff0c;参考https://docs.aws.amazon.com/AWSEC2/latest/U…...

Go语言GIN框架安装与入门

Go语言GIN框架安装与入门 文章目录 Go语言GIN框架安装与入门1. 创建配置环境2. 配置环境3. 下载最新版本Gin4. 编写第一个接口5. 静态页面和资源文件加载6. 各种传参方式6.1 URL传参6.2 路由形式传参6.3 前端给后端传递JSON格式6.4 表单形式传参 7. 路由和路由组8. 项目代码mai…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...