资源简介
用80C51单片机产生频率为1000hz的方波信号,并在lcd液晶屏显示频率和周期,然后用另一片51单片机测试频率周期和脉宽并在lcd液晶屏显示测试结果
代码片段和文件信息
#include
#define uint unsigned int
#ifndef LCD_CHAR_1602_2005_4_9
#define LCD_CHAR_1602_2005_4_9
#include
sbit pwm=P1^0;
sbit LcdRs = P2^0;
sbit LcdRw = P2^1;
sbit LcdEn = P2^2;
sfr DBPort = 0x80; //P0=0x80P1=0x90P2=0xA0P3=0xB0.数据端口
//内部等待函数**************************************************************************
unsigned char LCD_Wait(void)
{
LcdRs=0;
LcdRw=1; _nop_();
LcdEn=1; _nop_();
//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
//实际硬件时打开此语句
LcdEn=0;
return DBPort;
}
//向LCD写入命令或数据************************************************************
#define LCD_COMMAND 0 // Command
#define LCD_DATA 1 // Data
#define LCD_CLEAR_SCREEN 0x01 // 清屏
#define LCD_HOMING 0x02 // 光标返回原点
void LCD_Write(bit style unsigned char input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0; _nop_();
DBPort=input; _nop_();//注意顺序
LcdEn=1; _nop_();//注意顺序
LcdEn=0; _nop_();
LCD_Wait();
}
//设置显示模式************************************************************
#define LCD_SHOW 0x04 //显示开
#define LCD_HIDE 0x00 //显示关
#define LCD_CURSOR 0x02 //显示光标
#define LCD_NO_CURSOR 0x00 //无光标
#define LCD_FLASH 0x01 //光标闪动
#define LCD_NO_FLASH 0x00 //光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND 0x08|DisplayMode);
}
//设置输入模式************************************************************
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00 // default
#define LCD_MOVE 0x01 // 画面可平移
#define LCD_NO_MOVE 0x00 //default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND 0x04|InputMode);
}
//移动光标或屏幕************************************************************
/*
#define LCD_CURSOR 0x02
#define LCD_SCREEN 0x08
#define LCD_LEFT 0x00
#define LCD_RIGHT 0x04
void LCD_Move(unsigned char object unsigned char direction)
{
if(object==LCD_CURSOR)
LCD_Write(LCD_COMMAND0x10|direction);
if(object==LCD_SCREEN)
LCD_Write(LCD_COMMAND0x18|direction);
}
*/
//初始化LCD************************************************************
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND0x38); //8位数据端口2行显示5*7点阵
LCD_Write(LCD_COMMAND0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示 无光标
LCD_Write(LCD_COMMANDLCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增 画面不动
}
//************************************************************************
void GotoXY(unsigned char x unsigned char y)
{
if(y==0)
LCD_Write(LCD_COMMAND0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND0x80|(x-0x40));
}
void Print(unsigned char *str)
{
while(*str!=‘\0‘)
{
LCD_Write(LCD_DATA*str);
str++;
}
}
/*
void LCD_LoadChar(unsigned char user[8] unsigned char place)
{
unsigned char i;
LCD_Write(LCD_COMMAND0x40|(place*8
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-05-15 21:26 B09010407 - 频率计\
文件 113280 2012-05-15 21:26 B09010407 - 频率计\B09010407.DSN
文件 1126 2012-05-15 21:26 B09010407 - 频率计\B09010407.PWI
目录 0 2012-05-15 21:06 B09010407 - 频率计\FangBo\
文件 6376 2008-09-23 09:16 B09010407 - 频率计\FangBo\STARTUP.A51
文件 14048 2012-05-15 21:06 B09010407 - 频率计\FangBo\STARTUP.LST
文件 758 2012-05-15 21:06 B09010407 - 频率计\FangBo\STARTUP.OBJ
文件 9325 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo
文件 10171 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.LST
文件 13274 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.M51
文件 10339 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.OBJ
文件 905 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.Opt
文件 2185 2012-05-13 23:16 B09010407 - 频率计\FangBo\fangbo.Uv2
文件 5055 2012-05-15 20:51 B09010407 - 频率计\FangBo\fangbo.c
文件 1999 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.hex
文件 45 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.lnp
文件 1419 2012-05-15 21:06 B09010407 - 频率计\FangBo\fangbo.plg
文件 905 2012-05-15 20:52 B09010407 - 频率计\FangBo\fangbo_Opt.Bak
文件 2181 2012-05-11 21:28 B09010407 - 频率计\FangBo\fangbo_Uv2.Bak
文件 113378 2012-05-15 21:25 B09010407 - 频率计\Last Loaded B09010407.DBK
目录 0 2012-05-15 21:25 B09010407 - 频率计\pinlvji\
文件 6376 2008-09-23 09:16 B09010407 - 频率计\pinlvji\STARTUP.A51
文件 14048 2012-05-15 21:23 B09010407 - 频率计\pinlvji\STARTUP.LST
文件 758 2012-05-15 21:23 B09010407 - 频率计\pinlvji\STARTUP.OBJ
文件 22740 2012-05-15 21:23 B09010407 - 频率计\pinlvji\pinglvji.LST
文件 24547 2012-05-15 21:23 B09010407 - 频率计\pinlvji\pinglvji.OBJ
文件 10967 2012-05-15 21:23 B09010407 - 频率计\pinlvji\pinglvji.c
文件 23555 2012-05-15 21:23 B09010407 - 频率计\pinlvji\pinlvji
文件 26915 2012-05-15 21:23 B09010407 - 频率计\pinlvji\pinlvji.M51
文件 1040 2012-05-15 21:25 B09010407 - 频率计\pinlvji\pinlvji.Opt
文件 2190 2012-05-11 21:40 B09010407 - 频率计\pinlvji\pinlvji.Uv2
............此处省略5个文件信息
- 上一篇:酒店管理系统毕业设计源码
- 下一篇:QtDesigner快速入门.pdf
相关资源
- 基于msp430单片机的电子万年历LCD 128
- 基于msp430单片机的红外线遥控解码L
- PCF8591 ad转换及lcd显示
- LCD1602液晶显示的计算器加减乘除
- LCD点阵字模提取软件
- 基于FPGA的高精度频率计设计
- LCD12864 万年历 单片机 农历 显示 温度
- 解析GPS数据并用LCD1602显示
- 基于FPGA的频率计,DE2开发板,VHDL
- 26 用AVR与1601LCD设计的计算器.zip
- 基于STC12C5616AD单片机的AD采集程序LC
- DS1302实时时钟,LCD1602显示,可调时间
- 基于MSP430F149控制LCD12864串口显示C程序
- LCD-T6963C(STM32)驱动
- Keil5下的STM32F103Cx例程超值,含PWM输出
- 凌阳61板+AD7705转换+lcd1ocmjx8c显示
- AD0809驱动 用LCD1602显示采集的模拟电压
- 51单片机控制乒乓球游戏
- 两个proteus仿真6位数显频率计数器和
- zw_wangxingse-6021953-24C04与1602LCD设计电子
- 基于HC-SR04超声波测距LCD12864显示源码
- zw_LCD1602.zip
- lcd12864最全中文资料
- PIC16F877A和LCD1602液晶显示以及mpx4250压
- VHDL频率计
- 基于STC15F2K60S2单片机的温湿度+CO2测量
- 基于单片机的频率计设计
- C8051F020用定时器3以中断方式产生方波
- 基于AT89S52 单片的频率计
- 51单片机频率计包括占空比1602显示
评论
共有 条评论