资源简介
本人写的基于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裸机测试代码
相关资源
- ADDA等一些芯片的verilog程序
- nc-verilog 学习
- FPGA 音乐播放器实现
- Verilog原码二位乘法器
- 华为Verilog编程规范
- 76例程源码
- 基于VGA显示 和 PS2键盘,用FPGA控制的
- FPGA设计高级进阶--清华讲义
- 基于verilog实现的AD 转换程序
- i2c slave端verilog代码
- fpga实现基于verilog语言的4fsk调制解调
- STM32F103 驱动四路MAX6675 采集温度 LC
- 基于FPGA,VGA和PS2键盘的贪吃蛇游戏更
- 基于FPGA的按键流水灯控制
- fpga 课程设计
- VerilogHDL语言单时钟周期CPU设计
- STM32F103驱动ADS1255以及lcd1602
- 数字电子技术课程设计 医院病房呼叫
- FPGA 实现多进制FSK调制解调(含代码,
- 异步fifo设计verilog源代码
- Vivado下用Verilog编写的带冒险的5级MI
- 基于Verilog HDL数字频率计的设计与实现
- 正弦波信号发生器verilog代码
- Verilog实现串口收发协议带奇偶校验位
- 字点阵生成程序C,Verilog版本
- PS/2接口标准的verilog代码,包括PS简介
- 基于FPGA的ov7670及SDRAM源码
- 基于FPGAVerilog的寻迹避障小车
- risc-v core Verilog源码
- 基于DS18B20传感器的数字温度监控系统
评论
共有 条评论