📄 mnj_1335.c
字号:
/*-------------------------------------------------------
MD-500Ⅱ模拟定位机(ICCAVR)显示程序 2.0
作者:cyk8 2004.12.3
1、应包含头文件slavr.h
2、在工程选项中的Additional Lib中填入slavr
使编译器使用附加库文件libslavr.a
3、数据线D0~D7接PORTC
WR------>用PD4代替
RD------>用PD3代替
A0------>用PD6代替
RESET接RESET
CS接地
4, 通讯协议:
主机发送的控制指令采用6个字符组成的字符串格式“(X/Y/S/C/G/T)”+数据1,数据2,数据3,数据4+“#”,
主机共发7B,7C,7D,7E,7F,
a.第一个发的是X,Y,SAD,C,G,TH的ASCⅡ
X--->58H(X)
Y--->59H(Y)
SAD->53H(S)
C--->43H(C)
G--->47H(G)
TH-->54H(T)
b.7B,7C,7D,7E四个数据
c.最后一个7F=#23H(ASCⅡ="#"表示结束符号)
---------------------------------------------------------*/
#include<ioM16V.h>
#include <stdlib.h>
#include <macros.h>
#include <slavr.h>
//宏定义//
#define Uchar unsigned char
#define Uint unsigned int
#define paraP9 0x28 // 相对于320 X 240
#define BasePart1 0x00
#define BasePart2 0x40
#define BasePart3 0x80
#define BasePart4 0x00
#define SystemSet 0x40
#define Scroll 0x44
#define DispOn 0x59
#define DispOff 0x58
#define Ovlay 0x5b
#define HdotScr 0x5a
#define CsrForm 0x5d
#define CgramAdr 0x5c
#define CsrDirR 0x4c
#define CsrDirL 0x4d
#define CsrDirU 0x4e
#define CsrDirD 0x4f
#define CsrW 0x46
#define CsrR 0x47
#define mWrite 0x42
#define mRead 0x43
#define A0_H PORTD |=0x40
#define A0_L PORTD &=0xbf
#define RD_H PORTD |=0x08
#define WR_H PORTD |=0x10
#define WR_L PORTD &=0xef
#define LcmRdataPort A0_H
#define LcmStatusPort A0_L
unsigned char RX_data[4]={0}; //串口接收的数据
unsigned char RX_counter=0; //串口接收到的字节数计数器
void UART_init (void);
void putchar (unsigned char c);
void puts (unsigned char *s);
void UART_rx (void);
void delay_nms (unsigned int n);
const Uchar *ptr; //液晶字符指针变量
Uchar ParaSysTable8[]= {
0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00 // P1-P8参数
};
Uchar ParaScrTableA[]= {
0x00,BasePart1,0xF0,0x00,BasePart2,0xF0,0x00,BasePart3,0x00,BasePart4
};
void PutCdotInAlpha( Uchar Ox, Uchar Oy, Uchar Cnumber );
void PutWordInAlpha(void);
void TextDisp( Uchar Ox,Uchar Oy, const Uchar *ptr );
void LcmInition( void );
void LcmClear( void );
void SelfInit( void );
void delay(Uint t);
void RollLaft( void );
void Rollright( void );
void RollDown( void );
void RollUp( void );
void BuildCgram( Uchar Base, Uchar EndlCode );
void PutWordInAlpha(void);
void PutWordInGraph( void );
void PutWord24InGraph( void );
void Linexy(Uint x0,Uchar y0,Uint xt,Uchar yt,Uchar att);
void Sample3( void );
void Point(Uint Px, Uchar Py, Uchar attr );
/* 微秒级延时函数(mS) 本延时函数实际为delay_us(int time)中的int time=1->实际等于2us */
void delay_us(int time)
{
do
{
time--;
}
while (time>1);
}
/* 毫秒级延时函数 */
void delay_ms(unsigned int time)
{
while(time!=0)
{
delay_us(500);
time--;
}
}
void sed1335_write_command(Uchar commandcode)
{
PORTC=commandcode;
A0_H;
RD_H;
WR_L;
WR_H;
}
void sed1335_write_data(Uchar data)
{
PORTC=data;
A0_L;
RD_H;
WR_L;
WR_H;
}
//CPU初始化//
void SelfInit( void )
{
DDRA =0xff;
PORTA = 0x00;
DDRB =0xff;
PORTB = 0x00;
DDRC = 0xff;
PORTC = 0x00;
DDRD = 0xff;
PORTD = 0xff;
}
//液晶初始化//
void LcmInition( void )
{
Uint i1;
delay_ms(50);
delay_ms(50);
sed1335_write_command(SystemSet);
sed1335_write_data(0x30);
sed1335_write_data(0x87);
sed1335_write_data(0x07);
sed1335_write_data(0x27);
sed1335_write_data(0x42);
sed1335_write_data(0xf0);
sed1335_write_data(0x28);
sed1335_write_data(0x00);
sed1335_write_command(Scroll);
sed1335_write_data(0x00);
sed1335_write_data(0x00);
sed1335_write_data(0xf0);
sed1335_write_data(0x00);
sed1335_write_data(0x40);
sed1335_write_data(0xf0);
sed1335_write_data(0x00);
sed1335_write_data(0x00);
sed1335_write_data(0x00);
sed1335_write_data(0x00);
sed1335_write_command(HdotScr);
sed1335_write_data(0x00);
sed1335_write_command(Ovlay);
sed1335_write_data(0x0d);
delay_ms(100);
i1=32768;
sed1335_write_command(CsrDirR);
sed1335_write_command(CsrW);
sed1335_write_data(0x00);
sed1335_write_data(0x00);
sed1335_write_command(mWrite);
while(i1--) {
sed1335_write_data(0x00);
}
sed1335_write_command(DispOn);
sed1335_write_data(0x15);
}
//ASCⅡ字符数组定义(0x30开始)//
const Uchar ASC_MSK32[75*64] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x06,
0x0C,0x18,0x18,0x18,0x30,0x30,0x30,0x30,
0x30,0x30,0x30,0x30,0x30,0x18,0x18,0x18,
0x0C,0x06,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x30,
0x18,0x0C,0x0C,0x04,0x06,0x06,0x06,0x06,
0x06,0x06,0x06,0x06,0x06,0x04,0x0C,0x0C,
0x18,0x30,0xE0,0x00,0x00,0x00,0x00,0x00,/*"0"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x03,0x1F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0xC0,0xF8,0x00,0x00,0x00,0x00,0x00,/*"1"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x08,
0x10,0x20,0x20,0x30,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,
0x20,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x38,
0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x10,
0x20,0x40,0x80,0x00,0x00,0x04,0x04,0x04,
0x0C,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,/*"2"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x18,
0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x03,
0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,
0x30,0x18,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x70,
0x30,0x18,0x18,0x18,0x18,0x30,0x60,0xC0,
0x70,0x18,0x08,0x0C,0x0C,0x0C,0x0C,0x08,
0x18,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,/*"3"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x02,0x06,0x04,0x08,
0x08,0x10,0x20,0x20,0x7F,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x70,
0x70,0xF0,0x70,0x70,0x70,0x70,0x70,0x70,
0x70,0x70,0x70,0x70,0xFE,0x70,0x70,0x70,
0x70,0x70,0x70,0xFE,0x00,0x00,0x00,0x00,/*"4"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,
0x08,0x08,0x08,0x10,0x10,0x13,0x14,0x18,
0x10,0x00,0x00,0x00,0x00,0x30,0x30,0x20,
0x20,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,
0x00,0x00,0x00,0x00,0x00,0xE0,0x30,0x18,
0x08,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,
0x18,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,/*"5",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,
0x04,0x08,0x18,0x18,0x10,0x30,0x31,0x36,
0x3C,0x38,0x30,0x30,0x30,0x30,0x18,0x18,
0x0C,0x06,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x08,
0x0C,0x0C,0x00,0x00,0x00,0x00,0xF0,0x18,
0x0C,0x06,0x06,0x06,0x06,0x06,0x06,0x04,
0x0C,0x18,0xE0,0x00,0x00,0x00,0x00,0x00,/*"6"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,
0x38,0x30,0x20,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x01,0x01,0x03,0x03,0x03,
0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,
0x08,0x10,0x10,0x20,0x20,0x40,0x40,0x80,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"7"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0C,
0x18,0x30,0x30,0x30,0x38,0x1C,0x0E,0x07,
0x0D,0x18,0x30,0x60,0x60,0x60,0x60,0x60,
0x30,0x18,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x30,
0x18,0x0C,0x0C,0x0C,0x0C,0x18,0x10,0xE0,
0xE0,0x70,0x38,0x1C,0x0C,0x0C,0x0C,0x0C,
0x18,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,/*"8"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x18,
0x30,0x30,0x60,0x60,0x60,0x60,0x60,0x60,
0x30,0x18,0x0F,0x00,0x00,0x00,0x00,0x30,
0x30,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,
0x10,0x18,0x08,0x0C,0x0C,0x0C,0x0C,0x1C,
0x3C,0x6C,0x8C,0x0C,0x18,0x18,0x18,0x30,
0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,/*"9"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- : --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- ; --*/
0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF0,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, /*"Ⅱ",<*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,
0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,
0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*"=",0*/
0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x08,
0x04,0x06,0x03,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x06,
0x04,0x08,0x10,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x18,
0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- > --*/
0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF0,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, /*"Ⅱ",?*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- @ --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,
0x03,0x02,0x06,0x04,0x04,0x04,0x0C,0x08,
0x08,0x08,0x1F,0x10,0x10,0x10,0x30,0x20,
0x20,0x60,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x80,0x80,0xC0,0xC0,0xC0,0xC0,0x60,0x60,
0x60,0x60,0xF0,0x30,0x30,0x30,0x30,0x18,
0x18,0x18,0x3E,0x00,0x00,0x00,0x00,0x00, /*"A"*/
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -