/**************************************************************** 外部晶振8M PA0~3:四位数码管的位选 PB0~7:数码管的8位段选 外部中断0用于计数 定时器0溢出中断的定时为1ms 说明 :检测到水流较小时,继电器延时1秒关闭 ******************************************************************/ #include<iom16v.h> #include<macros.h> #define uchar unsigned char #define uint unsigned int char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //数码管段选 char position[4]={0xfe,0xfd,0xfb,0xf7};//数码管位选 uint sumnum=0; //用于记录1000ms内进入中断的次数 uint time=0; //记录进入比较定时器0的次数 uint num=0; //记录1ms内进入中断的次数 uint count=0; //进入外部中断0的次数 uchar flag; uint sumnum1; //记录100ms内的数目 /***************************函数声明***************************/ void delay(); void display(uint m ); void init(); void init_0(); void init_2(); void _delay_us(uint l) { unsigned int i; for(i=0;i<l;i++) { asm("nop"); } } /**************************主函数***********************************/ void main() { init(); init_0(); init_2(); while(sumnum<5) { PORTD=0XBF; segdisplay(sumnum1); } while(1) { segdisplay(sumnum1); } } /*************************扫描数码管时的延时函数*********************/ void delay() { uchar i,j; for(i=6;i>0;i--) for(j=225;j>0;j--); } /************************数码管显示函数*****************************/ void segdisplay( int temp) { int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int temp1,temp2,temp3,temp4; temp1=temp/1000; temp2=(temp/100)%10; temp3=(temp/10)%10; temp4=temp%10; DDRB=0xff; DDRA|=0x0f; PORTA=~BIT(3); PORTB=seg[temp1]; _delay_us(100); PORTA=~BIT(2); PORTB=seg[temp2]; _delay_us(100); PORTA=~BIT(1); PORTB=seg[temp3]; _delay_us(100); PORTA=~BIT(0); PORTB=seg[temp4]; _delay_us(100); } /***********************管脚初始化函数*********************/ void init() { DDRD|=0X40; //PD4 设置为输出 PORTD=0XBF; DDRA=0XFF; DDRB=0XFF; PORTA=0XFF; PORTB=0XFF; } /***********************外部中断0初始化*********************/ void init_0() { MCUCR=0X02; //INT0为下降沿触发 GICR=0X40; //使能INT0中断 SREG=0X80; //使能总中断 } /**********************定时器2初始化***********************/ void init_2() { TCCR0=0x03; // 内部时钟,64 分频(8M/64=125KHz) TCNT0=0x83; //装初值 TIMSK=0x01; // 允许 T/C0溢出中断中断 } /***********************外部中断0子函数********************/ #pragma interrupt_handler int0_isr:2 void int0_isr(void) { count++; } /*********************定时计数器0溢出中断子函数*****************/ #pragma interrupt_handler int0_over:10 void int0_over(void) { TCNT0=0x83; //重装初值 if((time%100) == 0) sumnum1 = num; if(time == 1000) { sumnum=num; if(sumnum<10) { if((flag==1)&&(sumnum<10)) { PORTD=0XFF; flag=0; } flag++; } else PORTD=0XBF; num=0; time=0; } num+=count; count=0; ++time; }
标签: C语言
上传时间: 2016-03-09
上传用户:彦 yan
此模块是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探 测系统的解决方案。该传感器模块对环境光线适应能力强,其具有一对红外线发 射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面) 时,红外线反射回来被接收管接收,经过比较器电路处理之后,同时信号输出接 口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距 离范围 2~60cm,工作电压为 3.3V-5V。该传感器的探测距离可以通过电位器调 节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避 障小车、流水线计数及黑白线循迹等众多场合。
标签: 循迹小车壁障传感器使用说明
上传时间: 2016-03-31
上传用户:Verily
基于proteus 51系列单片机仿真 1时间计数电路采用24进制,从00开始到23后再回到00。用数码管显示时分秒! 2具有报时功能,当时间达到整点时前x秒报时,蜂鸣器1秒响1秒停地响5次。加指示灯! 3为保证计时稳定,须由晶体振荡器提供时间基准信号! 4由一个数码管显示星期,星期计数采用7进制!
上传时间: 2016-05-03
上传用户:杨少少少
1.在任意两位数码管上实现00--99循环显示; 2. 在此基础上实现按键控制. 按下0号键开始计数, 按下1号键停止计数, 按下2号键清零. 3. 扩展为6位计数,分别显示分,秒,毫秒. 实现一个完整的秒表功能
标签: 单片机
上传时间: 2016-05-05
上传用户:test123
十字路口交通灯的系统图如图1,秒脉冲发生器产生整个定时系统的基脉冲,由减法计数器对显示时间减数达到控制每种工作状态的持续时间,当减法计数器的回零脉冲使状态控制器完成状态转换,与此同时,状态译码器根据系统的下一个工作状态决定下一个减计数的初始值。减法计数器的状态有BCD译码器、显示管显示。在黄灯亮期间,状态译码器将秒脉冲引入红灯控制电路,让红灯闪烁。
上传时间: 2016-06-04
上传用户:愛哥纯帅
通过单片机构成99秒秒表的程序,实现从00计时到99。
上传时间: 2016-07-26
上传用户:dazzle
两种互补滤波算法解算载体姿态,其中一种为梯度下降算法,对陀螺仪和加速度计数据进行融合。
上传时间: 2016-08-24
上传用户:yyxy
项目1 单片机最小系统的设计与制作项目2 霹雳灯的设计与制作项目3 自动计数报警器的设计与制作项目4 自动演奏简易电子琴的设计与制作项目5 单片机双机通信的设计与制作
上传时间: 2016-08-30
上传用户:chengxin
实验内容: 1.利用QuartusII的"MegaWizard Plug-In Manager", 设计输入数据宽度是4bit的ADD、SUB、MULT、DIVIDE、COMPARE 把它们作为一个project,DEVICE选用EPF10K70RC240-4,对它们进行 时序仿真,将仿真波形(输入输出选用group)文件提交。 2.利用QuartusII的"MegaWizard Plug-In Manager"中的LPM_COUNTER, 设计一个20bit的up_only COUNTER, 要求该COUNTER在FE0FA和FFFFF之间自动循环计数; 分析该COUNTER在EPM7128SLC84-7、EPM7128SLC84-10、 和EPF10K70RC240-2、EPF10K70RC240-4几种芯片中的最大工作频率; 请将计数器的输出仿真波形文件提交(特别注意在0FFFFCH--0FE0FFH之间的仿真波形图)。 (仅EPF10K70RC240-4芯片,最大允许Clock频率下)。
标签: 实验
上传时间: 2016-10-18
上传用户:jack
实现了将视频中所有经过车辆的读取并存储,能够实现对各个车道的单独计数及显示。
上传时间: 2016-11-27
上传用户:akic