/*用rtos編寫LED數碼管顯示程序,其中有用于計算的程序*/ /*另加LED流水燈*/ //須加入conf_tny.a51將周期數改為1000(原為10000),即將報時周期改為1ms,將TimeSharing由5改為1,即將時間片改為1ms /*測試結果:1)可很穩定地顯示,LED的閃爍也正常 2)如果將Timer1的定時中斷改為1000即1ms發送一次,可以看到LED流水燈速度時顯示加快,但同時數碼管出現閃爍,系統超載
上傳時間: 2017-06-04
上傳用戶:xhz1993
此文件是C語言編寫的驅動AVR單片機的I/O口,使LED每間隔1ms就閃爍。
上傳時間: 2013-12-27
上傳用戶:gaome
這是我的程序,用來是實時測量由遙控器發出的pwm波的正脈沖的長度。pwm波70hz,正脈沖的長度可以從2.1ms到0.9ms之間調整。
標簽: 程序
上傳時間: 2013-12-26
上傳用戶:Miyuki
測量范圍從1Hz—10kHz的正弦波、方波、三角波,時基寬度為1us,10us,100us,1ms。用單片機實現自動測量功能。
上傳時間: 2017-09-08
上傳用戶:kbnswdifs
/**************************************************************** 外部晶振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
空間矢量脈寬調制(Space Vector Pulse Width Modulation) SVPWM的主要思想是:以三相對稱正弦波電壓供電時三相對稱電動機定子理想磁鏈圓為參考標準,以三相逆變器不同開關模式作適當的切換,從而形成PWM波,以所形成的實際磁鏈矢量來追蹤其準確磁鏈圓。傳統的SPWM方法從電源的角度出發,以生成一個可調頻調壓的正弦波電源,而SVPWM方法將逆變系統和異步電機看作一個整體來考慮,模型比較簡單,也便于微處理器的實時控制。 普通的三相全橋是由六個開關器件構成的三個半橋。這六個開關器件組合起來(同一個橋臂的上下半橋的信號相反)共有8種安全的開關狀態. 其中000、111(這里是表示三個上橋臂的開關狀態)這兩種開關狀態在電機驅動中都不會產生有效的電流。因此稱其為零矢量。另外6種開關狀態分別是六個有效矢量。它們將360度的電壓空間分為60度一個扇區,共六個扇區,利用這六個基本有效矢量和兩個零量,可以合成360度內的任何矢量。 當要合成某一矢量時先將這一矢量分解到離它最近的兩個基本矢量,而后用這兩個基本矢量矢量去表示,而每個基本矢量的作用大小就利用作用時間長短去代表。 在變頻電機驅動時,矢量方向是連續變化的,因此我們需要不斷的計算矢量作用時間。為了計算機處理的方便,在合成時一般是定時去計算(如每0.1ms計算一次)。這樣我們只要算出在0.1ms內兩個基本矢量作用的時間就可以了。由于計算出的兩個時間的總合可能并不是0.1ms(比這小),而那剩下的時間就按情況插入合適零矢量。 由于在這樣的處量時,合成的驅動波形和PWM很類似。因此我們還叫它PWM,又因這種PWM是基于電壓空間矢量去合成的,所以就叫它SVPWM了。
上傳時間: 2016-04-25
上傳用戶:bijiaohao22
#include "STC90.h" #include < intrins.h > #define uchar unsigned char #define uint unsigned int #define led_port P1 sbit IR_RE = P3^2; sbit led_r = P1^3; sbit led_g = P1^4; sbit led_b = P1^5; sbit led_wd = P1^7; sbit K1 =P3^0 ; //增加鍵 sbit K2 =P3^1 ; //減少鍵 sbit BEEP =P3^7 ; //蜂鳴器 uchar temp,temp1; bit k=0; //紅外解碼判斷標志位,為0則為有效信號,為1則為無效 bit Flag2; uchar date[4]={0,0,0,0}; //date數組為存放地址原碼,反碼,數據原碼,反碼 uint lade_1,lade_2,lade_3,lade_4; uint num; uchar date_ram,ee_temp,ee_temp1; uchar WDT_NUM=0; uchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值01234567 uchar code seg[]={7,6,5,4,3,2,1,0};//分別對應相應的數碼管點亮,即位碼 unsigned long disp_date; void fade(); void fade1(); /*************************** 看門狗子程序*************************/ void watchdog_timer() { if(WDT_NUM==5) { WDT_NUM=0; led_wd=!led_wd; } WDT_NUM++; WDT_CONTR=0x3f; } /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } /*--------------------------延時1ms程子程序-----------------------*/ void delay_1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=126;y>0;y--); } /*--------------------------延時1ms程子程序-----------------------*/ delay1000() { uchar i,j; i=5; do{j=95; do{j--;} while(j); i--; } while(i); } /*---------------------------延時882us子程序-----------------------*/ delay882() { uchar i,j; i=6; do{j=71; do{j--;} while(j); i--; }while(i); } /*--------------------------延時2400us程子程序-----------------------*/ delay2400() { uchar i,j; i=5; do{j=237; do{j--;} while(j); i--; }while(i); } /**********************************************************************/ /* void display() { uchar i; for(i=0;i<8;i++) { P0=dofly[disp_date%10];//取顯示數據,段碼 P2=seg[i]; //取位碼 delay_1ms(1); disp_date/=10; } } */ /*********************************************************************/ uchar EEPROM_read(uint addr)//EEPROM字節讀 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=1; //字節讀 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); return ISP_DATA; } //-------------------------------------------------------------------- void EEPROM_write(uint addr,uchar dat)//EEPROM字節寫 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=2; //字節編程 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_DATA=dat; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //-------------------------------------------------------------------- void EEPROM_ERASE(uint addr)//EEPROM扇區擦除 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=3; //扇區擦除 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //************************************************************** /*----------------------------------------------------------*/ /*-----------------------紅外解碼程序(核心)-----------------*/ /*----------------------------------------------------------*/ void IR_decode() { uchar i,j; while(IR_RE==0); delay2400(); if(IR_RE==1) //延時2.4ms后如果是高電平則是新碼 { delay1000(); delay1000(); for(i=0;i<4;i++) { for(j=0;j<8;j++) { while(IR_RE==0); //等待地址碼第1位高電平到來 delay882(); //延時882us判斷此時引腳電平 ///CY=IR_RE; if(IR_RE==0) { date[i]>>=1; date[i]=date[i]|0x00; } else if(IR_RE==1) { delay1000(); date[i]>>=1; date[i]=date[i]|0x80; } } //1位數據接收結束 } //32位二進制碼接收結束 } } /* void LED_PWM() { lade_2=num; //384 lade_4=num; //384 while(lade_2!=0&Flag2==1) { for(lade_3=512;lade_3>lade_4;lade_3--) //512 { led_port=0x00; delay(1); } lade_3=512; //512 lade_4--; for(lade_1=0;lade_1<lade_2;lade_1++) { led_port=0x38; //c7 delay(1); } lade_1=0; lade_2--; if(temp!=0x0c&Flag2==1) { lade_2=0; } lade_2=num; //384 lade_4=num; //384 } } */ void calc() { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; //************************************* 1 /* if(date[3]==0xff&Flag2==1) { if(num>=20) { num=num-80; } //else num=1; LED_PWM(); } if(date[3]==0xfe&Flag2==1) { if(num<=500) { num=num+80; } // else num=511; LED_PWM(); } if(ee_temp1==0xfd) { led_port=0x00; watchdog_timer(); } if(ee_temp1==0xfc) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } */ //********************************************** 2 if(ee_temp1==0xfb) { led_port=0x00; led_r=1; watchdog_timer(); } if(ee_temp1==0xfa) { led_port=0x00; led_g=1; watchdog_timer(); } if(ee_temp1==0xf9) { led_port=0x00; led_b=1; watchdog_timer(); } if(ee_temp1==0xf8) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } //************************************** 3 if(ee_temp1==0xf7) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x07) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x07) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf6) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x06) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x06) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf5) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x05) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x05) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf4) { while(ee_temp==4) { led_port=0x00; led_r=1; delay_1ms(200); led_port=0x00; led_r=1; led_g=1; delay_1ms(200); led_port=0x00; led_g=1; delay_1ms(200); watchdog_timer(); led_port=0x00; led_g=1; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; led_r=1; delay_1ms(200); watchdog_timer(); } } //************************************** 4 if(ee_temp1==0xf3) { uint fade_1,fade_2,fade_3,fade_4; fade_2=416; //384 fade_4=416; //384 while(fade_2!=0&ee_temp==0x03) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x03) { fade_2=0; } watchdog_timer(); fade_2=416; //384 fade_4=416; //384 } } if(ee_temp1==0xf2) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x02) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x02) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xf1) { uint fade_1,fade_2,fade_3,fade_4; fade_2=348; //384 fade_4=348; //384 while(fade_2!=0&ee_temp==0x01) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x01) { fade_2=0; } watchdog_timer(); fade_2=348; //384 fade_4=348; //384 } } if(ee_temp1==0xf0) { while(ee_temp==0) { led_port=0x00; led_r=1; delay_1ms(500); watchdog_timer(); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); watchdog_timer(); } } //******************************************** 5 if(ee_temp1==0xef) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x0f) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0f) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xee) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0e) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0e) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xed) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0d) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0d) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xec) fade(); //******************************************* 6 if(ee_temp1==0xeb) { led_port=0x00; led_r=1; led_g=1; watchdog_timer(); } if(ee_temp1==0xea) { led_port=0x00; //led_r=0; led_g=1; led_b=1; watchdog_timer(); } if(ee_temp1==0xe9) { led_port=0x00; led_r=1; //led_g=0; led_b=1; watchdog_timer(); } if(ee_temp1==0xe8) fade1(); } void fade() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0c) { fade_2=0; } } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); // watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); // watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); } void fade1() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x08) { fade_2=0; } } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); } void init() { led_port=0x00; /* led_r=1; delay_1ms(500); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); led_port=0x00; */ delay_1ms(2); WDT_CONTR=0x3f; delay_1ms(500); } //******************************** void main() { init(); Flag2=0; SP=0x60; //堆棧指針 EX0=1; //允許外部中斷0,用于檢測紅外遙控器按鍵 EA=1; num=255; while(1) { calc(); } } //******************************************************************** /*------------------------外部中斷0程序-------------------------*/ /*------------------主要用于處理紅外遙控鍵值--------------------*/ void int0() interrupt 0 { uchar i; Flag2=0; /////// k=0; EX0=0; //檢測到有效信號關中斷,防止干擾 for(i=0;i<4;i++) { delay1000(); if(IR_RE==1){k=1;} //剛開始為9ms的引導碼. } led_port=0x00; if(k==0) { IR_decode(); //如果接收到的是有效信號,則調用解碼程序 if(date[3]>=0xe8) { if(date[3]<=0xfb) { temp1=date[3]; EEPROM_ERASE(0x2000); //STC_EEROM_0X2000 temp1 EEPROM_write(0x2000,temp1); EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; /* temp=date[3]&0x0f; EEPROM_ERASE(0x2004); //STC_EEROM_0X2004 temp EEPROM_write(0x2004,temp); */ } else { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; } } delay2400(); delay2400(); delay2400(); delay_1ms(500); } EX0=1; //開外部中斷,允許新的遙控按鍵 }
上傳時間: 2016-07-02
上傳用戶:184890962
100-24c02記憶開機次數101-24c02存儲上次使用中狀態102-DS1302 時鐘原理103-DS1302可調時鐘104-DS1302時鐘串口自動更新時間105-1602液晶顯示DS1302時鐘106-字庫ST7920 12864液晶基礎顯示107-按鍵 12864顯示108-PCF8591 1路AD數碼管顯示109-PCF8591 4路AD數碼管顯示11-LED循環右移110-PCF8591 DA輸出模擬111-PCF8591 輸出鋸齒波112-PCF8591 1602液晶顯示113-串口通訊114-串口通訊中斷應用115-RS485基本通訊原理116-紅外接收原理117-紅外解碼數碼管顯示118-紅外解碼1602液晶顯示119-紅外發射原理12-查表顯示LED燈120-紅外收發測試121-雙紅外發射避障原理測試122-1個18B20 溫度傳感器 數碼管顯示123-1個18b20溫度傳感器1602液晶顯示124-多個18b20溫度傳感器1602液晶顯示125-超溫報警測試126-溫度可調上下限1602126-溫度可調上下限1602顯示127-PS2鍵盤輸入1602液晶顯示128-雙色點陣1種顏色顯示測試129-雙色點陣2種顏色顯示測試13-雙燈左移右移閃爍130-雙色點陣顯示特定圖形131-雙色點陣交替圖形顯示132-雙色點陣雙色交替動態顯示133-熱敏電阻測試數碼管顯示134-光敏電阻測試數碼管顯示135-自動調光測試136-串轉并數字芯片測試137-非門數字芯片測試138-電子琴139-實用99分鐘倒計時器14-花樣燈140-外部頻率測試141-定時做普通時鐘可調142-1602液晶顯示的密碼鎖143-實用密碼鎖144-1602液晶顯示的計算器145-秒表146-串口測溫電腦顯示147-交通燈測試148-點陣模擬電梯上行下行149-點陣流動廣告模擬15-PWM調光150-綜合測試程序151-12位AD_DS1621與12864液晶152-閃爍燈一153-閃爍燈二154-流水燈A155-51單片機12864大液晶屏proteus仿真156-流水燈B157-數碼管顯示158-12864LCD顯示計算器鍵盤按鍵實驗159-數碼管顯示(鎖存器)16-共陽數碼管靜態顯示160-數碼管動態顯示161-數碼管滾動顯示162-數碼管字符顯示163-獨立按鍵164-矩陣鍵盤165-矩陣鍵盤(LCD)166-用DS1302與12864LCD設計的可調式中文電子日歷167-定時器的使用(方式1)168-12864LCD圖形滾動演示169-用PG12864LCD設計的指針式電子鐘17-1個共陽數碼管顯示變化數字170-定時器的使用(方式2)171-外部中斷的使用172-定時器和外部中斷173-開關控制12864LCD串行模式顯示174-點陣顯示175-液晶1602顯示176-12864帶字庫測試程序177-串行12864顯示178-遙控鍵值解碼-12864LCD顯示179-液晶12864并行18-單個數碼管模擬水流180-液晶12864并行2181-串口發送試驗182-串口接收試驗183-串口接收(1602)184-蜂鳴器發聲185-直流電機調速186-蜂鳴器間斷發聲187-lcd-12864應用188-繼電器控制189-直流電機調速19-按鍵控制單個數碼管顯示190-步進電機191-存儲AT24C02192-PCF8591T AD實驗193-PCF8591T芯片DA實驗194-溫度采集DS18B20195-EEPROM_24C02196-12864LCD顯示24C08保存的開機畫面197-紅外解碼198-12864LCD顯示EPROM2764保存的開機畫面199-時鐘DS1302(LCD)2-IO輸出-點亮1個LED燈方法220-單個數碼管指示邏輯電平200-宏晶看門狗201-SD卡202-秒表203-普通定時器時鐘204-彩屏控制205-彩屏圖片顯示206-12864+DS1302時鐘+18B20溫度計207-12864測試程序208-12864串行驅動演示209-12864生產廠程序21-8位數碼管顯示其中之一210-12864中文顯示測試211-LCD12864212-12864M液晶顯示(有字庫)程序(匯編)213-超聲波測距LCD12864顯示214-紅外遙控鍵值解碼12864液晶顯示(匯編語言)215-用DS1302與12864LCD設計的可調式中文電子日歷216-中文12864217-中文12864LCD顯示紅外遙控解碼實驗218-IO端口輸出219-IO端口輸入22-8位數碼管靜態顯示其中之二220-流水燈221-數碼管顯示222-數碼管動態掃描演示223-獨立按鍵224-獨立按鍵去抖動225-定時器0226-定時器1227-定時器2228-外部中斷0電平觸發229-外部中斷0邊沿觸發23-8位數碼管動態掃描顯示230-外部中斷1231-矩陣鍵盤232-液晶LCM1602233-LCD1602動態顯示234-EEPROM24c02235-開機次數記憶236-紅外解碼LCD1602液晶顯示237-紅外解碼數碼管顯示238-喇叭239-液晶背光控制24-8位數碼管動態掃描原理演示240-與電腦串口通信241-步進電機242-字庫LCD12864液晶測試243-液晶數碼綜合顯示244-99秒計時245-99倒計時246-搶答器247-PWM調光248-LED點陣249-直流電機調速25-數碼管顯示動態數據250-按鍵計數器251-秒表252-數碼管移動253-花樣燈254-紅綠燈255-音樂播放256-紅外收發演示257-普通定時器時鐘258-繼電器控制259-ps2鍵盤LCD1602液晶顯示26-9累加260-RTC實時時鐘DS1302液晶顯示261-單線溫度傳感器18b20262-串口測溫263-帶停機 步進電機正反轉264-步進電機正反轉265-AD_DA_PCF8591266-液晶AD_DA_PCF8591267-秒手動記數268-功能感受269-流水登27-99累加270-點亮一個二極管271-用單片機控制一個燈閃爍272-將P1口狀態送入P0、P2、P3273-P3口流水燈274-通過對P3口地址的操作流水點亮8位LED275-用不同數據類型控制燈閃爍時間276-用P0口、P1 口分別顯示加法和減法運算結果277-用P0、P1口顯示乘法運算結果278-用P1、P0口顯示除法運算結果279-用自增運算控制P0口8位LED流水花樣28-999累加280-用P0口顯示邏輯與運算結果281-用P0口顯示條件運算結果282-用P0口顯示按位異或運算結果283-用P0顯示左移運算結果284-萬能邏輯電路實驗285-用右移運算流水點亮P1口8位LED286-用if語句控制P0口8位LED的流水方向287-用swtich語句的控制P0口8位LED的點亮狀態288-用for語句控制蜂鳴器鳴笛次數289-包含單片機寄存器的頭文件29-9999累加290-用do-while語句控制P0口8位LED流水點亮291-用字符型數組控制P0口8位LED流水點亮292-用P0口顯示字符串常量293-用P0 口顯示指針運算結果294-用指針數組控制P0口8位LED流水點亮295-用數組的指針控制P0 口8 位LED流水點亮296-用P0 、P1口顯示整型函數返回值297-用有參函數控制P0口8位LED流水速度298-用數組作函數參數控制流水花樣299-用數組作函數參數控制流水花樣3-IO輸出-點亮多個LED燈方法130-9累減300-用函數型指針控制P1口燈花樣31-99累減32-999累減33-9999累減34-顯示小數點35-數碼管消隱36-數碼管遞加遞減帶消隱37-數碼管左移38-數碼管右移38-數碼管右移139-數碼管右移24-IO輸出-點亮多個LED燈方法240-數碼管循環左移41-數碼管循環右移41-數碼管循環右移142-數碼管循環右移243-數碼管閃爍44-數碼管局部閃爍45-定時器046-定時器147-定時器248-產生1ms方波49-產生200mS方波5-閃爍1個LED50-產生多路不同頻率方波51-1個獨立按鍵控制LED52-1個獨立按鍵控制LED狀態轉換53-2按鍵加減操作53-2按鍵加減操作數碼管顯示54-多位數按鍵加減(閃爍)54-多位數按鍵加減(閃爍)數碼管顯示55-多位數按鍵加減(不閃爍)55-多位數按鍵加減(不閃爍)數碼管顯示56-定時器掃描數碼管(不閃爍)57-按鍵長按短按效果58-搶答器59-獨立按鍵依次輸入數據6-不同頻率閃爍1個LED燈60-按鍵從右至左輸入61-8位端口檢測8獨立按鍵62-矩陣鍵盤行列掃描63-矩陣鍵盤反轉掃描64-矩陣鍵盤中斷掃描65-矩陣鍵盤密碼鎖66-矩陣鍵盤簡易計算器67-外部中斷0電平觸發68-外部中斷1電平觸發69-外部中斷0下降沿觸發7-不同頻率閃爍多個LED燈70-外部中斷1下降沿觸發71-T0外部計數輸入72-T1外部計數輸入73-看門狗溢出測試74-按鍵喂狗75-喇叭發聲原理76-警車聲音77-救護車聲音78-喇叭滴答聲79-報警發聲8-8位LED左移80-消防車警報81-音樂播放82-步進電機轉動原理83-步進電機正反轉84-步進電機按鍵控制85-步進電機轉
上傳時間: 2021-11-08
上傳用戶:
1. 引言2. 概述3.3.1 100Mbps 以上的邊緣速率3.3.2 99.999% 高可靠性和≤ 1ms 的超低時延3.3.3 1 個連接/ 平方米3.3.4 其他3.3.5 小結4.1.1 高頻組網傳播損耗與穿透損耗大,室外覆蓋室內難4.1.2 無源分布式天線系統演進難、綜合損耗大、互調干擾大3.1 5G 三大業務類型3.2 室內5G 業務及特征3.3 室內5G 業務對網絡的需求4.2 多樣化的業務要求網絡具備更大的彈性容量4.3 行業應用要求網絡具備極高可靠性4.4 四代共存網絡及新業務發展要求網絡具有高效運維、智能運營能力4.5 小結5.1 組網策略: 高中低頻分層組網,提供更大容量5.2 MIMO 選擇策略:標配4T4R,提供更好的用戶體驗5.3 方案選擇策略:大容量數字化方案是必然選擇5.4 容量策略:彈性容量,靈活按需滿足業務需求5.5 可靠性策略:面向5G 業務的可靠性設計5.6 部署策略:端到端數字化部署,奠定網絡運維和運營的基礎5.7 網絡運維策略:可視化運維,實現室內5G 網絡可管可控5.8 網絡運營策略:基于網絡運營平臺,支撐室內5G 網絡智能運營5.9 小結
上傳時間: 2022-01-30
上傳用戶:qdxqdxqdxqdx
宏晶 STC15F2K60S2開發板配套軟件源碼 基礎例程30例/**********************基于STC15F2K60S2系列單片機C語言編程實現使用如下頭文件,不用另外再包含"REG51.H"#include <STC15F2K60S2.h>***********************/#include "STC15F2K60S2.H"//#include "REG51.H" //sfr P4 = 0xC0;#define uint unsigned int #define uchar unsigned char /**********************引腳別名定義***********************/sbit SEL=P4^3; // LED和數碼管選擇引腳 高:LED有效 低:數碼管有效 // SEL連接的單片機引腳必須為帶有上拉電阻的引腳 或將其直接連接VCC#define data P2 // 數據輸入定義 /**********************函數名稱:Delay_1ms功能描述:延時入口參數:unsigned int t 表示要延時t個1ms 出口參數:無備注:通過參數t,控制延時的時間長短***********************/void Delay_1ms(uint t){ uchar j; for(;t>0;t--) for(j=110;j>0;j--) ;}/**********************函數名稱:Led_test功能描述:對8個二極管進行測試,依次輪流點亮8個二極管入口參數:無出口參數:無備注: ***********************/void Led_test(){ uchar G_value=0x01; // 給變量賦初值 SEL=1; //高電平LED有效 while(1) { data=G_value; Delay_1ms(10000); G_value=G_value<<1; if(G_value==0x00) { data=G_value; Delay_1ms(10000); G_value=0x01; } }}/***********************主函數************************/void main(){ ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為 // 高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用 //相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 ///////////////////////////////////////////////// P4M1=0x00; P4M0=0x00; P2M0=0xff; P2M1=0x00; //將P2設為推挽 Led_test(); }
標簽: STC15F2K60S2
上傳時間: 2022-05-03
上傳用戶: