📄 hello.c
字号:
/*------------------------------------------------------------------------------
HELLO.C - adapted for the P89LPC932 and the Keil MCB900 Microcontroller Board
Copyright 1995-2005 Keil Software, Inc.
------------------------------------------------------------------------------*/
#include <REG916.H> /* special function register declarations */
/* for the Philips P89C932 device */
#include <stdio.h> /* prototype declarations for I/O functions */
/*
const unsigned int LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x000A,0x0021,0x0C00,
0x0000,
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};
*/
const unsigned int LCD_REGS_VAL[19]={
0x409D,0x0204,0x0100,0x3000,0x4003,0x00AA,0x0021,0x0C00,
0x0000,/*reg 9 at Instruction Setting not set */
0x0103,0x0301,0x1F0F,0x1F0F,0x0707,0x0307,0x0707,0x0000,0x0004,0x0000
};
/* The delay C function is a for loop that
needs about 0.2 seconds execution time */
static void delay (unsigned int tmp) {
unsigned int i;
for (i = 0; i < 80*tmp; i++)
{
;
}
}
static void spi_init(void)
{
P2M1 = 0x00;
P2M2 = 0x00;
SPCTL = 0xD0;//初始化SPI //D3
}
static void spi_send_data(unsigned char tmp)
{
SPDAT = tmp;
while((SPSTAT&0x80)==0);
delay(1);
}
static void lcd_set_reg(unsigned char tmp)
{
LCD_CS = 0;
spi_send_data(0x74); //74
spi_send_data(0x00);
spi_send_data(tmp);
LCD_CS = 1;
}
static void lcd_set_data(unsigned int tmp)
{
unsigned char data_h;
unsigned char data_l;
data_h = (tmp&0xff00)>>8;
data_l = tmp&0xff;
LCD_CS = 0;
spi_send_data(0x76); //76
spi_send_data(data_h);
spi_send_data(data_l);
LCD_CS = 1;
}
static void lcd_power_up(void)
{
int i;
delay(100);
lcd_set_reg(9);
lcd_set_data(0);
delay(20);
lcd_set_reg(9);
lcd_set_data(0x4000);
lcd_set_reg(10);
lcd_set_data(0x2000);
lcd_set_reg(9);
lcd_set_data(0x4055);
delay(100);
for(i=0;i<19;i++)
{
if(i!=8)
{
lcd_set_reg(i+1);
lcd_set_data(LCD_REGS_VAL[i]);
}
}
delay(1000);
lcd_set_reg(9);
lcd_set_data(0x4A55);
lcd_set_reg(5);
lcd_set_data(0x5003);
}
/*------------------------------------------------
The main C function. Program execution starts
here after stack initialization.
------------------------------------------------*/
void main()
{
// delay(2000);
spi_init();
LCD_CS = 1;
delay(10);
lcd_power_up();
while(1)
{
// spi_send_data(0x85);
delay(1);
// spi_send_data(0x05);
// lcd_set_reg(0x05);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -