📄 at89s51_test.c
字号:
#include <absacc.h>
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define LED1 XBYTE [0xA000]
#define LED2 XBYTE [0xA001]
#define LED3 XBYTE [0xA002]
#define LED4 XBYTE [0xA003]
#define LED5 XBYTE [0xA004]
#define LED6 XBYTE [0xA005]
#define LED7 XBYTE [0xA006]
#define LED8 XBYTE [0xA007]
#define KEY XBYTE [0xA100]
#define lcdDl XBYTE [0xA201]
#define lcdDr XBYTE [0xA301]
#define lcdlCommand XBYTE [0xA200]
#define lcdrCommand XBYTE [0xA300]
#define strat_yaddr 0x40
#define strat_xaddr 0xb8
#define strat_dispaddr 0xc0
#define libleng 0x5F //字模库容量
#define dataleng 16*8 //全屏8*8点阵容量
sbit P1_4=P1^4;
sbit P1_3=P1^3;
sbit RW=P1^6;
bit first_getkey=0,getkey=0,keyon=0,control_readkey=0;
uchar lednum=0,keynum=0;
uchar led[8]={0,0,0,0,0,0,0,0};
uchar code segtab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//LED显示驱动数据
uchar code worddata[dataleng]="National University of defence technology's ASIC R&D Center";//自定义要显示的ASCII字符串
//8*8点阵ASCII全部字符表
uchar code ASCII[libleng][8]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*SPACE*/
{0x00,0x00,0x7e,0x21,0x21,0x21,0x7e,0x00},/*A*/
{0x00,0x00,0x7f,0x49,0x49,0x49,0x36,0x00},/*B*/
{0x00,0x00,0x3e,0x41,0x41,0x41,0x22,0x00},/*C*/
{0x00,0x00,0x7f,0x41,0x41,0x22,0x1c,0x00},/*D*/
{0x00,0x00,0x7f,0x49,0x49,0x49,0x49,0x00},/*E*/
{0x00,0x00,0x7f,0x09,0x09,0x09,0x01,0x00},/*F*/
{0x00,0x00,0x3e,0x41,0x49,0x49,0x7a,0x00},/*G*/
{0x00,0x00,0x7f,0x08,0x08,0x08,0x7f,0x00},/*H*/
{0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x00},/*I*/
{0x00,0x00,0x20,0x40,0x41,0x3f,0x01,0x00},/*J*/
{0x00,0x00,0x7f,0x08,0x14,0x22,0x41,0x00},/*K*/
{0x00,0x00,0x7f,0x40,0x40,0x40,0x40,0x00},/*L*/
{0x00,0x00,0x7f,0x02,0x0c,0x02,0x7f,0x00},/*M*/
{0x00,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00},/*N*/
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},/*O*/
{0x00,0x00,0x7f,0x09,0x09,0x09,0x06,0x00},/*P*/
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},/*Q*/
{0x00,0x00,0x7f,0x09,0x19,0x29,0x46,0x00},/*R*/
{0x00,0x00,0x46,0x49,0x49,0x49,0x31,0x00},/*S*/
{0x00,0x00,0x01,0x01,0x7f,0x01,0x01,0x00},/*T*/
{0x00,0x00,0x3f,0x40,0x40,0x40,0x3f,0x00},/*U*/
{0x00,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00},/*V*/
{0x00,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00},/*W*/
{0x00,0x00,0x63,0x14,0x08,0x14,0x63,0x00},/*X*/
{0x00,0x00,0x07,0x08,0x70,0x08,0x07,0x00},/*Y*/
{0x00,0x00,0x61,0x51,0x49,0x45,0x43,0x00},/*Z*/
{0x00,0x00,0x20,0x54,0x54,0x54,0x7c,0x00},/*a*/
{0x00,0x00,0x7f,0x48,0x44,0x44,0x38,0x00},/*b*/
{0x00,0x00,0x38,0x44,0x44,0x44,0x20,0x00},/*c*/
{0x00,0x00,0x38,0x44,0x44,0x48,0x7f,0x00},/*d*/
{0x00,0x00,0x38,0x54,0x54,0x54,0x18,0x00},/*e*/
{0x00,0x00,0x08,0x7e,0x09,0x01,0x02,0x00},/*f*/
{0x00,0x00,0x0c,0x52,0x52,0x52,0x3e,0x00},/*g*/
{0x00,0x00,0x7f,0x08,0x04,0x04,0x78,0x00},/*h*/
{0x00,0x00,0x00,0x44,0x7d,0x40,0x00,0x00},/*i*/
{0x00,0x00,0x40,0x40,0x44,0x3d,0x00,0x00},/*j*/
{0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00},/*k*/
{0x00,0x00,0x00,0x41,0x7e,0x40,0x00,0x00},/*l*/
{0x00,0x00,0x7c,0x04,0x18,0x04,0x78,0x00},/*m*/
{0x00,0x00,0x7c,0x08,0x04,0x04,0x78,0x00},/*n*/
{0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},/*o*/
{0x00,0x00,0x7c,0x14,0x14,0x14,0x08,0x00},/*p*/
{0x00,0x00,0x08,0x14,0x14,0x14,0x7c,0x00},/*q*/
{0x00,0x00,0x7c,0x08,0x04,0x04,0x08,0x00},/*r*/
{0x00,0x00,0x48,0x54,0x54,0x54,0x20,0x00},/*s*/
{0x00,0x00,0x04,0x3f,0x44,0x44,0x24,0x00},/*t*/
{0x00,0x00,0x3c,0x40,0x40,0x20,0x7e,0x00},/*u*/
{0x00,0x00,0x1d,0x20,0x40,0x20,0x1c,0x00},/*v*/
{0x00,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00},/*w*/
{0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00},/*x*/
{0x00,0x00,0x06,0x48,0x48,0x48,0x3e,0x00},/*y*/
{0x00,0x00,0x44,0x64,0x54,0x4c,0x44,0x00},/*z*/
{0x00,0x00,0x00,0x01,0x02,0x04,0x00,0x00},/*`*/
{0x00,0x00,0x00,0x42,0x7f,0x40,0x40,0x00},/*1*/
{0x00,0x00,0x62,0x51,0x51,0x49,0x46,0x00},/*2*/
{0x00,0x00,0x21,0x41,0x45,0x4b,0x31,0x00},/*3*/
{0x00,0x00,0x18,0x14,0x12,0x7f,0x10,0x00},/*4*/
{0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00},/*5*/
{0x00,0x00,0x3c,0x4a,0x49,0x49,0x30,0x00},/*6*/
{0x00,0x00,0x01,0x71,0x09,0x05,0x03,0x00},/*7*/
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00},/*8*/
{0x00,0x00,0x06,0x49,0x49,0x29,0x1e,0x00},/*9*/
{0x00,0x00,0x3e,0x51,0x49,0x45,0x3e,0x00},/*0*/
{0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00},/*-*/
{0x00,0x00,0x14,0x14,0x14,0x14,0x14,0x00},/*=*/
{0x00,0x00,0x01,0x02,0x08,0x10,0x20,0x00},/*\\*/
{0x00,0x00,0x04,0x08,0x04,0x08,0x04,0x00},/*~*/
{0x00,0x00,0x00,0x00,0x4f,0x00,0x00,0x00},/*!*/
{0x00,0x00,0x3e,0x59,0x55,0x79,0x3e,0x00},/*@*/
{0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00},/*#*/
{0x00,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00},/*$*/
{0x00,0x00,0x23,0x13,0x08,0x62,0x61,0x00},/*%*/
{0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00},/*^*/
{0x00,0x00,0x36,0x49,0x55,0x22,0x50,0x00},/*&*/
{0x00,0x00,0x14,0x08,0x3e,0x08,0x14,0x00},/***/
{0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00},/*(*/
{0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00},/*)*/
{0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x00},/*_*/
{0x00,0x00,0x08,0x08,0x3e,0x08,0x08,0x00},/*+*/
{0x00,0x00,0x00,0x00,0x7e,0x00,0x00,0x00},/*|*/
{0x00,0x00,0x00,0x7f,0x41,0x41,0x00,0x00},/*[*/
{0x00,0x00,0x00,0x41,0x41,0x7f,0x00,0x00},/*]*/
{0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00},/*;*/
{0x00,0x00,0x00,0x00,0x05,0x03,0x00,0x00},/*'*/
{0x00,0x00,0x00,0x00,0x28,0x18,0x00,0x00},/*,*/
{0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},/*.*/
{0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00},/*//*/
{0x00,0x00,0x00,0x08,0x36,0x41,0x00,0x00},/*{*/
{0x00,0x00,0x00,0x41,0x36,0x08,0x00,0x00},/*}*/
{0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00},/*:*/
{0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00},/*"*/
{0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x00},/*<*/
{0x00,0x00,0x00,0x41,0x22,0x14,0x08,0x00},/*>*/
{0x00,0x00,0x02,0x01,0x51,0x09,0x06,0x00}/*?*/
};
void leddisp(void);
void readkey(void);
void lcdlon_off(uchar D);
void setlstartx(uchar D);
void setlstarty(uchar D);
void setlstartline(uchar D);
void lcdron_off(uchar D);
void setrstartx(uchar D);
void setrstarty(uchar D);
void setrstartline(uchar D);
void lcdlwrite(uchar D);
void lcdrwrite(uchar D);
uchar GetIndex(uchar szText);
void writelcd(void);
//void delay400ms(void);
void intT0() interrupt 1
{
TH0=-2720/256;
TL0=-2720%256;
leddisp();
if(control_readkey==1)
{
readkey();
}
control_readkey=!control_readkey;
}
void main(void)
{
TMOD=0x01;
TH0=-2720/256;
TL0=-2720%256;
TCON=0x10;
ET0=1;
EA=1;
while(1)
{ lcdlon_off(0x3F);
lcdron_off(0x3F); //LCD两屏都打开
setlstartline(strat_dispaddr);
setrstartline(strat_dispaddr);//初始化
writelcd();//写数据
//以上为LCD整体程序
if(getkey==1)
{
getkey=0;
led[0]=keynum;
led[1]=keynum;
led[2]=keynum;
led[3]=keynum;
led[4]=keynum;
led[5]=keynum;
led[6]=keynum;
led[7]=keynum;
}
}
}
void leddisp(void)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -