📄 text1.c
字号:
#include <reg51.h>
#include <intrins.h>
#include <string.h>
#include <math.h>
//-----LCD16液晶显示控制引脚定义---------
sbit E=P2^4;
sbit RS=P2^2;
sbit rw= P2^3;
sfr lcd_dat_port=0x80; //lcd数据口即P1口
unsigned char lcd_buf[33]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}; //lcd缓存预显示
unsigned char table[10]={'0','1','2','3','4','5','6','7','8','9'};//液晶要显示的数字字符表
int t1oc=20;
long int precount,count;
//----------------- 延时毫秒 -----------------
void delay( unsigned char ms )
{
unsigned short i;
while ( ms -- )
{
for(i=0;i!=100;i++);
}
}
//--------------写一个字节到液晶------------------------
void lcd_write(bit slr,unsigned char write_dat)
{rw=0;
RS=slr;
E=1;
lcd_dat_port=write_dat;
E=0;
delay(2);
}
//--------------液晶初始化-----------------------------
void ini_lcd()
{
//RW=0;
delay(10);
lcd_write(0,0x38);
lcd_write(0,0x0c);
lcd_write(0,0x06);
lcd_write(0,0x01);
}
//-------------------------液晶显示--------------------------
void display() //将显示缓存lcd_buf[32]的内容显示
{
unsigned char ii;
lcd_write(0,2);
delay(10);
for(ii=0;ii<32;ii++)
{
if (ii==16) lcd_write(0,0xc0);
lcd_write(1,lcd_buf[ii]);
}
}
//------------------------ t1中断服务程序定时50ms---------------------
void timer1() interrupt 1
{
TR1=0;
t1oc++;
TH1=-50000/256; //重载计数初值;
TL1=-50000%256;
TR1=1;
}
//-------------------------外部中断计数测脉冲个数-------------------------
void int0() interrupt 0
{
count++; //脉冲计数
}
//----------------------主程序------------------------------
main()
{ int i,s;
TMOD=0x10;
TL1=-50000/256;//预置计数初值;
TH0=-50000%256;
EA=1;//CPU 开中断;
EX0=1;IT0=1;//开int0中断;
ET1=1; //开t1中断;
TR1=1; //启动t1;
while(t1oc>20) //一秒定时结束
TR1=0; //关t1中断
EX0=0; //关int1中断
precount=count;
count=0; // 将count输出并清零
//---------------------送液晶显示---------------------
ini_lcd(); //液晶初始化
lcd_buf[11]='H';
lcd_buf[12]='z';
for(i=9;i>=0;i--)
{s=precount%10;
lcd_buf[i]=table[s];
precount=precount/10;
}
display(); //显示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -