新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2018-11-2
- 在线时间
- 14 小时
|
本帖最后由 知行合sEyvH 于 2019-5-16 21:28 编辑
/* 主函数*/
int main(void)
{
u8 code_hot[8]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00 }; //??????
u8 strMCU[]="hello world!";
Delay_init(72); //???????
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //??NVIC????2:2??????,2??????
// LED_Init(); //LED?????
GPIO_Configuration();
lcd1602_Init( );
// delay_ms(1000);
// delay_ms(1000);
//Write1602_Com(0x81);
//LCD1602_ClearScreen();
// LCD1602_Show_Str(2,0,"abcv");
LCD1602_Show_Str(2,1,strMCU);
// Write1602_One_Dat(2,1,'A');
LCD1602_Show_Str(0x80,1,code_hot); //????
LCD1602_Show_Str(0x80+0x40,0,strMCU);
while(1)
{
Delay_ms(1000);
LED1=!LED1;
// Write1602_One_Dat(2,1,'A');
LCD1602_Show_Str(0x80,1,code_hot);
LCD1602_Show_Str(0x80+0x40,0,strMCU);
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0|GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6| GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void LCD1602_Wait_Ready(void)
{
u8 sta;
DATAOUT(0xff);
LCD_RS_Clr();
LCD_RW_Set();
do
{
LCD_EN_Set();
Delay_ms(5); //ÑÓʱ5ms£¬·Ç³£ÖØÒª
sta = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);//¶Áȡ״̬×Ö
LCD_EN_Clr();
}while(sta & 0x80);
}
/*дָÁî*/
void LCD1602_Write_Cmd(u8 cmd)
{
LCD1602_Wait_Ready();
LCD_RS_Clr();
LCD_RW_Clr();
DATAOUT(cmd);
LCD_EN_Set();
LCD_EN_Clr();
// DATAOUT(cmd<<4);
// LCD_EN_Set();
// LCD_EN_Clr();
}
/*дÊý¾Ý*/
void LCD1602_Write_Dat(u8 dat)
{
LCD1602_Wait_Ready();
LCD_RS_Set();
LCD_RW_Clr();
DATAOUT(dat);
LCD_EN_Set();
LCD_EN_Clr();
// DATAOUT(dat<<4);
// LCD_EN_Set();
// LCD_EN_Clr();
}
/*ÇåÆÁ*/
void LCD1602_ClearScreen(void)
{
LCD1602_Write_Cmd(0x01);
}
/* ÉèÖÃÏÔʾRAMÆðʼµØÖ·£¬Ò༴¹â±êλÖã¬(x,y)-¶ÔÓ¦ÆÁÄ»ÉϵÄ×Ö·û×ø±ê */
void LCD1602_Set_Cursor(u8 x, u8 y)
{
u8 addr;
if (y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
LCD1602_Write_Cmd(addr | 0x80);
}
/*ÔÚÒº¾§ÉÏ×Ö·û´®*/
void LCD1602_Show_Str(u8 x,u8 y,u8 *str)
{
LCD1602_Set_Cursor(x,y);
while(*str!='\0')
{
LCD1602_Write_Dat(*str++);
}
}
void lcd1602_Init(void)
{
GPIO_Configuration( );
LCD1602_Write_Cmd(0x38);
LCD1602_Write_Cmd(0x0c);
LCD1602_Write_Cmd(0x06);
LCD1602_Write_Cmd(0x01);
}
void Write1602_One_Dat(u8 x,u8 y,u8 dat)
{
x&=0x0f;
y&=0x01;
if(y)
x|=0x40;
x|=0x80;
LCD1602_Write_Cmd(x);
LCD1602_Write_Dat(dat);
}
#define LCD_RS_Set() GPIO_SetBits(GPIOC, GPIO_Pin_13)
#define LCD_RS_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_13)
//1602Òº¾§¶ÁдÒý½Å
#define LCD_RW_Set() GPIO_SetBits(GPIOC, GPIO_Pin_14)
#define LCD_RW_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_14)
//1602Òº¾§Ê¹ÄÜÒý½Å
#define LCD_EN_Set() GPIO_SetBits(GPIOC, GPIO_Pin_15)
#define LCD_EN_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_15)
//1602Òº¾§Êý¾Ý¶Ë¿Ú PD0~7
#define DATAOUT(x) GPIO_Write(GPIOB, x)
void lcd1602_Init(void);
void LCD1602_Show_Str(u8 x,u8 y,u8 *str);
void LCD1602_Write_Cmd(u8 cmd);
void LCD1602_Write_Dat(u8 dat);
void GPIO_Configuration(void);
void LCD1602_Wait_Ready(void);
void LCD1602_ClearScreen(void);
void LCD1602_Set_Cursor(u8 x, u8 y);
void Write1602_One_Dat(u8 x,u8 y,u8 dat);
#endif
实验1 1602.rar
(2.61 MB, 下载次数: 2)
|
|