![]() |
先收藏,好東西一定要收藏, 慢慢有時間再弄個學(xué)習(xí) |
先收藏,好東西一定要收藏, 慢慢有時間再弄個學(xué)習(xí) |
太有才了,正學(xué)習(xí)中,有空我也做一個玩一下 |
不成功,有錯誤 |
想做個矢量畫圖的.... |
先收藏,好東西一定要收藏, 慢慢消化 一個個都來一個看看啥樣子,頂起 |
仿制一個不成功,按鍵無效![]() |
也想自己動手做一個 |
好東西 |
用STC12C2052AD單片機(jī)制作的0-99V數(shù)字電壓表 |
好資料,謝謝分享 |
大家注意一個問題就可以了,被測頻率的最高值為晶振值除以24,如果是12M晶振,只能測到500K,如果想測量更高的程序,可以考慮分頻了,常用器件是74HC390或者是74LS390,看你的頻率了,當(dāng)讓,加74HC74或者LS74可以把頻率降低一倍。 #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define unit unsigned int #define ulong unsigned long typedef bit BOOL ; uchar T0count=0;//T0計數(shù) ulong f; uchar temp[6]={0}; bit flag; sbit rs = P2^7; sbit rw = P2^6; sbit ep = P2^5; sbit L = P2^0; //背光 sbit key1 = P2^1; // sbit key2 = P2^2; // sbit k0 = P1^0; // sbit k1 = P1^1; // sbit k2 = P1^2; // uchar code dis1[] = {" CRB L/C Meter "}; uchar code dis2[] = {" 2009-08-01 "}; delay(unit ms) { // 延時子程序 uchar i; while(ms--) { for(i = 0; i< 250; i++) {_nop_();_nop_();_nop_();_nop_();} } } BOOL lcd_bz() { // 測試LCD忙碌狀態(tài) BOOL result; rs = 0; rw = 1; ep = 1; _nop_();_nop_();_nop_();_nop_(); result = (BOOL)(P0 & 0x80); ep = 0; return result; } lcd_wcmd(uchar cmd) { // 寫入指令數(shù)據(jù)到LCD while(lcd_bz()); rs = 0;rw = 0;ep = 0; _nop_();_nop_(); P0 = cmd; _nop_();_nop_();_nop_();_nop_(); ep = 1; _nop_();_nop_();_nop_();_nop_(); ep = 0; } lcd_pos(uchar pos) { //設(shè)定顯示位置 lcd_wcmd(pos | 0x80); } lcd_wdat(uchar dat) { //寫入字符顯示數(shù)據(jù)到LCD while(lcd_bz()); rs = 1;rw = 0;ep = 0; P0 = dat; _nop_();_nop_(); _nop_();_nop_(); ep = 1; _nop_();_nop_();_nop_();_nop_(); ep = 0; } lcd_init() { //LCD初始化設(shè)定 lcd_wcmd(0x38); // delay(1); lcd_wcmd(0x0c); // delay(1); lcd_wcmd(0x06); // delay(1); lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容 delay(1); } void dis(void) { f=T0count*65536+TH0*256+TL0; //計算0.05秒內(nèi)的脈沖次數(shù) f=f*20; temp[0]=f/100000+0x30; temp[1]=f%100000/10000+0x30; temp[2]=f%100000%10000/1000+0x30; temp[3]=f%100000%10000%1000/100+0x30; temp[4]=f%100000%10000%1000%100/10+0x30; temp[5]=f%100000%10000%1000%100%10+0x30; } main() { uchar i; TMOD=0x15; //T1定時,T0計數(shù) 16位定時計數(shù)器 TH0=0;TL0=0; TH1=(65536-50000)/256;TL1=(65536-50000)%256; //定時為0.05S TR1=1;TR0=1; ET0=1;ET1=1; EA=1; //k2=0; lcd_init(); // 初始化LCD delay(10); lcd_pos(0); // 設(shè)置顯示位置 i = 0; L=0; P1=0xff; while(dis1[i] != '\0') { // 顯示字符 lcd_wdat(dis1[i]); i++; } lcd_pos(0x40); // 設(shè)置顯示位置為 i = 0; while(dis2[i] != '\0') { lcd_wdat(dis2[i]); // 顯示字符" i++; } lcd_wcmd(0x01); while(1) // { if(flag==1) { dis(); lcd_pos(0x80); // 設(shè)置顯示位置 lcd_wdat('-'); for(i=0;i<=5;i++) lcd_wdat(temp[i]); // 顯示字符 lcd_wdat('-'); flag=0; T0count=0; TH0=0;TL0=0; TR0=1;TR1=1; } } } void t0(void) interrupt 1 using 1 //T0工作在計數(shù)狀態(tài)下,T0(P3.4) { T0count++; //T0count中斷次數(shù) } void t1(void) interrupt 3 using 2 //T1工作在定時狀態(tài)下, { TR0=0;TR1=0; TH1=(65536-50000)/256; TL1=(65536-50000)%256; flag=1; } |
參與人數(shù) 1 | 黑幣 +50 | 收起 理由 |
---|---|---|
![]() | + 50 | 回帖助人的獎勵! |
這個真的行嗎,最高能達(dá)到多少M |
謝謝分享,收藏了 |
新來的,M幣不夠下載用,有啥辦法嗎? |
Powered by 單片機(jī)教程網(wǎng)