📄 xiaoma.c
字号:
#include <reg51.h>
#include <intrins.h>
sbit rs=P3^0; //指令和数据寄存器//
sbit rw=P3^1; //读写控制//
sbit e=P3^2; //片选//
/*sbit SCLK = P1^0; // 输入输出时钟I/O CLK
sbit SDOUT = P1^1; // 数据输出DATA OUT
sbit CS = P1^2; // 片选信号 */
sbit flag=P0^7;
unsigned char str[]="the AD result is:";
unsigned char display[4] ;
//...........液晶现实开始..........
void wait(unsigned int w)
{
int time;
for (time=0;time <w;time++);
return;
}
void busy()
{
while(1)
{
P0=0xff;
rs=0;
rw=1;
e=1;
if(!flag) break;
}
}
void w_dat(unsigned char dat) //写数据//
{
busy( );
rs=1;
rw=0;
e=1;
P0=dat;
e=0;
return;
}
void w_com(unsigned char com) //写指令//
{
busy( );
rs=0;
rw=0;
e=1;
P0=com;
e=0;
}
void LCD_set_xy(unsigned char x,unsigned char y)
{
unsigned char address;
if(x == 1)
address =0X80 + y;
else
address = 0XC0 + y;
w_com(address);
}
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
{
LCD_set_xy(x,y);
while(*s)
{
P0 = *s;
w_dat(*s);
s++;
}
}
void init(void)
{
unsigned char i;
for (i=0;i<2;i++)
{
w_com(0x38);
wait(10);
}
w_com(0x38);
w_com(0x0f);
w_com(0x18);
w_com(0x06);
w_com(0x01);
w_com(0x80);
}
//..........液晶现实模块结束........
/*
//.........AD转换模块开始.........
signed char Conversion(void)// AD转换程序,返回AD值
{
char i,n;
unsigned int Bit16_data;
CS=0; //低电平有效,开始转换
for(i=0;i<6;i++) //延时
{
_nop_();
SCLK=0;
_nop_();
SCLK=1;
}
if(SDOUT==0)
{
n=17;
while(n--)
{
_nop_();
SCLK = 1;
{ Bit16_data = Bit16_data<<1; // 左移一位,或_crol_(temp,1)
if(SDOUT == 1)
Bit16_data = Bit16_data|0x0001; // 若接收到的位为1,则数据的最后一位置1
else
Bit16_data = Bit16_data&0xFFFE; // 否则数据的最后一位置0
}
SCLK=0;
}
CS=1;
return(Bit16_data);
}
}
void Display(unsigned char x)
{
bit s = 0 ;
unsigned char AD ;
if ( x < 0 )
{
s = 1;
AD = -1 * x ;
}
else
{
s=0 ;
AD = x ;
}
if (s == 1 ) display[4] = 0x2d ;
else display[3] = 0x20 ;
display[2]= AD/100+0x30; //
AD= AD%100+0x30;
display[1] = AD/10+0x30; //
display[0] = AD%10+0x30;
if ( display[2] == 0)
display[2] = 0x20 ;
LCD_set_xy(2,1) ;
lcd_writedat(display[3]);
LCD_set_xy(2,2) ;
lcd_writedat(display[2]);
LCD_set_xy(2,3) ;
lcd_writedat(display[1]);
LCD_set_xy(2,4) ;
lcd_writedat(0x2e);
LCD_set_xy(2,5) ;
lcd_writedat(display[0]);
}
void lcd_writedat(uchar dat)
{
while(busy());
rs = 1;
rw = 0;
e = 0;
P0 = dat;
_nop_();
_nop_();
e = 1;
_nop_();
_nop_();
e= 0;
}
//.........AD转换模块结束..........
*/
//........主函数开始...........
void main(void)
{
signed char ADresult;
init();
LCD_write_string(1,0,str);
/*
ADresult=Conversion();
wait(5);
while(1)
{
ADresult=Conversion();
if (b1S == 1)
{
Display(ADresult) ;
}
} */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -