基于atmega16单片机的电子时钟设计_毕业设计(编辑修改稿)内容摘要:
0 1 AVCC,AREF 引脚外加滤波电容 1 0 保留 1 1 的片内基准电压源, AREF 引脚外加滤波电容 在本文我们选择 AVCC,AREF 引脚外加滤波电容。 Bit 5 – ADLAR: ADC 转换结果 左对齐 ADLAR影响 ADC转换结果在 ADC 数据寄存器中的存放形式。 ADLAR 置位时转换结果为左对齐,否则为右对齐。 ADLAR 的改变将立即影响 ADC 数据寄存器的内容,不论是否有转换正在进行。 关于这一位的完整描述请见 P207“ ADC 数据寄存器 – ADCL 及 ADCH”。 Bits 4:0 – MUX4:0: 模拟通道与增益选择位 通过这几位的设置,可以对连接到 ADC 的模拟输入进行选择。 也可对差分通道增益进行选择。 如果在转换过程中改变这几位的值,那么只有到转换结束(ADCSRA 寄存器的 ADIF 置位 )后新的设置才有效。 表 8 模拟通道与增益选择 MUX4..0 单端输入 正差分输入 负差分输入 增益 00000 ADC0 N/A 00001 ADC1 00010 ADC2 00011 ADC3 00100 ADC4 00101 ADC5 00110 ADC6 第 17页 (共 30 页) 00111 ADC7 01000 N/A ADC0 ADC0 10x 01001 ADC1 ADC0 10x 01010 ADC0 ADC0 200x 01011 ADC1 ADC0 200x 01100 ADC2 ADC2 10x 01101 ADC3 ADC2 10x 01110 ADC2 ADC2 200x 01111 ADC3 ADC2 200x 10000 ADC0 ADC1 1x 10001 ADC1 ADC1 1x 10010 ADC2 ADC1 1x 10011 ADC3 ADC1 1x 10100 ADC4 ADC1 1x 10101 ADC5 ADC1 1x 10110 ADC6 ADC1 1x 10111 ADC7 ADC1 1x 11000 ADC0 ADC2 1x 11001 ADC1 ADC2 1x 11010 ADC2 ADC2 1x 11011 ADC3 ADC2 1x 11100 ADC4 ADC2 1x 11101 ADC5 ADC2 1x 11110 V (VBG) N/A 11111 0 V (GND) ADC 控制和状态寄存器 A - ADCSRA 图 10 Bit 7 – ADEN: ADC 使能 ADEN 置位即启动 ADC,否则 ADC 功能关闭。 在转换过程中关闭 ADC 将立即中止正在进行的转换。 Bit 6 – ADSC: ADC 开始转换 在单次转换模式下, ADSC置位将启动一次 ADC 转换。 在连续转换模式下, ADSC置位将启动首次转换。 第一次转换 (在 ADC 启动之后置位 ADSC,或者在使能ADC 的同时置位 ADSC)需要 25 个 ADC 时钟周期,而不是正常情况下的 13 个。 第一次转换执行 ADC 初始化的工作。 在转换进行过程中读取 ADSC的返回值为1”,直到转换结束。 ADSC 清零不产生任何动作。 Bit 5 – ADATE: ADC 自动触发使能 ADATE 置位将启动 ADC 自动触发功能。 触发信号的上跳沿启动 ADC 转换。 触发信号源通过 SFIOR 寄存器的 ADC 触发信号源选择位 ADTS 设置。 第 18页 (共 30 页) Bit 4 – ADIF: ADC 中断标志 在 ADC转换结束,且数据寄存器被更新后, ADIF置位。 如果 ADIE 及 SREG 中的全局中断使能位 I 也置位, ADC 转换结束中断服务程序即得以执行,同时ADIF硬件清零。 此外,还可以通过向此标志写 1 来清 ADIF。 要注意的是,如果对 ADCSRA 进行读-修改-写操作,那么待处理的中断会被禁止。 这也适用于 SBI 及 CBI 指令。 Bit 3 – ADIE: ADC 中断使能 若 ADIE 及 SREG 的位 I 置位, ADC 转换结束中断即被使能。 Bits 2:0 – ADPS2:0: ADC 预分频器选择位 由这几位来确定 XTAL 与 ADC输入时钟之间的分频因子。 表 9 预分频 ADPS2 ADPS1 ADPS0 分频因子 0 0 0 2 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128 ADC 数据寄存器- ADCL 及 ADCH ADLAR = 0 图 11 ADLAR = 1 图 12 ADC 转换结束后,转换结果存于这两个寄存器之中。 如果采用差分通道,结果由 2 的补码形式表示。 读取 ADCL 之后, ADC 数据寄存器一直要等到 ADCH也被读出才可以 进行数据更新。 因此,如果转换结果为左对齐,且要求的精度不高于 8 比特,那么仅需读取 ADCH 就足够了。 否则必须先读出 ADCL 再读ADCH。 ADMUX 寄存器的 ADLAR 及 MUXn会影响转换结果在数据寄存器中的表示方式。 如果 ADLAR 为 1,那么结果为左对齐;反之 ( 系统缺省设置 ),结果为右对齐。 第 19页 (共 30 页) 指示灯电路 每路指示灯指示功能: PC0 路:秒 寄存器显示 PC1 路:分 寄存器显示 PC2 路:时 寄存器显示 PC3 路: 日 寄存器显示 PC4 路: 月 寄存器显示 PC5 路: 星期 寄存器显示 PC6 路: 年 寄存器显示 PD4 路: 是否允许调节时间显示 ,灯亮为允许。 图 13 DS1302 外围电路 22pf 电容和 32768Hz 晶振组成 振荡电路,提供 ds1302正常工作频率。 VCC2为主电源,VCC1为辅助电源。 Rst为读写使能端, I/O 为三线接口时的双向数据线 , SCLK 为 串行时钟,输入,控制数据的输入与输出。 图 14 单片机外围电路 22pf 电容和 8MHz 晶振组成 振荡电路,提供单片机正常工作频率。 Reset 为上电复位端, 当通电后单片即不管以前的 程序工作在哪里,一切复位从“零 ” 开始。 AVCC 是端口 A与 A/D 转换器 的电源。 AREF 是 A/D 的模拟基准输入 引脚。 图 15 7 软件设计 在前面几节中,我们了解了 ATmega16 单片机、 162液晶显示屏与 ds1302 的接口设计以及液晶屏的 时序,那么这部分阐述的是单片机对液晶屏显示和 ds1302 的驱动控制。 软件工作流程如下: AT meg a1 610010 0PC0PC1PC2PC3PC4PC5PC6PD410 010 022p32 768H z22pI/OSCL KRSTVCC 2VCC 1X2X1PA0PA1PA25V3V22p8MH z22pAT meg a1 61005VRESE TAREFAVCCX1X2 第 20页 (共 30 页) 程序流程图 8 结束语 经过几个月的研究与实验,终于完成了这篇论文。 在做这个课题的时侯遇到了许多 困难,大部分通过查阅资料和看书以及研究别人成功的例子就能解决了,但少部分问题任不能解决,通过老师和同学的帮助终于解决。 感谢帮助我的老师和同学。 参考文献: [1] HS1624液晶显示使用说明资料 . [2] DS1302_数据手册 . [3] ATmega16中文资料 . [4] Proteus中文入门教程 . [5] 贺敬凯 ,刘德新,管明祥 .单片机系统设计、仿真与应用。 西安电子科技大学出版社, 2020. [6]沈文 . AVR单片机 C语言开发入门指导 . 清华大学出版社 , 2020年 . [7]丁化成,耿德根,李军凯 . AVR单片机应用设计 . 北京航空航天大学出版社 , 2020年 . [8]金春林,邱慧芳,张皆喜 . AVR系列单片机 C语言编程与应用实例 . 清华大学出版社 , 2020年 . 第 21页 (共 30 页) 附件: /****************************************************** 设计介绍: 使用 8MHz 的晶振, ds1302 芯片以及 1602 液晶屏。 使用 独立键盘设置或者调节时间。 13 个 10k 的电阻, 1 个 100 欧的电阻, 8 个 led 指示灯。 2 个 22pf 的电容。 *******************************************************/ include define io define sclk define rst define rs define rw define e define uchar unsigned char define uint unsigned int /* uchar l_dat[] = { BASE ON }。 uchar f_dat[] = {ATMEGA16 DESIGN}。 */ uchar set_time [7] = {0x00,0x00,0x13,0x21,0x07,0x06,0x12}。 //初始时间缓冲区 第 22页 (共 30 页) uchar address=0x7e。 //时间地址中间变量 uchar QIEHUAN。 //切换时间标志位 uchar n=0。 //定义时间调节变量 uchar INT0=0。 //定义中断变量 uchar time[8] ={0x00}。 //定义时、分、秒显示缓冲区 uchar day[8]={0x00}。 //定义年、月、日、星期显示缓冲区 int d[3]={0,0,0}。 //定义电压显示缓冲区 /***********延时函数 *************/ void delayus(uint us) //1us 延时函数 { uint i。 us=us*5/4。 //5/4 是在 8MHz 晶振下,通过软件仿真反复实验得到的数值 for(i=0。 ius。 i++)。 } void delayms(uint ms) //1ms 延时函数 { uint i,j。 for( i=0。 ims。 i++) for(j=0。 j1141。 j++)。 //1141 是 在 8MHz 晶振下,通过软件仿真反复实验得到的数值 } /*******液晶屏判断忙函数 *********/ void lcd_busy() { uchar temp。 //定义中间变量存取从 lcd 读取的值 DDRB=0x00。 //定义 B 端口为输入 rs=0。 //选择指令寄存器 rw=1。 //进行读操作 do { e=1。 delayms(1)。 //延时 1ms temp=PINB。 //读取 B 端口信号 e=0。 delayms(1)。 //延时 1ms }while(tempamp。 0x80)。 //判断忙标志位是否为 1 DDRB=0xff。 //B 端口置为输出,为想液晶屏写数据准备 } /************* 写指令函数 *********/ void lcd_wcmd(uchar cmd) { lcd_busy()。 //判断液晶屏是否忙 delayms(1)。 //延时 1ms rs=0。 //选择指令寄存器 rw=0。 //进行写操作 第 23页 (共 30 页) e=0。 delayms(1)。 //延时 1ms PORTB=cmd。 //把数据赋值。基于atmega16单片机的电子时钟设计_毕业设计(编辑修改稿)
相关推荐
输出最终输出值 执行机构由电调和电机组成,负责真正控制飞机的飞行和姿态调整 ( 2) 连接方式: 各部分由电线物理连接 无线控制系统与中央处理单元通过 PWM 信号线交互信息 姿态传感器与中央处理单元通过 IIC 总线 与一个处理器中断 交互信息 中央处理 器与电调单元通过 PWM 信号 线 完成信息交互 姿态传感器 姿态传感器实时报告当前飞行器 的翻滚角,俯仰角,偏航角。
已经在各行各业中发挥着不可替代的作用。 当前越来越多的 软件已经认识到了对于软件用户管理的 重要性,已将 计算机技术应用于日常的管理工作 中。 科学的运用计算机技术进行管理工作不仅可以使管理工作规范化、系统化、自动化而且可以节省相当的人力、物力。 它能够使 企业走 上良性运转轨道, 从而为其快速发展奠定基础。 在使用同一款软件的时候我们会牵扯到用户管理和权限的问题,怎样合理的使用的软件
在损伤表面转动时,便产生一种交变的激振力。 从轴承滚动表面状况产生振动的机理可以看出 ,这种激振力产生的振动,是由多种频率成分组成的随机振动,因为滚动表面的损伤形状是无规则的。 轴承滚动表面损伤的形态和旋转速度,决定了激振力的频谱;轴承和外壳,决定了振动系统的传递特性。 最终的振动频谱,由上述二者共同决定,也就是说,轴承异常所引起的振动频率,由轴承的旋转速度
系统硬件设计 6 数据现畅通。 8051 的 /RD 和 /PSEN 相与后接 DIR,使得 /RD 或 /PSEN 有效时, 74LS245输入( ←Di ),其它时间处于输出( →Di )。 2. 1. 4 LED 的特性及使用 发光二极管是由 Ⅲ Ⅳ 族化合物,如 GaAs(砷化镓)、 GaP(磷化镓)、 GaAsP(磷砷化镓)等半导体制成的,其核心是 PN结。 因此它 具有一般 PN结的
位操作。 上电复位要求接通电源后,自动实现复位操作。 手动按钮复位需要人为在复位输入端 RST上加入高电平(图 1)。 一般采用的办法是在 RST端和正 电源 Vcc之间接一个按钮。 当人为按下按钮时,则 Vcc的 +5V电平就会直接加到 RST端。 手动按钮复位的电路如所示。 即使 人的动作再快也会 让 按钮保持接通 的状态 达数十毫秒, 因此 , 它能够 完全满足复位的时间要求。 手动复位
图 8电路总体设计模块图 主机 选用 单片机 AT89C51 来实现,利用单片机软件编程灵活、自由度大的特点,力求用软件完善各种控 制。 本系统选用的 AT89C51 芯片时钟 为 12MHz,运算速度快,控制功能完善 ;选用气体传感器 MQ5来实现气体浓度的采集;选用 ADC0808 来实现模 拟量与数字量的转换;选用 LCD1602 来实现气体浓度的显示;选用蜂鸣器和 LED 灯来 实现报警