DRIVER_DISP

  • 格式:doc
  • 大小:31.50 KB
  • 文档页数:4

/*
=========================================================== FileName: DRIVER_DISP.C
Author: qingyt.
===========================================================
*/
#define _DRIVER_DISP_C_
#include "iom88v.h"
#include "macros.h"
#include "DRIVER_MAIN.H"
#include "DVIVER_INITIAL.H"
#include "DVIVER_KEY.H"
#include "DVIVER_MOTOR.H"
#include "DVIVER_DISP.H"
//=========================================================
const unsigned char TAB_COM[5]={BIT0,BIT1,BIT2,BIT3,BIT4};
const unsigned char TAB_LEDASCA[25]={ZERO,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE, L_A,L_B,L_C,L_D,L_E,L_F,L_G,L_H,L_J,L_N,L_P,HP_HP,BAR,EPT,0xff};
//++++++++++++++++++++++++++++++++++++++
unsigned char dis_buf[5];
unsigned char i_disp;
unsigned char addres_val;
unsigned char dis_jsq;
unsigned char shsh_jsq;
extern unsigned int data_setmode;
extern unsigned char flash_data_jsq;
extern unsigned char data_set_jsq;
extern unsigned char spd_chg_jsq;
extern unsigned int spd_chg_buf;
extern unsigned char system_mode;
extern unsigned char prosta;
extern unsigned int disp_spd;
extern unsigned int spd_set;
extern unsigned char run_step;
extern unsigned char err_code;
extern unsigned char udr_data[];
extern unsigned char udr_jsq;
extern unsigned char motorstate;
//++++++++++++++++++++++++++++++++++++++
void Display( void )
{
unsigned char dis_buf1;
unsigned int dis_buf2;
unsigned char dis_buf3;
switch(system_mode)
{
case SYSTEM_SET:
{
if(data_set_jsq==0)
{
dis_buf[4]=TAB_LEDASCA[24];
dis_buf[3]=TAB_LEDASCA[20];
dis_buf[2]=TAB_LEDASCA[0];
dis_buf[1]=TAB_LEDASCA[0];
dis_buf[0]=TAB_LEDASCA[flash_data_jsq];
}
else
{
dis_buf2=data_setmode;
if(flash_data_jsq<3)
dis_buf1=2;
else if(flash_data_jsq==3)
dis_buf1=3;
else
dis_buf1=5;
Dis_chg_pro(dis_buf1,dis_buf2);
}
break;
}
case SYSTEM_PROTECT:
{
dis_buf[4]=TAB_LEDASCA[24];
dis_buf[3]=TAB_LEDASCA[0x0E];
dis_buf[2]=TAB_LEDASCA[0];
dis_buf[1]=TAB_LEDASCA[err_code];
dis_buf[0]=TAB_LEDASCA[24];
break;
}
default:
{
if(spd_chg_jsq==0)
{
dis_buf1=5;
Dis_chg_pro(dis_buf1,disp_spd);
}
else
{
shsh_jsq++;
if(shsh_jsq>10)
shsh_jsq=0;
if(shsh_jsq<8)
dis_buf1=5;
else
dis_buf1=0;
Dis_chg_pro(dis_buf1,spd_chg_buf);
}
}
}
}
//++++++++++++++++++++++++++++++++++++++
void PortDrive(void)
{
static unsigned char disp_jsp=0;
unsigned char disp_buf;
disp_jsq++;
if(disp_jsq>4)
disp_jsq=0;
RCLK_OFF;
disp_buf=TAB_COM[disp_jsq];
SPI_MasterTransmit(disp_buf);
disp_buf=dis_buf[disp_jsq];
SPI_MasterTransmit(disp_buf);
RCLK_ON;
}
//============================================================= void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
}
void Dis_chg_pro(unsigned char dis_bit,unsigned int dis_data) {
unsigned char buf[5];
unsigned char jsq;
buf[4]=dis_data/10000;
dis_data%=10000;
buf[3]=dis_data/1000;
dis_data%=1000;
buf[2]=dis_data/100;
dis_data%=100;
buf[1]=dis_data/10;
buf[0]=dis_data%10;
for(jsq=dis_bit;jsq<5;jsq++)
buf[jsq]=24;
for(jsq=0;jsq<5;jsq++)
dis_buf[jsq]=TAB_LEDASCA[buf[jsq]];
}。