




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/*xtal=8AVR162011-5-11MS*huang*#include<iom16.h>#include<intrinsics.h>#defineucharunsignedchar#defineuintunsignedint#defineCPL_BIT(x,y)(xA=(1<<y)_flashucharSEG710=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;_flashucharSEG49=0x77,0x7C,0x39,0x5e,0x79,0x71,0x6f,0x74,0x40;_flashu
2、charACT4=0xef,0xdf,0xbf,0x7f;uintt1=1234,cnt2=11,cnt3=22,cnt4=33,cnt5=44,cnt6=0,cnt7=0,cnt8=0,cnt9=0;uintt1_1,cnt1_2,cnt1_3,cnt1_4,cnt2_1,cnt2_2,cnt2_3,cnt2_4;ucharstart_flag,start_flag1;uchari;longx;uintvoltage1,Disval1,voltage2,Disval2;uintvalue,dis_val;/無符號整型全局變量定義ucharstatus=4,status_1=0,status_
3、2=0,flag;/無符號字符型全局變量定義ucharstatus_sw=0;ucharnum;/*#defineS1(PINA&0x01)/遞減#defineS2(PINA&0x02)/位數設定#defineS3(PINA&0x04)/運行#defineS4(PINA&0x08)/存儲#defineS5(PINA&0x10)/M4#defineS6(PINA&0x20)/M3#defineS7(PINA&0x40)/M2/#defineS8(PINA&0x80)/M1#defineS9(PINC&0x02)/遞增#def
4、ineS10(PINC&0x01)/切換#definextal8#defineEEWE1#defineEEMWE2#defineEERE0/*寫EEPROM子函數*/*為待寫數據,add 為 EEPROM 的某單voidWRITE_EEP(uintaddress,uchardat)/dat元地址while(EECR&(1<<EEWE);EEAR=address;EEDR=dat;EECR|=(1<<EEMWE);/ 等待前一次寫操作完成/ 設定單元地址/ 將數據寫入 EEDR/ 允許 EEPROM 操作EECR|=(1<<EEWE);/*/
5、開始 EEPROM 寫操作讀 EEPROMuchar READ_EEP(uint address) 子函數 */ add 為 EEPROM 的某單元地址while(EECR&(1<<EEWE);EEAR=address;EECR|=(1<<EERE);return EEDR;/等待前一次寫操作完成設定單元地址/開始 EEPROM 寫操作返回讀出的數據/*voidDelay_1ms(void)uinti;for(i=1;i<(uint)(xtal*143-2);i+)/voidDelay_nms(uintn)uinti=0;while(i<n)Dela
6、y_1ms();i+;/*/uint conv(uint l) /數據轉換子函數,定義i 為無符號整型變量long m; / 定義 x 為無符號長整型局部變量uint n; / 定義 y 為無符號整型局部變量m=(5000*(long)l)/1023; /將變量 i 轉換成需要顯示的形式n=(uint)m; / 將無符號長整型變量x 強制轉換成無符號整型變量yreturn n; / 返回 y 的值/*/void port_init(void)PORTA = 0x7F;DDRA = 0x00;MCUCSR|=0x80;/PORTB = 0x00;DDRB = 0xFF;MCUCSR|=0x80;
7、/使 PORTB 端口的 JTAG 功能無效使 PORTC 端口的 JTAG 功能無效PORTC=0x03;DDRC=0xfC;MCUCSR|=0x80;/使PORTD端口的JTAG功能無效PORTD=0x00;DDRD=0xff;voidtimer0_init(void)TCNT0=0x83;TCCR0=0x04;voidtimer1_init(void)TCCR1A=0xA3;TCCR1B=0x0A;OCR1A=0x00;OCR1B=0x00;TCNT1H=0xD8;TCNT1L=0xF0;/*看門狗初始化 ,分頻系數為 256K*void watchdog_init(void)_watc
8、hdog_reset();WDTCR = 0x1b;WDTCR = 0x00;void adc_init(void) /ADCSRA=0x00;ADMUX = 0x07; /ACSR = 0x80; /ADCSRA= 0xCE;/模數轉換初始化子函數選擇 ADC 輸入通道為 7關掉模擬比較器單次轉換 中斷/ADCSRA = 0xE9; /ADC 使能中斷使能,預分頻器系數取2 , ADC 轉換使能,自動觸發(fā)void init_devices(void)_disable_interrupt(); /disable all interrupts port_init();timer0_init();
9、/timer1_init();adc_init();MCUCR = 0x8A;/ 中斷方式控制GICR=0xC0;/使能中斷方式TIMSK=0x03;_enable_interrupt();/re-enableinterrupts11)/*/voidscan()if(S10=0)/切換鍵Delay_nms(10);if(S10=0)while(!S10);if(+status_2>2)status_2=0;)if(S9=0)/個十百位選擇Delay_nms(10);if(S9=0)while(!S9);if(+status_sw>3)status_sw=0;if(status_sw
10、=0)PORTB|=(1<<0);PORTB&=(1<<1);PORTB&=(1<<2);PORTB&=(1<<3);elseif(status_sw=3)PORTB|=(1<<1);PORTB&=(1<<0);PORTB&=(1<<2);PORTB&=(1<<3);elseif(status_sw=2)PORTB|=(1<<2);PORTB&=(1<<1);PORTB&=(1<<0);PORTB&a
11、mp;=(1<<3);elseif(status_sw=1)PORTB|=(1<<3);PORTB&=(1<<1);PORTB&=(1<<2);PORTB&=(1<<0);if(S2=0)/遞增Delay_nms(10);if(S2=0)while(!S2);if(status_2=0)&&(status_sw=0)(if(+cnt1_1>9)cnt1_1=0;)elseif(status_2=0)&&(status_sw=1)(if(+cnt1_2>9)cnt1_2
12、=0;)elseif(status_2=0)&&(status_sw=2)(if(+cnt1_3>9)cnt1_3=0;)elseif(status_2=0)&&(status_sw=3)(if(+cnt1_4>9)cnt1_4=0;)lllllllllllllllllllllllllllllllllllllllllif(status_2=1)&&(status_sw=0)(if(+cnt2_1>9)cnt2_1=0;)elseif(status_2=1)&&(status_sw=1)(if(+cnt2_2>
13、;9)cnt2_2=0;)elseif(status_2=1)&&(status_sw=2)(if(+cnt2_3>9)cnt2_3=0;)elseif(status_2=1)&&(status_sw=3)(if(+cnt2_4>9)cnt2_4=0;)if(S1=0)/遞減(Delay_nms(10);if(S1=0)while(!S1);if(status_2=0)&&(status_sw=0)if(-cnt1_1=0)cnt1_1=9;elseif(status_2=0)&&(status_sw=1)if(-cn
14、t1_2=0)cnt1_2=9;elseif(status_2=0)&&(status_sw=2)if(-cnt1_3=0)cnt1_3=9;elseif(status_2=0)&&(status_sw=3)if(-cnt1_4=0)cnt1_4=9;/if(status_2=1)&&(status_sw=0)if(-cnt2_1=0)cnt2_1=9;elseif(status_2=1)&&(status_sw=1)if(-cnt2_2=0)cnt2_2=9;elseif(status_2=1)&&(status
15、_sw=2)if(-cnt2_3=0)cnt2_3=9;elseif(status_2=1)&&(status_sw=3)if(-cnt2_4=0)cnt2_4=9;if(S5=0)/儲存Delay_nms(10);if(S5=0)while(!S4);WRITE_EEP(345,cnt1_1);Delay_nms(10);WRITE_EEP(350,cnt1_2);Delay_nms(10);WRITE_EEP(355,cnt1_3);Delay_nms(10);WRITE_EEP(360,cnt1_4);Delay_nms(10);WRITE_EEP(365,cnt2_1)
16、;Delay_nms(10);WRITE_EEP(370,cnt2_2);Delay_nms(10);WRITE_EEP(375,cnt2_3);Delay_nms(10);WRITE_EEP(380,cnt2_4);Delay_nms(10);if(S3=0)/啟動位翻轉Delay_nms(10);if(S3=0)while(!S3);PORTC|=(1<<4);/CPL_BIT(start_flag,0);/*if(start_flag=0x01)/啟動PORTC|=(1<<4);if(start_flag=0x00)/停止PORTC&=(1<<
17、4);*/if(S4=0)/啟動位翻轉Delay_nms(10);if(S4=0)while(!S4);PORTC&=(1<<4);voidmain(void)/*init_devices();cnt1_1=READ_EEP(345);Delay_nms(10);cnt1_2=READ_EEP(350);Delay_nms(10);cnt1_3=READ_EEP(355);Delay_nms(10);cnt1_4=READ_EEP(360);Delay_nms(10);cnt2_1=READ_EEP(365);Delay_nms(10);cnt2_2=READ_EEP(37
18、0);Delay_nms(10);cnt2_3=READ_EEP(375);Delay_nms(10);cnt2_4=READ_EEP(380);Delay_nms(10);*/while(1)scan();if(num>20)Delay_nms(10);if(flag=1)dis_val=(conv(value);flag=0;num=0;Delay_nms(100);if(dis_val>(cnt1_1+cnt1_2*10+cnt1_3*100+cnt1_4*1000)PORTC&=(1<<4);/M1驅動關閉/if(dis_val<(cnt2_1+c
19、nt2_2*10+cnt2_3*100+cnt2_4*1000)PORTC|=(1<<4);/M1驅動開起/*if(S10=0)status_1=0;status=6;if(+status_2>4)status_2=0;Delay_nms(150);/切換鍵*/*elseif(S1=0)WRITE_EEP(345,cnt1);Delay_nms(10);WRITE_EEP(350,cnt2);Delay_nms(10);WRITE_EEP(355,cnt3);Delay_nms(10);WRITE_EEP(360,cnt4);Delay_nms(10);WRITE_EEP(3
20、65,cnt5);Delay_nms(10);/儲存鍵*/*elseif(S9=0)if(status_2=0)if(+cnt1>99)cnt1=0;if(status_2=1)if(+cnt2>99)cnt2=0;if(status_2=2)if(+cnt3>99)cnt3=0;if(status_2=3)if(+cnt4>99)cnt4=0;if(status_2=4)if(+cnt5>99)cnt5=0;Delay_nms(150);/遞增鍵*/*elseif(S2=0)if(status_2=0)if(-cnt1=0)cnt1=99;if(status_2
21、=1)if(-cnt2=0)cnt2=99;if(status_2=2)if(-cnt3=0)cnt3=99;if(status_2=3)if(-cnt4=0)cnt4=99;if(status_2=4)if(-cnt5=0)cnt5=99;Delay_nms(150);/遞減鍵elseif(S4=0)PORTC|=(1<<3);PORTB|=(1<<0);status_2=0;status=0;status_1=1;Delay_nms(cnt1*100);PORTC&=(1<<3);PORTB&=(1<<0);/QGelseif
22、(S8=0)PORTC|=(1<<4);PORTB|=(1<<1);status_2=1;status=1;status_1=1;Delay_nms(cnt2*100);PORTC&=(1<<4);PORTB&=(1<<1);/M1elseif(S7=0)PORTC|=(1<<5);PORTB|=(1<<2);status_2=2;status=2;status_1=1;Delay_nms(cnt3*100);PORTC&=(1<<5);PORTB&=(1<<2);/
23、M2elseif(S6=0)PORTC|=(1<<6);PORTB|=(1<<3);status_2=3;status=3;status_1=1;Delay_nms(cnt4*100);PORTC&=(1<<6);PORTB&=(1<<3);/M3elseif(S5=0)PORTC|=(1<<7);PORTC|=(1<<2);status_2=4;status=4;status_1=1;Delay_nms(cnt5*100);PORTC&=(1<<7);PORTC&=(1<
24、<2);/M4elseif(S3=0)PORTC|=(1<<4);PORTC|=(1<<5);PORTC|=(1<<6);PORTC|=(1<<7);PORTC|=(1<<3);PORTB|=(1<<0);PORTB|=(1<<1);PORTB|=(1<<2);PORTB|=(1<<3);PORTC|=(1<<2);status_2=5;status=5;Delay_nms(cnt1*100);PORTC&=(1<<3);PORTC&=(1&
25、lt;<4);PORTC&=(1<<5);PORTC&=(1<<6);PORTC&=(1<<7);PORTB&=(1<<0);PORTB&=(1<<1);PORTB&=(1<<2);PORTB&=(1<<3);PORTC&=(1<<2);*/*elseif(S3=0)Delay_nms(20);CPL_BIT(start_flag,0);Delay_nms(20);if(start_flag=0x01)PORTC|=(1<&
26、lt;4);PORTC|=(1<<5);PORTC|=(1<<6);PORTC|=(1<<7);PORTC|=(1<<3);Delay_nms(cnt1*100);PORTC&=(1<<3);PORTC&=(1<<4);PORTC&=(1<<5);PORTC&=(1<<6);PORTC&=(1<<7);PORTC=0x00;status_2=0;status=9;status_1=0;Delay_nms(cnt4*100);start_flag=0
27、x00;運行鍵if(start_flag=0x00)watchdog_init();Delay_nms(400);*/*/#pragmavector=TIMER0_OVF_vect_interruptvoidtimer0_ovf_isr(void)/SREG=0x80;TCNT0=0x83;if(+i>3)i=0;switch(i)case0:if(status_2=0)PORTD=SEG7cnt1_1;PORTB&=(1<<4);PORTB|=(1<<5)|(1<<6)|(1<<7);if(status_2=1)PORTD=SEG
28、7cnt2_1;PORTB&=(1<<4);PORTB|=(1<<5)|(1<<6)|(1<<7);if(status_2=2)PORTD=SEG70;PORTB&=(1<<4);PORTB|=(1<<5)|(1<<6)|(1<<7);break;case 1: if(status_2=0)PORTD=SEG7cnt1_2;PORTB&=(1<<5);PORTB|=(1<<4)|(1<<6)|(1<<7);if(status_2=1)PORTD=SEG7cnt2_2;PORTB&=(1<<5);PORTB|=(1<<4)|(1<<6)|(1<<7);if(status_2=2)PORTD=SEG
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園白露教案反思學習小故事
- 建筑施工特種作業(yè)-建筑焊工真題庫-3
- 2025屆湖北省八市高三下學期3月聯考語文試題(解析版)
- 2024-2025學年浙江省嘉興市高一上學期期末考試語文試題(解析版)
- 新疆日新恒力橡塑有限公司年處理6萬噸廢舊輪胎熱解項目報告書報告書簡寫本
- 江蘇勃晟包裝有限公司年產2300噸日用塑料制品(焊絲盤、包裝盒、灑水壺、花盆)及300噸流延膜項目環(huán)評資料環(huán)境影響
- 話劇熱泉心得體會
- 環(huán)境工程實驗課件下載
- 環(huán)境工程專題課件
- 腦出血患者營養(yǎng)治療講課件
- 【山東】國際足球運動小鎮(zhèn)概念規(guī)劃方案
- 海氏(hay)職位分析法-介紹、實踐與評價合集課件
- 煤礦安全規(guī)程露天部分參考題庫(含答案)
- 有趣的英漢互譯-課件
- (參考)菲達公司國內電除塵器業(yè)績表
- 步進式加熱爐耐材砌筑施工方案
- GB-T12232-2005- 通用閥門 法蘭連接鐵制閘閥
- 大學生職業(yè)生涯規(guī)劃與就業(yè)指導教案第5講:興趣探索
- 2022年中國電信店長技能四級認證教材
- 門店電表記錄表
- 常見散料堆積密度匯總-共10
評論
0/150
提交評論