/****************************************/
/* Copyright (c) 2004, 通信工程学院陈斌 */
/* All rights reserved. */
/* 作 者:陈斌 */
/****************************************/
//屏宽:240
//屏高:128
#include <reg51.h>
/* P1口 */
sbit P17 = 0x97;
sbit P16 = 0x96;
sbit P15 = 0x95;
sbit P14 = 0x94;
sbit P13 = 0x93;
sbit P12 = 0x92;
sbit P11 = 0x91;
sbit P10 = 0x90;
sbit P31 = 0xB1;
sbit P30 = 0xB0;
#include <intrins.h>
#include <absacc.h>
#include <key.h>
#include <extern_val.h>
//
#define lcd_page1 0x00//液晶第一屏
#define lcd_page2 0x0F//液晶第二屏
#define lcd_graphic_columns 30 //液晶图形区行长度
#define lcd_text_columns 30 //液晶文本区行长度
#define hzk_page 0 //存放汉字库的FLASH页
#define cshsj_page 0 //存放初始化数据的FLASH页
#define ID 0 //内核模块ID号
//
unsigned char xdata Lcd_Data_Port _at_ 0xFFFA; //液晶数据口
unsigned char xdata Lcd_Code_Port _at_ 0xFFFB; //液晶指令口
unsigned char xdata Ram_Page _at_ 0xFFFC; //RAM页控制口
unsigned char xdata Flash_Page _at_ 0xFFFD; //FLASH页控制口
unsigned char xdata Reset_Port _at_ 0xFFF9; //设备复位控制口
unsigned char xdata com_reg[16] _at_ 0xFFE0; //SCC2692的寄存器组
unsigned char data Ram_Reg; //RAM页控制口寄存器
unsigned char data Flash_Reg; //FLASH页控制口寄存器
unsigned char xdata lcd_buf[20]; //液晶显示缓冲区
unsigned char xdata font_data[32]; //汉字字模缓冲区
//串口通信使用的全局变量
unsigned char xdata rxa_buf[500],txa_buf[500],rxb_buf[500],txb_buf[500];
unsigned char xdata *rxa_point;
unsigned char xdata *txa_point;
unsigned char xdata *rxb_point;
unsigned char xdata *txb_point;
unsigned int data txa_lenth,txb_length,rxa_length,rxb_length;
unsigned char data combstatu,checksum;
bit txa_en=0,txb_en=0;
bit rxa_first=0,rxa_second=0,rxa_third=0,rxa_num=0,rxa_en=0,rxa_ok=0,dsp_connect=0;
bit rxb_first=0,rxb_second=0,rxb_third=0,rxb_num=0,rxb_en=0,rxb_ok=0,dsp_ack=0,dsp_nack=0;
lcd_cls(unsigned char i);
lcd_init();
sys_init();
print_c16(unsigned int lcd_ram_addr);
fprint_c16(unsigned int lcd_ram_addr);
print_bmp(unsigned int lcd_ram_addr,unsigned char code *bmpdata,unsigned char width,length);
reset_flash();
erase_flash(unsigned char sector);
program_flash(unsigned int k,unsigned char x);
com_a_fs(unsigned int k);
com_b_fs(unsigned int k);
unsigned char getchar();
move_data(unsigned char xdata *m,unsigned char xdata *n,unsigned int k);
long d_to_hex(unsigned char xdata *k);
void SetPCF8563(unsigned char timetype,unsigned char value);
bhsy();
xtcssd();
gzsd();
load_data(unsigned char i,unsigned char code *m,unsigned char j,unsigned char xdata *n,unsigned int k)
{
unsigned char Flash_Reg_B,Ram_Reg_B;
EA=0; //关闭中断
Flash_Reg_B=Flash_Reg;
Ram_Reg_B=Ram_Reg;
Flash_Reg=i;
Flash_Page=Flash_Reg;
Ram_Reg=j;
Ram_Page=Ram_Reg;
while (k!=0)
{
*n=*m;
n++;
m++;
k--;
}
Flash_Reg=Flash_Reg_B;
Ram_Reg=Ram_Reg_B;
Flash_Page=Flash_Reg;
Ram_Page=Ram_Reg;
EA=1; //打开中断
}
/*串口通信中断处理程序,占用INT0*/
void comtx(void) interrupt 0 using 1
{
unsigned char i,j;
i=com_reg[5];
if (i&0x1) //通道A发送中
{
if (txa_en)
{
com_reg[3]=*txa_point;
txa_point++;
txa_lenth--;
if (txa_lenth==0) {txa_en=0;com_reg[2]=0x09;} //同时关闭发送通道A
}
}
if (i&0x2) //通道A接收中
{
j=com_reg[3];
if (rxa_en)
{
*rxa_point=j;
rxa_point++;
rxa_length--;
if (rxa_length==0) {rxa_en=0;rxa_ok=1;}
}
else if (rxa_third)
{
rxa_third=0;
rxa_en=1;
rxa_length=rxa_length+j;
rxa_point=&rxa_buf;
if (rxa_length==0) {rxa_en=0;}
}
else if (rxa_second)
{
rxa_second=0;
rxa_third=1;
rxa_length=j*256;
}
else if (rxa_first)
{
rxa_first=0;
if (j==0x55) {rxa_second=1;}
}
else if (j==0xaa) {rxa_first=1;}//收包头
}
if (i&0x10) //通道B发送中
{
if (txb_en)
{
com_reg[11]=*txb_point;
txb_point++;
txb_length--;
if (txb_length==0) {txb_en=0;com_reg[10]=0x09;} //同时关闭发送通道B
}
}
if (i&0x20) //通道B接收中
{
j=com_reg[11];
if (rxb_en)
{
*rxb_point=j;
rxb_point++;
rxb_length--;
if (rxb_length==0) {rxb_en=0;rxb_ok=1;}
}
else if (rxb_third)
{
rxb_third=0;
rxb_en=1;
rxb_length=rxb_length+j;
rxb_point=&rxb_buf;
if (rxb_length==0) {rxb_en=0;}
}
else if (rxb_second)
{
rxb_second=0;
rxb_third=1;
rxb_length=j*256;
}
else if (rxb_first)
{
rxb_first=0;
if (j==0x55) {rxb_second=1;}
}
else if (j==0xaa) {rxb_first=1;}//收包头
}
}
main()
{
// unsigned char code TABLE01[9]={17,18,19,20,21,16,16,16,0xFF};//系统联机中...
unsigned char code TABLE02[6]={24,14,25,26,27,0xFF};//VENUS
unsigned char code TABLE03[5]={29,30,31,32,0xFF};//保护试验
unsigned char code TABLE04[5]={28,12,33,34,0xFF};//PC主控
unsigned char code TABLE05[5]={35,36,37,38,0xFF};//结果处理
unsigned char code TABLE06[5]={17,18,39,40,0xFF};//系统设置
unsigned int code MENU_ADD[4]={TABLE03,TABLE04,TABLE05,TABLE06};//菜单代码地址数组
unsigned int code MENU_DIS[4]={0x1e0,0x3c0,0x5a0,0x780};//菜单显示位置数组
unsigned char i,counter_old,counter_new;
sys_init();
lcd_init();
SetPCF8563(0x2,0); //设置秒
SetPCF8563(0x3,10); //设置分
SetPCF8563(0x4,9); //设置小时
SetPCF8563(0x5,1); //设置日
SetPCF8563(0x6,6); //设置星期
SetPCF8563(0x7,1); //设置月
SetPCF8563(0x8,05); //设置年
counter_new=0x0;
counter_old=0x0;
lcd_cls(lcd_page1);
lcd_cls(lcd_page2);
load_data(0,&TABLE02,0,&lcd_buf,6);
print_c16(0x8);
load_data(0,&TABLE03,0,&lcd_buf,5);
print_c16(MENU_DIS[0]);
load_data(0,&TABLE04,0,&lcd_buf,5);
print_c16(MENU_DIS[1]);
load_data(0,&TABLE05,0,&lcd_buf,5);
print_c16(MENU_DIS[2]);
load_data(0,&TABLE06,0,&lcd_buf,5);
print_c16(MENU_DIS[3]);
while (1)
{
load_data(0,MENU_ADD[counter_new],0,&lcd_buf,20);
fprint_c16(MENU_DIS[counter_new]);
counter_old=counter_new;
i=getchar();
if (i==UP) {counter_new--;}
if (i==DOWN) {counter_new++;}
if (i==ENTER)
{
switch (counter_new)
{
case 0:{ gzsd();}break;
case 1:{ bhsy();}break;
case 2:{ xtcssd();}break;
case 3:{ ;}break;
}
}
counter_new=counter_new&0x3;
load_data(0,MENU_ADD[counter_old],0,&lcd_buf,20);
jidianqi.rar_C#继电器_仪_继电器 测试_继电器测试
版权申诉
25 浏览量
2022-09-23
07:45:45
上传
评论
收藏 84KB RAR 举报
Kinonoyomeo
- 粉丝: 77
- 资源: 1万+
最新资源
- 基于Java的日记本应用程序设计源码 - Diary
- 基于C#的.NET模板引擎设计源码 - jntemplate
- 基于51单片机+AC24C04+LCD1602显示的电子密码锁程序源代码及电路仿真.zip
- 基于C++的图形共享内存轻量级设计源码 - graphic_surface_lite
- 深入解析指令调度与延迟分支.zip
- 基于STC15F104E系列单片机的EEPROM应用程序测试例程KEIL工程源码.zip
- 基于STC15F104E系列单片机的串口通讯应用程序测试例程KEIL工程源码.zip
- java-leetcode题解之第844题比较含退格的字符串.zip
- java-leetcode题解之第824题山羊拉丁文.zip
- java-leetcode题解之第819题最常见的单词.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