久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機頻率測量+1602顯示程序
[打印本頁]
作者:
dagu
時間:
2015-1-24 14:09
標題:
單片機頻率測量+1602顯示程序
大家注意一個問題就可以了,被測頻率的最高值為晶振值除以24,如果是12M晶振,只能測到500K,如果想測量更高的程序,可以考慮分頻了,常用器件是74HC390或者是74LS390,看你的頻率了,當讓,加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計數
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忙碌狀態
BOOL result;
rs = 0; rw = 1; ep = 1;
_nop_();_nop_();_nop_();_nop_();
result = (BOOL)(P0 & 0x80);
ep = 0;
return result;
}
lcd_wcmd(uchar cmd)
{ // 寫入指令數據到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)
{ //設定顯示位置
lcd_wcmd(pos | 0x80);
}
lcd_wdat(uchar dat)
{ //寫入字符顯示數據到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初始化設定
lcd_wcmd(0x38); //
delay(1);
lcd_wcmd(0x0c); //
delay(1);
lcd_wcmd(0x06); //
delay(1);
lcd_wcmd(0x01); //清除LCD的顯示內容
delay(1);
}
void dis(void)
{
f=T0count*65536+TH0*256+TL0; //計算0.05秒內的脈沖次數
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計數 16位定時計數器
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); // 設置顯示位置
i = 0;
L=0;
P1=0xff;
while(dis1[i] != '\0')
{ // 顯示字符
lcd_wdat(dis1[i]);
i++;
}
lcd_pos(0x40); // 設置顯示位置為
i = 0;
while(dis2[i] != '\0')
{
lcd_wdat(dis2[i]); // 顯示字符"
i++;
}
lcd_wcmd(0x01);
while(1) //
{
if(flag==1)
{
dis();
lcd_pos(0x80); // 設置顯示位置
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工作在計數狀態下,T0(P3.4)
{
T0count++; //T0count中斷次數
}
void t1(void) interrupt 3 using 2 //T1工作在定時狀態下,
{
TR0=0;TR1=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
flag=1;
}
作者:
lb688
時間:
2015-4-3 15:06
學習了。
作者:
menwawork
時間:
2015-9-5 19:39
學習了。
作者:
qq1223320836
時間:
2016-7-27 03:45
謝謝樓主
作者:
阿凡提
時間:
2016-12-23 21:12
這個可以學習一下
作者:
夢寧一
時間:
2018-7-20 20:56
k0,k1,k2表示的什么
作者:
康德
時間:
2018-7-22 15:02
TMOD=0x15; //T1定時,T0計數 16位定時計數器
TH0=0;TL0=0;
TH1=(65536-50000)/256;TL1=(65536-50000)%256; //定時為0.05S
TR1=1;TR0=1;
ET0=1;ET1=1;
EA=1;
這個TMOD=0x15 什么意思啊??
請指點一下。。謝謝
作者:
電子迷ZZ
時間:
2019-8-13 15:42
下載學習一下!點贊
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美精品系列
|
欧美日韩中文字幕在线观看
|
www.色网
|
国产午夜精品视频
|
亚洲综合视频在线观看
|
国产区在线
|
就爱啪啪网
|
久久精品99久久久久久
|
亚洲乱码一区二区
|
日韩三级一区
|
h片在线观看免费
|
黄色大片在线播放
|
日韩激情视频
|
色综合99
|
黄色成人在线视频
|
毛片在线视频
|
欧美性爽
|
久久久国产视频
|
国产在线观看一区
|
日本熟妇毛耸耸xxxxxx
|
国产色在线
|
国产一区二区影院
|
国产在线二区
|
求av网址
|
亚洲精品资源
|
色综合天天
|
欧美日韩一区二区三区视频
|
福利精品
|
国产v片
|
伊人久久精品视频
|
91福利片
|
免费视频久久
|
久久国产成人
|
日韩精品免费视频
|
四虎在线观看
|
四虎看片
|
欧美黑人一区二区三区
|
成人激情在线
|
羞羞的视频在线观看
|
99婷婷
|
精品视频免费在线观看
|