#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) ;
}
} */
}
XIAOMA.rar_单片机C语言
版权申诉
29 浏览量
2022-09-21
04:27:42
上传
评论
收藏 2KB RAR 举报
邓凌佳
- 粉丝: 65
- 资源: 1万+
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