📄 uart_lcd_bak.c
字号:
IO0CLR = led1;
OSTimeDly(OS_TICKS_PER_SEC/5);
}
}
/*********************************************************************************************************
** 函数名称: TaskUart0Revice
** 功能描述: μCOS-II的任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块:
**
** 作 者: 陈明计
** 日 期: 2003年7月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void TaskUart0Revice(void *pdata)
{
uint8 Buf[8];
pdata = pdata; /* 避免编译警告 */
for (;;)
{
IO0SET = led1;
while (UART0Getch() != 0x77); /* 接收数据头 */
/*LCD_Display_a_Sentence_FUN(0x80,"这",1);
LCD_Display_a_Sentence_FUN(0x82,"刻",0);
LCD_Display_a_Sentence_FUN(0x84,"我",0);
LCD_Display_a_Sentence_FUN(0x86,"们",0);
LCD_Display_a_Sentence_FUN(0x88,"都",0);
LCD_Display_a_Sentence_FUN(0x8a,"四",0);
LCD_Display_a_Sentence_FUN(0x8c,"川",0);
LCD_Display_a_Sentence_FUN(0x8e,"",0);
LCD_Display_a_Sentence_FUN(0x90,"人",0);
LCD_Display_a_Sentence_FUN(0x92,"我",0);
LCD_Display_a_Sentence_FUN(0x94,"们",0);
LCD_Display_a_Sentence_FUN(0x96,"是",0);
LCD_Display_a_Sentence_FUN(0x98,"中",0);
LCD_Display_a_Sentence_FUN(0x9a,"国",0);
LCD_Display_a_Sentence_FUN(0x9c,"人",0);
LCD_Display_a_Sentence_FUN(0x9e,"!",0);
*/
Buf[0] = 0xff;
Buf[1] = 0x0e;
Buf[2] = 0xc5;
Buf[3] = 0x00;
Buf[4] = 0x37;
Buf[5] = 0x01;
Buf[6] = 0x00;
Buf[7] = 0xfe;
OSMboxPost(Uart0ReviceMbox, (void *)Buf);
}
}
/*********************************************************************************************************
** 函数名称: InitializeLCD_FUN
** 功能描述: 初始化LCD
** 输 入:无
**
** 输 出:无
** 全局变量: LCD_WRITE_COMMAND_MODE
** 调用模块: LCD_Send_Command_Or_Data_FUN,LCD_Display_a_Sentence_FUN
**------------------------------------------------------------------------------------------------------
** 作 者: 梁浩荡
** 日 期: 2008年5月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void InitializeLCD_FUN(void)
{
char s[40]={"这一刻我们都是"};
char s1[40]={"四川人!"};
//char s[40] = {"LCD initialize OK!0123456789ab"};
//DelayNuS(100000);
OSTimeDly(OS_TICKS_PER_SEC/10);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x30); /*功能设置:一次送8位数据,基本指令集*/
DelayNuS(4);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x18); /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/
DelayNuS(4);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x0C); /*显示设定:开显示,显示光标,当前显示位反白闪动*/
DelayNuS(4);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x01); /*清DDRAM*/
DelayNuS(4);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x02); /*DDRAM地址归位*/
DelayNuS(4);
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x80); /*把显示地址设为0X80,即为第一行的首位*/
DelayNuS(4);
LCD_Display_a_Sentence_FUN(0x80,s,1);
LCD_Display_a_Sentence_FUN(0x90,s1,0);
}
/*********************************************************************************************************
** 函数名称: LCD_Display_a_Sentence_FUN
** 功能描述: LCD显示一个句子
** 输 入: StartAddress_INT8U:显示首地址 * PointToSentence_INT8U:
** 数据指针 CleanDDRAM_INT8U:清DDRAM标志
** 输 出:无
** 全局变量: LCD_WRITE_COMMAND_MODE,
** 调用模块: LCD_Send_Command_Or_Data_FUN
**------------------------------------------------------------------------------------------------------
** 作 者: 梁浩荡
** 日 期: 2008年5月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LCD_Display_a_Sentence_FUN(INT8U StartAddress_INT8U, char *PointToSentence_INT8U,INT8U CleanDDRAM_INT8U)
{
if((StartAddress_INT8U>=0x80&&StartAddress_INT8U<0x8F)||(StartAddress_INT8U>=0x90&&StartAddress_INT8U<0x9F))
{
if(CleanDDRAM_INT8U==1)
{
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,0x01); /*清DDRAM*/
}
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,StartAddress_INT8U);
while((*PointToSentence_INT8U!='\0')&&(StartAddress_INT8U<0x9F))
{
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_DATA_MODE,*PointToSentence_INT8U++);
StartAddress_INT8U++;
if(StartAddress_INT8U==0x8F)
{
StartAddress_INT8U=0x90;
LCD_Send_Command_Or_Data_FUN(LCD_WRITE_COMMAND_MODE,StartAddress_INT8U);
}
}
}
}
/*********************************************************************************************************
** 函数名称: LCD_Send_Command_Or_Data_FUN
** 功能描述: LCD显示一个字符
** 输 入: WriteMode_INT8U:写模式 SendData_INT8U:发送数据
**
** 输 出:无
** 全局变量: Bitmap_INT8U
** 调用模块:
**------------------------------------------------------------------------------------------------------
** 作 者: 梁浩荡
** 日 期: 2008年5月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LCD_Send_Command_Or_Data_FUN(INT8U WriteMode_INT8U,INT8U SendData_INT8U)
{
INT8U i,sendbyte;
IO0DIR |= LCD_CS_PIN | LCD_SCLK_PIN | LCD_SID_PIN;
IO0SET = LCD_CS_PIN;
IO0CLR = LCD_SCLK_PIN;
if(WriteMode_INT8U==1)
{
sendbyte=0xF8; //11111 rw=0=w rs=0=instructionbuffer 0
}else{
sendbyte=0xFA; //11111 rw=0=w rs=1=databuffer 0
}
for(i=0;i<8;i++)
{
if( (sendbyte&Bitmap_INT8U[7-i])!=0 ) IO0SET = LCD_SID_PIN;
else IO0CLR = LCD_SID_PIN;
DelayNuS(100);
IO0SET = LCD_SCLK_PIN;
DelayNuS(100);
IO0CLR = LCD_SCLK_PIN;
}
sendbyte=0xF0&SendData_INT8U; //HSB 0000
for(i=0;i<8;i++)
{
if( (sendbyte&Bitmap_INT8U[7-i])!=0 ) IO0SET = LCD_SID_PIN;
else IO0CLR = LCD_SID_PIN;
DelayNuS(100);
IO0SET = LCD_SCLK_PIN;
DelayNuS(100);
IO0CLR = LCD_SCLK_PIN;
}
sendbyte=0x0F&SendData_INT8U; //0000 LSB
sendbyte<<=4; //LSB 0000
for(i=0;i<8;i++)
{
if( (sendbyte&Bitmap_INT8U[7-i])!=0 ) IO0SET = LCD_SID_PIN;
else IO0CLR = LCD_SID_PIN;
DelayNuS(100);
IO0SET = LCD_SCLK_PIN;
DelayNuS(100);
IO0CLR = LCD_SCLK_PIN;
}
IO0CLR = LCD_CS_PIN;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -