用單片機制作的高精度數顯計數器 單片機C51計數器 要求:編寫一個計數器程序,將T0作為計數器來使用,對外部信號計數,將所計數字顯示在數碼管上。 該部分的硬件電路如圖所示,U1的P0口和P2口的部份引腳構成了6位LED數碼管驅動電路,數碼管采用共陽型,使用PNP型三極管作為片選端的驅動,所有三極管的發射極連在一起,接到正電源端,它們的基極則分別連到P2.0…P2.5,當P2.0…P2.5中某引腳輸是低電平時,三極管導通,給相應的數碼管供電,該位數碼管點亮哪些筆段,則取決于筆段引腳是高或低電平。圖中看出,所有6位數碼管的筆段連在一起,通過限流電阻后接到P0口,因此,哪些筆段亮就取決于P0口的8根線的狀態。 里面包含了:單片機C51計數器、計算器流程圖、工作原理,
上傳時間: 2013-11-16
上傳用戶:myworkpost
TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。 TLC2543的特點 (1)12位分辯率A/D轉換器; (2)在工作溫度范圍內10μs轉換時間; (3)11個模擬輸入通道; (4)3路內置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉換結束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導; (10)可編程輸出數據長度。 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上傳時間: 2013-11-19
上傳用戶:shen1230
經驗證有效可行易懂的程序,可以講講模擬信號通過stc12c5a60s2在P0口內置的AD轉換轉換為輸在信號并顯示在1206液晶上
上傳時間: 2013-10-11
上傳用戶:skfreeman
采用 AT89C52型號的單片機對傳統的電扇系統進行改造,實現對電扇的短距離控制。該設計利用單片機進行紅外發送,紅外接收,在此過程中對紅外進行編碼和解碼,而后通過不同的編碼形成對風扇的不同控制。同時對單片機 P0口的輸出進行 DA 變換后,完成對風扇的速度的實時控制。通過仿真實驗,驗證了該方案的可行性,該設計簡單、可靠,具有很強的實用性。
上傳時間: 2013-11-15
上傳用戶:1583060504
采用AT89C52型號的單片機對傳統的電扇系統進行改造,實現對電扇的短距離控制。該設計利用單片機進行紅外發送,紅外接收,在此過程中對紅外進行編碼和解碼,而后通過不同的編碼形成對風扇的不同控制。同時對單片機P0口的輸出進行DA變換后,完成對風扇的速度的實時控制。通過仿真實驗,驗證了該方案的可行性,該設計簡單、可靠,具有很強的實用性。
上傳時間: 2013-12-21
上傳用戶:回電話#
#include<reg51.h> //包含單片機寄存器的頭文件 /******************************************************* 函數功能:主函數 (C 語言規定必須有也只能有1 個主函數) ********************************************************/ void main(void) { while(1) //無限循環 { P1=0xff; // P1=1111 1111B,熄滅LED P0=P1; // 將 P1 口狀態送入P0 口 P2=P1; // 將 P1 口狀態送入P2 口 P3=P1; // 將 P1 口狀態送入P3 口
上傳時間: 2013-10-26
上傳用戶:離殤
對應程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code tab[]={ 0x81, 0x42, 0x24, 0x18, }; void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } void init() { P0=0x00; }
上傳時間: 2014-01-17
上傳用戶:ruan2570406
單片機c語言學習和單片機制作資料: 函數的使用和熟悉 實例3:用單片機控制第一個燈亮 實例4:用單片機控制一個燈閃爍:認識單片機的工作頻率 實例5:將 P1口狀態分別送入P0、P2、P3口:認識I/O口的引腳功能 實例6:使用P3口流水點亮8位LED 實例7:通過對P3口地址的操作流水點亮8位LED 實例8:用不同數據類型控制燈閃爍時間 實例9:用P0口、P1 口分別顯示加法和減法運算結果 實例10:用P0、P1口顯示乘法運算結果 實例11:用P1、P0口顯示除法運算結果 實例12:用自增運算控制P0口8位LED流水花樣 實例13:用P0口顯示邏輯"與"運算結果 實例14:用P0口顯示條件運算結果 實例15:用P0口顯示按位"異或"運算結果 實例16:用P0顯示左移運算結果 實例17:"萬能邏輯電路"實驗 實例18:用右移運算流水點亮P1口8位LED 實例19:用if語句控制P0口8位LED的流水方向 實例20:用swtich語句的控制P0口8位LED的點亮狀態 實例21:用for語句控制蜂鳴器鳴笛次數 實例22:用while語句控制LED 實例23:用do-while語句控制P0口8位LED流水點亮 實例24:用字符型數組控制P0口8位LED流水點亮 實例25: 用P0口顯示字符串常量 實例26:用P0 口顯示指針運算結果 實例27:用指針數組控制P0口8位LED流水點亮 實例28:用數組的指針控制P0 口8 位LED流水點亮 實例29:用P0 、P1口顯示整型函數返回值 實例30:用有參函數控制P0口8位LED流水速度 實例31:用數組作函數參數控制流水花樣 實例32:用指針作函數參數控制P0口8位LED流水點亮 實例33:用函數型指針控制P1口燈花樣 實例34:用指針數組作為函數的參數顯示多個字符串
上傳時間: 2013-10-21
上傳用戶:llandlu
a_bit equ 20h ;個位數存放處 b_bit equ 21h ;十位數存放處 temp equ 22h ;計數器寄存器 star: mov temp,#0 ;初始化計數器 stlop: acall display inc temp mov a,temp cjne a,#100,next ;=100重來 mov temp,#0 next: ljmp stlop ;顯示子程序 display: mov a,temp ;將temp中的十六進制數轉換成10進制 mov b,#10 ;10進制/10=10進制 div ab mov b_bit,a ;十位在a mov a_bit,b ;個位在b mov dptr,#numtab ;指定查表啟始地址 mov r0,#4 dpl1: mov r1,#250 ;顯示1000次 dplop: mov a,a_bit ;取個位數 MOVC A,@A+DPTR ;查個位數的7段代碼 mov P0,a ;送出個位的7段代碼
上傳時間: 2013-11-06
上傳用戶:lx9076
P0端口由鎖存器、輸入緩沖器、切換開關、一個與非門、一個與門及場效應管驅動電路構成。再看圖的右邊,標號 為P0.X引腳的圖標,也就是說P0.X引腳可以是P0.0到P0.7的任何一位,即在P0口有8個與上圖相同的電路組成。
上傳時間: 2014-01-13
上傳用戶:fandeshun