资源简介
51c语言代码循迹智能小车+proteus仿真
代码片段和文件信息
#include
#include “1602.h“
#include
void LCD_Init()
{
DelayMs(15); //延迟15ms,等待LCD电源稳定使其进入工作状态
LCD_IO = 0x00;
LCD_Write_Command(LCD_DISPLAY_DOUBLE_LINE);
DelayMs(5);
LCD_Write_Command(LCD_DISPLAY_DOUBLE_LINE);
DelayMs(5);
LCD_Write_Command(LCD_DISPLAY_DOUBLE_LINE); //显示模式设置为两行显示,8位数据接口,5*8点阵
DelayMs(5);
LCD_Write_Command(LCD_AC_AUTO_INCREMENT | LCD_MOVE_DISENABLE); //数据读、写操作后AC自动增一画面不动
DelayMs(5);
LCD_Write_Command(LCD_DISPLAY_ON | LCD_CURSOR_OFF); //显示开,光标不显示
DelayMs(5);
LCD_Write_Command(LCD_CLEAR_SCREEN); //清除LCD显示内容
}
/************延迟函数*******************************/
void DelayUs(uchar us)//delay us
{
unsigned char uscnt;
uscnt=us>>1; /* Crystal frequency in 12MHz*/
while(--uscnt);
}
void DelayMs(uchar ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
/************LCD1602写指令*******************************/
void LCD_Write_Command(uchar com)
{
LCD_Check_Busy();
LCD_RS = LOW;
LCD_RW = LOW;
_nop_(); //一个_nop_();是一个机器周期,是1us
LCD_EN = HIGH;
LCD_IO = com;
LCD_EN = LOW;
}
/********************************************************/
/*****************LCD1602写数据**************************/
void LCD_Write_Data(uchar dat)
{
LCD_Check_Busy();
LCD_RS = HIGH;
LCD_RW = LOW;
_nop_();
LCD_EN=HIGH;
LCD_IO=dat;
LCD_EN=LOW;
}
/********************************************************/
/**********************显示一个字节**************************/
void LCD_Char(uchar x uchar line uchar dat) //从第x开始写一个字节
{
unsigned char address;
if (line == LINE1) // line=0,为第一行
address = LINE1_HEAD + x;
else // 否则为第二行
address = LINE2_HEAD + x;
LCD_Write_Command(address);
LCD_Write_Data(dat);
}
/********************************************************/
/******************LCD1602显示字符串*********************/
void LCD_Str(uchar xuchar lineuchar *Str) //从第line行的第x位置开始显示字符串
{
uchar i = x;
if (line == LINE1)
{
while( *Str != ‘\0‘)
LCD_Char(i++ 0 *Str++);
}
else
{
while( *Str != ‘\0‘)
LCD_Char(i++ 1 *Str++);
}
}
/***************************LCD忙碌状态*******************************/
void LCD_Check_Busy(void) //检测LCD状态看它是不是还在忙呢
{
do
{
LCD_EN=0;
LCD_RS=0;
LCD_RW=1;
LCD_IO=0xff;
LCD_EN=1;
}
while (LCD_BUSY==1);
LCD_EN=0;
}
/*****************屏幕闪烁********************/
void LCD_Flash(uchar time)
{
//控制停留时间
LCD_Write_Command(LCD_DISPLAY_OFF); //关闭显示
DelayMs(time);
//延时
LCD_Write_Command(LCD_DISPLAY_ON); //开显示
DelayMs(time);
LCD_Write_Command(LCD_DISPLAY_OFF); //关闭显示
DelayMs(time);
//延时
LCD_Write_Command(LCD_DISPLAY_ON); //开显示
DelayMs(time);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-04-05 11:06 循迹小车+仿真\
目录 0 2014-03-30 20:29 循迹小车+仿真\HARDWARE\
文件 2881 2013-12-28 16:51 循迹小车+仿真\HARDWARE\1602.c
文件 2462 2014-03-30 19:20 循迹小车+仿真\HARDWARE\1602.h
文件 1612 2013-08-20 12:58 循迹小车+仿真\HARDWARE\pid.c
文件 728 2013-08-20 12:58 循迹小车+仿真\HARDWARE\pid.h
文件 1528 2014-03-30 19:55 循迹小车+仿真\HARDWARE\pwm.c
文件 265 2014-03-30 18:32 循迹小车+仿真\HARDWARE\pwm.h
文件 1085 2014-03-30 20:22 循迹小车+仿真\HARDWARE\xunji.c
文件 81 2014-03-30 19:42 循迹小车+仿真\HARDWARE\xunji.h
文件 399 2011-04-23 10:24 循迹小车+仿真\keilkilll.bat
文件 119998 2014-03-30 20:23 循迹小车+仿真\Last Loaded 循迹.DBK
文件 920155 2014-04-05 11:05 循迹小车+仿真\QQ截图6.jpg
目录 0 2014-04-05 11:14 循迹小车+仿真\USER\
文件 554 2014-03-30 17:38 循迹小车+仿真\USER\1602 .lst
文件 114 2014-03-30 17:38 循迹小车+仿真\USER\1602 .__i
文件 6149 2014-03-30 19:20 循迹小车+仿真\USER\1602.lst
文件 10551 2014-03-30 19:20 循迹小车+仿真\USER\1602.obj
文件 111 2014-03-30 19:20 循迹小车+仿真\USER\1602.__i
文件 591 2014-04-05 11:46 循迹小车+仿真\USER\main.c
文件 1861 2014-04-05 11:14 循迹小车+仿真\USER\main.LST
文件 5066 2014-04-05 11:14 循迹小车+仿真\USER\main.OBJ
文件 62 2014-04-05 11:14 循迹小车+仿真\USER\main.__i
文件 4393 2014-03-30 19:55 循迹小车+仿真\USER\pwm.lst
文件 6973 2014-03-30 19:55 循迹小车+仿真\USER\pwm.obj
文件 108 2014-03-30 19:55 循迹小车+仿真\USER\pwm.__i
文件 6376 2009-05-07 14:37 循迹小车+仿真\USER\STARTUP.A51
文件 14048 2014-03-30 17:31 循迹小车+仿真\USER\STARTUP.LST
文件 749 2014-03-30 17:31 循迹小车+仿真\USER\STARTUP.OBJ
文件 3725 2014-03-30 20:22 循迹小车+仿真\USER\xunji.lst
文件 6895 2014-03-30 20:22 循迹小车+仿真\USER\xunji.obj
............此处省略12个文件信息
评论
共有 条评论