智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 9074|回复: 13
打印 上一主题 下一主题

[软件类] 求xs128的1602液晶显示程序

  [复制链接]

9

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
威望
197
贡献
50
兑换币
0
注册时间
2010-11-22
在线时间
12 小时
跳转到指定楼层
#
发表于 2010-11-22 18:17:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1贡献
求xs128板的1602液晶显示程序

1

主题

13

帖子

0

精华

注册会员

Rank: 2

积分
111
威望
61
贡献
34
兑换币
38
注册时间
2013-7-6
在线时间
8 小时
毕业学校
内蒙古大学
13#
发表于 2014-7-2 22:15:21 | 只看该作者
谢啦,太及时了
回复

使用道具 举报

0

主题

117

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
威望
122
贡献
70
兑换币
74
注册时间
2014-4-6
在线时间
19 小时
毕业学校
贵州大学
12#
发表于 2014-6-29 19:47:56 | 只看该作者
学习,,
回复

使用道具 举报

16

主题

352

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2535

优秀会员奖章活跃会员奖章

QQ
威望
888
贡献
1261
兑换币
10
注册时间
2011-8-31
在线时间
193 小时
11#
发表于 2012-3-22 11:09:55 | 只看该作者
我以前试过了  可以用的
回复

使用道具 举报

16

主题

352

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2535

优秀会员奖章活跃会员奖章

QQ
威望
888
贡献
1261
兑换币
10
注册时间
2011-8-31
在线时间
193 小时
10#
发表于 2012-3-22 11:09:42 | 只看该作者
嗯嗯  是啊
回复

使用道具 举报

2

主题

52

帖子

0

精华

高级会员

Rank: 4

积分
638
威望
400
贡献
86
兑换币
4
注册时间
2011-8-29
在线时间
76 小时
9#
发表于 2012-3-21 19:06:14 | 只看该作者
tongyonghua123 发表于 2011-10-6 19:04
#include       /* common defines and macros */
#include "derivative.h"      /* derivative-specific  ...

请问你这是用在9x128上的程序吗,你当初用这个的时候可以用吗??
回复

使用道具 举报

11

主题

390

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1698
QQ
威望
835
贡献
433
兑换币
324
注册时间
2011-8-20
在线时间
215 小时
8#
发表于 2011-10-11 21:04:28 | 只看该作者
zhe  bu cuo
回复

使用道具 举报

16

主题

352

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2535

优秀会员奖章活跃会员奖章

QQ
威望
888
贡献
1261
兑换币
10
注册时间
2011-8-31
在线时间
193 小时
7#
发表于 2011-10-6 19:04:16 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void PLL_Init(void)   //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;            //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;        //选定锁相环时钟
}
# define  LCD_DB   PORTB
# define  LCD_RS   PORTE_PE0
# define  LCD_RW   PORTE_PE1
# define  LCD_E    PORTE_PE2
void LCD_init(void);//初始化函数
void LCD_write_command(uchar command);//写指令函数
void LCD_write_data(uchar dat);//写数据函数
void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2)
//void LCD_check_busy(void);//检查忙函数。我没用到此函数,因为通过率极低。
void delay_n40us(uint n);//延时函数
//********************************
//*******初始化函数***************
void LCD_init(void)
{
LCD_write_command(0x38);//设置8位格式,2行,5x7
LCD_write_command(0x0c);//整体显示,关光标,不闪烁
LCD_write_command(0x06);//设定输入方式,增量不移位
LCD_write_command(0x01);//清除屏幕显示
delay_n40us(100);//实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。
}
//********************************
//********写指令函数************
void LCD_write_command(uchar dat)
{
LCD_DB=dat;
LCD_RS=0;//指令
LCD_RW=0;//写入
LCD_E=1;//允许
LCD_E=0;
delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。
}
//*******************************
//********写数据函数*************
void LCD_write_data(uchar dat)
{
LCD_DB=dat;
LCD_RS=1;//数据
LCD_RW=0;//写入
LCD_E=1;//允许
LCD_E=0;
delay_n40us(1);
}
//********************************
//*******显示一个字符函数*********
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
uchar address;
if(y==1)
         address=0x80+x;
else
         address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
//********************************
/*******检查忙函数*************
void LCD_check_busy()      //实践证明,在我的LCD1602上,检查忙指令通过率极低,以
{                                          //至于不能正常使用LCD。因此我没有再用检查忙函数。而使
do                                       //用了延时的方法,延时还是非常好用的。我试了一下,用
        { LCD_E=0;                   //for循环作延时,普通指令只要1次循就可完成。清屏指令
          LCD_RS=0;                 //要用200次循环便能完成。   
          LCD_RW=1;
          LCD_DB=0xff;
          LCD_E=1;
        }while(LCD_DB^7==1);

******************************/
//********延时函数***************
void delay_n40us(uint n)
{ uint i;
      uchar j;            
        for(i=n;i>0;i--)
           for(j=0;j<2;j++);          //在这个延时循环函数中我只做了2次循环,
}                                         //实践证明我的LCD1602上普通的指令只需1次循环就能可靠完成。
//*******************************
//*********主函数*****************
void port_init() {
  DDRB=0XFF;
  DDRE=0XFF;
  PORTB=0XFF;
}


void main(void) {
   PLL_Init();
  port_init();
  LCD_init();

  for(;;) {
    _FEED_COP(); /* feeds the dog */
     LCD_disp_char(0,2,'a');
  } /* loop forever */
  /* please make sure that you never leave main */
}
回复

使用道具 举报

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
6#
发表于 2011-3-14 23:14:16 | 只看该作者
回复

使用道具 举报

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
5#
发表于 2011-3-14 23:09:39 | 只看该作者
回复 4# ngngabc


    你可以在本论坛下载我提供的完成程序!
回复

使用道具 举报

5

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
QQ
威望
339
贡献
126
兑换币
0
注册时间
2011-1-1
在线时间
9 小时
4#
发表于 2011-3-13 16:00:57 | 只看该作者
。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-4 07:49 , Processed in 0.102534 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表