用ATmega16设计简单流水灯电路

合集下载

ATMEGA16单片机实验

ATMEGA16单片机实验

ATMEGA16单⽚机实验实验⼀软件和硬件的认识⼀、实验⽬的:1、掌握硬件原理。

2、初步掌握实验板的使⽤⽅法。

3、熟悉软件⼯作界⾯。

⼆、实验仪器:ATmage16实验板⼀块PC机⼀台三、实验内容及步骤:1、插上电源,按下开关。

观察批⽰灯是否点亮。

电源(可输⼊7~12V)ATmega16管脚图2、由原理可知I/O⼝的批⽰灯为低电平亮,在实验板上取地与I/O⼝相接,观察是否点亮。

I/O⼝LED显⽰与接⼝3、打开编程界⾯,点击各栏,认识各栏的⽤途。

A VRICC IDE 软件的⼯作界⾯4、输⼊以下程序:#includeint main(void){DDRA = 0xff;/* all outputs */DDRB = 0xff;/* all outputs */DDRC = 0xff; /*all outputs */DDRD = 0xff; /*all outputs */PORTA = 0x00; /* 输出低电平*/PORTB = 0x00; /* 输出低电平*/PORTC = 0x00; /* 输出低电平*/PORTD = 0x00; /* 输出低电平*/while(1);}观察I/O⼝的灯是否被点亮。

实验⼆I/O⼝的输⼊与输出⼀、实验⽬的:1、了解IO⼝的结构;2、熟悉IO⼝的特性;3、掌握IO⼝的控制。

⼆、实验仪器:ATmage16实验板⼀块PC机⼀台三、实验原理:作为通⽤数字I/O 使⽤时,A VR 所有的I/O 端⼝都具有真正的读-修改-写功能。

这意味着⽤SBI 或CBI 指令改变某些管脚的⽅向( 或者是端⼝电平、禁⽌/ 使能上拉电阻) 时不会改变其他管脚的⽅向( 或者是端⼝电平、禁⽌/ 使能上拉电阻)。

输出缓冲器具有对称的驱动能⼒,可以输出或吸收⼤电流,直接驱动LED。

所有的端⼝引脚都具有与电压⽆关的上拉电阻。

并有保护⼆极管与VCC 和地相连,如Figure23 所⽰。

在控制I/O时,分别由⽅向寄存器DDRX与数据寄存器PORTX控制I/O的状态,如下表。

atmega16单片机c语言程序设计经典实例

atmega16单片机c语言程序设计经典实例

atmega16单片机c语言程序设计经典实例中括号在C语言中用于表示数组、结构体、联合体和枚举类型等的定义和使用。

在ATmega16单片机的C语言程序设计中,我们经常会用到数组和结构体,因此本文将以中括号为主题,详细介绍ATmega16单片机上C语言程序设计的经典实例,包括数组的定义和使用、结构体的定义和使用、联合体的定义和使用以及枚举类型的定义和使用。

一、数组的定义和使用数组是一种用于存储一组相同类型的数据项的集合。

在ATmega16单片机上,我们可以使用数组来存储和操作多个引脚的状态、多个传感器的数据等。

1. 数组的定义在C语言中,可以使用方括号来定义一个数组。

下面是一个例子,定义了一个长度为5的整型数组:int array[5];其中,int表示数组的元素类型,array为数组名,[5]表示数组的长度。

2. 数组的初始化数组可以在定义的同时进行初始化。

例如,可以使用大括号将数组的元素初始化为指定的值。

下面是一个例子,将数组的元素初始化为1、2、3、4、5:int array[5] = {1, 2, 3, 4, 5};3. 数组的访问可以使用下标(在中括号内)来访问数组的元素。

数组的下标从0开始,最大值为数组长度减1。

下面是一个例子,访问数组的第一个元素和最后一个元素:int firstElement = array[0];int lastElement = array[4];可以使用循环结构来遍历数组的所有元素:for (int i = 0; i < 5; i++) {访问数组的第i个元素int element = array[i];其他操作}二、结构体的定义和使用结构体是一种可以存储不同类型数据项的数据结构。

在ATmega16单片机上,结构体可以用于存储和操作多个相关的数据项,比如传感器的位置和数值等。

1. 结构体的定义在C语言中,可以使用关键字struct来定义结构体。

下面是一个例子,定义了一个包含姓名和年龄的结构体:struct Person {char name[20];int age;};其中,Person为结构体名,name和age为结构体的成员。

综合实验一——按键控制流水灯实验(查询方式)

综合实验一——按键控制流水灯实验(查询方式)

北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。

2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。

三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。

所有这些I/O口都是双(有的为3)功能复用的。

其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。

这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。

每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。

I/O口的工作方式和表现特征由这3个I/O口寄存器控制。

AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。

基于Atmega16单片机的直流恒流源设计

基于Atmega16单片机的直流恒流源设计

数控直流电流源设计学生学号:学生姓名:专业班级:指导教师:职称:起止日期:摘要:该数控直流电流源以精密压控电流源为核心、用单片机、DAC组成控制电路,引入“S类”反馈控制功率放大电路,实现超精密电流控制、具备精准的扩流能力、低失调、有步进、同时带有丰富扩展功能的精密电流源。

完成输出电流显示功能,并使输出范围覆盖0~1A,是理想的电流源解决方案。

关键词:单片机 TLC5615 PWM控制Abstract: The direct current source of numerical control bases on accurate VCCS, using MCU and DAC as controller kernel, importing circuit of power amplification of type S with feedback control; achieves ultra accurate current control; has low offset and excellent capacity for current enlarging; has step by step motion. At the same time, it provides abundance extended functions. it carries out the function of displaying the current output, meanwhile it achieves a range of 0 to 1A. Above all, it is an ideal solution of current source.Keyword: accurate current source , low offset , power amplification of type S目录摘要I 目录II 第1章绪论- 1 -1.1 在计量领域中的应用- 1 -1.2 在半导体器件性能测试中的应用- 1 -1.3 恒流源的发展历程- 2 -1.2.1 电真空器件恒流源的诞生- 2 -1.2.2 晶体管恒流源的产生和分类- 2 -1.2.3 集成电路恒流源的出现和种类- 2 -第2章恒流源的设计理论与总体方案- 3 -2.1 总体方案选取及性能指标- 3 -2.1.1 数控直流电流源的设计要求- 3 -2.1.2数控直流电流源系统设计方案比较- 3 -2.2 恒流源基本设计原理与实现方法- 4 -2.2.1 恒流源的基本设计原理- 4 -2.2.2 引起稳定电源输出不稳定的主要原因- 4 -2.2.3 恒流源的基本设计原理- 5 -第3章系统的硬件设计与实现- 5 -3.1 A TMEGA16单片机介绍- 5 -3.2 LCD1602液晶- 6 -3.3 D/A的介绍- 6 -3.4 供电电源的设计- 7 -3.5 PWM芯片的选择- 7 -3.6 PWM调制波与MOSFET的驱动电路的设计- 11 -第4章系统的软件设计- 12 -4.1 主软件流程- 12 -程序初始化- 12 -4.2 LCD1602软件流程- 13 -第5章系统测试分析与总结- 13 -5.1 测试方法- 13 -5.2 总结- 13 -附录- 16 -附1:原件清单- 16 -附2:总电路图- 17 -附3:源程序- 17 -参考文献- 23 -第1章绪论在实际生活中,很多电子系统都要求有稳定的直流电流源供电,特别是在厂矿企业和实验室中,直流稳压电流源作为一种必备的电子设备得到了广泛的应用。

基于ATmega16的流水灯设计

基于ATmega16的流水灯设计

