📄 电压表.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P0^0 ;
sbit rw= P0^1 ;
sbit e=P0^2 ;
sbit rd=P3^0;
sbit wr=P3^1;
uchar count;
uchar temp,temp0;
float temp1;
uchar volt_integer[2];
uchar volt_decimal[3];
void delay(uint ms)
{
uint i;
uchar j;
for(i=0;i<ms;i++)
for(j=0;j<150;j++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void write_com(uchar com)
{
rs=0;
P2=com;
delay(1);
e=1;
delay(1);
e=0;
}
void write_data(uchar date)
{
rs=1;
P2=date;
delay(1);
e=1;
delay(1);
e=0;
}
void gotoxy(uchar x,uchar y) //光标指针移动到x行y列
{
if(x==0)
{
write_com(0x80+y);
}
else
{
write_com(0x80+0x40+y);
}
}
/* ##########################################################################
初始化:设置显示模式 ---- 0x38 --设置16x2 显示,5x7点阵,8位数据接口
显示开/关及光标设置 -- 0x08 --关显示
-- 0x0b --开显示
0x0e --显示光标,不闪烁
0x0c --不显示光标,不闪烁
0x0d --光标闪烁,不显示
0x0f --光标显示+闪烁
------ 0x06 --读或写一个字符后地址指针加一,且光标加一,整屏不移动
------ 0x01 --显示清屏:数据指针清零,所有显示清零
0x02 --显示回车:数据指针清零
######################################################################### */
void init()
{
rw=0; //写状态
write_com(0x01);
write_com(0x38);
write_com(0x0f);
write_com(0x06);
// write_com(0x01);
}
void display_string(uchar *str) //显示字符串
{
while(*str)
{
write_data(*str);
str++;
}
}
void display_number(uchar number)
{
write_data(0x30+number); //转化为ASCII码
}
void init_system()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
IT0=1;
EX0=1;
EA=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}
/*void int0() interrupt 0
{
uchar volt;
// P1=0x00;
TR0=0;
rd=0;
delay(1);
rd=1;
delay(1);
volt=P1;
// volt=volt<<1;
gotoxy(1,9);
display_number(volt);
gotoxy(1,9);
TR0=1;
} */
void main()
{
init();
gotoxy(0,5);
display_string("hello");
gotoxy(1,0);
display_string("volt:");
write_com(0x0c);
init_system();
while(1)
{
if(count==20)
{
count=0;
wr=1; //开始转换
wr=0;
wr=1;
rd=0;
temp=P1;
temp0=temp*5/255;
temp1=(float)(temp*5/255);
volt_integer[0]=temp0%10+'0';
volt_integer[1]='\0';
temp1=temp1-temp0;
volt_decimal[0]=temp1*10+'0';
volt_decimal[1]=temp1*100+'0';
volt_decimal[2]='\0';
gotoxy(1,6);
display_string(volt_integer);
write_data('.');
display_string(volt_decimal);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -