?? 設計最后._c
字號:
#include<iom128v.h>
#include<eeprom.h>
#include<macros.h>
#define fosc 8000000 //晶振4MHZ
#define BAUD 9600 //波特率
#define ASK (PINE&0X40)
#define SBT_ANSWER PORTE|=BIT(PORTE7)
#define CLR_ANSWER PORTE&=~BIT(PORTE7)
#define SBT_RESET PORTC|=BIT(PORTC3)
#define CLR1_RESET PORTC&=~BIT(PORTC3)
#define DPORT_A PORTA
#define DATA1 0x20
#define uchar unsigned char
unsigned char flag_time=0; flag_computer=0;flag_test_v=0;
unsigned char data=0,flag=0;
unsigned char count_jiema=0;//解碼鍵盤碼
unsigned char count_comp=0;//解碼鍵盤碼
unsigned char keyzhi,temp1,keytemp;jy=0;
unsigned long value=0,valuefirst=0,rezult=0;
unsigned char flag_add=0,flag_sub=0,flag_mul=0,flag_mod=0;
unsigned char DisNumx=1,DisNumx1=0,DisNumy=0, Shift=0,Key_UP=0;
unsigned char put_dete[];
unsigned char table1[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
unsigned char UnShifted[71][2] = {
0x1C, 'a',
0x32, 'b',
0x21, 'c',
0x23, 'd',
0x24, 'e',
0x2B, 'f',
0x34, 'g',
0x33, 'h',
0x43, 'i',
0x3B, 'j',
0x42, 'k',
0x4B, 'l',
0x3A, 'm',
0x31, 'n',
0x44, 'o',
0x4D, 'p',
0x15, 'q',
0x2D, 'r',
0x1B, 's',
0x2C, 't',
0x3C, 'u',
0x2A, 'v',
0x1D, 'w',
0x22, 'x',
0x35, 'y',
0x1A, 'z',
0x45, '0',
0x16, '1',
0x1E, '2',
0x26, '3',
0x25, '4',
0x2E, '5',
0x36, '6',
0x3D, '7',
0x3E, '8',
0x46, '9',
0x0E, '`',
0x4E, '-',
0x55, '=',
0x5D, '\\',
0x29, ' ',
0x54, '[',
0x5B, ']',
0x4C, ';',
0x52, '\'',
0x41, ',',
0x49, '.',
0x4A, '/',
0x71, '.',
0x70, '0',//小鍵盤
0x69, '1',
0x72, '2',
0x7A, '3',
0x6B, '4',
0x73, '5',
0x74, '6',
0x6C, '7',
0x75, '8',
0x7D, '9',
0x79, '+',
0x7B, '-',
0x7c, '*',
0x4A, '/',
0x5a, ' ',//enter
0x76, ' ',//Esc
0x75, ' ',// { up }
0x72, ' ',// { down }
0x6B, ' ',// { left }
0x74, ' ',// { right }
0x66, ' ',//(刪去鍵)
};
unsigned char Shifted[59][2] = {
0x1C, 'A',
0x32, 'B',
0x21, 'C',
0x23, 'D',
0x24, 'E',
0x2B, 'F',
0x34, 'G',
0x33, 'H',
0x43, 'I',
0x3B, 'J',
0x42, 'K',
0x4B, 'L',
0x3A, 'M',
0x31, 'N',
0x44, 'O',
0x4D, 'P',
0x15, 'Q',
0x2D, 'R',
0x1B, 'S',
0x2C, 'T',
0x3C, 'U',
0x2A, 'V',
0x1D, 'W',
0x22, 'X',
0x35, 'Y',
0x1A, 'Z',
0x45, '0',
0x16, '1',
0x1E, '2',
0x26, '3',
0x25, '4',
0x2E, '5',
0x36, '6',
0x3D, '7',
0x3E, '8',
0x46, '9',
0x0E, '~',
0x4E, '_',
0x55, '+',
0x5D, '|',
0x29, ' ',
0x54, '{',
0x5B, '}',
0x4C, ':',
0x52, '"',
0x41, '<',
0x49, '>',
0x4A, '?',
0x71, '.',
0x70, '0',
0x69, '1',
0x72, '2',
0x7A, '3',
0x6B, '4',
0x73, '5',
0x74, '6',
0x6C, '7',
0x75, '8',
0x7D, '9',
};
void delay(unsigned char n)
{
unsigned char i;
for(;n>0;n--)
for(i=0;i<200;i++);
}
/**************************************/
void initail_ocmj(void)
{
MCUCR=0X00;
DDRA=0XFF;
DPORT_A=0XFF;
DDRE=0X80; ///PORTE.7作為輸出請求信號,PE3為檢查忙不忙信號
DDRD=0XFF;
PORTD=0XfF;
PORTE=0Xff; //PE初使化為高電平
DDRC=0X08; //PC3復位
CLR1_RESET;
delay_nms(20);
SBT_RESET;
CLR_ANSWER;//關閉請求信號
delay(100);
}
/***************************************/
void ocmj_write(unsigned char adata)
{
while(ASK);//高電平就等待
DPORT_A=adata;//先給數據給PA
_NOP(); //延時
SBT_ANSWER;//請求信號
_NOP();
while(ASK==0);//等待數據傳送完
CLR_ANSWER; //關閉請求
}
void write_asiic(unsigned char x,unsigned char y,unsigned char asc_p)
{
x+=4;
ocmj_write(0xf1);
ocmj_write(x);
ocmj_write(y);
ocmj_write(asc_p);
}
/********************************************/
/**********************************************/
void DisplayListChar(unsigned char x,unsigned char y)
{
unsigned char i,asc_p;
asc_p=' ';
x+=4;
for(i=0;i<16;i++)
{ ocmj_write(0xf1);
ocmj_write(x+i);
ocmj_write(y);
ocmj_write(asc_p);
}
}
//***************************************************************************//
/* 傳送bmp點陣數據到LCD */
/* x:0~15(字節為單位) y:0~64 */
/* bmp_p:指向圖形數據的指針 */
/* high:位圖高度(點陣行為單位) */
/* width:位圖寬度(以字節為單位)? */
void bmp_tran(unsigned char x,unsigned char y,unsigned char high,unsigned char width,const unsigned char *bmp_p)
{
unsigned char i,j;
x+=4;
for(j=0;j<high;j++)
{
for(i=0;i<width;i++)
{
ocmj_write(0xf3);//圖形
ocmj_write(x);
ocmj_write(y);
ocmj_write(*bmp_p);
bmp_p++;
x++;
}
x-=width;
y++;
}
}
void clr(void)
{
ocmj_write(0xf4);
}
/**********************************************/
/* 寫ASCII碼初始化 *////找代碼//X軸只能從4,5,6,7。....18 19開始,Y=0,16,32,48
/**********************************************///只能顯示16*4個字符
void write_ASCII(unsigned type,unsigned xx,unsigned yy,unsigned data)
{
ocmj_write(type);//0xf9 ASCII碼代碼
ocmj_write(xx);
ocmj_write(yy);
ocmj_write(data);
}
/*********************************************************************/
/***********************傳送ASCII字母到LCD ********************** */
/*************************** x:0x00~0x0f y:0~64 顯示8*16個字符 */
void asc_tran(unsigned char x,unsigned char y,unsigned char *asc_p)
{
x+=4;
while((*asc_p)!=0)
{
ocmj_write(0xf1);
ocmj_write(x);
ocmj_write(y);
ocmj_write(*asc_p);
asc_p++;
if (x<0x13)
x++;
else
{
x=0x04;
y+=8;
}
}
}
/**********************************************/
/* 寫漢字初始化 *///找代碼
/**********************************************/
void write_hazi(unsigned xx,unsigned yy,unsigned data1,unsigned data2)
{
ocmj_write(0xf0);//表示漢字//f0表示特殊符號,如&,以下
ocmj_write(xx);
ocmj_write(yy);
ocmj_write(data1);
ocmj_write(data2);
}
/* ***********************************************************
傳送LCD內部漢字數據到LCD
/* ************************** x:0x00~0x07 y:0x00~0x03********/
void hz_tran(unsigned char x,unsigned char y,unsigned char *hz_p)
{
x+=2;
while((*hz_p)!=0)
{
ocmj_write(0xf0);
ocmj_write(x);
ocmj_write(y);
ocmj_write(*hz_p-0xa0);
hz_p++;
ocmj_write(*hz_p-0xa0);
hz_p++;
if(x<0x09)
x++;
else
{
x=0x02;
y++;
}
}
}
/* ***********************************************************
移動函數
/* **********************************************************/
void up(void) //上移
{
ocmj_write(0xf5);
}
void down(void) //下移
{
ocmj_write(0xf6);
}
void left(void) //左移
{
ocmj_write(0xf7);
}
void right(void) //右移
{
ocmj_write(0xf8);
}
void fangbai()
{
ocmj_write(0xfa);
}
void mouse (void)
{
ocmj_write(0xFB);
ocmj_write(0x07);
}
/* ***********************************************************
畫點函數
/* **********************************************************/
void pset(unsigned char x,unsigned char y)
{
ocmj_write(0xf2);
ocmj_write(x+32);
ocmj_write(y);
}
/* ***********************************************************
畫線函數
/* **********************************************************/
void line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2)
{
unsigned char t;
signed int xerr=0,yerr=0;
signed int delta_x,delta_y,distance;
signed char incx,incy;
/* 計算兩個方向的長度 */
delta_x=x2-x1;
delta_y=y2-y1;
/* 計算增量的方向,增量為"0"表示為垂直或水平線 */
if(delta_x>0)
incx=1;
else
{
if( delta_x==0 )
incx=0;
else
{
incx=-1;
delta_x =-delta_x;
}
}
if(delta_y>0)
incy=1;
else
{
if( delta_y==0 )
incy=0;
else
{
incy=-1;
delta_y =-delta_y;
}
}
/* 確定畫線的范圍 */
if( delta_x > delta_y ) distance=delta_x;
else distance=delta_y;
/* 畫線 */
for(t=0;t<= distance+1;t++)
{
ocmj_write(0xf2);
ocmj_write(x1+32);
ocmj_write(y1);
xerr += delta_x ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -