第一次,移植8051的代码发现不成功
经过多次测试,IO输出的电压稳定时间跟8051不同,得做延时在5V,10K上拉的情况下,GPIO需重新配置
/********************************************************************
接口1:void lcd1602dis(uchar *dis1,uchar address1,uchar n)
详细: dis1第一行显示数据指针,要写入address1第X行的首位置,n为写入字符数
每行只能40字节最多 0位置-39位置 第一行:0x00-0x27 第二行:0x40-0x67
一次运行 n为忙碌返0平均次数,i为每行写入次数
接口2:void itp_lcd1602dis(uchar *dis1,uchar address1,uchar n)
详细: 中断中为避免重调用的显示函数 其余同上
接口3:void flash(uchar j,uchar d)
详细: 功能j次闪烁,间隔d毫秒 不返还CPU
接口4:void lcd_clr()
详细: 清屏 一次运行
接口5: void lcd_init()
详细: 初始化 运行
********************************************************************/
/********************************************************************
注:硬件接口:插口在显示屏上端插入,P0为数据端,RS = P2^6 RW = P2^5 EN = P2^7
********************************************************************/
u8 nop;
#define no_oper nop=~nop;
#include "stm32f10x_lib.h"
extern void GPIO_Configuration2(void);
extern void Uart1_PutString(u8* buf , u8 len);
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define u8 unsigned char
#define u16 unsigned int
u8 display2[]="inithalf";
u8 display1[]="wdatbusydone";
u8 tmpdis;
/*#define LCD_RS //= P2^6;
#define LCD_RW //= P2^5;
#define LCD_EN //= P2^7;*/
/********************************宏定义*********************************/
#define P0i(x) GPIO_Write(GPIOA, (uint)x);
#define P0o(x) x=(u8)(0x0011&GPIO_ReadInputData(GPIOA));
//控制孔得PP输出
#define LCD_RS(x) x ? GPIO_SetBits(GPIOB, GPIO_Pin_1): GPIO_ResetBits(GPIOB, GPIO_Pin_1)
#define LCD_RW(x) x ? GPIO_SetBits(GPIOB, GPIO_Pin_2): GPIO_ResetBits(GPIOB, GPIO_Pin_2)
#define LCD_EN(x) x ? GPIO_SetBits(GPIOB, GPIO_Pin_0): GPIO_ResetBits(GPIOB, GPIO_Pin_0) //如此能延长单步时间,达到51 I/O读取时间
//P0为数据口
/*1。“code”是单片机C语言特有的关键字在单片机中RAM的空间特别小,特别珍贵。RAM空间,存放变量。
而一些常量,比如码表等常量放在ROM中。所以单片机中code就是告诉单片机这个数据放入ROM中。
本例中dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; 数组内容为常量,故加上code,以节约RAM的空间。
其实code放在unsigned char 前也可以,比如code unsigned char dispbit[8]效果一样*/
//uchar code dis1[] //uchar 正好为ASCII码 8位一字节
//8051片内数据存储器除RAM(00-7fh)之外,还有特殊功能寄存其SFR(80H-FFH),两者合起来共有256字节,但是能够真正用来当数据寄存器的只有128字节,也就是RAM。
void NOP()
{ vu16 i;
for(i=0; i<100; i++);
}
void nop_stm32()
{ u8 i;
for(i=0; i<6; i++);
}
void nop6()
{ u8 i;
for(i=0; i<6; i++);
}
void nop12()
{ u8 i;
for(i=0; i<12; i++);
}
void nop24()
{ u8 i;
for(i=0; i<24; i++);
}
void nop48()
{ u8 i;
for(i=0; i<48; i++);
}
/*******************************************************************/
/*
延时子程序
*/
/*******************************************************************/
void delaylcd(int ms)
{
int i;
while