#include <mega16.h>#include <delay.h>#define uchar unsigned char#define uint unsigned intvoid LED_on() //打开所有LED { DDRA =0XFF;PORTA =0X00;delay_ms(1000);}void LED_off() //关闭所有LED { DDRA =0XFF;PORTA = 0XFF;delay_ms(1000);}void LED_01(inti) //LED亮灭控制{PORTA =~i; //输出低电平delay_ms(100); //调用延时程序}void LED_02() //间隔点亮{PORTA=0XAA;delay_ms(100);}void LED_03() //相临点亮{PORTA=0X55; //~后内容需用括号括起来delay_ms(100);}void main(){into,i,j,k;DDRA =0XFF; //端口上拉输chu PORTA=0X00;delay_ms(100);while(1){k=1;//模式1:顺序点亮for (i = 0; i< 8; i++){LED_01(k);k=k<<1;} //顺序单个点亮LEDfor (i = 7; i>=0; i--){k=k>>1;LED_01(k);} //逆序单个点亮LED//模式2:顺序单个间隔点亮for (i = 0; i<4; i++) //顺序间隔点亮LED{k=k<<2;LED_01(k);}for (i = 4; i> 0; i --) //逆序间隔点亮LED{k=k>>2;LED_01(k);}k=k<<1;for (i = 0; i< 4; i++) //模式3:间隔点亮{k=k<<2;LED_01(k);} //间隔顺序同时点亮for (i = 4; i> 0; i--) //间隔逆序同时点亮{k=k>>2;LED_01(k);}for(o=0;o<2;o++) //模式4:相临点亮{ //相临顺序同时点亮LED_02();LED_03();}for(j=0;j<3;j++) //模式8:全部点亮熄灭{LED_on();LED_off();}}}。

单片机课程设计多功能花样流水灯设计

单片机课程设计多功能花样流水灯设计
六、心得与体会
此次单片机课程设计我学到了许多,第一次学会了软硬结合做一个项目出来,自我感觉非常自豪,但是由于自我能力的不足,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源?懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。比如在设计显示程序时,一开始数码管的显示不全,然后就不断地调试延时程序,结果数字缺定在0不动,经过反复的调试终于将程序调试成功。而且要学会拓展自己思路,一开始只做了一个速度显示,后来感觉挺好玩的,就做了花样显示。同时要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。整个设计的过程中(还是碰到了一些问题。比如对于键盘的延时防抖问题不能较好的解决,对于编程的顺序及各模块程序调用掌握得还不够好,对于一些相关的应用软件没能熟练掌握。通过这几天的反复思考,以及参考网上的程序最终还是完成了设计。设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力而且在理论上可以有更深的认识。
长 江 学 院
花样流水灯设计报告
课题:多功能花样流水灯
院系:机械与电子工程系
专业:自动化
班级:
学号:
姓名:
指导老师:
2016年12月20日
1、设计思路………………………………………………………………………3
2、流程图……………………………………………………………………………………..4
四、硬件设计思路和电路图7
关键词:STC89C52RCLED灯单片机花样流水灯

流水灯的设计

流水灯的设计

以上控制程序是以字( 以上控制程序是以字 ( WY0)为控制操作数 , ) 为控制操作数, 如果以位( ~ )为控制操作数, 如果以位(Y0~Y7)为控制操作数,程序还要简 单. 以位为控制操作数设计的程序如图9所示. 以位为控制操作数设计的程序如图 所示. 所示
图9பைடு நூலகம்梯形图
5,双向控制的流水灯时序图如图10所示. ,双向控制的流水灯时序图如图 所示 所示.
介绍几种典型的流水灯的程序设计方法. 介绍几种典型的流水灯的程序设计方法 . 全 部采用移位寄存器来实现控制. 部采用移位寄存器来实现控制. 1,流水灯的控制时序图如图1所示. ,流水灯的控制时序图如图 所示 所示.
X0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 1s
图1 流水灯控制时序图
该流水灯的控制梯形图如图2所示. 该流水灯的控制梯形图如图 所示. 所示 这是一个脉冲分配器式的流水灯控制程序. 这是一个脉冲分配器式的流水灯控制程序 . 移位寄存器的复位端同输出继电器触点Y8接在一 移位寄存器的复位端同输出继电器触点 接在一 闭合时, 起, 当Y8闭合时, 移位寄存器复位, 一切又从头 闭合时 移位寄存器复位, 开始. 开始.
图4 梯形图
3,流水灯的控制时序图如图5所示. ,流水灯的控制时序图如图 所示 所示.
图5 流水灯控制时序图
该流水灯的控制梯形图如图6所示. 该流水灯的控制梯形图如图 所示. 所示
图6 梯形图
在数据输入端连接输出继电器动断触点Y7. 在数据输入端连接输出继电器动断触点 . 当移位寄存器刚开始工作时,输出继电器Y7断电 断电, 当移位寄存器刚开始工作时 ,输出继电器 断电 , 动断触点Y7接通, 输入数据为1,这样,Y0~Y7 动断触点 接通, 输入数据为 , 这样, ~ 接通 就在移位脉冲的作用下依次点亮. 就在移位脉冲的作用下依次点亮. 当轮到输出继电器Y7通电时, 触点动作 触点动作, 当轮到输出继电器 通电时,Y7触点动作, 通电时 动断触点打开,数据输入为0. 动断触点打开,数据输入为 . 这样, ~ 就在移位脉冲的作用下依次熄 这样,Y0~Y7就在移位脉冲的作用下依次熄 灭,并如此反复. 并如此反复.

使用三八译码器制作流水灯

使用三八译码器制作流水灯
图 1 常规流水灯电路 对于流水灯这种效果,我们可以采用译码器进行 I/O 口的扩展。 这里以三八译码器进行讲解。首先我们来认识一下三八译码器。这里
1
以 74LS138 为例,三八译码器仿真电路图如图 2 所示。三八译码器可 以将该芯片三个输入引脚的输入状态通过译码后反馈到 8 个输出引 脚。因此成为三八译码器。三个引脚的状态为 23=8,因此输出引脚有 8 个。三八译码器的真值表如表 1 所示。
使用三八译码器制作流水灯
在单片机日常应用过程中,往往会遇见 I/O 口不够用的情况。因 此经常会用一些硬件来扩展 I/O 接口,根据使用场合的不同,使用不 同的硬件进行扩展。流水灯是经常遇到的应用场景,下面就以流水灯 为例,对单片机 I/O 口进行扩展。
常规流水灯电路如下图所示。通过图 1 可以看出,单片机控制 8 个 LED 发光二极管的亮灭状态。每个 LED 需要 1 个 I/O 口,在本例 中单片机控制了 8 个 LED,因此需要 8 个 I/O 引脚。如果控制更多个 数的流水灯,则需要更多的 I/O 引脚。采用这种控制方式,单片机最 多只能控制 32 个 LED,因为单片机只有 32 个 I/O 引脚。
3
CALL DELAY ;调用延时程序 DELAY
பைடு நூலகம்
MOV P2,#00000001B
; 将 P2.0~P2.2 赋值为 0,0,1
CALL DELAY; ;调用延时程序 DELAY
上述程序段只是实现功能的一部分,可以看到第一行程序的主要 功能是将三八译码器的输入口的输入状态变为真值表的第一行的状 态(即程序中下划线的三位是有用的),此时,译码器的输出口只有 Y0 口输出低电平,即该输出口连接的 LED 灯会点亮。第二行是延时函 数。第三行程序的功能是将三八译码器的输入口的输入状态变为真值 表的第二行的状态(即程序中下划线的三位是有用的),此时,译码 器的输出口只有 Y1 口输出低电平,即该输出口连接的 LED 灯会点亮。 第四行同第三行,也是调用延时函数。以此类推······
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档