www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]編譯環(huán)境為CodeWizardAVR#include #include #include #include #define Voltage_UP PINB.0 #define Voltage_Down PINB.2 #define UD PORTB.3 #define CS PORTB.5 #define INC PORTB.4 #define Voltage_LE

編譯環(huán)境為CodeWizardAVR

#include
#include
#include
#include

#define Voltage_UP PINB.0
#define Voltage_Down PINB.2
#define UD PORTB.3
#define CS PORTB.5
#define INC PORTB.4
#define Voltage_LED PORTB.6
#define Current_LED PORTB.7

#define Current_Detect 0
#define Out_Detect 1
#define Display_DP PORTC.2
#define Display_D3 PORTC.3
#define Display_D2 PORTC.4
#define Display_D1 PORTC.5

#define Current_UP PIND.2
#define Current_Down PIND.3

#define Display PORTD
#define AD_quotiety 0.014560//0.015856

#define ADC_VREF_TYPE 0xc0

unsigned char select_led = 1;
unsigned char Led_left;
unsigned char Led_middle;
unsigned char Led_right;
unsigned int read_adc(unsigned char adc_input)//參數(shù)為ADC通道選擇
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
//used to display
TCNT0 = 0x00; //8Mhz時鐘,1024分頻,中斷TCNT0重填0
if(select_led == 1)
{
Display = (Led_left << 4) | 0X0F;
Display_D1 = 0;
Display_D2 = 1;
Display_D3 = 1;
select_led = 2;
}
else if(select_led == 2)
{
Display = (Led_middle << 4) | 0X0F;
Display_D1 = 1;
Display_D2 = 0;
Display_D3 = 1;
select_led = 3;
}
else if(select_led == 3)
{
Display = (Led_right << 4) | 0X0F;
Display_D1 = 1;
Display_D2 = 1;
Display_D3 = 0;
select_led = 1;
}
}

void calculate_voltage(unsigned char adc_channel)
{
unsigned char Led_left_temp;
int adc_data;
unsigned int voltage_value;
adc_data = read_adc(adc_channel);
voltage_value = (int)(adc_data * AD_quotiety *100); //
Led_left = (voltage_value / 100);
voltage_value = voltage_value % 100; //15
if(Led_left >= 0x0a) // 11.5
{
Led_left_temp = Led_left;
Led_left = Led_left / 10;
Led_middle = Led_left_temp % 10;
Led_right = voltage_value / 10;
}
else // 1.15
{
Led_middle = voltage_value / 10;
Led_right = voltage_value % 10;
}
}

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{ //used to read adc
TCNT1H=0x00;
TCNT1L=0x00;
calculate_voltage(1);
}

void Wiper_Up(void)
{
INC = 1; //inc
CS = 0; //cs
UD = 1; //ud
delay_us(10);
INC = 0; //inc
delay_us(10);
CS = 1; //cs
delay_us(10);
}

void Wiper_down(void)
{
INC = 1; //inc
CS = 0; //cs
UD = 0; //ud
delay_us(10);
INC = 0; //inc
delay_us(10);
CS = 1; //cs
delay_us(10);
}

void save(void)
{
INC = 1; //inc
CS = 0; //cs
delay_us(10);
INC = 1; //inc
delay_us(10);
CS = 1; //cs
delay_us(10);
}

void port_init(void)
{
PORTB = 0xFF; DDRB = 0xFA;
//PORTB2.3輸出PWM,要設(shè)為輸出
PORTC = 0x3C; DDRC = 0x3C;
PORTD = 0xFF; DDRD = 0xF0;
}

void timer0_init(void)
{
// Timer/Counter 0 initialization
// Clock source: System Clock
TCCR0 = 0x03; //clk/1024
TCNT0 = 0x00;
TIMSK = 0x05; //open timer0 and timer1
}

void timer1_init(void)
{
// Timer/Counter 0 initialization
// Clock source: System Clock
TCCR1A=0x00;
TCCR1B=0x03; //clk/64
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}

void uart_init(void)
{
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
}

void adc_init(void)
{
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
SFIOR&=0xEF;
SFIOR|=0x10;
ACSR=0x80;
}

void check_key(void)
{

if(Current_UP == 0)
{
Wiper_Up();
//calculate_voltage(1);
do
{
delay_ms(15);
}while(Current_UP == 0);
save();
}
else if(Current_Down == 0)
{
Wiper_down();
//calculate_voltage(1);
do
{
delay_ms(15);
}while(Current_Down == 0);
save();
}
else if(Voltage_UP == 0)
{
Wiper_Up();
do
{
delay_ms(15);
}while(Voltage_UP == 0);
save();
}
else if(Voltage_Down == 0)
{
Wiper_down();
do
{
delay_ms(15);
}while(Voltage_Down == 0);
save();
}
}

void main(void)
{

port_init();
timer0_init();
timer1_init();
uart_init();
adc_init();
#asm("sei")

while(1)
{
check_key();
};
}

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

引言   現(xiàn)場總線作為生產(chǎn)過程自動化發(fā)展的重點,對推動自動化技術(shù)起到巨大的推動作用,是現(xiàn)代化工業(yè)的標志。MODBUS作為現(xiàn)場總線的一種通信協(xié)議,它實現(xiàn)了PLC控制器、工控儀表與設(shè)備間的通

關(guān)鍵字: avr單片機 智能控制系統(tǒng) modbus協(xié)議

一、項目概述 1.1 引言 溫室是一種可以改變植物生長環(huán)境、為植物生長創(chuàng)造最佳條件、避免外界四季變化和惡劣氣候?qū)ζ溆绊懙膱鏊?。它以采光覆蓋材料作為全部或部分結(jié)構(gòu)材料,可在冬季或其

關(guān)鍵字: avr單片機

一、項目概述 1.1 引言 隨著社會的發(fā)展,高層建筑和智能化建筑的不斷出現(xiàn),作為垂直運輸工具的電梯得到了越來越廣泛的應(yīng)用,人們對電梯服務(wù)質(zhì)量及可靠運行提出了越來越高的要求。在20

關(guān)鍵字: avr單片機 節(jié)能電梯

VR給人一種沉浸感,具有傳統(tǒng)娛樂方式不可比擬的優(yōu)勢。理想的VR讓人分不清現(xiàn)實和虛擬,VR領(lǐng)路人相信VR能夠改變?nèi)藗兊纳罘绞健? 過去的時間,那些VR領(lǐng)域的佼佼者們有兩件事做得非常好:一是

關(guān)鍵字: avr單片機

什么是AVR單片機?應(yīng)該如何取學(xué)習(xí)?學(xué)習(xí)單片機的小伙伴都知道,衡量單片機性能好壞的指標主要有:可靠性好、功能強、高速度、低功耗和低價位,依靠這幾點,作為單片機家族中性能較高的AVR,你真的能理解嗎?

關(guān)鍵字: AVR avr單片機 寄存器

單片機誕生于20世紀70年代末,它是指一個集成在一塊芯片上的完整計算機系統(tǒng)。單片機具有一個完整計算機所需要的大部分部件:CPU、內(nèi)存、內(nèi)部和外部總線系統(tǒng),目前大部分還會具有外存。同時集成諸如通訊接口、定時器,實時時鐘等外...

關(guān)鍵字: avr單片機 單片機

pic單片機使用較多,因此學(xué)習(xí)pic單片機的人數(shù)也相對較多。對于pic單片機,它的優(yōu)點眾所皆知。此文對pic單片機的講解在于介紹pic單片機的IO口操作。但本文不僅僅局限于pic單片機,同樣將對51單片、AVR單片機IO...

關(guān)鍵字: avr單片機 pic單片機 io操作

對于pic單片機的學(xué)習(xí),很多朋友總是能充滿激情,不斷利用閑余時間研究pic單片機的各類技術(shù)。而談及pic單片機,必須牽扯至51、AVR單片機。因此本文中,將探討pic單片機以及51、AVR單片機對于IO口的操作。對于本文...

關(guān)鍵字: 51單片機 avr單片機 pic單片機

這次做的數(shù)控電源設(shè)計思想沒什么新意,就是一個數(shù)模轉(zhuǎn)換(ADC0809)和一個模數(shù)轉(zhuǎn)換(DAC0832),再加上兩個單片機分別控制0809和0832,組成一個反饋網(wǎng)絡(luò),來得到輸入的數(shù)字相對應(yīng)的電壓,電壓范圍很小,只有0~1...

關(guān)鍵字: 12v 單片機 數(shù)控電源

單片機控制開關(guān)電源,單從對電源輸出的控制來說,可以有幾種控制方式。

關(guān)鍵字: avr單片機 開關(guān)電源
關(guān)閉
關(guān)閉