avr实验报告
- 格式:doc
- 大小:1.98 MB
- 文档页数:19
UNITROL® F三机励磁系统调试报告姓名日期姓名日期编制工厂试验审核工厂验收批准现场试验现场验收注:1、本调试报告前两部分(硬件设置、工厂试验)=出厂试验报告。
2、完成本调试报告的相关试验项目,表示已完成交接试验,设备可投入正常运行。
一、硬件设置1.1主控板 CON-2出厂编号:CH1:CH2:1.2 电源板 POW-1出厂编号:CH1:CH2:1.3 电力系统稳定器(PSS) UNS0869 出厂编号:CH1:CH2:1.4 功率接口板 UNS2861C出厂编号:CH1:CH2:*) HW-Code parameter must be setted manuallyFrequency SettingCurrent LimiterProportional gain K LIM with HEX switch S200Gain of Current IDCIe-max. Setpoint V LI with HEX switch S201Current RegulatorProportional gain K CR with HEX -Switch S202Inverter LimitEk1.5 信号处理板 UNS1860b,V1/V2,Modified 出厂编号:CH1:CH2:1.6 电源模块 UNS0868出厂编号:CH1:CH2:1.7 PT/CT接口板 UNS0862出厂编号:CH1:I1N p.u.Rated machine current divided by C.T. nominal current. Adjustment only required, if ratio <0.8.1.8 基本I/O接口板 UNS0863/C7出厂编号:1.10 跨接器 UNS0016b-E出厂编号:1.11 通道铭牌1.12 附加的硬件修改二、工厂试验2.1 外观检查〃设备及元件接地,接线排□〃元件布置□〃油漆□〃门把手功能□〃铭牌□2.2 MCB设置2.3 介电强度试验〃功率回路 2000V;50Hz;1Min □〃辅助交流和直流电源回路 1500V;50Hz;1Min □〃 PT和CT 回路 1500V;50Hz;1Min □2.4 供电电源检查〃辅助交流电源(照明、加热器) VAC □〃交流电源供电(可控硅桥输入) VAC □〃辅助直流电源 VDC □〃控制电压24V直流 VDC □2.5 变送器型号2.6 程序下载2.7 操作控制回路动作试验〃灭磁开关动作□〃照明电路动作□〃风扇电路动作□〃就地/远方动作□2.8 各附加单元整定与动作正确性试验〃数字量输入□〃模拟量输出□2.9 保护及报警监视试验〃小型断路器报警□〃灭磁开关跳闸报警□〃PT 断线报警□2.10 总体静态特性试验〃基准负载测试□2.11 测量值校验三、现场试验3.1 试验准备(发电机静止时)实际参数设置参照参数表详细信息参阅“调试指导”3.1.1 外观检查〃机壳安装妥善无可见损坏□〃外部连线,总线连接,外部接地□〃直流,灭磁开关,启励及灭磁回路□〃20℃时磁场电阻(含引线电缆电阻)3.1.2 绝缘试验〃主回路绝缘试验□3.1.3 供电电源〃交流电源(用于照明及加热器) V 〃直流电源 V 〃第二直流电源(可选) V 〃电子设备功能正常/内部电源电压正常 V3.1.4 软件〃软件下载(在AFT系统的两个通道中)□〃软件版本〃基本参数设定□3.1.5变送器检查□3.1.6 控制回路〃检查所有命令输入□〃检查所有信号输出□〃检查报警和跳闸回路□〃灭磁开关控制回路□〃启励电路灭磁开关控制回路□〃检查风扇控制回路灭磁开关控制回路□〃检查电压互感器(PT)和电流互感器(CT)□〃灭磁开关控制回路□〃检查模拟量输入和输出□3.1.7 保护装置〃跨接器的外观检查(校准BOD单元)□发电机接地检测检查□励磁机接地检测检查□3.2空载试验(发电机在额定转速下)3.2.1 手动通道〃将可控硅桥封脉冲,测量起励时的发电机电压U G%〃调整测量实际值(U G,U SYN,I F,U F)□〃设定参考值和预设值的限制值□〃在手动通道中调整PI参数□〃检查整流器电源电压和相位 V 〃检查分灭磁开关灭磁(灭磁电阻灭磁)□〃检查不分灭磁开关灭磁(逆变灭磁)□3.2.2 自动通道〃启励和软启励□〃调整测量实际值(U G,U SYN,I F,U F)□〃设定参考值和预设值的限制值□〃在自动通道中调整PID参数□〃设定及检查V/HZ限制器□〃检查灭磁回路(正常灭励和跳灭磁开关)□〃定义P/Q补偿□3.2.3 通道切换〃检查自动手动通道的切换,是否平滑无冲击□3.2.4 监视和保护〃检查PT 故障时自动到手动通道的切换动作定义□〃检查PT故障时通道1到通道2的切换动作定义□3.3并网功能试验(发电机在额定转速下)3.3.1并网后一般性试验〃校准发电机电流测量值/检查P和Q测量值□〃P≈0;Q滞相甩负荷试验□〃P≈0;Q进相甩负荷试验□〃自动通道作阶跃响应,优化动态性能□〃手动通道作阶跃响应,优化动态性能□〃检查叠加控制的影响□〃手动限制调整□3.3.2 IE限制器〃励磁电流IE过励限制器的定义和校核□〃用阶跃响应使限制器动作时优化动态响应过程□3.3.3 IG限制器〃定义电流IG过电流限制器 (过励和欠励时) □〃用阶跃响应使限制器动作时,优化动态响应过程□3.3.4 P/Q限制器〃定义P/Q特性曲线□〃P/Q限制器欠励检查□〃用阶跃响应使限制器动作时,优化动态过程□3.3.5恒功率因数控制器〃检查恒功率因数控制器的稳态和动态性能□〃检查功率因数的限制值□〃用增减按钮检查功率因数的参考值设定□3.3.6恒无功控制器〃检查恒无功控制器的稳态和动态性能□〃检查恒无功控制器的限制值□〃用增减按钮检查无功的参考值设定□3.3.7电力系统稳定器〃PSS参数计算□〃PSS作用检查□注:该试验由相关单位组织,设备供应单位参加。
AVR单片机专用周实习报告题目:数码管一位显示班级:学号:姓名:目录一、实验目的 (2)二、实验要求 (2)三、实验原理 (2)四、实验程序 (5)五、心得体会 (9)一、实验目的通过对例程序的思考与理解,利用实验室所提供的AVR单片机硬件、软件资源,编程实现数码管的一位显示。
观察并分析实验结果,在实验中了解单片机的结构与原理。
二、实验要求利用课上所教例程序的相关原理,设计出数码管一位显示的程序。
观察实验结果,写出实验报告。
三、实验原理3.1、 AVR系列端口介绍AVR系列单片机的IO端口结构比基本51系列单片机的端口要复杂一些,以ATmega16单片机为例,它有4组8位IO端口,分别是PORTA、PORTB、PORTC和PORTD。
通过特殊功能寄存器,我们可以使每个端口实现双向数字IO 通道或双向模拟量通道功能。
ATmega16单片机的大部分端口具有除基本IO功能外的第二功能,关于第二功能的使用这里不作介绍。
下面说明端口的基本IO输入输出和模拟量输入输出的工作过程。
①同步数字输出。
作为输出时,总线给方向寄存器D触发器F9写1,三态门F1打开,总线来的数据经D触发器F10到达输出端Pxn,此时上拉电阻是关断的。
②数字输入。
作为输入时,总线给方向寄存器D触发器F9写0,三态门F1关断,上拉电阻根据需要由PUD选择是否导通,在休眠信号SLEEP无效时,模拟开关M1打开,MOS管T2截止,从Pxn来的输入信号经整形电路F7和同步锁存器进入三态门F4成为同步输入信号。
③模拟量输入输出。
在模拟量输入输出模式下,通过设置使上拉电阻、三态门F1和模拟开关M1都处于关断状态,管脚Pxn直接连通单片机内部相关模拟量输入输出单元,为单片机内部模拟比较器、A/D转换器及D/A转换器等功能单元提供与外围连接的通道。
3.2、数码管(发光二级管)数码管(发光二级管)分为共阳极连接和共阴极连接。
共阳极数码管在判别时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
A VR微控制器应用实践实验一一、实验目的1、了解EVK1100实验板硬件结构和板上资源2、熟悉Atmel studio程序编写和下载流程3、了解A VR32 GPIO的特点、掌握GPIO的常用操作和访问方法二、实验工具1、EVK11002、A VR Dragon3、Atmel Studio 6.1三、实验原理1、EVK1100实验板介绍1.1、实验板简介上图所示的为实验所用的开发套件——EVK1100。
该实验板是全功能的嵌入式系统。
采用ATMEL公司A VR32系列的AT32UC3A0512微控制器。
板上具有丰富的资源和存储器。
具有灵活的电源供电系统,能够接受8-20V的直流电源输入。
实验板的内部结构如下图所示1.2、实验板外设介绍实验板上具有丰富的硬件资源和外设,主要资源如下,各外设具体硬件结构和引脚参考实验板说明和电路结构:∙MCU: 32bits AT32UC3A0512 (QFP144)∙RTC∙LCD∙USB∙Ethernet∙ADC∙即用传感器:o温度传感器o光线传感器o电位器∙按键∙Joystick∙LEDso4个单色LEDo2个双色LED∙Dataflash∙SDRAM∙USARTSo 1 RS232 with flow control and modem controlo 1 RS232 with flow control∙JTAG∙NEXUS∙SDMMC∙SPI∙TWI∙Wrapping area∙Power Supply∙Expansion header2、Atmel Studio和ASF介绍2.1、Atmel Studio简介Atmel Studio是一个集成开发环境(IDE),用于编写和调试A VR/ ARM应用程序。
Atme Studio提供项目管理工具,源文件编辑器,仿真器,汇编器和前端的C / C ++编程和片上调试。
Ateml Studio支持A TMEL公司的A VR工具。
AVR单片机开发基础实验实验一:开发环境使用实验熟悉单片机开发环境。
掌握ICCAVR软件开发环境对应用程序的设计、编译、链接;掌握progisp烧写程序的使用方法,完成执行文件的下载。
1、ICCAVR软件使用步骤:打开ICCAVR开发环境,点击project——new,新建一个项目工程,选择保存路径,输入工程名,单击保存。
选择file——new 新建一个文件,任意输入几个字符后点击左上角蓝色按钮保存文件,注意后缀名为“.c”。
在界面右侧刚刚新建的工程名处单价右键。
选择Add files 添加文件,将.c文件添加到工程中。
编写程序代码,写好后点击project——Options,在对话框中选择单片机的型号,At mega128:M103mode,然后点击Build project 编译程序。
如有错误,软件下方会给出错误提示。
2、progisp下载软件的使用将USBASP下载器连接到电脑的USB接口。
打开progisp软件,在Select chip 下拉菜单中选择单片机型号Atmega128A,其它选项按下图设置:设置完成后,点击界面右上角文件中的调入Flash,选择刚才建立的工程,打开编译后的文件,文件类型为Intel Hex(*.Hex),单击自动,即可将刚才编写的程序下载到单片机中。
实验课二:输入/输出接口实验题目1:指示灯闪烁实验在面包板上安装8个二极管指示灯,通过提供的限流电阻与单片机主板上的某个并行接口(8bit)连接,在开发环境中完成单片机应用程序设计、编译、链接和下载,实现8个指示灯闪烁,闪烁间隔时间为0.5s,按要求搭建电路,LED的正极直接与单片机PA口连接,即高电平点亮,负极通过一个1K的限流电阻接地(单片机的地端引脚)。
按实验一中介绍的操作步骤,使用ICCAVR软件编写程序代码,编写思路如下:(1)由于要求LED亮灭间隔0.5秒,那么就要编写一个延时函数,在点亮和熄灭LED 后都要调用这个延时函数,延时函数中的参数决定了延时的时间。
2013 /2014 学年第一学期课程设计实验报告模块名称A VR单片机课程设计(proteus)专业通信工程学生班级学生学号学生姓名指导教师AVR单片机软件设计(proteus)报告一、总体设计原理、思路;考虑使用数字温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
二、硬件方面原理图的设计:包括使用的元器件、典型芯片的介绍;原理图的说明等实验原理图a)晶振晶振为单片机提供时钟信号。
单片机XIAL1和XIAL2分别接33PF的电容,中间再并一个晶振,形成单片机的晶振电路。
晶振电路b)复位电路单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
AVR复位时所有的I/O 寄存器都被设置为初始值,程序从复位向量处开始执行。
复位向量处的指令必须是绝对跳转JMP 指令,以使程序跳转到复位处理例程。
AVR的复位信号源有五个:上电复位。
电源电压低于上电复位门限 VPOT 时, MCU 复位。
外部复位。
引脚 RESET 上的低电平持续时间大于最小脉冲宽度时MCU 复位。
看门狗复位。
看门狗使能并且看门狗定时器溢出时复位发生。
掉电检测复位。
掉电检测复位功能使能,且电源电压低于掉电检测复位门限 VBOT 时 MCU 即复位。
JTAG AVR复位。
复位寄存器为1 时MCU 复位。
复位电路ALE引脚悬空,复位引脚接到复位电路、VCC接电源、VSS接地、EA接电源c )温度传感器(DS18B20)电路DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
应用工程学院AVR单片机上机考试实验报告题目:计数时钟设计专业:班级:姓名:学号:指导老师:一、题目要求与实训目的要求:设计一个秒表计时器,要求用四位数码管分别显示分秒毫秒,其中分一位显示;秒二位显示、毫秒一位显示,如显示格式如: 1.23.4 代表:1分 23秒400毫秒。
最大显示时间为9.59.9 即:9分99秒900毫秒。
当显示到此值后,计时从 0分0秒0毫秒从新开始。
功能实现:(1)用Proteus 完成电路图的绘制(2)4位数码管点亮显示功能实现(3)从0分00秒0毫秒正常计时**分**秒**毫秒(4)固定时间正常计时功能实现(5)固定时间倒计时功能实现(6)自由设定时间后正常计时功能实现(7)自由设定时间后倒计时功能实现二、实训中所用到的工具与仪表(1)402教室电脑一台(2)ATMEGA8芯片一块(3)7SEG-MPX4-CC-BUNE数码管一块(4)开关4个(5)电阻4个三、方案设计本次设计是用单片机做为时钟的控制中心(单片机选择ATMEGA8),利用一个秒表计时器显示分秒毫秒,其中分一位显示;秒二位显示、毫秒一位显示,控制时间的自由调整。
四、作品测验制作最终结果有(4)固定时间正常计时功能实现(5)固定时间倒计时功能实现2个功能未能实现只得了80实在是毕生遗憾五、电路原理图六、电路控制程序#include <mega8.h>#include<delay.h>typedef unsigned int uint;typedef unsigned char uchar;uchar fen=0,miao=0; //用于设时的变量寄存uint count; //用于定时器中断函数计数uchar minute,second,decimal; //分、秒、小数位变量定义uchar add_sign=1,install_show_sign=1,add_all=0; //正计数标志、设置显示标志void bufvalue(uchar*); //显示值处理函数声明void display(uchar*,uchar*); //显示函数声明interrupt [EXT_INT0] void ext_int0_isr(void) //TO外部中断{install_show_sign=0; //该标志置0时显示部分显示值的设定情况miao++;if(miao==60){miao=0;fen++;}}interrupt [EXT_INT1] void ext_int1_isr(void){install_show_sign=1; //用于显示计数部分}interrupt [TIM0_OVF] void timer0_ovf_isr(void) //T0溢出中断200us一溢出//Timer 0 overflow interrupt service routine{if(install_show_sign){// Reinitialize Timer 0 valueTCNT0=0x9B;if(add_sign){count++;if(count==50){count=0;decimal++;if(decimal==10){decimal=0;second++;if(minute==fen&&second==miao){if(!add_all){count=100;decimal=10;add_sign=0;}}if(second==59){second=0;minute++;if(minute==10){minute=0;}}}}}else{count--;if(count==0){count=50;decimal--;if(decimal==0){decimal=10;second--;if(second==0){if(minute==0&&second==0){count=0;decimal=0;minute=0;add_sign=1;return;}minute--;second=59;}}}}}}void main(void){uchar discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; uchar disbuf[4];PORTB=0x00;DDRB=0xFF;PORTC=0x00;DDRC=0xFF;PORTD=0x00;DDRD=0x00;// External Interrupt(s) initialization// INT0: On// INT0 Mode: Low level// INT1: On// INT1 Mode: Low levelGICR|=0xC0;MCUCR=0x00;GIFR=0xC0;// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: 500.000 kHzTCCR0=0x02;TCNT0=0x9B;// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x01;// Global enable interruptsSREG|=0x80;while (1){bufvalue(disbuf);display(discode,disbuf);if(PIND.7==0){fen++;while(!PIND.7);if(fen==60){fen=0;}}if(PIND.6==0){decimal=0;second=miao;minute=fen;add_sign=1;add_all=1;}}}void bufvalue(uchar *disbuf){if(install_show_sign){disbuf[0]=decimal;disbuf[1]=second%10;disbuf[2]=second/10;disbuf[3]=minute; }else{disbuf[0]=miao%10;disbuf[1]=miao/10;disbuf[2]=fen%10;disbuf[3]=fen/10;}}void display(uchar *discode,uchar *disbuf) {uchar i,weixuan=0x01;if(install_show_sign){for(i=0;i<4;i++){if(i==1||i==3) //第二位与第四位加小数点{PORTC=~weixuan;PORTB=discode[disbuf[i]]|0x80;delay_us(200);weixuan<<=1;continue;}PORTC=~weixuan;PORTB=discode[disbuf[i]];delay_us(200);weixuan<<=1;}}else{for(i=0;i<4;i++){ if(i==2) //第三位加小数点{PORTC=~weixuan;PORTB=discode[disbuf[i]]|0x80;delay_us(200);weixuan<<=1;continue;}PORTC=~weixuan;PORTB=discode[disbuf[i]];delay_us(200);weixuan<<=1;}}}七、实训总结每一次实训都给自己增加技术,和对学习成果的展现,实训结束发行自己学习的真是给力程序还是大部分不懂,但也马马虎虎做出来了,努力了就不会后悔,我有努力过,所以不管结果是什么我都有一个好的过程,过程最重要。
AVR单片机汇编语言编程实验学院:自动化专业:测控技术与仪器一、实验名称:AVR单片机汇编语言编程实验二、实验目的:熟悉并掌握AVR单片机指令系统、汇编语言常用伪指令,掌握单片机汇编语言编程技术,编程实现指定功能,加深对计算机汇编指令的理解。
三、实验仪器:计算机,VMware,Windows7虚拟机,AtmelStudio开发环境,Proteus仿真开发环境四、实验内容、实验过程及结果分析:1. Flash 单元赋值创建汇编语言工程,目标机型选为Mega128。
使用汇编语言伪指令进行编程,将下述32 字节的常数数据存入首地址为$0160 的连续flash 存储单元照片中。
数据如下:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x070x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7;0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf80x80,0x90,0x88,0x83,0xc6,0xa,0x86,0x8e;前后16 字节分别是字符0-F 对应的共阴极和共阳极LED 数码管的字形显示段码。
随后使用IDE 自带的调试工具,进入debug 调试。
在调试过程中,在Flash 存储器映像中查找上述存入的数据块所对应的地址,记录Flash 存储器映像。
图1.1.0如图1所示,数据3f的首地址为$002C0的内存单元中,为$的二倍,因此说明数据成功存入该段存储单元2. DATA RAM 内存块赋值使用汇编语言指令,将上述存储在 Flash 中的 32 个字节单元的数据块依次赋值给起始地址为$0230 的 SRAM 内存块的相应内存单元,流程如图2.1.0 所示。
图2.1.0寄存器初始状态如图2.2.0所示。
将Z指针指向先前第一位数据的首地址,并进行一个次数为16的循环,通过LPM指令将储存在Flash中16字节的数据拷贝至起始地址为$0230的内存单元中,如图2.2.1所示,数据存储状态如2.2.3 所示。
青岛科技大学2012/2013 学年第二学期课程设计实验报告模块名称A VR单片机课程设计专业电气工程自动化学生班级电气121学生姓名于呈宾学生学号1218020130学生姓名巩志成学生学号1218020114指导教师王泽华A VR单片机课程设计报告一.课程设计目的1、设计要求本课程着重于把理论学习的知识应用于实际,解决实际的工程问题,培养学生的系统设计能力,提高学生的科研动手能力。
本次设计要求深入了解A VR单片机ATmega8a的功能,通过研究开发板的硬件设计,进行相关的硬件连接,选择合适的编程及程序植入方法,用开发板完成列出的各设计课题;初步学习撰写规范的设计文档;提交实验报告。
二.课程设计内容1、基本要求:1、正确连接数LM35测温传感器,LCD JHD 162A液晶显示器或通过串口将数据传递至PC。
2、设定温度告警门限。
3、通过蜂鸣器、发光二极管进行告警显示。
三.课程设计过程(一)、本实验可以分为三个部分来考虑:1、LM35测温传感器采集温度显示在LED上。
2、设定温度告警门限。
通过蜂鸣器、发光二极管进行告警显示。
3、添加按键控制温度警告门限和各功能汇总。
(二)硬件介绍1、ATmega8ATmega8主要特点:具有8K程序和数据存储器(flash)1KB内存(SRAM)512B电擦除可编程只读存储器(EEPROM)23个可编程的I/O接口3路定时器/计数器3通道PWM输出8路10位ADCTWI两线接口USART通用异步串行口SPI串行外设接口ISP程序下载接口ISP接口:在线可编程(in-system programming)接口,占用四条引脚,分别是:RESET,SCK,MOSI,MISOI/O引脚:有B,C和D口,C,D为8位,B为6位。
2、LM35是由National Semiconductor 所生产的温度传感器,其输出电压与摄氏温标呈线性关系,转换关系为:0 时输出为0V,每升高1℃,输出电压增加10mV。
avr单片机实验报告
《AVR单片机实验报告》
实验目的:通过对AVR单片机的实验,掌握单片机的基本原理和应用,提高对单片机的理论和实践能力。
实验内容:
1. 熟悉AVR单片机的基本结构和工作原理;
2. 学习AVR单片机的编程语言和开发工具;
3. 进行LED灯控制、蜂鸣器控制、数码管显示等实验;
4. 学习单片机的输入输出控制和中断处理;
5. 完成一个简单的单片机应用项目。
实验过程:
1. 阅读AVR单片机的相关资料,了解其基本原理和编程语言;
2. 使用开发工具进行单片机程序的编写和调试;
3. 连接实验电路,进行LED灯、蜂鸣器和数码管的控制实验;
4. 学习单片机的输入输出控制和中断处理,编写相应的程序进行实验;
5. 完成一个简单的单片机应用项目,如温度检测、光敏控制等。
实验结果:
1. 成功掌握了AVR单片机的基本原理和编程语言;
2. 完成了LED灯、蜂鸣器和数码管的控制实验;
3. 熟练掌握了单片机的输入输出控制和中断处理;
4. 成功完成了一个简单的单片机应用项目。
实验总结:
通过本次实验,我深刻理解了AVR单片机的工作原理和应用方法,提高了对单片机的理论和实践能力。
在今后的学习和工作中,我将继续深入学习单片机技术,不断提升自己的专业能力。
实验一A VR单片机的认识实验目的:1.认识A VR单片机了解其在生活中的用途2.了解A VR单片机的管脚的基本功能3.学习单片机需要的预备知识,复习c语言;4.学习A VR单片机的一些基本外围电路;实验步骤见课件第二讲A VR 加入此图做为认识单片机的各个管脚实验二AVR单片机基本外围电路的认识实验目的:1.认识A VR最小系统板的最基本外围电路2.了解外围电路的功能和工作原理实验步骤:1原理图Atmega16单片机内含有flash程序储存器和SRAM数据存储器,故在一般的情况下不需要扩展存储器。
在Atmage16单片机的X1和X2之间加上0~8M的晶振,并通过22pF左右的电容接地为单片机的工作时钟。
2滤波电路电路有USB 供电,点位常常有波动,影响单片机的正常工作所以用两个极性电容滤去杂波。
3复位电路在RESET引脚加上低电平复位的复位电路并为单片机加上4.0~6.0v电源后单片机即可正常工作(只画图中reset的脚所带的图其他的不画)实验三A VR Studio的使用实验目的:熟悉A VR studio的编辑环境、学会安装次编辑器;实验步骤:1.A VR Studio的安装2.A VR Studio的使用(把打开A VR Studio过程写下)实验四流水灯实验实验目的:1.熟悉使用A VR Studio2.熟练掌握c语言3.任意控制流水灯4.了解A VR Studio软件实验步骤:1建立一个工程2编程跑马灯实验(把程序写出)(要有各别的语句注解,写出实现了什么功能)跑马灯.txt跑马灯 2.txt。
AVR实验总结:IO常用声明:flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; flash unsigned char position[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};经验:点阵led,数码管,都在内存中建立一个8字节的显示缓存,显示子程序负责将显示缓存中的数据不断地输出,而程序中则通过操作显示缓存,改变显示的内容。
2N分频系统的实现:1)利用溢出中断:若分频系数为2N,则TCNT0=255-(N-1),每次溢出中断,都要讲TCNT0重新赋值。
2)利用比较匹配中断:若分频系数为2N,则OCR0=N-1,此种方式不用重新赋值。
N分频系统的实现:同时利用溢出中断和比较匹配中断:分配系数为N:TCNTO=255-(N-1),OCR0>TCNT0且OCR0<0xff所以可知,OCR0可取的值有N-2个,所以为了OCR0有值可取,N分频系统所能实现的最小分频系数为3!注意点:计数器0配置在普通计数模式下,而非CTC模式。
值得注意的是非CTC模式下,当TCNTO等于OCR0的值的时候,同样可以申请比较匹配中断。
不同点在于,CTC模式下,TCNTO的计数值在响应中断的同时,硬件清零;而普通计数模式下,TCNTO不会被清零,而是继续计数,直到溢出255,响应溢出中断,在溢出中断中重新赋值TCNT0的计数值。
第九章状态机编程1)键盘消抖:状态0:无按键按下—》(连接键盘的IO上检测到电平变低)—》状态1延时10ms状态1:检测是否有按键按下—》(连接键盘的IO上的电平仍然为低)—》状态2注:确认有按键按下,转到状态2的同时,根据预先设定的键值,将相应的按键键值return。
延时10ms状态2:等待按键释放—》(连接键盘的IO上的电平都变为高的时候)—》状态0注意点:连接键盘的IO口应该使能上拉电阻,即DDRX=0x00,PORTX=0xff。
电子称设计报告摘要本设计系统以单片机Atmega16为控制核心, 实现电子秤的基本控制功能。
在设计系统时, 为了更好地采用模块化设计法, 分步设计了各个单元功能模块。
系统的硬件部分包括最小系统部分、数据采集部分、人机交互界面三大部分。
最小系统是Atmega16的最小系统;数据采集部分由称重传感器czl-a和A/D转换部分hx711模块组成;人机界面部分为键盘输入, 1602液晶显示器, 可以直观的显示重量的具体数字以及方便的输入数据以设定单价和预定重量, 使用方便。
系统的软件部分应用单片机C语言进行编程, 实现了该设计的全部控制功能。
该电子秤可以实现基本的称重功能(称重范围为0~1Kg, 重量误差不大于±0.005Kg), 可以设定商品的单价和想要的重量, 当超重时, 相应的灯会亮起以警示。
本系统设计结构简单, 使用方便, 功能齐全, 精度高, 具有一定的开发价值。
1.电子秤概述称重技术自古以来就被人们所重视, 作为一种计量手段, 广泛应用于工农业、科研、交通、内外贸易等各个领域, 与人民的生活紧密相连。
电子秤是电子衡器中的一种, 衡器是国家法定计量器具, 是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备, 衡器产品技术水平的高低, 将直接影响各行各业的现代化水平和社会经济效益的提高。
因此, 称重技术的研究和衡器工业的发展各国都非常重视。
我国电子衡器从最初的机电结合型发展到现在的全电子型和数字智能型。
我国电子衡器的技术装备和检测试验手段基本达到国际水平。
电子衡器制造技术及应用得到了新发展。
电子称重技术从静态称重向动态称重发展;计量方法从模拟测量向数字测量发展;测量特点从单参数测量向多参数测量发展, 特别是对快速称重和动态称重的研究与应用。
电子秤属于电子衡器的一种, 它的发展也遵循这一趋势。
随着时代科技的迅猛发展, 微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。
AVR测试报告
AVR型号:NW203B-N 试验机型号:T22K 负载类型:阻性负载监测仪表:测试时间:2007年1月5日 14∶00--16∶30
测试结果:1、三相负载平衡情况下,AVR控制电压输出正常,各项数据在行业标准允许范围内。
2、三相负载严重不平衡情况下,因AVR检测取样BC电压,AVR励磁输出参照BC电压,造成在带单相
负载时三相输出电压高于或低于额定电压。
结论:当三相负载不平衡度超过发电机组设计允许范围时,容易造成发电机部件损坏。
所以发电机组行业要求三相负载不平衡度不的大于发电机组额定功率的20%。
小学期AVR单片机实验报告实验题目:基于ATmega16L单片机的电子琴设计学生姓名:学渣班级:2012XXXXXX班内序号:XX学号:2012XXXXXX日期:2014年9月30日同组同学:学渣目录:一、实验介绍 (3)1.1实验课题名称 (3)1.2实验平台 (3)1.3实验课题关键字..............................31.4实验摘要 (3)二、小组分工 (3)三、基本题目训练——流水灯与数码管秒表计时器 (3)3.1实现功能 (3)3.2程序代码分析 (4)3.3实验结果图片 (7)四、有关发声的基础知识 (7)五、电子琴的设计与测试 (9)5.1设计过程 (9)5.2实验所需元器件 (9)5.3实验程序主要流程图 (10)5.4实验原理及原理图 (10)5.4.1实验原理 (10)5.4.2原理图 (11)5.5各个模块的设计与讲解 (11)5.6程序源代码及程序分析 (14)5.7实验结果..................................... ..24六、排错过程............................ . (26)七、心得体会 (29)八、参考文献 (32)九、意见与建议 (33)一、实验介绍:1.1实验课题名称:基于ATmega16L单片机的电子琴设计1.2实验平台:本实验所用平台为AVR Studio 41.3实验课题关键字:ATmega16L型单片机电子琴键盘按键 LCD液晶显示屏1.4实验摘要:本实验设计的电子琴拥有可视化操作界面,能实现即时弹奏音乐、音乐播放、音乐变速、音乐变调,并可以进行任意长度录音(通过按键记录音阶)等功能二、小组分工:●XXX负责电路硬件的连接和报告的撰写●XXX负责程序代码的编写●XXX负责资料的收集整理和查阅三、基本题目训练——流水灯与数码管秒表计时器3.1功能:八盏LED二极管按顺序依次循环点亮,实现流水灯的效果,同时两只数码管分别代表秒和十分之一秒,进行秒表计时,配有两个按键,实现计时过程中的暂停和继续,同时在按下暂停键的时候蜂鸣器会响一声。
avr实验报告设计⽬的1、熟悉A VR单⽚机的使⽤及RTC的⼯作原理,配置⽅法。
2、熟悉串⼝的使⽤。
3、熟悉LCD的使⽤。
⼀、设计任务1、熟悉RTC的配置过程2.将按秒输出修改成按H:M:S的输出形式三、系统构成与原理1、RTC模块:图1 RTC模块2、LCD模块:调⽤函数,利⽤点阵的形式显⽰字符。
3、相关寄存器:CTRL寄存器:VAL(RTC Value)寄存器:TOP寄存器:RTC Interrupt Enable/Disable/Mask/Status/Clear:# include "intc.h"#endif#include "board.h"#include "compiler.h"#include "rtc.h"#include "usart.h"#include "gpio.h"#include "pm.h"#include "dip204.h"#include "intc.h"#include "delay.h"#include "spi.h"#include "conf_clock.h"#if BOARD==EVK1100# define EXAMPLE_USART(&AVR32_USART1)# define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN# define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN# define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION #elif BOARD==EVK1101# define EXAMPLE_USART(&AVR32_USART1)# define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN# define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN# define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION #endif#if!defined(EXAMPLE_USART)||\!defined(EXAMPLE_USART_RX_PIN)||\!defined(EXAMPLE_USART_RX_FUNCTION)||\!defined(EXAMPLE_USART_TX_PIN)||\!defined(EXAMPLE_USART_TX_FUNCTION)# error The USART configuration to use in this example is missing. #endifvolatile static int print_sec=1;// Time counterstatic int sec=0;#if__GNUC____attribute__((__interrupt__))#elif__ICCAVR32__/* RTC Interrupt */#pragma handler=AVR32_RTC_IRQ_GROUP, 1{sec++;// Increment the minutes counterrtc_clear_interrupt(&AVR32_RTC);// clear the interrupt flag print_sec=1;}char*print_i(char*str,unsigned int n){int i=10;str[i]='\0';do{str[--i]='0'+n%10;n/=10;}while(n);return&str[i];}//change the number to string#define GPIO_CHARSET GPIO_PUSH_BUTTON_0#define GPIO_BACKLIGHT_MINUS GPIO_PUSH_BUTTON_1 #define GPIO_BACKLIGHT_PLUS GPIO_PUSH_BUTTON_2 unsigned short display;unsigned short current_char=0;#if__GNUC____attribute__((__interrupt__))#elif__ICCAVR32____interrupt#endifstatic void dip204_example_PB_int_handler(void){unsigned short i;if(gpio_get_pin_interrupt_flag(GPIO_CHARSET)){dip204_set_cursor_position(1,4);/* go to first column of 4th line */ for(i=current_char;i{dip204_write_data(i);}dip204_write_string(" ");current_char=i;if(current_char>=0xFF){current_char=0x10;}/* reset marker */gpio_clear_pin_interrupt_flag(GPIO_CHARSET);//allow new interrupt : clear the IFR flag }if(gpio_get_pin_interrupt_flag(GPIO_BACKLIGHT_PLUS)){dip204_set_backlight(backlight_power_increase);gpio_clear_pin_interrupt_flag(GPIO_BACKLIGHT_PLUS);}if(gpio_get_pin_interrupt_flag(GPIO_BACKLIGHT_MINUS)){dip204_set_backlight(backlight_power_decrease);gpio_clear_pin_interrupt_flag(GPIO_BACKLIGHT_MINUS);}}#if__GNUC____attribute__((__interrupt__))#elif__ICCAVR32____interrupt#endifstatic void dip204_example_Joy_int_handler(void){if(gpio_get_pin_interrupt_flag(GPIO_JOYSTICK_UP)){dip204_set_cursor_position(19,1);dip204_write_data(0xDE);display=1;gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_UP);}if(gpio_get_pin_interrupt_flag(GPIO_JOYSTICK_DOWN)){dip204_set_cursor_position(19,3);dip204_write_data(0xE0);display=1;gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_DOWN);}if(gpio_get_pin_interrupt_flag(GPIO_JOYSTICK_LEFT)){dip204_set_cursor_position(18,2);dip204_write_data(0xE1);display=1;gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_LEFT);}if(gpio_get_pin_interrupt_flag(GPIO_JOYSTICK_RIGHT)){dip204_set_cursor_position(20,2);dip204_write_data(0xDF);display=1;gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_RIGHT);}if(gpio_get_pin_interrupt_flag(GPIO_JOYSTICK_PUSH)){dip204_set_cursor_position(19,2);dip204_write_data(0xBB);dip204_set_cursor_position(1,4);dip204_write_string(" AT32UC3A Series ");display=1;gpio_clear_pin_interrupt_flag(GPIO_JOYSTICK_PUSH);}}void dip204_example_configure_push_buttons_IT(void){gpio_enable_pin_interrupt(GPIO_CHARSET,GPIO_RISING_EDGE);gpio_enable_pin_interrupt(GPIO_BACKLIGHT_PLUS,GPIO_RISING_EDGE);gpio_enable_pin_interrupt(GPIO_BACKLIGHT_MINUS,GPIO_RISING_EDGE);Disable_global_interrupt();/* Disable all interrupts */INTC_register_interrupt(&dip204_example_PB_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_BACKLIGHT_PLUS/8),AVR32_INTC_INT1); INTC_register_interrupt(&dip204_example_PB_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_BACKLIGHT_MINUS/8),AVR32_INTC_INT1); INTC_register_interrupt(&dip204_example_PB_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_CHARSET/8),AVR32_INTC_INT1);Enable_global_interrupt();}void dip204_example_configure_joystick_IT(void){gpio_enable_pin_interrupt(GPIO_JOYSTICK_UP,GPIO_FALLING_EDGE);gpio_enable_pin_interrupt(GPIO_JOYSTICK_DOWN,GPIO_FALLING_EDGE);gpio_enable_pin_interrupt(GPIO_JOYSTICK_RIGHT,GPIO_FALLING_EDGE);gpio_enable_pin_interrupt(GPIO_JOYSTICK_PUSH,GPIO_FALLING_EDGE);gpio_enable_pin_interrupt(GPIO_JOYSTICK_LEFT,GPIO_FALLING_EDGE);Disable_global_interrupt();INTC_register_interrupt(&dip204_example_Joy_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_JOYSTICK_UP/8),AVR32_INTC_INT1); INTC_register_interrupt(&dip204_example_Joy_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_JOYSTICK_DOWN/8),AVR32_INTC_INT1); INTC_register_interrupt(&dip204_example_Joy_int_handler,AVR32_GPIO_IRQ_0+(GPIO_JOYSTICK_RIGHT/8),AVR32_INTC_INT1);INTC_register_interrupt(&dip204_example_Joy_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_JOYSTICK_LEFT/8),AVR32_INTC_INT1); INTC_register_interrupt(&dip204_example_Joy_int_handler,AVR32_GPIO_IRQ_0+ (GPIO_JOYSTICK_PUSH/8),AVR32_INTC_INT1); Enable_global_interrupt();}int main(void){char temp[20];char temp1[20];char temp2[20];char*ptemp;char*ptemp1;char*ptemp2;static const gpio_map_t USART_GPIO_MAP={{EXAMPLE_USART_RX_PIN,EXAMPLE_USART_RX_FUNCTION},{EXAMPLE_USART_TX_PIN,EXAMPLE_USART_TX_FUNCTION},{DIP204_SPI_SCK_PIN,DIP204_SPI_SCK_FUNCTION},// SPI Clock.{DIP204_SPI_MISO_PIN,DIP204_SPI_MISO_FUNCTION},// MISO.{DIP204_SPI_MOSI_PIN,DIP204_SPI_MOSI_FUNCTION},// MOSI.{DIP204_SPI_NPCS_PIN,DIP204_SPI_NPCS_FUNCTION}// Chip Select NPCS.};pm_switch_to_osc0(&AVR32_PM,FOSC0,OSC0_STARTUP);Disable_global_interrupt();INTC_init_interrupts();Enable_global_interrupt();spi_options_t spiOptions={.reg=DIP204_SPI_NPCS,.baudrate=1000000,.bits=8,.spck_delay=0,.trans_delay=0,.stay_act=1,.spi_mode=0,};// USART optionsstatic const usart_options_t USART_OPTIONS={.baudrate=57600,.charlength=8,.paritytype=USART_NO_PARITY,.stopbits=USART_1_STOPBIT,.channelmode=0};pm_switch_to_osc0(&AVR32_PM,FOSC0,OSC0_STARTUP);// Assign GPIO pins to USART0.gpio_enable_module(USART_GPIO_MAP,sizeof(USART_GPIO_MAP)/sizeof(USART_GPIO_MAP[0]));usart_init_rs232(EXAMPLE_USART,&USART_OPTIONS,12000000);usart_write_line(EXAMPLE_USART, "\x1B[2J\x1B[H\r\nATMEL\r\n");usart_write_line(EXAMPLE_USART, "AVR32 UC3 - RTC example\r\n");usart_write_line(EXAMPLE_USART, "RTC 32 KHz oscillator program test.\r\n");spi_initMaster(DIP204_SPI,&spiOptions);// setup chip registersspi_selectionMode(DIP204_SPI,0,0,0);// Set selection mode: variable_ps, pcs_decode, delayspi_enable(DIP204_SPI);spi_setupChipReg(DIP204_SPI,&spiOptions,FOSC0);dip204_example_configure_push_buttons_IT();dip204_example_configure_joystick_IT();dip204_init(backlight_PWM,true);current_char=0x10;// reset markerDisable_global_interrupt();#if__GNUC__INTC_init_interrupts();// Initialize interrupt vectors.INTC_register_interrupt(&rtc_irq,AVR32_RTC_IRQ,AVR32_INTC_INT0);// Register the RTC interrupt handler to the interrupt controller. #endifif(!rtc_init(&AVR32_RTC,RTC_OSC_32KHZ,RTC_PSEL_32KHZ_1HZ)){usart_write_line(&AVR32_USART0, "Error initializing the RTC\r\n");while(1);}rtc_set_top_value(&AVR32_RTC,0);rtc_enable_interrupt(&AVR32_RTC);// Enable the interruptsrtc_enable(&AVR32_RTC);// Enable the RTCEnable_global_interrupt();{if(print_sec){usart_write_line(EXAMPLE_USART, "\x1B[5;1H"); ptemp=print_i(temp,sec%60);ptemp1=print_i(temp1,(sec/60)%60);ptemp2=print_i(temp2,sec/3600);usart_write_line(EXAMPLE_USART, "Timer: "); usart_write_line(EXAMPLE_USART,ptemp2); usart_write_line(EXAMPLE_USART, "h");usart_write_line(EXAMPLE_USART,ptemp1); usart_write_line(EXAMPLE_USART, "m");usart_write_line(EXAMPLE_USART,ptemp); usart_write_line(EXAMPLE_USART, "s");print_sec=0;}dip204_set_cursor_position(5,1);dip204_write_string("the timer is");dip204_set_cursor_position(5,2);dip204_write_string(ptemp2);dip204_set_cursor_position(7,2);dip204_write_string("h ");dip204_set_cursor_position(8,2);dip204_write_string(ptemp1);dip204_set_cursor_position(10,2);dip204_write_string("m");dip204_set_cursor_position(11,2);dip204_write_string(ptemp);dip204_set_cursor_position(13,2);dip204_write_string("s");dip204_hide_cursor();delay_ms(400);dip204_set_cursor_position(5,2);dip204_write_string(" ");dip204_set_cursor_position(8,2);dip204_write_string(" ");dip204_set_cursor_position(11,2);dip204_write_string(" ");//display the timer }}五、运⾏结果。
通达学院2014 /2015 学年第一学期课程设计实验报告模块名称A VR单片机课程设计(proteus)专业通信工程学生班级学生学号学生姓名指导教师李虹戴海鸿杨洁王明伟AVR单片机软件设计(proteus)报告基本内容包括:1)总体设计原理、思路;根据题目的要求,我们需要事先得到3种波形的信号源,并将其在程序存储器中,然后取出程序存储器里的信号源存放在atmega128的外部RAM中,并通过DAC0832输出到示波器上显示图形。
采用按键方式控制输出波形,并且通过DS18B20上的温度来控制信号的频率,温度在1~10时显示2Hz,温度为11~20时显示4Hz,温度为21~30时为8Hz,温度为31~40时为15Hz,温度大于40时为19Hz。
最后在LM016L上显示出输出的波形名称和温度以及频率。
2)硬件方面原理图的设计:包括使用的元器件、典型芯片的介绍;原理图的说明等1、ATmega128ATmega128为基于AVR RISC结构的8位低功耗CMOS微处理器。
由于其先进的指令集以及单周期指令执行时间,ATmega128 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
2、DS18B20DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的,也就是你要做的是配置寄存器。
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
3、DAC0832DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
DAC0832是8分辨率的D/A 转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
3)软件方面程序流程图的设计、关键代码的说明关键代码:#include <iom128v.h>#include<macros.h> //包含_nop_()函数定义的头文件 #include "DS18B20.h" //DS18B20驱动程序软件包 #include "delay.h" //包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned int#define key1 PINB&(1<<PB0)//读取PB0引脚#define key2 PINB&(1<<PB1)//读取PB1引脚#define key3 PINB&(1<<PB2)//读取PB2引脚#define key4 PINB&(1<<PB3)//读取PB3引脚#define key5 PINB&(1<<PB4)//读取PB4引脚#define key6 PINB&(1<<PB5)//读取PB5引脚#define key7 PINB&(1<<PB6)//读取PB6引脚#define key8 PINB&(1<<PB7)//读取PB7引脚uchar const table_sjb[256] = //三角波{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0xFF,0xFE,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF3,0xF2,0xF1,0xF0,0xEF,0xEE,0xED,0xEC,0xEB,0xEA,0xE9,0xE8,0xE7,0xE6,0xE5,0xE4,0xE3,0xE2,0xE1,0xE0,0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD9,0xD8, 0xD7,0xD6,0xD5,0xD4,0xD3,0xD2,0xD1,0xD0,0xCF,0xCE,0xCD,0xCC,0xCB,0xCA,0xC9,0xC8,0xC7,0xC6,0xC5,0xC4,0xC3,0xC2,0xC1,0xC0,0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8, 0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90, 0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80};uchar const table_zxb[256] = //正弦表{0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE, 0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDE,0xDD,0xDA,0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1,0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,0x80,0x7C,0x79,0x78,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27,0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x80};uchar const table_fb[256] = //方波 {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 };uint t1_cnt;uchar flag=1;uchar pinlv_flag;//频率标志uchar dis_flag=1;uint cnt;/********************************************************************** *********以下是对液晶模块的操作程序*********************************************************************** ********/#define RS_0 PORTC&=~(1<<PC0)#define RS_1 PORTC|=(1<<PC0)#define RW_0 PORTC&=~(1<<PC1)#define RW_1 PORTC|=(1<<PC1)#define E_0 PORTC&=~(1<<PC2)#define E_1 PORTC|=(1<<PC2)/*****************************************************函数功能:延时若干微秒入口参数:n***************************************************/void delaynus(unsigned int n){if (n == 0)return ;while (--n);}/*****************************************************函数功能:延时1ms***************************************************/void delay1ms(void){unsigned int i;for(i=0;i<114;i++);}void delaynms(unsigned int n) //N ms延时函数{unsigned int i=0;for (i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delay(uint xms){int i,j;for(i=0;i<xms;i++){ for(j=0;j<114;j++) ; }}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。