日志档案

发表于 2006-10-11 8:52:23

21

标签: 无标签

发一个1602滚动显示的C51程序,欢迎大家讨论

功能:从左至右,分2行滚动显示:“www.xjtu.edu.cn”和“WELCOME TO XJTU”

[如果觉得可以就投我一票了,毕竟我也是花了点心思做的!谢谢!(有删节)

#include
#include
#define uchar unsigned char

typedef bit BOOL ;

sbit rs = P2^0;
sbit rw = P2^1;
sbit ep = P2^2;

void delay(uchar);
void lcd_wcmd(uchar);
BOOL lcd_bz();
void lcd_pos(uchar);
void lcd_wdat(uchar);
void display(uchar,uchar *);

uchar code dis1[] = {" www.xjtu.edu.cn"};
uchar code dis2[] = {"WELCOME TO XJTU"};

void longdelay(uchar s)  //长延时
{
 while(s--)
 {
  delay(60);
 }
}

void delay(uchar ms)
{       // 延时子程序
 uchar i;
 while(ms--)
 {
  for(i = 0; i< 250; i++);
 }
}

BOOL lcd_bz()
{       // 测试LCD忙碌状态
 BOOL result;
 rs = 0;
 rw = 1;
 ep = 1;
 result = (BOOL)(P0 & 0x80);
 ep = 0;
 return result;
}

void lcd_wcmd(uchar cmd)
{       // 写入指令数据到LCD
 while(lcd_bz());
  rs = 0;
  rw = 0;
  ep = 0;
  P0 = cmd;
  ep = 1;
  ep = 0; 
}

void lcd_pos(uchar pos)
{       //设定显示位置
 lcd_wcmd(pos | 0x80);
}

void lcd_wdat(uchar dat)
{       //写入字符显示数据到LCD
 while(lcd_bz());
  rs = 1;
  rw = 0;
  ep = 0;
  P0 = dat;
  ep = 1;
  ep = 0;
}

/*---------------
函数名称:display()
功能 :在LCD上显示数组的数据
说明 :先写显示地址,后写显示数据
调用 :lcd_wcmd(), lcd_pos()
入口参数:pos 写入的位置,q指向要写入的数据所在的数组
返回值 :无
----------------*/

main()
{
  while(1)
 {
  display(0x00,dis1);
  //display(0x40,dis2);
  //display(0x14,dis1);
  //display(0x54,dis2);
 }
}

系统分类: 单片机   |   用户分类: 单片机技术   |   来源: 无分类   |   【推荐给朋友】

    阅读(2159)    回复(5)  

投一票您将和博主都有获奖机会!

  • 卧龙

    2006-11-12 9:16:22

  • RainbowDream

    2006-11-21 17:26:15

    博主里面的东西真多呀,我看都看不过来了,这里有太多的好东西,今天受益良多!以后会常来这踩踩,希望博主不要嫌我烦呀,呵呵!感谢了!

  • info

    2006-10-13 13:09:09

    查询模式,呵呵

  • likaiweni

    2006-10-21 23:03:07

    不错

     

  • money

    2007-8-28 22:10:41

    能用吗,怎么没有初始化呢,哈哈