智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2045|回复: 3
打印 上一主题 下一主题

新手求教,关于S12x单片机如何控制LCD输出的程序问题

[复制链接]

8

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
661
贡献
317
兑换币
54
注册时间
2011-9-29
在线时间
84 小时
跳转到指定楼层
1#
发表于 2011-11-9 14:52:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调试时老会有Includes.h not fount提示和lcd.h not fount   这个程序我是根据嵌入式系统设计实战编的。ifndef 不就是定义宏LCD.H么,为什么会不能被发现?
还有代码cmd是什么意思?
程序如下:
#ifndef LCD_H
#define LCD_H
#include"Includes.h"

// LCD 数据线所用寄存器
#define LCD_P0 PA
#define LCD_P1 PA
#define LCD_P2 PA
#define LCD_P3 PA
#define LCD_P4 PA
#define LCD_P5 PA
#define LCD_P6 PA
#define LCD_P7 PA

//lcd 数据线所用寄存器引脚
#define LCD_B0 0
#define LCD_B1 1
#define LCD_B2 2
#define LCD_B3 3
#define LCD_B4 4
#define LCD_B5 5
#define LCD_B6 6
#define LCD_B7 7

//lcd寄存器选择信号
#define LCDRS_P  PB    /* LCDRS_P表示lcd rs 对应的单片机引脚*/
#define LCDRS_B  0   /* B表示bit 代表rs引脚所用的位*/

//LCD读写信号
#define LCDRW_P PB
#define LCDRW_B 1   
//LCD使能信号
#define LCDE_P  PB
#define LCDE_B  2

//函数声明区
void chushihua(void);
void shuchu(uint8_t a[]);
void LCD_Command(uint8_t cmd);/*执行给定的cmd命令且延时*/

#endif




//第二部分

#include"LCD.h"



//初始化函数
void chushihua()
{
uint16_t i; //定义i为16位的无符号整数

//定义数据口为输出
GPIO_Set(LCD_P0,DDR,LCD_B0,1);
GPIO_Set(LCD_P1,DDR,LCD_B1,1);
GPIO_Set(LCD_P2,DDR,LCD_B2,1);
GPIO_Set(LCD_P3,DDR,LCD_B3,1);
GPIO_Set(LCD_P4,DDR,LCD_B4,1);
GPIO_Set(LCD_P5,DDR,LCD_B5,1);
GPIO_Set(LCD_P6,DDR,LCD_B6,1);
GPIO_Set(LCD_P7,DDR,LCD_B7,1);

//定义控制口为输出
GPIO_Set(LCDRS_P,DDR,LCDRS_B,1);
GPIO_Set(LCDRW_P,DDR,LCDRW_B,1);
GPIO_Set(LCDE_P,DDR,LCDE_B,1);

//设置指令,rs,rw=00写指令
GPIO_Set(LCDRS_P,PRT,LCDRS_B,0);  
GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);

//功能设置书202页
LCD_Command(0b00111000);

//显示开关控制
LCD_Command(0b00001000);

//清屏
LCD_Command(0b00000001);

//等待清屏完毕
for(i=0;i<40000;i++);

//输入方式
LCD_Command(0b00000110);

//光标画面移动位置
LCD_Command(0b00010100);

}



//延时函数
void yanchi(uint16_t k)
{
uint16_t i,j;
for(i=0;j<k;i++)
for(j=0;j<=500;j++);
}



//屏幕显示输出
void shuchu(uint8_t a[])
{
uint8_t i;
chushihua();
GPIO_Set(LCDRS_P,PRT,LCDRS_B,0);
GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);

LCD_Command(0x80);
GPIO_Set(LCDRS_P,PRT,LCDRS_B,1);
GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);
for(i=0;i<16;i++)
{
  LCD_Command(a[i]);
}

  GPIO_Set(LCDRS_P,PRT,LCDRS_B,0);
  GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);
  LCD_Command(0xC0);
  GPIO_Set(LCDRS_P,PRT,LCDRS_B,1);
GPIO_Set(LCDRW_P,PRT,LCDRW_B,0);
for(i=0;i<16;i++)
{
  LCD_Command(a[i]);
}
}





//执行cmd指令程序
void LCD_Command(uint8_t cmd)
{
uint8_t i;
yanchi(7);
GPIO_Set(LCD_P0,PRT,LCD_B0,((cmd>>0)&0x01));
GPIO_Set(LCD_P1,PRT,LCD_B1,((cmd>>1)&0x01));
GPIO_Set(LCD_P2,PRT,LCD_B2,((cmd>>2)&0x01));
GPIO_Set(LCD_P3,PRT,LCD_B3,((cmd>>3)&0x01));
GPIO_Set(LCD_P4,PRT,LCD_B4,((cmd>>4)&0x01));
GPIO_Set(LCD_P5,PRT,LCD_B5,((cmd>>5)&0x01));
GPIO_Set(LCD_P6,PRT,LCD_B6,((cmd>>6)&0x01));
GPIO_Set(LCD_P7,PRT,LCD_B7,((cmd>>7)&0x01));

GPIO_Set(LCDE_P,DDR,LCDE_B,1);
for(i=0;i<10;i++)
asm("NOP");
dengdai(5);

}








//运行程序

#include"includes.h"
uint8_t a[32];
void main()
uint16_t mun;
DisableInterrupt();
MCUInit(FBUS_32M);
Light_Init(Light_Run_PORT,Light_Run,Light_OFF);
SCIInit(0,FBUS_32M,9600);
chushihua();
shuchu("Waitting For Me");
for(;;)
{
mun++;
if (mun>=20) {
mun=0;
Light_Change(Light_Run_PORT,Light_Run);
}


//LCD显示
if(0==SCIReN(0,32,receive_data)) {
shuchu((uint8*)receive_data);}
}

8

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
661
贡献
317
兑换币
54
注册时间
2011-9-29
在线时间
84 小时
2#
 楼主| 发表于 2011-11-9 23:44:43 | 只看该作者
求指教。。。
回复 支持 反对

使用道具 举报

8

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
661
贡献
317
兑换币
54
注册时间
2011-9-29
在线时间
84 小时
3#
 楼主| 发表于 2011-11-9 23:54:50 | 只看该作者
:'(:'(:'(:'(大家来来帮帮我
回复 支持 反对

使用道具 举报

8

主题

187

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1146
威望
661
贡献
317
兑换币
54
注册时间
2011-9-29
在线时间
84 小时
4#
 楼主| 发表于 2011-11-11 01:27:50 | 只看该作者
高手们。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 04:00 , Processed in 0.044255 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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