⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdtest.c

📁 单片机的键盘和LCD(T6963C)的输入/出平台.
💻 C
字号:
/********************************
* PROGRAM FOR KEYPAD *
********************************/

#include<stdio.h>
#include<pic.h>
#include<PIC16f91x.h>


#include "math.h"
 
persistent unsigned char line[4];
persistent unsigned char start=0x00;
persistent unsigned char index=0x00;


void time_delay(int); 
void ClearScreen();
void clear_line();
void InitLCD();
void display(unsigned char, unsigned char); 
void add_disp(unsigned char);
unsigned char get_number(unsigned char);
#define RWCheck() { unsigned char sta; TRISD=0xff;RB0=1;RB1=0;RB2=0;RB3=1;  do{ sta=PORTD & 0x03;} while(sta!=0x03); RB1=1;RB2=1;}
#define OutPortCom1(command) { RWCheck(); TRISD=0x00;RB0=1;RB1=1;RB2=0;RB3=0; PORTD = command; RB1=1;RB2=1;RB3=1; }
#define OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }
#define OutPortCom3(data1, data2, command) { OutPortData(data1);OutPortData(data2); OutPortCom1(command);}
#define OutPortData(dat ) { RWCheck(); TRISD=0x00; RB0=0;RB1=1;RB2=0;RB3=0;PORTD = dat; RB1=1;RB2=1;RB3=1; }
void main()
{
 int i=0;
 unsigned char data=0x00;
 unsigned char address=0x00;


TRISB=0xf0;
 TRISD=0x00;
TRISC=0x17;
LCDCON=0x00;


 
 
 


 InitLCD();

 display('0',address);

  while(1)
{
  if(PORTC&0x17!=0x00)
 {
 
  data=get_number(PORTC&0x17);
  //   for(i=2;i>0;i--)
  //{
  //  line[i+1]=line[i];
  //} 
    line[0]=data;
  }
   
 for(i=0;i<3;i++)
 { 
  if(line[i]>='0'&&line[i]<='9') 
  display(line[i],address);
  else
  display(' ',address);
  address++;  
  }
  address=0x00;

  
}
 

}

/*                                      TRANSMISSION                             */
unsigned char get_number(unsigned char data)
{
  switch (data)
  {
   case 0x05: 
   return '5';
   case 0x02:
   return '2';
   case 0x01:
   return '1';
   case 0x10:
   return '8';
   case 0x15: 
   return 'd';
   case 0x17:
   return 'f';
   default:
   return '0'; 
  }
}

void time_delay(int time)
{
  int i;
 for(i=0;i<time;i++)
{}
 return;
}

void ClearScreen()
{

 int i;
///////// 清显示 RAM 区 0000h--2000h (8k)
OutPortCom3(0x00,0x00,0x24); //设置指针地址0000H

OutPortCom1(0xb0); //设置自动写状态
for(i=0;i<128;i++) OutPortData(0x00); // data=0;
OutPortCom1(0xb2); // 自动写结束
}

void InitLCD()
{
OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr
OutPortCom3( 0x10,0x00,0x43 ); //设置图形显示区域宽度 : LineChar
OutPortCom3( 0x00,0x00,0x40 ); //设置图形显示区域宽度 : LineChar
OutPortCom3( 0x10,0x00,0x41 ); //设置图形显示区域宽度 : LineChar
// OutPortCom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址GraphAddr
// OutPortCom3( 0x10,0x00,0x43); //设置图形显示区域宽度:10H

//OutPortCom1(0xa0); //设置光标形状 cursor size 8x8
OutPortCom1(0x80); //设置显示方式: CGROM方式 文本\图形 "或"
OutPortCom1(0x94); //设置显示开关: 1001 1100 图形

ClearScreen();
}

/* USART initializaton */
void display(unsigned char data, unsigned char address)
{
 
   
   OutPortCom3(address,0x00,0x24);       
   OutPortCom2(data-' ',0xc4);
   return;
   
}

void clear_line()
{
  int i=0;

  for(i=0;i<3;i++)
 {
  
  
 }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -