完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这几天学校要求我们用STM32f103C8t6实现温度显示实验,用的是L1602,我用的是SYSTEM文件夹的东西,总是会报错,显示GPIO_WriteBit未定义。这个我很不解 以下是1602驱动程序 1602.c: #include"stm32f10x_lib.h" #include "1602.h" /***********************************************************************/ void E(u8 i) { GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)i); } void RS(u8 i) { GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)i); } void RW(u8 i) { GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)i); } void DATA(u8 data) { int i; u8 table[8]={0,0,0,0,0,0,0,0}; for(i=0;i<8;i++) { table=data%2; data=data/2; } for(i=7;i>=0;i--) { GPIO_WriteBit(GPIOB, GPIO_Pin_13,(BitAction)table); GPIO_WriteBit(GPIOB, GPIO_Pin_14,(BitAction)1) ; GPIO_WriteBit(GPIOB, GPIO_Pin_14,(BitAction)0) ; } GPIO_WriteBit(GPIOB, GPIO_Pin_15,(BitAction)1); GPIO_WriteBit(GPIOB, GPIO_Pin_15,(BitAction)0); } void write_com(u8 data)//1602命令函数 写命令或写地址 { RS(0); DATA(data); E(0); delay(10); E(1); delay(10); } void write_data(u8 data) //写数据 { RS(1); DATA(data); E(0); delay(10); E(1); delay(10); } void delay(uint a) { int i,j; for(i=0; i<=a; i++) for(j=0;j<=80;j++); } /***********************************************************************/ void L1602_init(void) { RW(0); E(0); write_com(0x01); //清屏 delay(10); write_com(0x38); //设置成16*2,5*7点阵 delay(10); write_com(0x0c); //显示光标 光标闪烁 delay(10); write_com(0x06); //地址指针自动加一 delay(10); } /******************************************************************** * 名称 : L1602_char(uchar hang,uchar lie,char sign) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下 L1602_char(1,5,'b') * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 ***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; write_com(a); write_data(sign); } /******************************************************************** * 名称 : L1602_string(uchar hang,uchar lie,uchar *p) * 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下 L1602_string(1,5,"ab cd ef;") * 输入 : 行,列,需要输入1602的数据 * 输出 : 无 ***********************************************************************/ void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a; if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; write_com(a); while(1) { if(*p == ' |