• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: 其他
  • 标签:

资源简介

这几天在写ht1621b显示LCD的程序,主芯片是Stm32f10的芯片。对于stm32和ht1621b的运用和操作本人是新手,属于赶鸭子上架,通过查看datasheet等资料和网上查看前人写的程序终于完成了LCD的显示,在此做个记录以备不时之需,并希望像能帮助想我一样的新人少走点弯路和共同学习。

资源截图

代码片段和文件信息

#include “lcd.h“

#include “stm32f10x.h“
#include 
#include 
#include 
#include “Stm32f10x_delay.h“

int bLcd_flag = 0;
int bLcd_timer = 0;

///////////////////////////////////////////////////驱动函数
/*
* LCD 模式写入
* 入口:MODE :COM(命令模式) DAT(数据模式)
* 出口:void
*/
void write_mode(unsigned char MODE) //写入模式数据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 命令写入函数
* 入口: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 地址写入函数
* 入口: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 数据写入函数
* 入口:Dbyte数据
* 出口: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);
}
}

///////////////////////////////////////////////////接口函数
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

评论

共有 条评论