/****************************************************************
外部晶振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;
}
資源簡介:/****************************************************************? ? ? ? ? ? ? ? ? 外部晶振8M? ? ? ? ? ? ? ? ? PA0~3:四位數碼管的位選? ? ? ? ? ? ? ? ? PB0~7:數碼管的8位段選? ? ? ? ? ? ? ? ? 外部中斷0用...
上傳時間: 2016-03-09
上傳用戶:彥 yan
資源簡介:AVR單片機CRC校驗碼的查表與直接生成
上傳時間: 2015-04-11
上傳用戶:hgy9473
資源簡介:AVR單片機中文指令表,在開發AVR單片機的時候詳細了解指令可以極大的提高開發者的效率~
上傳時間: 2014-06-19
上傳用戶:zhangyi99104144
資源簡介:開發環境ICC AVR單片機 用ADC做電壓表 (多通道)
上傳時間: 2015-12-09
上傳用戶:lijinchuan
資源簡介:實現對ADE7759電能芯片的讀寫和校準,AVR單片機源碼與電路圖,單相電能表讀寫程序和初始化程序
上傳時間: 2013-12-17
上傳用戶:爺的氣質
資源簡介:這是馬潮老師最新力做<<AVR單片機潛入式系統原理與應用實踐>>中有關ADC用來實現電壓表的C程序,用CVAVR編譯,對想熟悉和學習AVR單片機的朋友一定有用.注釋詳細,一看就懂.
上傳時間: 2016-03-24
上傳用戶:dave520l
資源簡介:使用avr單片機開發的數顯表,附帶protel文件,原理圖和pcb齊全,已在試用階段,推薦下來學習。
上傳時間: 2016-09-05
上傳用戶:thuyenvinh
資源簡介:這是一個使用NOKIA 3510I的液晶屏+AVR單片機來制作的電壓表,使用AVR單片機內部自帶的ADC做電壓采樣。
上傳時間: 2014-12-22
上傳用戶:kernaling
資源簡介:AVR單片機做的數字電壓表,代碼簡單易懂,方便移植
上傳時間: 2017-03-03
上傳用戶:saharawalker
資源簡介:用于測量電機轉速并帶速度反饋,配增量編碼器,用AVR單片機ATMEGA48
上傳時間: 2017-03-22
上傳用戶:jackgao
資源簡介:AVR單片機CRC校驗碼的查表與直接生成
上傳時間: 2013-12-17
上傳用戶:ynzfm
資源簡介:積分式直流數字電壓表avr 單片機控制電路文件
上傳時間: 2017-06-02
上傳用戶:wlcaption
資源簡介:AVR單片機ATmega16(L)應用實例—紅外線轉速儀
上傳時間: 2014-01-26
上傳用戶:電子世界
資源簡介:《AVR單片機原理及應用》詳細介紹了ATMEL公司開發的ATmega8系列高速嵌入式單片機的硬件結構、工作原理、指令系統、接口電路、C編程實例,以及一些特殊功能的應用和設計,對讀者掌握和使用其他ATmega8系列的單片機具有極高的參考價值 AVR單片機原理及應用》具...
上傳時間: 2013-10-29
上傳用戶:lanwei
資源簡介:??? 文中所設計的基于AVR單片機的輪胎模具內徑測量系統,采用光柵尺和激光測距儀測量模具內徑,單片機通過接收上位機的命令控制步進電機改變測量點,同時控制光柵尺數顯表進行數據采集實時返回給上位機。上位機將光柵尺數據和激光測距儀數據進行運算后得到...
上傳時間: 2013-11-19
上傳用戶:tianyi223
資源簡介:AVR單片機的電機測速程序,利用ICCAVR編譯,通過ICP測出電機的轉速并通過數碼管顯示和串口上傳
上傳時間: 2015-11-21
上傳用戶:shawvi
資源簡介:轉速表采用的是測量編碼盤的信號,用STC89C2052單片機進行處理,根據轉速輸出0-5V電壓
上傳時間: 2014-09-01
上傳用戶:lanwei
資源簡介:本代碼以AVR單片機為主控制器,帶485接口的三相電子式電能表的源程序。 主要完成電能表的計量,顯示,485通訊,紅外通訊等功能。
上傳時間: 2016-11-22
上傳用戶:cxl274287265
資源簡介:通過對avr單片機編程,計算汽車車速表的方波,實現車速信號采集和處理。
上傳時間: 2016-12-16
上傳用戶:hakim
資源簡介:AVR單片機原理及應用
上傳時間: 2013-04-15
上傳用戶:eeworm
資源簡介:AVR單片機原理及應用
上傳時間: 2013-04-15
上傳用戶:eeworm
資源簡介:專輯類----單片機專輯 AVR單片機原理及應用-321頁-7.3M.rar
上傳時間: 2013-07-07
上傳用戶:yd19890720
資源簡介:專輯類----單片機專輯 @@-AVR單片機原理及應用-324頁-14.1M.rar
上傳時間: 2013-04-24
上傳用戶:魚魚魚yu
資源簡介:專輯類-單片機專輯-258冊-4.20G -AVR單片機原理及應用-324頁-14.1M.pdf
上傳時間: 2013-05-24
上傳用戶:ziyu_job1234
資源簡介:專輯類-單片機專輯-258冊-4.20G AVR單片機原理及應用-321頁-7.3M.pdf
上傳時間: 2013-07-09
上傳用戶:gps6888
資源簡介:上一講我們對流水燈實驗的電路實現和程序進行了分析,由于我們使用的是C語言編寫AVR單片機程序,很多初學者對于怎樣使用C語言來編寫單片機程序有著很多迷惑,比如為什么PORTB = 0Xff這句話就能實現將單片機的PB口輸出高電平。這一講我們就來進行一下C語言編寫...
上傳時間: 2013-04-24
上傳用戶:打算打算
資源簡介:avr 單片機 應用開發 典型實例 CD
上傳時間: 2013-07-29
上傳用戶:hoperingcong
資源簡介:文件名稱:AVR單片機學習開發板Proteus仿真圖.rar
上傳時間: 2013-05-21
上傳用戶:784533221
資源簡介:odbus RTU的AVR單片機C程序,可以用來與具有或支持modbus協議的設備進行通信
上傳時間: 2013-05-31
上傳用戶:博雅abcd
資源簡介:AVR單片機的一些實例程序,可以參考下,大部分可以當做你的子程序收藏喔!
上傳時間: 2013-06-19
上傳用戶:ndyyliu