只用两个IO端口驱动74LS164扩展成并口驱动LCD1602(四线模式),这是个完整简单的例子,可实现字符串左移200次,右移200次,不停的循环。现上传与大家共享成果!
//引入头文件*********************************************************
#include <pIC.h>
#include <pic12f6x.h>
#include "delay.h"
#include "delay.c"
//熔丝配置***********************************************************
__CONFIG(PROTECT & CPD & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);
//端口定义***********************************************************
#define Port GPIO //端口址址
#define Tris TRISIO //方向设置
//脚位定义***********************************************************
#define Dat GPIO4 //数据引脚
#define Clk GPIO5 //时钟引脚
//显示字符***********************************************************
unsigned char TopChar[] = {"www.picavr.com "}; //
unsigned char BotChar[] = {"ivws "}; //
//*******************************************************************
//函数名称:PortInit();
//输入参数:无
//输出参数:无
//功能描述:端口设置
//建造日期:2008.12.08
//********************************************************************
void PortInit(void)
{
Port = 0x00; //端口设置
Tris = 0x00;
}
//*******************************************************************
//函数名称:ConInit();
//输入参数:无
//输出参数:无
//功能描述:定时器设置
//建造日期:2008.12.08
//*******************************************************************
void ConInit(void)
{
OPTION = 0x00; //允许上拉
CMCON = 0x07; //关比较器
}
//*******************************************************************
//函数名称: TxLs164(data);
//输入参数:串行数据
//输出参数:无
//功能描述:串行发送数据
//建造日期:2008.12.08
//*******************************************************************
void TxLs164(unsigned char data)
{
unsigned char i;
i = 6; //送出六位
do
{
Dat = 0; //数据清零
Clk = 1; //时钟置位
Clk = 0; //时钟清零
}
while (--i); //循环发送
i = 6; //送出六位
do
{
Dat = 0; //先高后低
if (data & 0x20) Dat = 1;
Clk = 1; //时钟置位
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机
上一篇:LCD1602 C程序