📄 function._h
字号:
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
//功能: 函数定义及其构架
//输入: 无
//输出: 函数名
//By: 李 平 2007.7.11
//备注:
#include <iom16v.h>
#include <macros.h>
//#include "Portini.h"
//#include "Data.h"
//定义全局变量 tabx[4] 和 taby[4]
uchar tabx[4];
uchar taby[4];
void bang(void);
void send(uchar dat); //送出一行指令或数据
//F0 XX YY QQ WW: 汉字显示命令 以汉字为单位的X,Y坐标值,QQ,WW为汉字区码,位码
//F1 XX YY AS : 8*8ASCII字符显示 以ASCII为单位的X,以1*1为单位的Y坐标值,AS为ASCII字符
//F2 XX YY : 显示位点阵 以1*1点阵为单位的X,Y坐标值,
//F3 XX YY BT : 显示字节点阵 以1*8为行单位,以1*1为列单位的坐标值,BT=0白色,=1黑色
//F4: 清屏
//F5: 上移一个点阵
//F6: 下移一个点阵
//F7: 左移一个点阵
//F8: 右移一个点阵
//F9 XX YY AS : 8*16 ASCII字符显示 以ASCII为单位的X,以1*1为单位的Y坐标值 AS:ASCII字符
//FA : 此后的图形或文字反白显示
//FB 00/07/0F : 光标显示 00关光标 07 光标为8点 0F光标为16点
//FC 00/01/07/0F: 移动速度 00按一个点移动 01按2个点移动
// 07按8个点移动 0F按16个点移动
void write(uchar comm,uchar addr_x,uchar addr_y);
//对应于F0 XX YY 即送命名+X坐标值+Y坐标值,分别一Send()格式送出
void disp1line (uchar *chn); //显示一行汉字
void disp2lines (uchar *chn); //显示2行汉字
void disp_img (uchar *img); //显示一幅图片
void disptouch(void); //显示X,Y坐标值
void start(void); //SPI使能
void WriteCharTo7843(uchar num); //SPI写数据
unsigned int ReadFromCharFrom7843(void); //SPI 读数据
void disp_ciclr(uint X,uint Y); //画曲线
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: send( data )
//功能: 写命令或数据
//输入: 待送入的data值
//输出: 无 因为送进液晶后便可以显示了,不必返回
//By: 李 平 2007.7.11
//备注:
void send (uchar dat)
{
while(busy==1)
;
dataout=dat;
req_set;
while(busy==0)
;
req_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: write()
//功能: 写命令或数据到LCD-
//输入: comm命令, addr_x坐标X ,addr_y坐标Y
//输出: 无
//By: 李 平 2007.7.11
//备注:
void write(uchar comm,uchar addr_x,uchar addr_y)
{
send(comm);
send(addr_x);
send(addr_y);
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: disp1line()
//功能: 显示一行汉字
//输入: 待显示的chn数组名
//输出: 无
//By: 李 平 2007.7.11
//备注:
void disp1line(uchar *chn)
{
uchar i;
for(i=2;i<14;i++)
{
write(0xf0,i-2,0);
send(chn[(i-2)*2]-0xa0);
send(chn[(i-2)*2+1]-0xa0);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: disp2lines()
//功能: 显示2行汉字
//输入: 待显示的chn数组名
//输出: 无
//By: 李 平 2007.7.11
//备注:
void disp2lines (uchar *chn)
{
uchar i;
for(i=2;i<11;i++)
{
write(0xf0,i-2,2);
send(chn[(i-2)*2]-0xa0);
send(chn[(i-2)*2+1]-0xa0);
}
for(i=2;i<11;i++)
{
write(0xf0,i-2,3);
send(chn[(i+6)*2]-0xa0);
send(chn[(i+6)*2+1]-0xa0);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: disp_img()
//功能: 显示一幅图片
//输入: 待显示的img数组名
//输出: 无
//By: 李 平 2007.7.11
//备注:
void disp_img (uchar *img)
{
uchar i,j;
for(j=31;j<64;j++)
{
for(i=4;i<20;i++)
{
write(0xf3,i,j);
send(img[(j-31)*16+i-4]); //16*33=528
}
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: disptouch()
//功能: 显示触摸屏摁下处的X,Y坐标值
//输入: tabx[4] taby[4] 2个4位的坐标值
//输出: 无 因为所有的数据均显示之
//By: 李 平 2007.7.11
//备注:
void disptouch(void)
{
uchar r;
for(r=6;r<10;r++)
{
write(0xf9,r+20,0);//248/16=15,15*2=30,30-4=26,26-6=20
send(tabx[r-6]+48);
}
for(r=13;r<17;r++)
{
write(0xf9,r+13,16);//248/16=15,15*2=30,30-4=26,26-13=13
send(taby[r-13]+48);
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: spi_start
//功能: SPI使能
//输入:
//输出:
//By: 李 平 2007.7.11
//备注:
void spi_start(void)
{
clk_clr;
cs_set;
din_set;
clk_set;
cs_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: WriteCharTo7843()
//功能: SPI写数据
//输入: 要写入7843的数据num
//输出: 无
//By: 李 平 2007.7.11
//备注:
void WriteCharTo7843(uchar num)
{
uchar count=0;
clk_clr;
for(count=0;count<8;count++)
{
if(num&0x80)
din_set;
else din_clr;
num<<=1;
clk_clr; //上升沿有效
asm("nop");
asm("nop");
asm("nop");
clk_set;
asm("nop");
asm("nop");
asm("nop");
}
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: ReadFromCharFrom7843()
//功能: SPI 读数据
//输入: 无
//输出: 读出的X或Y坐标值num (0-4069)
//By: 李 平 2007.7.11
//备注:
unsigned int ReadFromCharFrom7843(void)
{
uchar count=0;
uint Num=0;
for(count=0;count<12;count++)
{
Num<<=1;
clk_set;
/*
_nop_();
_nop_();
_nop_();*/
asm("nop");
asm("nop");
asm("nop");
clk_clr;
asm("nop");
asm("nop");
asm("nop");
if(dout)
Num++;
}
return(Num);
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名: void disp_ciclr(uint X,uint Y)
//功能: 显示画过的曲线
//输入: X,Y坐标值
//输出: 无
//By: 李 平 2007.7.12
//备注:
void disp_ciclr(uint X,uint Y)
{
send(0xf2); //画1*1点阵
send((uchar)(4096-Y)/17);//定义为相对X显示坐标值
send((uchar)(4096-X)/32);//定义为相对Y显示坐标值
//send(240-(Y/100*24/4));
//send(128-(X/100*13/4));
// send(0x01);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -