- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
/**********************************************
文件名:基于单片机的交通控制系统
作 者:风雪子郁
时 间: 2012/11/22
邮 箱:fxziyu@
地 址:四川信息职业技术学院(雪峰校区)
**********************************************/
/**************************
液晶显示函数源程序
**************************/
#include intrins.h
#define LCD_databus P0 //LCD8 位数据口
sbit RS=P2^2; //RS 为0 命令;1 数据
sbit RW=P2^1; //RW 为1--写;0--读
sbit EN=P2^0; //使能端
sbit CS1=P2^4; //片选1 低电平有效,控制左半屏
sbit CS2=P2^3; //片选1 低电平有效,控制右半屏控制右半屏
unsigned char num;
void Delay(unsigned int t)
{
unsigned int i,j;
for(i=0;it;i++)
for(j=0;j110;j++);
}
void Read_busy()//读“忙”函数数据线的最高位DB71 则busy
{
P0=0x00;
RS=0;
RW=1;
EN=1;
while(P0 0x80);
EN=0;
}
void write_LCD_command(unsigned char value)
{
Read_busy();//每次读写都要忙判断
RS=0; //选择命令
RW=0; //读操作
LCD_databus=value;
EN=1; //EN 由10 锁存有效数据
_nop_();
_nop_();
EN=0;
}
void write_LCD_data(unsigned char value)//写数据函数
{
Read_busy();
RS=1; //选择数据
RW=0;
LCD_databus=value;
EN=1; //EN 由10 锁存有效数据
_nop_();
_nop_();
EN=0;
}
void Set_page(unsigned char page)//设置“页”LCD12864 共8 页,一页是8 行点阵点
{
page=0xb8|page; //页的首地址为0xB8
write_LCD_command(page);
}
void Set_line(unsigned char startline) //设置显示的起始行
{
startline=0xC0|startline; //起始行地址为0xC0
write_LCD_command(startline); //设置从哪行开始:共0--63;一般从0 行开始显示
}
void Set_column(unsigned char column) //设置显示的列
{
column=column 0x3f; //列的最大值为64
column= 0x40|column; //列的首地址为0x40
write_LCD_command(column);//列位置
}
void SetOnOff(unsigned char onoff) //显示开关函数:0x3E 是关显示,0x3F 是开显示
{
onoff=0x3e|onoff; //0011 111x,onoff只能为0 或者1
write_LCD_command(onoff);
}
void SelectScreen(unsigned char screen) //选屏
{
switch(screen)
{
case 0: CS1=0;CS2=0;break; //全屏
case 1: CS1=0;CS2=1;break;//左半屏
case 2: CS1=1;CS2=0;break;//右半屏
default:break;
}
}
void ClearScreen(unsigned char screen) //清屏
{
unsigned char i,j;
SelectScreen(screen);
for(i=0;i8;i++)//控制页数0-7,共8 页
{
Set_page(i);
Set_column(0);
for(j=0;j64;j++) //控制列数0-63,共64 列
{
write_LCD_data(0x00); //写入0,地址指针自加1
}
}
}
void InitLCD()
文档评论(0)