找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1693|回复: 0
打印 上一主题 下一主题
收起左侧

测频率

[复制链接]
跳转到指定楼层
楼主
ID:220727 发表于 2017-7-19 10:46 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^1;        // 液晶使能端
sbit lcdrs=P3^0;        //液晶数据命令选择端
uchar code table[]="The frequecy is";
uchar code table1[]="00000Hz";
uint tmp,num,i;
uchar counter1,counter2,dis[6];
void testinit()
{EA=1;
ET0=1;
EX1=1;
IT1=1;
TR0=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{lcdrs=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{lcdrs=1;
P2=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{lcden=0;
write_com(0x38);        //设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c);        //设置开显示,不显示光标
write_com(0x06);        //写一个字符后地址指针加1
write_com(0x01);        //显示清0;数据指针清0

}

void display()
{
dis[0]=counter2/10000; //获取计数值的万位
dis[5]=counter2%10000;
dis[1]=dis[5]/1000; // 获取计数值的千位
dis[5]=dis[5]%1000;
dis[2]=dis[5]/100; // 获取计数值的百位
dis[5]=dis[5]%100;
dis[3]=dis[5]/10; // 获取计数值的十位
dis[4]=dis[5]%10; // 获取计数值的个位
write_com(0x80+0x40);
for(num=0;num<5;num++)       
{
write_data(dis[num]) ;
delay(50);}       
}
void main()
{
init();
write_com(0x80);
for(num=0;num<15;num++)
{write_data(table[num]);
delay(5);}
write_com(0x80+0x40);
for(num=0;num<7;num++)
{write_data(table1[num]);
delay(5);
}
testinit();
while(1)
{
if(counter1==20)
{ counter2=tmp;
display();
tmp=0;
counter1=0;
}
else
display();       
}
}
void int1()interrupt 2
{        tmp++;
}
void t0()interrupt 1
{
TH0=0x3c;
TL0=0xaf;
counter1++;
}<收起
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表