資源簡介
這幾天在寫ht1621b顯示LCD的程序,主芯片是Stm32f10的芯片。對于stm32和ht1621b的運用和操作本人是新手,屬于趕鴨子上架,通過查看datasheet等資料和網(wǎng)上查看前人寫的程序終于完成了LCD的顯示,在此做個記錄以備不時之需,并希望像能幫助想我一樣的新人少走點彎路和共同學習。

代碼片段和文件信息
#include?“l(fā)cd.h“
#include?“stm32f10x.h“
#include?
#include?
#include?
#include?“Stm32f10x_delay.h“
int?bLcd_flag?=?0;
int?bLcd_timer?=?0;
///////////////////////////////////////////////////驅(qū)動函數(shù)
/*
* LCD?模式寫入
* 入口:MODE?:COM(命令模式)?DAT(數(shù)據(jù)模式)
* 出口:void
*/
void?write_mode(unsigned?char?MODE) //寫入模式數(shù)據(jù)or命令
{
GPIO_ResetBits(GPIOA?HT1621_WR); // RW?=?0;
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_DATA); // DA?=?1;
GPIO_SetBits(GPIOA?HT1621_WR); // RW?=?1;
Delay_us(10);
GPIO_ResetBits(GPIOA?HT1621_WR); // RW?=?0;
Delay_us(10);
GPIO_ResetBits(GPIOA?HT1621_DATA); // DA?=?0;
GPIO_SetBits(GPIOA?HT1621_WR); // RW?=?1;
Delay_us(10);
GPIO_ResetBits(GPIOA?HT1621_WR); // RW?=?0;
Delay_us(10);
if?(0?==?MODE)
{
GPIO_ResetBits(GPIOA?HT1621_DATA); // DA?=?0;
}
else
{
GPIO_SetBits(GPIOA?HT1621_DATA); // DA?=?1;
}
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_WR); // RW?=?1;
Delay_us(10);
}
/*
* LCD?命令寫入函數(shù)
* 入口:cbyte?控制命令字
* 出口:void
*/
void?write_command(unsigned?char?Cbyte)
{
unsigned?char?i?=?0;
for?(i?=?0;?i?8;?i++)
{
GPIO_ResetBits(GPIOA?HT1621_WR);
//Delay_us(10);
if?((Cbyte?>>?(7?-?i))?&?0x01)
{
GPIO_SetBits(GPIOA?HT1621_DATA);
}
else
{
GPIO_ResetBits(GPIOA?HT1621_DATA);
}
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_WR);
Delay_us(10);
}
GPIO_ResetBits(GPIOA?HT1621_WR);
Delay_us(10);
GPIO_ResetBits(GPIOA?HT1621_DATA);
GPIO_SetBits(GPIOA?HT1621_WR);
Delay_us(10);
}
/*
* LCD?地址寫入函數(shù)
* 入口:cbyte地址
* 出口:void
*/
void?write_address(unsigned?char?Abyte)
{
unsigned?char?i?=?0;
Abyte?=?Abyte?<2;
for?(i?=?0;?i?6;?i++)
{
GPIO_ResetBits(GPIOA?HT1621_WR);
//Delay_us(10);
if?((Abyte?>>?(7?-?i))?&?0x01)
{
GPIO_SetBits(GPIOA?HT1621_DATA);
}
else
{
GPIO_ResetBits(GPIOA?HT1621_DATA);
}
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_WR);
Delay_us(10);
}
}
/*
* LCD?數(shù)據(jù)寫入函數(shù)
* 入口:Dbyte數(shù)據(jù)
* 出口:void
*/
void?write_data_8bit(unsigned?char?Dbyte)
{
int?i?=?0;
for?(i?=?0;?i?8;?i++)
{
GPIO_ResetBits(GPIOA?HT1621_WR);
//Delay_us(10);
if?((Dbyte?>>?(7?-?i))?&?0x01)
{
GPIO_SetBits(GPIOA?HT1621_DATA);
}
else
{
GPIO_ResetBits(GPIOA?HT1621_DATA);
}
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_WR);
Delay_us(10);
}
}
void?write_data_4bit(unsigned?char?Dbyte)
{
int?i?=?0;
for?(i?=?0;?i?4;?i++)
{
GPIO_ResetBits(GPIOA?HT1621_WR);
//Delay_us(10);
if?((Dbyte?>>?(3?-?i))?&?0x01)
{
GPIO_SetBits(GPIOA?HT1621_DATA);
}
else
{
GPIO_ResetBits(GPIOA?HT1621_DATA);
}
Delay_us(10);
GPIO_SetBits(GPIOA?HT1621_WR);
Delay_us(10);
}
}
///////////////////////////////////////////////////接口函數(shù)
void?ht1621_init(void)
{
GPIO_InitTypeDef?GPIO_InitStructure;//?declare?the?structure?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????10581??2016-09-18?11:57??lcd.c
?????文件????????2059??2016-08-23?16:38??lcd.h
- 上一篇:多目標問題RM-MOEAMOEAD的改進版,by張青富老師
- 下一篇:重啟式惡搞軟件
評論
共有 條評論