下载后可任意编辑基于 AVR 单片机的转速测量和行程测量系统王树超 李祥伟 樊帅帅一 设计目的,思想和功能通过设计转速测量系统,熟悉 AVR 单片机的使用和利用 ICC 软件编程,设计出一种具有一定有用价值的转速测量系统,并用于行程测量和超速报警等仪器。通过有用光电开关,将外界的转动信号,转化为电信号,来触发单片机内部的计时中断,结合内部的定时系统,就可以测出外部信号(转动)的频率,换算成转速。然后将转动次数累加,转换成行程。 我们的仪器可以实现对风扇等器物的转速的测量,也可以应用于对汽车等交通工具行程和速度的测量。二 硬件设计思想和电路原理图(1)、硬件电路流程三 电路原理图光电开关ATmeaga16转速显示超速警报行程显示下载后可任意编辑三 如何使用硬件资源 光电开关使用时,将其接地端接在单片机某个输出低电平的引脚上,信号输出端接在单片机的输入引脚上。四 软件设计流程下载后可任意编辑五 程序//ICC-AVR application builder : 2024-5-31 7:42:42// Target : M16// Crystal: 1.0000Mhz#include 系统初始化T0 外部中断, 100 个外部脉冲中断一次T2 内 部 计 时 中断,每 504us 中断一次扫描断数码管清零并初始化 T2 计数器,赋值转速,圈数自加,就绪标志置位计时变量自加进入主函数推 断 刷 新 标志是否为 1是否求出转速,行程并送显示 区 , 判 读 是 否 需 警报,清零就绪标志等待下载后可任意编辑#include flash unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};flash unsigned char position[8]={0x08,0x04,0x02,0x01,0x80,0x40,0x20,0x10};unsigned char dis_buff[8];// 显示缓冲区,存放要显示的 8 个字符的段码值unsigned char posit;intok = 0;unsigned char new;long int freq;unsigned long int zhuansu,xingcheng=0,a=0,b=0;void port_init(void){ PORTA = 0x00; DDRA = 0xFF; PORTB = 0xf0; DDRB = 0xf0; PORTC = 0x00; //m103 output only DDRC = 0xFF; PORTD = 0xff; DDRD = 0xFF;}//call this routine to initialize all peripheralsvoid init_devices(void){ //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x00; //timer...