中级会员
 
- 积分
- 264
- 金钱
- 264
- 注册时间
- 2013-9-17
- 在线时间
- 29 小时
|
5金钱
直接上程序
#ifndef __1602_H
#define __1602_H
#include"sys.h"
#define rs PCout(8)
#define lcden PCout(9) 读写那个脚我直接接地 所以没控制,就没写了
void init1602(void);
void write_com(u8 com);
void write_date(u8 date);
#endif
#include"1602.h"
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "ds18b20.h"
void init1602()
{
//RCC->APB2ENR|=1<<3; //使能PORTB时钟
RCC->APB2ENR|=1<<4; //使能PORTC时钟
GPIOC->CRL&=0X00000000; /
GPIOC->CRL|=0X33333333;
GPIOC->ODR|=0XFFFF;
GPIOC->CRH&=0XFFFFFFF0; //
GPIOC->CRH|=0X00000003;
GPIOC->ODR|=1<<9;
GPIOB->CRH&=0XFFFFFF0F; //
GPIOB->CRH|=0X00000030;
GPIOB->ODR|=1<10;
delay_ms(5);
write_com(0x01);
write_com(0x38); // 显示模式设置
write_com(0x0c); //显示开关 及光标设置
write_com(0x06); //移动光标
//write_com(0x80); //数据指针初始化
}
void write_com(u8 com) //写指令
{
delay_ms(1);
rs=0;
delay_us(20);
lcden=0;
delay_us(20);
GPIOC->ODR=0X00FF&com;//PC低8位
delay_ms(10);
lcden=1;
delay_ms(10);
lcden=0;
delay_ms(10);
}
void write_date(u8 date) //写数据
{
delay_ms(10);
rs=1;
delay_us(20);
GPIOC->ODR=0X00FF&date;//PB高8位
delay_ms(10);
lcden=1;
delay_ms(10);
lcden=0;
}
主函数
temp= DS18B20_Get_Temp();
write_com(0x80);
for(i=0;i<5;i++)
{
write_date(table);
}
write_com(0x86);
write_date(temp/10);
write_com(0x87);
write_date(temp%10);
我用5v的lcd1602测试了,不行啊 ,考虑驱动不够 我还加了上拉的,就是没数据,1602上电是亮的没坏
|
|