📄 main.c
字号:
/*-----------------------------------------------------*
*工 程 名:TG12864E02.prj *
*硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
* 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
* 功 能:初始时显示:"苏州大学 " *
* "单片机实验室 " *
* "http://sumcu.s " *
* "uda.edu.cn " *
*-----------------------------------------------------*/
/*[头文件]*/
#include "GP32C.h" //映像寄存器地址头文件
#include "lcd.h" //Lcd头文件
#include "SCI.h" //SCI头文件
//有关定时器寄存器位定义
#define TSTOPBit 5 //定时器计数停止位
//定时器初始化函数声明
void Timer1init(void);
//SCI初始化
extern void SCIInit(void);
//全局变量声明
unsigned char Num=0; //显示的数据
unsigned char FLine=0; //得到焦点的行号
//[外部定义64个字节的Lcd显示缓冲区]
unsigned char LcdShowBuff[64]=" as "
" df "
" df "
" da ";
unsigned char YNo=0,XNo=0;
unsigned int Data=12;
//*====================================================*
#pragma abs_address:0x8000
const INT16U BigNumCode[320]={
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0380,0x0C60, //"0"
0x0830,0x1830,0x3018,0x3018,0x3018,0x3018,0x701C,0x701C,
0x701C,0x701C,0x701C,0x3018,0x3018,0x3018,0x3018,0x1830,
0x1830,0x0C60,0x0380,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0040,0x03C0, //"1"
0x03C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,
0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,0x01C0,
0x01C0,0x01C0,0x0FF8,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x1FF0, //"2"
0x3078,0x603C,0x403C,0x001C,0x001C,0x001C,0x0018,0x0038,
0x0030,0x0060,0x0040,0x00C0,0x0180,0x0300,0x0600,0x0C02,
0x1806,0x3FFC,0x7FFC,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x0FF0, //"3"
0x1878,0x2038,0x0018,0x0018,0x0010,0x0020,0x0040,0x01F0,
0x07F8,0x00F8,0x003C,0x001C,0x000C,0x000C,0x000C,0x0008,
0x3810,0x3C20,0x1FC0,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0030,0x0070, //"4"
0x00F0,0x00F0,0x0170,0x0170,0x0270,0x0470,0x0470,0x0870,
0x1870,0x1070,0x2070,0x6070,0x7FFE,0x7FFE,0x0070,0x0070,
0x0070,0x0070,0x0070,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F8,0x07F0, //"5"
0x07F0,0x0800,0x0800,0x1E00,0x1F80,0x3FE0,0x03F0,0x00F0,
0x0078,0x0038,0x0018,0x0018,0x0018,0x0018,0x0010,0x0030,
0x3060,0x3FC0,0x1F00,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x003C,0x00E0, //"6"
0x0380,0x0700,0x0E00,0x1C00,0x1800,0x3800,0x33E0,0x7C70,
0x7038,0x703C,0x701C,0x701C,0x701C,0x701C,0x301C,0x3818,
0x1830,0x0C70,0x07C0,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x1FFE,0x3FFE, //"7"
0x3FFC,0x200C,0x401C,0x0018,0x0018,0x0038,0x0030,0x0030,
0x0070,0x0060,0x0060,0x00E0,0x00C0,0x00C0,0x01C0,0x0180,
0x0180,0x0380,0x0300,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07E0,0x0C38, //"8"
0x1818,0x381C,0x381C,0x381C,0x3C38,0x1E30,0x0F60,0x0780,
0x03E0,0x05F0,0x0CF8,0x1878,0x383C,0x381C,0x381C,0x381C,
0x1C18,0x0E30,0x07E0,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x07C0,0x0C70, //"9"
0x1838,0x301C,0x701C,0x700E,0x700E,0x700E,0x700E,0x780E,
0x380E,0x1C1E,0x0FEC,0x001C,0x0038,0x0030,0x0070,0x00E0,
0x0180,0x0F00,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000};
#pragma end_abs_address
/*[主函数]*/
void main()
{
unsigned char *RF; //接收标志
unsigned char tmp; //行号标志
asm("SEI"); //关总中断
Timer1init(); //调定时器1初始化子程序
Lcdinit(); //Lcd初始化
SCIInit(); //SCI初始化
asm("CLI"); //开总中断
//[主循环]
//循环等待接收
while(1)
{
//LcdShBigCh(0,0,(INT16U *)(BigChCode_NUM[Num]));
//tmp=SCIRe1(RF);
//if(tmp!=0xFF) Num=tmp;
//SCISend1(Num);
SCISend1(86);
if(SCIRe1(RF)!=56) continue;
YNo=SCIRe1(RF);
XNo=SCIRe1(RF);
/*
if(LN==1) //将接收到的数据放在第一行显示缓冲区
SCIReN(16,LcdShowBuff);
else if(LN==2)//将接收到的数据放在第二行显示缓冲区
SCIReN(16,LcdShowBuff+16);
else if(LN==3)//将接收到的数据放在第三行显示缓冲区
SCIReN(16,LcdShowBuff+32);
else if(LN==4)//将接收到的数据放在第四行显示缓冲区
SCIReN(16,LcdShowBuff+48);
*/
}
}
/*[内部直接调用子程序存放处]*/
/*Timer1init:定时器1初始化子程序-----------------------*
*功能:对定时器1初始化 *
*参数:无 *
*返回:无 *
*-----------------------------------------------------*/
void Timer1init(void)
{
//允许溢出中断、不启动计数、分频因子=64
T1SC=0b01100110;
//计数寄存器初值=0x0000
T1CNTH=0x00; T1CNTL=0x00;
//1/2秒产生1次溢出中断
//计数寄存器=1/2×(2457600/64)=1200
T1MODH=0x12; T1MODL=0x00;
//允许定时器1计数寄存器计数
T1SC&=~(1<<TSTOPBit);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -