初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2020-5-19
- 在线时间
- 28 小时
|

楼主 |
发表于 2021-6-29 10:08:13
|
显示全部楼层
#include "lcd.h"
#include "stm32f10x.h"
#include "delay.h"
//写模式
void write_pattern(unsigned char MODE)
{
unsigned char i;
for(i=0;i<=MODE;i++);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);//wrà-μí
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
GPIO_ResetBits(GPIOB,GPIO_Pin_1);//wrà-μí
delay_us(10);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
GPIO_ResetBits(GPIOB,GPIO_Pin_1);//wrà-μí
delay_us(10);
if(MODE==0)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí //D′Ãüáî
}
else
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß //D′êy¾Y
}
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
}
//写命令
void Write_order(unsigned char order_byte)//D′Ãüáî
{
unsigned char c=0;
for(c=0;c<8;c++)
{
if(order_byte>>(7-c)&0x01)
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí
}
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
}
GPIO_ResetBits(GPIOB,GPIO_Pin_1);//wrà-μí
delay_us(10);
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
}
// 写地址
void addr(unsigned char address)
{
unsigned char a=0;
address=address<<2;
for(a=0;a<6;a++)
{
if(address>>(7-a)&0x01)
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí
}
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
}
}
//写数据
void Write_data(unsigned char databit)//D′êy¾Y
{
unsigned char b=0;
databit=databit<<4;
for(b=0;b<6;b++)
{
if(databit>>(7-b)&0x01)
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_2);//dataà-μí
}
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
delay_us(10);
}
}
//void SystemInit()
//{
//do nothing
//}
void ht1621_init(void)
{
//GPIO3õê¼»ˉ
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStruct.GPIO_Mode= GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin= GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_ResetBits( GPIOB, GPIO_Pin_3);
}
//lcd初始化ˉ
void lcd_init(void)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0);//CSà-¸ß
GPIO_SetBits(GPIOB,GPIO_Pin_1);//wrà-¸ß
GPIO_SetBits(GPIOB,GPIO_Pin_2);//dataà-¸ß
delay_us(10);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);//csà-μí
delay_us(10);
write_pattern(0X80);
Write_order(0X01);//1رÕÏμí3ê±Öó
Write_order(0X03);//′ò¿aLCDÆ«Ö′·¢éúÆ÷
Write_order(0X04);//½ûÖ1Time baseêä3ö
Write_order(0X05);//½ûÖ1WDTÔYí£±êÖ¾êä3ö
Write_order(0X08);//1رշäÃùÆ÷
Write_order(0X18);//Ïμí3ê±Ö󣬯¬ÄúRCÕeμ′
Write_order(0X29);//BIAS 1/3 4COM
Write_order(0X80);//½ûÖ1IRQêä3ö
Write_order(0X40);//·äÃùÆ÷ÆμÂêêä3ö4khz
Write_order(0XE3);//ÆÕí¨Ä£ê½
delay_us(10);
GPIO_SetBits(GPIOB,GPIO_Pin_0);//CSà-¸ß
}
主函数
#include "stm32f10x.h"
#include "delay.h"
#include "lcd.h"
#include "key.h"
#include "ad.h"
extern void lcd_init(void);
extern void ht1621_init(void);
extern void addr(unsigned char address);
extern void Write_data(unsigned char databit);
extern void write_pattern(unsigned char MODE);
extern void ad_init(void);
unsigned char lcdram[16]={ 0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E};
int main(void)
{
//u32 adc = 0;
//u8 ac = 0;
//unsigned char q;
ad_init();
ht1621_init();
lcd_init();
//key_init();
delay_us(10);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);//csà-μí
GPIO_ResetBits(GPIOB,GPIO_Pin_1);//wrà-μí
write_pattern(0XA0);
//for(q=0;q<14;q++)
// {
delay_us(10);
addr( 0x05 );
delay_us(10);
// }
Write_data(0xff); |
|