📄 v.c
字号:
#include<reg51.h>
#include"absacc.h"
#define lcd_1602_DW XBYTE[0xfdff]
#define lcd_1602_CW XBYTE[0xfcff]
#define lcd_1602_CR XBYTE[0xfeff]
#define lcd_1602_DR XBYTE[0xffff]
#define lcd_line_1 0x00
#define lcd_line_2 0x40
#define LCD_ClEAR_SCREEN 0x01 //清屏
#define LCD_AC_UP 0x06 //地址计数器自动+1
#define LCD_SET_7 0x38 //8位接口,双行显示,5*7字符
#define LCD_SHOW 0x0c //显示开
#define uchar unsigned char
#define uint unsigned int
sbit key0 = P3^3;
sbit key1 = P3^2;
sbit SD0 = P1^0;
sbit CS = P1^2;
sbit CLK = P1^3;
sbit DIN = P1^1;
sbit d = P3^4;
unsigned long temperature;
unsigned long tmp;//数据类型要注意
void WHILE_BUSY(void)
{
while((bit)(lcd_1602_CR & 0x80)) ;
}
void delay(uint x)
{
while(--x);
}
//通过LCD1602内部ROM显示字符
void print0(uchar line,uchar column,uchar n)
{
WHILE_BUSY();
switch(line)
{
case 1:
lcd_1602_CW = 0x80 + column;//光标定位
delay(10);
lcd_1602_DW =0x30+n;
break;
case 2:
lcd_1602_CW = 0xc0 + column;//光标定位
delay(10);
lcd_1602_DW =0x30+n;//指针加一,光标前移
break;
default: break;
}
}
void Print(uchar *str,uchar addr)
{
WHILE_BUSY();
lcd_1602_CW = 0x80|addr;
while(*str!='\0')
{
WHILE_BUSY();
lcd_1602_DW = *str;//直接针对外部地址些 movx指令
str++;
delay(50);
}
}
void lcd_1602_Init(void)
{
WHILE_BUSY();
lcd_1602_CW = LCD_SET_7;
WHILE_BUSY();
lcd_1602_CW = LCD_ClEAR_SCREEN;
WHILE_BUSY();
lcd_1602_CW = LCD_AC_UP;
WHILE_BUSY();
lcd_1602_CW = LCD_SHOW;
}
uint TLC_1543_addr(uchar addr)
{
uint date_out=0;
uchar k;
uchar i;
uchar j;
CLK=0;
CS=0;
for (i=0;i<4;i++)
{
DIN=(bit)(addr&0x08);CLK=1;CLK=0;
addr<<=1;
}
for (j=0;j<6;j++) //填充6 个CLOCK
{
CLK=1;CLK=0;
}
CS=1;
delay(5);
CS=0; //等待AD 转换
delay(5);
for(k=0;k<10;k++)
{
SD0 = 1;
CLK = 1;
date_out<<=1;
if(SD0) date_out += 1;
CLK = 0;
}
return(date_out);
}
diaplay_TLC_1543(void)
{
unsigned long tmp;//数据类型要注意
Print("made by ali",lcd_line_1+3);
Print("voltage",lcd_line_2);
print0(2,7, 10);//":"
while(1)
{
Print("made by ali",lcd_line_1+3);
Print("voltage",lcd_line_2);
print0(2,7, 10);//":"
tmp = TLC_1543_addr(0x00);
tmp=tmp*50000/1024;
print0(2,8, tmp/10000);
print0(2,10,tmp%10000/1000);
print0(2,11,tmp%10000%1000/100);
print0(2,12,tmp%1000%100/10);
print0(2,13,tmp%10);
Print(".",lcd_line_2+9);
}
}
void main()
{
lcd_1602_Init();
diaplay_TLC_1543();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -