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的状态,如下表。

单片机电子琴的实验报告

单片机电子琴的实验报告

姓名:班级:学号:小班学号:同组姓名:电子邮件:实验课题:基于AVR单片机电子琴的制作实验日期:2013.09.02—2013.09.15目录:一、实验简介1.1实验目的 (4)1.2实验关键词 (4)1.3基础知识 (4)二、实验器材2.1核心部件:ATmega16单片机 (5)2.2电路元件 (6)2.3管脚说明 (6)三、实验原理3.1实验原理图 (7)3.2实验流程图 (8)3.3实物效果图 (8)四、操作过程与运行结果4.1操作过程示意图 (9)4.2电子琴系统主要部分 (11)4.3具体操作过程 (11)4.4运行结果 (12)五、实验中的排错、体会与建议5.1调试与排错过程 (12)5.2体会与建议 (14)5.3小组分工 (15)5.4参考文献 (15)六、附录6.1流水灯实验 (16)6.2蜂鸣器实验 (17)6.3秒表实验 (18)6.4简易交通灯实验 (25)6.5电子琴源代码 (30)一、实验简介1.1实验目的通过设计一个模拟电子琴系统熟悉ATmega16单片机的使用及其基本功能。

使其能够通过键盘控制实现播放预存音乐,弹奏、储存弹奏音乐,变速播放,暂停及继续播放,停止播放功能。

1.2实验关键词按键检测预存播放弹奏储存变速暂停停止1.3基础知识声波是振动产生的。

频率即表示每秒钟振动的次数,采用CTC方式时avr 单片机通过特定的端口(PD4及PD5)输出一定频率的方波,TCCR1A设为比较匹配时OC1A/OC1B电平取反,TCCR1B的计数上限为OC1A,根据公式OCnA=f/2N(1+OCRnA)计算出7个频率音阶所需的OCR1A,则只需将喇叭接在PD4或PD5,通过程序控制端口输出特定频率的方波波形(发声使用正弦波最好,方波效果稍次但影响不大),喇叭就会发出七种不同的声音,依照人听觉分辨7个音阶分为三组,分别为高,中,低音阶频率,经计算可得,当OCR1A=(8000000/musicmem[i]-1)时,{131,147,165,175,196,220,247}存放低音阶频率,{262,294,330,349,392,440,494}存放中音阶频率,{524,588,660,698,784,880,988}则存放高音阶频率,所以需要定义三个数组存放各音阶的频率值。

《单片机原理与应用》课程设计基于atmega16实现的电压和温度的采集及液晶显示系统

《单片机原理与应用》课程设计基于atmega16实现的电压和温度的采集及液晶显示系统

课程设计任务书学生姓名:专业班级:自动化0501班指导教师:工作单位:自动化学院题目: 电压和温度的采集及液晶显示要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)系统能够测量环境温度,测量范围0-100摄氏度。

(2)系统能够测量给定电压,测量范围0-5V。

(3)电压测量精确到0.01伏,温度测量精确到0.1摄氏度。

(4)具有液晶实时显示当前电压及温度的功能。

时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (3)1. 硬件选择及各模块组成 (4)1.1设计原理 (4)1.2器件选择及基本原理 (4)1.2.1 模数转换模块 (5)1.2.2 ATmega16芯片模块....................... 错误!未定义书签。

1.2.3 DS18B20模块 (6)1.2.4 液晶显示器模块 (7)2各模块实现方法说明及整体电路图 (9)2.1 温度采集.................................... 错误!未定义书签。

2.2 电压采集 (9)2.3液晶中文显示 (10)2.4整体电路图 (10)3.软件设计 (11)3.1程序设计流程图 (11)3.2源程序 (11)4 仿真调试结果 (12)总结 (13)参考文献: (14)附录1 (15)主程序源程序: (15)显示驱动程序源程序: (22)摘要此次课程设计是基于ATmega16实现的电压和温度的采集及液晶显示系统。

该系统主要包括控制器、温度传感器、外部参考电压及测试电压、液晶显示器几个硬件部分。

控制器采用的8位AVR系列单片机-ATmega16,有高性能、低功耗等优点,电压采集是通过单片机内部的数模转换器实现的;温度传感器则采用DS18B20实现,该传感器有低功耗单总线控制的特点,显示部分采用控制芯片为KS0108的12864液晶显示器,通过单片机的I/O口直接驱动。

ADC实验 ATmega16

ADC实验 ATmega16

6.2模数转换的ADC实验 6.2.1、实例功能AVR的模数转换器ADC具有下列特点:110位精度;20.5LSB积分非线形误差3±2LSB的绝对精度;413µs~260µs的转换时间;5在最大精度下可达到每秒15kSPS的采样速率;68路可选的单端输入通道;77路差分输入通道;82路差分输入通道带有可选的10×和200×增益;9ADC转换结果的读取可设置为左端对齐(LEFT ADJUSTMENT);10ADC的电压输入范围0~Vcc;11可选择的内部2.56V的ADC参考电压源;12自由连续转换模式和单次转换模式;13ADC自动转换触发模式选择;14ADC转换完成中断;15休眠模式下的噪声抑制器(NOISE CANCELER)。

在本实例中,我们将编写程序实现将模数转换后获得的电压值通过单片机的串口发送到计算机,然后通过计算机上的串口助手显示测量的电压值。

本实例共有3个功能模块,分别描述如下:●单片机系统:使用单片机的串口实现将模数转换后获得的电压值通过串口发送到计算机。

●外围电路:RS232电平转换电路,DB9串行接口插座,模拟电压输入采集电路。

●软件程序:进一步熟悉单片机的串行通信,并掌握单片机的模数转换的方法。

6.2.2、器件和原理关于串行接口的原理已接单片机与计算机的串口的连接在上一实例中进行了描述,在本实例中不再重复。

本实例只介绍ATmega16单片机如何通过内置的模数转换模块采集外界输入的模拟电压。

1、ATmega16单片机的模数转换器ADC介绍由于单片机只能处理数字信号,所以外部的模拟信号量需要转变成数字量才能进一步的由单片机进行处理。

ATmega16内部集成有一个10位逐次比较(successive approximation)ADC电路。

因此使用AVR可以非常方便的处理输入的模拟信号量。

ATmega16的ADC与一个8通道的模拟多路选择器连接,能够对以PORTA作为ADC输入引脚的8路单端模拟输入电压进行采样,单端电压输入以0V(GND)为参考。

ATmega16实验板使用说明书

ATmega16实验板使用说明书

Atmega16实验板说明书硬件资料介绍 (2)调试软件安装 (3)编译环境的使用 (8)建立新的工程 (15)资料和例程 (18)注意:使用时先把调试器和开发板用数据线连起来,再插上USB线;停止使用时应先断开USB线切断电源,才能拔下数据线,否则可能会损坏调试器。

硬件资料介绍实验套件共分3部分,开发板,调试器,数据线(1根usb线,1根串口线)。

开发板文件夹图片/原理图里面有开发板的原理图图片和protel dxp 原理图文件。

如果开发板是没有焊好的套件可以对照元器件参数表和已焊好的图片(图片文件夹里有)先把开发板焊接完成。

焊接完成后先用万用表测量一下5V 与GND 之间是否短路,确定没有短路之后,插上USB 线接到电脑上,弹上开关SW1电源指示灯D1亮,说明电源已接通。

调试器调试软件安装要实现开发调试需要安装三个软件:PL2303驱动,avr studio 4,WinAVR。

这三个软件都在软件这个文件夹里。

首先安装usb驱动PL2303,如图点下一步。

点完成就可以了。

然后把调试器和电脑通过USB线联机。

如图这时调试器上的电源指示灯和信号指示灯都亮,而且电脑开始发现新硬件,新硬件可以安装使用。

这说明已经建立起连接,然后右击我的电脑—>属性—>硬件—>设备管理器,打开设备管理器界面,点开端口(COM和LPT)的“+”如图。

其中的Prolific usb-to-Serial Comm Port(COMx)就是调试器的usb设备。

端口号是多少根据个人电脑情况可能有差异。

下面我们要修改端口号,因为调试器里只提供COM1-COM3的通讯。

双击Prolific usb-to-Serial Comm Port(COMx)选项,弹出端口设置对话框,如图然后选端口设置—>高级,在端口号中选一个没有被占用且3以内的COM口,我的电脑上没有串口,我选的是COM1,如图然后点确定,重新打开设备管理器再看一下端口情况。

单片机项目实训实验报告

单片机项目实训实验报告

一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。

为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。

本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。

二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。

(2)编写计算器的软件程序,实现四则运算功能。

(3)测试计算器的功能,确保其正常运行。

2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。

主要包括以下步骤:1)选择合适的ATmega16单片机开发板。

2)设计矩阵键盘电路,包括按键布局和连接方式。

3)设计LCD1602显示屏电路,包括数据线和控制线。

4)将以上电路连接到ATmega16单片机开发板上。

(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。

2)初始化LCD1602显示屏,显示“0”作为初始值。

3)编写矩阵键盘扫描程序,检测按键状态。

4)根据按键输入,执行相应的四则运算。

5)将运算结果显示在LCD1602显示屏上。

6)实现清零、退格等功能。

(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。

2)连接计算器硬件电路,进行功能测试。

3)针对测试过程中发现的问题,进行调试和修改。

4)确保计算器能够正常运行,实现预期功能。

三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。

ADC数据采集显示实验

ADC数据采集显示实验
1
工程基础实验与训练中心实验报告
那么仅需读取 ADCH 就足够了。否 则必须先读出 ADCL 再读 ADCH ,其中 MUX4~0: 模拟通道与增益选择位。 (3)ADC 控制和状态寄存器 A - ADCSRA:其中 ADEN: ADC 使 能位;ADSC: ADC 转换启动位;ADATE: ADC 自动触发使能位;ADIF: ADC 中断标志;ADIE: ADC 中断使能; ADPS2~0: ADC 预分频器 选择位。 (4)特殊功能 IO 寄存器 - SFIOR:其中 ADTS2~0: ADC 自动触 发源;Res: 保留位。
如下图,使用软件 PROTEUS 画出原理图。 因为在实际中没有 AVR 的开发板,所以使用软件来模型出,来 显示。 当然也要了解这个软件的使用方法。 因此,在下面的图形中能够显示出 ADC 的数据采集与显示,所 以如下图:
4
工程基础实验与训练中心实验报告
三、程序流程图 开始
1602初始化
检测是否
实验原理及主要工作: 一、实验原理
ATmega16 内部的 ADC 拥有很多的特点,更具这些特点可以知 道本次实验的有些内容的要求。本次试验是数据采集和显示,用 ADC 转换器来进行数据的采集,并在 1602 的液晶显示屏上显示出数据采 集的结果。
要做本次实验还需了解 ATmega16 内部的 ADC 的寄存器,ADC 有以下几个寄存器: (1)多路复用器选择寄存器 - ADMUX :其中 REFS1/REFS0: 参考电压源选择设置;ADLAR: ADC 转换结果 对齐选择位。 (2)ADC 数据寄存器 - ADCL 及 ADCH:读取 ADCL 之后, ADC 数据寄存器一直要等到 ADCH 也被读出才可以进行数据更 新。因此,如果转换结果为左对齐,且要求的精度不高于 8 比特,

基于Atmega16单片机主控大功率电磁炉设计

基于Atmega16单片机主控大功率电磁炉设计

基于Atmega16单片机主控大功率电磁炉设计摘要:本文详细介绍了基于Atmega16单片机的电磁炉感应加热设计的研究。

它主要包括五个部分:不控整流,滤波电路,逆变电路,保护电路和单片机采样数码管显示电路。

经实验,本设计能实现高频加热的功能,符合现代节能的要求。

关键词:Atmega16单片机感应加热不控整流Based on Atmega16 single-chip microcomputer control high power electromagnetic stove designHUANG Rong-lan 21. Wuzhou College,Wuzhou, Guangxi(543002)Abstract:This paper introduces the design of electromagnetism heating based on the Atmega16 MCU, It mainly includes five parts: uncontrolled rectifier, filter circuit, inverter circuit, protection circuit and a single chip. microcomputer sampling digital tube display circuit. After the experiment, the design can achieve high frequency heating function, in line with modern energy-saving requirement.Keywords: Atmega16 MCU ;electromagnetism heating; uncontrolled rectifier1引言感应加热主要是利用电磁感应现象,让交变的电流在导体中产生感应电流,从而使导体发热[1]。

基于 ATmega16 单片机的微型气象探测系统设计-设计应用

基于 ATmega16 单片机的微型气象探测系统设计-设计应用

基于ATmega16 单片机的微型气象探测系统设计-设计应用摘要:设计了一种便携式低功耗微型气象探测系统,该系统以低功耗ATmega16单片机作为控制部件,采用温湿度传感器、气压传感器以及光强度传感器,进行温度、湿度、气压和光照强度的测量;通过12864液晶、时钟芯片和E2PROM实现数据的显示、存储和查询。

实验测试结果表明该微型气象探测系统的测量精度达到了普通气象测量要求,稳定性高。

由于该气象探测系统具有微型化、低功耗、实时化和便携式等特点,因而特别适用于小区域的气象监测。

0引言气候变化使得我国干旱,洪涝等自然灾害更加严重,提高我国的气象探测能力,有助于增强我国灾害预警和人工影响天气能力。

因此,气象要素测量系统开发研究具有重要的意义。

目前很多地区气象要素的测量大多依靠当地天气预报,然而天气预报地域范围较广,无法到小区域的气候测量。

而搭建气象台成本较高,性价比低,因此设计一种微型化,便携式的综合气象探测系统就显得十分必要。

针对以上问题本文设计了一种便携式气象探测系统,该气象检测系统可以有效地测量小区域的温度、湿度、气压、光照强度等气象参数,精度可达到普通气象测量要求,还有显示、存储、回溯查询的功能,具有低功耗、微型化、便携式、低成本的特点,适应于各种小区域的气象测量,具有一定的实用价值。

1系统设计和工作原理本气象测量系统以低功耗AVR单片机ATmega16作为控制部件,如图1所示,由温度测量模块、湿度测量模块、气压测量模块、光照强度测量模块、时钟芯片、E2PROM、液晶显示和独立按键等模块组成。

通过各个传感器将温度、湿度、气压、光强度转化为电信号,利用单片机处理后得到测量数据,并在液晶上显示。

通过E2PROM和独立按键实现数据的存储和查询。

按下存储键,储存各个测量数据和时钟芯片得到的当前时间;按下查询键,查询以前存储的测量数据。

同时该系统还具有自动测量功能,自动测量时,关闭液晶,测得数据每30min存入E2PROM。

基于单片机ATmega16的CCD驱动电路的设计

基于单片机ATmega16的CCD驱动电路的设计

2 线阵图像传感器TCD1304的时序分析 CCD芯片TCD1304是一款高灵敏度、低暗电流的线阵图像传感器,其光电灵敏度的典型值可达到160 V/lx.s,可用于条码扫描、光谱测量等场合。TCD1304有两种工作方式:普通工作方式和电子快门工作方式,图3为在普通工作方式下的时序图。
TCD1304工作时需要SH、ICG和ФM 3路驱动信号。SH的周期表示光信号积累时间,即积分时间,ICG和SH是同步的,ФM是主脉冲,其典型值为2 MHz。OS表示信号输出,每4个ФM脉冲周期对应1位信号周期。可以看出,TCD1304工作时需要的驱动信号比较简单,完全可以用ATmega16来产生。3 电路设计及实验结果3.1 电路设计 基于ATmega16的TCD1304的驱动电路。
CCD是一种固体成像器件[1],应用广泛。CCD工作需要多路脉冲驱动,并且各路脉冲在时序上要严格对应。对于CCD时序的设计,通常采用CPLD和FPGA技术,CPLD在低频CCD时序设计中使用[2-4],FPGA则用在更为复杂的时序设计中[5]。对于驱动比较简单的线阵CCD没有必要用这种成本比较高的电路。本文针对东芝公司的线阵CCD芯片TCD1304设计了基于单片机ATmega16的驱动电路。采用ATmega16的定时器/计数器timer0的CTC(比较匹配时清零定时器)模式和timer1的相位与频率修正PWM模式产生所需要的基本波形,可通过修改单片机程序中的参数来改变输出波形的频率和占空比,使得波形调整便捷。1 ATmega16的CTC模式及相位与频率修正PWM模式 ATmega16的timer0的CTC模式可通过令控制寄存器TCCR0的WGM01=1和WGM00=0来设定。寄存器OCR0用于调节计数器的分辨率,当计数器的数值TCNT0等于OCR0中的值时计数器清零,即OCR0定义了计数器的TOP值,亦即分辨率。这个模式使得用户可以很容易地控制比较匹配输出的频率。CTC模式的时序图。计数器数值TCNT0一直累加到TCNT0与OCR0匹配,然后TCNT0清零。

单片机密码锁实习报告

单片机密码锁实习报告

一、实习背景随着科技的发展,单片机在各个领域的应用越来越广泛。

为了提高我们的实践能力,了解单片机在实际应用中的工作原理,我们选择了单片机密码锁作为实习项目。

本项目采用ATmega16单片机作为核心控制器,通过矩阵键盘输入密码,LCD1602显示屏显示信息,蜂鸣器和LED指示灯进行报警和指示。

二、实习目的1. 了解单片机的基本原理和编程方法;2. 掌握单片机在密码锁系统中的应用;3. 提高动手实践能力和团队协作能力。

三、实习内容1. 硬件设计(1)ATmega16单片机:作为系统的核心控制器,负责管理密码输入、验证、显示及控制蜂鸣器和LED指示灯。

(2)矩阵键盘:提供用户输入接口,共16个按键,用于输入密码和控制系统功能。

(3)LCD1602显示屏:用于显示当前系统状态、密码输入提示及修改提示等信息。

(4)蜂鸣器:在密码输入错误或系统锁定时发出警报声。

(5)LED指示灯:在密码正确时点亮,指示系统已解锁。

2. 软件设计(1)初始化模块:上电后,系统初始化LCD显示屏、键盘及相关硬件接口,显示锁定状态。

(2)按键扫描:通过扫描矩阵键盘,获取用户输入的密码。

(3)密码处理:对用户输入的密码进行验证,判断是否与预设密码相符。

(4)显示模块:根据密码验证结果,在LCD显示屏上显示相应的信息。

(5)定时器中断处理:在连续输入错误密码达到设定次数后,进入锁定状态,锁定一段时间后自动解锁。

3. 系统功能(1)密码输入:用户通过矩阵键盘输入密码,LCD显示屏实时显示用户输入的密码长度。

(2)密码验证:当用户输入的密码长度达到设定值(如6位),系统对输入密码进行验证。

(3)密码修改:系统具有密码修改功能,用户可以修改预设密码。

(4)系统锁定:在连续输入错误密码达到设定次数后,系统进入锁定状态,锁定一段时间后自动解锁。

四、实习过程1. 硬件搭建:按照电路图,连接ATmega16单片机、矩阵键盘、LCD1602显示屏、蜂鸣器和LED指示灯等硬件设备。

AVRATmega16实验教程

AVRATmega16实验教程

A VR学习笔记(基于LT_Mini_M16)一、点亮发光二极管一、实验内容和目的本实验通过硬件电路和软件程序,利用ATMega16单片机来控制发光二极管的点亮和熄灭。

通过此实验初步掌握单片机的I/O口功能。

二、硬件电路1、电路分析(对照LT_Mini_M16原理图)1)电源电路:外接稳压直流电源(最好是DC9V)加到电路的U1处,经过电容C16稳压滤波后加到稳压模块AMS1117-5.0上,然后连接到电源开关按钮S1,从开关按钮出来后经过发光二极管D9和电阻R7,再经过电容C1、C2、C3、C4、C5、C7稳压滤波后加到单片机以及各个模块的电源端。

分析:a) 电容的作用是稳压滤波,其中C1、C2、C3、C4、C5这5电容为0.1PF (俗称104电容,一般为瓷片电容)。

主要作用为滤出电源电路中的高频成分;而C16、C7是电解电容,主要作用是稳压,即把电源电路中的尖峰电压拉低到正常电压水平;C16是稳定外接直流电源的电压(9V),C7是稳定AMS1117-5.0输出的5V电压。

b)稳压芯片采用ASM1117-5.0,该稳压芯片输入电压范围为6.5V-15V,输出电压稳定在5.0+0.1V,最大输出电流可达1A,可以满足一般电路需要。

c) 电源开关按钮S1的作用当然是接通和断开电源了。

在此电路中S1采用的是单刀双掷开关,一旦断开电源,则电源的正负极都断开了。

d)发光二极管D9的作用是指示电源是否连接成功,如果外部电源成功的连接上,则发光二极管发光指示电源连接成功;电阻R7的作用是对发光二极管进行限流,一般发光二极管只能通过10mA左右的电流,且发光二极管上面的压降只需要1.5V左右,加到发光二极管上面的电流如果超出额定值,则会烧毁。

而系统工作的电压是5V,如果全部加在发光二极管上,则发光二极管很容易就会被烧毁。

所以要在电源和发光二极管之间串接一个限流电阻。

该限流电阻阻值的计算:(VCC-发光二极管上的电压)/流过发光二极管的电流。

ATmega16单片机的使用

ATmega16单片机的使用

ATmega16单片机的使用——实验一 Atmega16定时器T/C0实现按键扫描——实验二 ATmega16单片机的ADC使用举例指导老师:黄刚班级:0720222姓名:李锋锐学号:28试验《一》 Atmega16定时器T/C0实现按键扫描(一)实验目的:用ATmega16实现同时对两个按键定时扫描,要求扫描周期为10MS ,当AJ1按下,LED2点亮,并且BELL 蜂鸣声,当AJ1松开,LED2熄灭,BELL 不响;当AJ2按下,LED3点亮,并且BELL 发出蜂鸣声,当AJ2松开,LED3熄灭,BELL 不响。

(二)实验原理(硬件设计):如图5-37所示,端口PD.3、PD.4为输入端,分别接AJ1和AJ2;端口PD.6、PD.7为输出模式,分别接LED2和LED3;端口PA.4为输出,通过三极管T1来控制蜂鸣器。

图5-36 基于Atmega16单片机定时器的按键扫描电路图(三)实验原理(软件设计):选用外部7.3728MHz 的晶振为系统时钟,按键扫描间隔定位10ms ,定时器T/C0采用CTC 模式,T/C0时钟选择1024分频后的系统时钟,并启用中断。

