资源简介
本人写的基于FPGA的LCD1602显示模块。经过本人测试,已经用在项目中。

代码片段和文件信息
/*******************************
FD178 Demo Board C Program
AT89S52&LCD1602:
1、Test the FAN vibrate speed
and show the frequence on the LCD.
2、Generate different PWM signal to
get different speed.
晶振频率采用12MHz
*********************************/
#include
#include
#include
#define unchar unsigned char
#define unint unsigned int
#define ulong unsigned long
#define Data P0 //数据端口
sbit RS = P2^4;//Pin4
sbit RW = P2^5; //Pin5
sbit E = P2^6;//Pin6
sbit PWM_Out=P2^7; // PWM OUTPUT SIGNAL
sbit ADD_A=P2^0;
sbit ADD_B=P2^1;
sbit ADD_C=P2^2;
sbit ALE =P2^3;
sbit ST=P3^0;
sbit OE=P3^1;
sbit CLK=P3^4;
sbit EOC=P3^3;
/**************************************************************************/
sbit IR=P3^2;//红外接口标志
unsigned char irtime;//红外用全局变量
bit irpro_okirok; // 控制处理进程
unsigned char IRcord[4];
unsigned char irdata[33];//一位引导码, 2*8位用户编码,8位数据码,8位数据反码
/*************************************************************************/
bit Ldelay=0; // 计数器溢出时候Ldelay为1,用于计算转动频率
unchar data PWM[16] =“PWM: 00%SP:000Hz“; // LCD 第一行显示的数据
unchar data F_speed[16]=“V:0.00; mA:0000“; // LCD 第二行显示的数据
unsigned char PWM_N;
unsigned int FG;
void Init_EX0(void) //外部中断0初始化,中断输入端口为P3.2
{
IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2)
EX0 = 1; // Enable EX0 Interrupt
EA = 1;
}
void Init_Timer0(void) //定时器0初始化
{
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00;//reload value
TL0=0x00;//initial value
ET0=1;//开中断
TR0=1;
}
void Init_Counter1(void) //计数器1初始化
{
TMOD|=0x50;
TH1=0x00;
TL1=0x00;
EA=1;
ET1=1;
TR1=1;
}
void Init_Timer2() //定时器2初始化
{
RCAP2H=0xFF;
RCAP2L=0x00;
EA=1;
ET2=1;
TR2=1;
}
unsigned int FGtest(void) //计数的结果
{
unsigned int n;
n=((TH1<<8)|TL1);
return n;
}
/******************************************************************/
/* 1602 LCD 函数声明 */
/******************************************************************/
void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1;/* Crystal frequency in 12MHz*/
while(--uscnt);
}
void DelayMs(unsigned char ms)//delay Ms
{
while(--ms)
{
DelayUs(250);
DelayUs(250);
DelayUs(250);
DelayUs(250);
}
}
void WriteCommand(unsigned char c)
{
DelayMs(5);//short delay before operation
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}
void WriteData(unsigned char c)
{
DelayMs(5); //short delay before operation
E=0;
RS=1;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
RS=0;
}
void ShowChar(unsigned char posunsigned char c)
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //是第二行则命令代码高4位为0xc
else
p=pos+0x80; //是第一行则命令代码高4位为0x8
WriteCommand (p);//write command
WriteData (c); //write data
}
void ShowString (unsigned char linechar *pt
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 75903 2010-03-04 09:33 xilinx_lib\BLK_MEM_GEN_V3_3.v
文件 320 2011-01-25 15:51 xilinx_lib\ROM.mif
文件 4650 2011-01-25 15:51 xilinx_lib\ROM.v
文件 228 2011-01-24 14:22 xilinx_lib\ROM_INIT.coe
文件 4039 2011-01-23 13:59 doc\LCD1602.C
文件 635577 2008-04-21 13:16 doc\lcd1602.pdf
文件 377300 2011-01-18 21:13 doc\S6A0069.pdf
文件 11199 2011-01-23 17:08 doc\Show.c
文件 11199 2011-01-18 20:34 doc\Show.c.bak
文件 219143 2011-01-18 22:10 doc\TM162.pdf
文件 158717 2011-01-20 16:36 doc\TM162A.pdf
文件 1436 2011-01-25 17:11 rom\rom.gise
文件 50167 2011-01-25 17:11 rom\rom.ise
文件 33228 2011-01-25 17:11 rom\rom.xise
文件 7866 2011-01-26 09:38 rtl\CHECK_BUSY.v
文件 5251 2011-01-26 09:38 rtl\DELAY_1MS.v
文件 5244 2011-01-26 09:38 rtl\DELAY_1US.v
文件 17445 2011-01-26 09:36 rtl\INIT.v
文件 9596 2011-01-26 09:37 rtl\LCD_SHOW.v
文件 9462 2011-01-26 09:37 rtl\READ_4B.v
文件 7323 2011-01-26 09:37 rtl\READ_8B.v
文件 9472 2011-01-26 09:36 rtl\WRITE_4B.v
文件 10624 2011-01-26 09:37 rtl\WRITE_4B_CHECK.v
文件 11383 2011-01-26 09:37 rtl\WRITE_8B.v
文件 9431 2011-01-26 09:37 rtl\WRITE_CHAR.v
文件 9756 2011-01-26 09:38 rtl\WRITE_STRING.v
文件 1272 2011-01-24 16:12 testbench\harness.v
文件 1145 2011-01-24 16:11 testbench\harness.v.bak
文件 320 2011-01-25 15:51 testbench\sim\ROM.mif
文件 20 2011-01-11 15:23 testbench\sim\sim.bat
............此处省略16个文件信息
- 上一篇:基于WEB的销售管理系统代码
- 下一篇:ov9650 mini2440裸机测试代码
相关资源
- 基于MIPS指令集的32位CPU设计与Verilog语
- Verilog FPGA UART串口控制器
- gmsk调制在FPGA上实现
- 一个简单的verilog编写的DMA IP CORE,和
- [免费]msp430f149控制PS2键盘并用1602显示
- vhdl与lcd1602实现的多控制电子钟
- 硬件课程设计—流水灯(quartus软件
- Verilog按键代码
- ADC0809数字电压表 LCD1602显示 汇编程序
- verilog的PCI源代码,非常详细,顶层模
- CPLD Verilog数字密码锁 源码
- verilog 实现任意分频方法
- DE2模拟的交通红绿灯
- SPI Master 的Verilog源代码
- 基于VGA的Flappy Bird的Verilog实现(源码
- 数字钟
- Verilog的135个经典设计
- verilog 4×4矩阵键盘
- Quartus EDA交通灯控制电路的设计实训报
- FPGA按键消抖
- 用Verilog语言写的CPLD和MCU通讯的SPI接口
- ARM9指令cache的verilog代码
- ddr_verilog
- FPGA实现单极性SPWM调制
- uart_tx.zip
- 基于Verilog的cordic反正切FPGA例程
- SystemVerilog验证测试平台编写指南(中
- 基于Verilog的交通灯设计EDA课程设计
- 数字信号处理的FPGA实现Verilog源码
- verilog硬件描述语言程序设计与实践教
评论
共有 条评论