如果想要别人帮你写,要几百,某鱼和某宝上有很老宏滑多,百度知道没有免费的程序员,你这个程序要花掉好几个小时,半天就花掉了,后续有bug你还要debug,绝衫你不会还得问,这种麻吃力不讨好的事情没人做的。。。
你要是来不及,花钱去某鱼和侍腊某宝代做是最好的选择。
给你个我写的基于89c52的单片清仿机测频率的程序,你参考下
#include <reg52.h>#include <intrins.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_data P0
sbit LCD_RS=P2^0
sbit LCD_RW=P2^1
sbit LCD_EN=P2^2
sbit LCD_PSB=P2^3
bit flag=0
uint num1=0,num2=0,count=0
void display()
void delayms(uint x)
{
uint i,j
for(j=0j<xj++)
for(i=0i<110i++)
}
void write_cmd(uchar cmd) //12864写命令函数
{
LCD_RS=0
LCD_RW=0
LCD_EN=0
P0=cmd
delayms(5)
LCD_EN=1
delayms(5)
LCD_EN=0
}
void write_dat(uchar dat) //12864写数据函数
{
LCD_RS=1
LCD_RW=0
LCD_EN=0
P0=dat
delayms(5)
LCD_EN=1
delayms(5)
LCD_EN=0
}
void lcd_pos(uchar X,uchar Y) //12864写位置函数
{
uchar pos
if(X==0)
X=0x80
else if(X==1)
X=0x90
else if(X==2)
X=0x88
else if(X==3)
X=0x98
pos=X+Y
write_cmd(pos)
}
void lcd_init() //12864初始化函数蚂铅
{
LCD_PSB=1
write_cmd(0x30)
delayms(5)
write_cmd(0x0c)
delayms(5)
write_cmd(0x01)
delayms(5)
}
void Time2_Init(void) //T2定时器自动重装初值定时1s
{
EA=1
ET2=1
TR2=1
RCAP2L=(65535-46083)%256
RCAP2H=(65535-46083)/256
}
void display() //12864显示函数
{
lcd_pos(0,0)
write_dat(num1/1000+'0')
write_dat(num1/100%10+'0')
write_dat(num1/10%10+'0')
write_dat(num1%10+'0')
lcd_pos(1,0)
write_dat(num2/1000+'0')
write_dat(num2/100%10+'0')
write_dat(num2/10%10+'0')
write_dat(num2%10+'0')
}
main()
{
lcd_init()
Time2_Init()
TMOD=0x55
TR0=1
TR1=1
while(1)
{
TH0=0
TL0=0
TH1=0
TL1=0
flag=0
while(!flag)
num1=TH0<<8|TL0 //num1为T0在1s内统计的下降沿次数,输入闷正好引脚为P3.4
num2=TH1<<8|TL1 //num2为T1在1s内统计的下降沿次数,输入引脚为P3.5
display()
}
}
void Time2(void) interrupt 5 //T2定时器中断1s
{
TF2=0
count++
if(count==20)
{
flag=1
count=0
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)