金牌会员
- 积分
- 1146
- 威望
- 661
- 贡献
- 317
- 兑换币
- 54
- 注册时间
- 2011-9-29
- 在线时间
- 84 小时
|
调试时老会有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);}
} |
|