利用CTC 模式的工作原理,OCR0应赋的值由以下方程确定:361010)10(1024103728.71-⨯=+⨯⨯⨯OCR 于是:)(即0x47710=OCR 。

允许比较匹配中断,在中断程序里做标志位设置,判断标志位满足条件时,程序再读取键盘的状态,确定有无键按下以及按下键的具体操作。

程序如下:(1) L5-6.c#include<iom16.h> #include"key.h"#define Led2 PORTD_Bit6//定义led2 #define Led3 PORTD_Bit7//定义led3 #define Bell PORTA_Bit4//定义bell unsigned char flag=0;void port_init(void);void timer0_init(void);//************************主程序****************************//void main(void){port_init();timer0_init();SREG_Bit7=1;//使能全局中断TCCR0=0x0D;// 定时器工作模式为CTC模式,定时器时钟源来自预分频器的1024分频 while(1){if(flag==1){flag=0;switch(read_key()){case 0:Led2 =1; // Led2灯不亮Led3=1; //Led3灯不亮Bell =0; //蜂鸣器不响break;case 1:Led2 =0; //led2灯亮Led3=1; //Led3灯不亮Bell =1; //蜂鸣器响break;case 2:Led2 =1; //led2灯不亮Led3=0; //Led3灯亮Bell =1; //蜂鸣器响break;}}}}//*******************端口初始化程序*****************************//void port_init(void){DDRD=0xc0;PORTD=0x18;//PD.3( AJ1 )和PD.4( AJ12)方向输入,上拉有效,PD.6(Led2)和//PD.7(Led3)方向输出DDRA=0x10;PORTA=0x00;//PA.4(Bell)方向输出}//******************定时器寄存器初始化程序*(***********************//void timer0_init(void){TCCR0=0x00;TCNT0=0x00;OCR0=0x47; //7.3728MHz的系统时钟(OCR0=0X48)10msTIMSK=0x02; //TC0比较匹配中断使能}//******************定时器0比较匹配中断服务程序***********************// #pragma vector=TIMER0_COMP_vect__interrupt void TIMER0_COMP_isr(void){SREG_Bit7=0;//关闭全局中断flag=1; //标志位置位SREG_Bit7=1; //打开全局中断}(2) key.h#include<iom16.h>#define AJ1 PIND_Bit3//定义按键1#define AJ2 PIND_Bit4//定义按键2unsigned char read_key(){static unsigned char key_state=0;unsigned char key_return=0;switch((key_state)){case 0:if(!AJ1||!AJ2){key_state=1;}break;case 1:if(!AJ1||!AJ2){switch((PIND&0x18)){case 0x10://AJ1按下,返回1key_return=1;break;case 0x08://AJ2按下,返回2key_return=2;break;}key_state=2;}else{key_state=0;}break;case 2:if(AJ1&&AJ2){key_state=0;}if(!AJ1){key_return=1;}if(!AJ2){key_return=2;}break;default: break;}return ( key_return);}四、实验结果:ATmega16可实现同时对两个按键定时扫描,扫描周期为10MS,当AJ1按下,LED2点亮,并且BELL蜂鸣声,当AJ1松开,LED2熄灭,BELL不响;当AJ2按下,LED3点亮,并且BELL发出蜂鸣声,当AJ2松开,LED3熄灭,BELL不响。

基于mega16单片机的数字时钟实验报告

基于mega16单片机的数字时钟实验报告
}
}
else
{
if(read_key_6())
{
if(tiaowei==0)
tiaowei=6;
else
tiaowei--;
}
temp1 = tiaowei%2; //检测tiaowei为奇数还是偶数
temp2 = tiaowei/2; //确定调整的是time数组的第几个
if(temp1 >=2)
4
对数码管进行编码,从右到左依次是,0;1;2;3;4;5;定义tiaowei的状态来判断哪个数码管闪亮且对其调整。Tiaowei的初始值为6,此时没有数码管闪亮,且不对任何值进行调整。当每检测到一次key2的按键时tiaowei自动减一次1,且对该编码的数码管进行半秒钟亮一次的操作和通过key1的按键来实现对其对应时钟的位进行调整。如下是其调整的部分代码:
else //调节分钟或者秒位
{
if(temp1) //调节分钟或者秒的十位
{
time[temp2]=time[temp2]+10;
if(time[temp2]>=60)
time[temp2]=的个位
{
time[temp2]++;
temp5=time[temp2]%10;
}
8
本闹铃的音乐为林俊杰--《可惜没如果》。采用15个音符,即低音区和高音区的各7个音符和高音区的第一个音符。
从网上查找资料,下图为其音符对应的不同频率:
写出的CTC模式下产生一定频率所需的计数值和基本单位时间值代码如下:
flash unsigned int t[16] = {262143,1908,1701,1515,1433,1276,1136,1012,956,865,759,716,638,568,506,470};

推荐-ATmega16单片机的加速度测量 精品

推荐-ATmega16单片机的加速度测量 精品

青岛科技大学开放实验报告院校:专业:电气工程及其自动化年级:13级1班实验名称:基于Atmega16单片机的加速度测量姓名:学号:同组者姓名:同组者学号:指导教师:基于Atmega16单片机的加速度测量摘要:加速度计是惯性测量和导航系统的主要惯性元件之一。

当前,传统的力再平衡摆式加速度计占据加速度计的主要市场。

对加速度计输出数字化的迫切要求,推动了石英振梁式加速度计的发展。

随着微电子加工技术向惯性技术的渗透,微硅加速度计已崭露头角并受到广泛的关注。

随着当今技术的发展,对加速度的应用尤为广泛,特别是在精密仪器中都要对其加速度经行测量。

本文介绍的是一种应用ADXL335加速度传感器来进行加速度测量仪器。

关键字:单片机、加速度Acceleration measurement based on Atmega16 singlechip microputerAbstract:the accelerometer is inertial measurement and navigation system is one of the main inertial ponents.At present, the traditional force to balance the pendulum accelerometer occupy the accelerometer's main market.For the urgent request of the accelerometer output digital, and promote the development of Shi Yingzhen beam type accelerometer.With the penetration of microelectronic processing technology to the inertial technology, micro silicon accelerometer has emergence and widespread concern.Along with the development of today's technology, the application of the acceleration is extensive, especially in precision instruments to the acceleration in measurement.In this paper is a ADXL335 acceleration sensor is used for acceleration measurement instruments.Key words:single chip microputer, acceleration目录一、设计方案二、ADXL335加速度传感器三、ATmega16单片机的AD转换功能四、LCD1602液晶显示器五、系统框架六、附录1. C程序源代码2. 实物图七、参考文献 (13)一、设计方案本设计采用ADXL335加速度传感器。

AVR单片机 mega16 C语言 PS2键盘实验程序

AVR单片机 mega16 C语言 PS2键盘实验程序
}
else //如果是上升沿触发中断
{
MCUCR=2; //设置INT0为下降沿触发中断
edge=0; //设置下降沿中断标志
if(--bitcount==0) //如果11位全部接收完毕
{
Decode(data); //将扫描码翻译成ASCII码
{
0x0e,'`',
0x15,'q',
0x16,'1',
0x1a,'z',
0x1b,'s',
0x1c,'a',
0x1d,'w',
0x1e,'2',
0x21,'c',
0x22,'x',
0x23,'d',
0x24,'e',
0x25,'4',
0x26,'3',
0x29,' ',
0x2a,'v',
0x2b,'f',
0x2c,'t',
0x2d,'r',
0x2e,'5',
0x31,'n',
0x32,'b',
0x33,'h',
0x34,'g',
0x35,'y',
0x36,'6',
0x33,'H',
0x34,'G',

打地鼠游戏实验报告(3篇)

打地鼠游戏实验报告(3篇)

第1篇一、实验目的1. 了解和掌握电子游戏开发的基本流程和技巧。

2. 学习使用Python编程语言和Pygame库进行游戏开发。

3. 通过实践,提高编程能力和逻辑思维能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm4. 游戏库:Pygame三、实验内容1. 游戏简介打地鼠游戏是一款经典的街机游戏,通过模拟地鼠的随机出现和玩家的快速反应来获得乐趣和挑战。

在游戏中,玩家需要控制锤子击打随机出现的地鼠,获取分数。

2. 游戏设计游戏分为以下几个部分:- 游戏界面:包括分数、剩余时间、锤子、地鼠等元素。

- 地鼠生成:随机生成地鼠,并设置地鼠的生成时间间隔。

- 地鼠移动:地鼠随机移动,模拟地鼠活动的场景。

- 锤子控制:玩家控制锤子,通过键盘操作击打地鼠。

- 分数计算:根据击打地鼠的次数和类型计算得分。

3. 实现过程1. 导入Pygame库,初始化游戏窗口。

2. 定义游戏界面元素,如分数、剩余时间、锤子、地鼠等。

3. 设计地鼠生成、移动和消失的算法。

4. 设计锤子控制算法,包括移动和击打地鼠。

5. 设计分数计算算法,根据击打地鼠的次数和类型计算得分。

6. 设计游戏结束和重新开始的逻辑。

4. 测试与调试1. 运行游戏,观察游戏界面和元素是否正常显示。

2. 测试地鼠生成、移动和消失的算法,确保地鼠的生成和消失符合预期。

3. 测试锤子控制算法,确保玩家能够控制锤子击打地鼠。

4. 测试分数计算算法,确保得分计算正确。

5. 调试游戏中的错误,如界面显示错误、地鼠移动异常等。

四、实验结果与分析1. 游戏界面正常显示,包括分数、剩余时间、锤子、地鼠等元素。

2. 地鼠生成、移动和消失符合预期,随机性较好。

3. 玩家能够控制锤子击打地鼠,游戏操作流畅。

4. 分数计算正确,根据击打地鼠的次数和类型计算得分。

5. 游戏结束和重新开始的逻辑正确。

五、实验总结1. 通过本次实验,掌握了使用Python编程语言和Pygame库进行游戏开发的基本方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一软件和硬件的认识一、实验目的:1、掌握硬件原理。

2、初步掌握实验板的使用方法。

3、熟悉软件工作界面。

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

观察批示灯是否点亮。

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

I/O口LED显示与接口3、打开编程界面,点击各栏,认识各栏的用途。

A VRICC IDE 软件的工作界面4、输入以下程序:#include <iom16v.h>int 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的状态,如下表。

Figure 23. I/O 引脚等效原理图I/O口LED显示与接口四、实验内容及步骤:输入以下程序:这个程序为流水灯#include <iom16v.h>//*******************延时usvoid delay_us(int t){dot--;while(t>1);}//*******************延时msvoid delay_ms(unsigned int t){while(t!=0){delay_us(1142);t--;}}int main(void){DDRA = 0xff;/* all outputs */DDRB = 0xff;/* all outputs */DDRC = 0xff; /*all outputs */DDRD = 0xff; /*all outputs */PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;while(1){//***IO口输出低电平有效,如:0X01为十六进制数,二进制表示为00000001B,再取反PORTA=~0X01;delay_ms(1000);//************延时1秒PORTA=~0X02;delay_ms(1000);PORTA=~0X04;delay_ms(1000);PORTA=~0X08;delay_ms(1000);PORTA=~0X10;delay_ms(1000);PORTA=~0X20;delay_ms(1000);PORTA=~0X40;delay_ms(1000);PORTA=~0X80;delay_ms(1000);PORTA=0XFF;PORTB=~0X01;delay_ms(1000);//************延时1秒PORTB=~0X02;delay_ms(1000);PORTB=~0X04;delay_ms(1000);PORTB=~0X08;delay_ms(1000);PORTB=~0X10; delay_ms(1000); PORTB=~0X20; delay_ms(1000); PORTB=~0X40; delay_ms(1000); PORTB=~0X80; delay_ms(1000); PORTB=0XFF; PORTC=~0X01; delay_ms(1000); PORTC=~0X02; delay_ms(1000); PORTC=~0X04; delay_ms(1000); PORTC=~0X08; delay_ms(1000); PORTC=~0X10; delay_ms(1000); PORTC=~0X20; delay_ms(1000); PORTC=~0X40; delay_ms(1000); PORTC=~0X80; delay_ms(1000); PORTC=0XFF; PORTD=~0X01; delay_ms(1000); PORTD=~0X02; delay_ms(1000); PORTD=~0X04; delay_ms(1000); PORTD=~0X08; delay_ms(1000); PORTD=~0X10; delay_ms(1000); PORTD=~0X20; delay_ms(1000); PORTD=~0X40; delay_ms(1000); PORTD=~0X80; delay_ms(1000); PORTD=0XFF;}}观看现象是不是流水灯。

实验三外部中断一、实验目的:1、了解外部中断的库函数;2、熟悉外部中断的特性;3、掌握外部中断的使用。

二、实验仪器:ATmage16实验板一块PC机一台三、实验原理:外部中断通过引脚INT0 与INT1 或PCINT23..0 触发。

只要使能了中断,即使引脚INT0与INT1 或PCINT23..0 配置为输出,只要电平发生了合适的变化,中断也会触发。

这个特点可以用来产生软件中断。

只要使能,PCINT23..16 引脚上的电平变化将触发外部中断PCI2,PCINT14..8 引脚上的电平变化将触发外部中断PCI1,PCINT7..0 将触发外部中断PCI0。

PCMSK2、PCMSK1 与PCMSK0 寄存器则用来检测是哪个引脚上的电平发生了变化。

PCINT23..0 外部中断的检测是异步的。

也就是说,和其他中断方式一样,这些中断也可以用来将器件从休眠模式唤醒。

INT0 与INT1 中断可以由下降沿、上升沿,或者是低电平触发。

具体由外部中断控制寄存器A –EICRA 的设置来确定。

当INT0 或INT1 中断使能且设定为电平触发时,只要引脚电平被拉低,中断就会产生。

若要求INT0 或INT1 在信号下降沿或上升沿触发中断,则I/O时钟必须工作(请参见P23”时钟系统及其分布”了解更多信息)。

INT0与INT1 的低电平中断检测是异步的。

也就是说它可以用来将器件从休眠模式唤醒。

在休眠过程( 除了空闲模式) 中I/O 时钟是停止的。

通过电平中断将MCU 从掉电模式唤醒时,要保证低电平保持一定的时间以使MCU 完成唤醒过程并触发中断。

如果触发电平在启动时间结束前就消失,MCU 将被唤醒,但中断不会被触发。

启动时间由熔丝位SUT 与CKSEL 决定。

详见P23”系统时钟及其选项”。

外部中断控制寄存器MCUCR 外部中断控制寄存器 A 包括决定中断触发方式的控制位。

位1, 0 –ISC01, ISC00: 中断触发方式控制0 之位1 与位0外部中断0 由引脚INT0 激发,如果SREG 寄存器的I 标志位和相应的中断屏蔽位置位的话。

触发方式如Table35 所示。

在检测边沿前MCU 首先采样INT0 引脚上的电平。

如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。

如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。

中断完成后回到被中断的位置。

外部中断控制寄存器MCUCR 外部中断控制寄存器 A 包括决定中断触发方式的控制位。

通用中断控制寄存器GICR,控制外部中断使能位,具体如下:四ICC软件中断程序书写格式及16中断向量表16中断向量表五实验步骤及内容:输入程序:本程序一开始是IO口中的A口以流水灯工作,一旦有外部中断请求,就是B口以流水灯工作,循环一次后回到被中断处继续运行。

程序如下:#include <iom16v.h>#include <macros.h>//*******************延时usvoid delay_us(int t){dot--;while(t>1);}//*******************延时msvoid delay_ms(unsigned int t){while(t!=0){delay_us(1142);t--;}}#pragma interrupt_handler INT_0:2 //外部中断0执行函数void INT_0 (void){PORTC=0XFF;PORTB=~0X01;delay_ms(1000);PORTB=~0X02;delay_ms(1000);PORTB=~0X04;delay_ms(1000);PORTB=~0X08;delay_ms(1000);PORTB=~0X10;delay_ms(1000);PORTB=~0X20;delay_ms(1000);PORTB=~0X40;delay_ms(1000);PORTB=~0X80;delay_ms(1000);PORTB=0XFF;}void main(void){DDRA = 0xff;/*输出*/DDRB = 0xff;/*输出*/DDRC = 0xff;/*输出*/DDRD = 0xff; /*输出*/PORTA=0XFF;PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;MCUCR=0X02; //定义外部中断INT0为下降沿产生中断请求GICR=0X40; //中断屏蔽寄存器开INT0SEI(); //******开全局中断for (;;){PORTA=~0X01;delay_ms(1000);PORTA=~0X02;delay_ms(1000);PORTA=~0X04;delay_ms(1000);PORTA=~0X08;delay_ms(1000);PORTA=~0X10;delay_ms(1000);PORTA=~0X20;delay_ms(1000);PORTA=~0X40;delay_ms(1000);PORTA=~0X80;delay_ms(1000);}}实验四数码LED 实验一、实验目的:1、了解数码管的原理;2、熟悉数码管的使用;3、掌握外部中断和数码管动态显示的应用。

相关文档
最新文档