信号发生器小程序

  • 格式:doc
  • 大小:84.50 KB
  • 文档页数:16
}
write_date(table[shi]);
delay(5);
write_date(table[ge]);
delay(5);
write_date('H');
delay(5);
write_date('Z');
delay(5);
if(boxing==0)
{
write_com(0x80+7);
write_date('s');
write_com(0x38);//显示模式设置,默认为0x38,不用变。
write_com(0x01);//显示清屏,将上次的内容清除,默认为0x01.
write_com(0x0c);//显示功能设置0x0f为开显示,显示光标,光标闪烁;0x0c为开显示,不显光标,光标不闪
write_com(0x06);//设置光标状态默认0x06,为读一个字符光标加1.
};//锯齿波取码
void delay(uint xms)//延时函数
{
int a,b;
for(a=xms;a>0;a--)
for(b=110;b>0;b--);
}
void write_com(uchar com)//写命令函数
{
lcdrs=0;
P0=com;
delay(1);
lcden=1;
delay(1);
write_date('i');
write_date(' ');
}
}
void keyscan()//键盘检测函数
{
if(s1==0)
{
EA=0;
delay(2);
if(s1==0)
{
while(!s1);
if(num<14)
num++;
display();
if(num>9)
{
EA=0;
}
else
EA=1;
write_date('i');
write_date('n');
write_date(' ');
write_date(' ');
write_date(' ');
write_date(' ');
}
if(boxing==1)
{
write_com(0x80+7);
write_date('j');
write_date('u');
write_date('n');
write_date(' ');
write_date(' ');
write_date(' ');
write_date(' ');
write_com(0x80+0x40+0xa);
write_date(' ');
write_date('1');
write_date('0');
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
write_date('H');
delay(5);
write_date('Z');
delay(5);
}
void display()//显示函数
{
uchar bai,shi,ge;
if(num<10)
{
pinlv=num*10+10;
}
if(num>9)
{
pinlv=(num-9)*100+100;
}
};//三角波取码
uchar code juchi[64]={
0,4,8,12,16,20,24,26,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,
128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248
write_com(0x80);//设置初始化数据指针,是在读指令的操作里进行的
}
void initclock()//时钟初始化
{
uint i;
TMOD=0x01;
TH0=(65536-1563)/256;
TL0=(65536-1563)%256;
EA=1;
ET0=1;
TR0=1;
for(i=10;i<17;i++)//显示初始化
};//矩形波取码
uchar code sanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
write_date('i');
write_date('a');
write_date('o');
}
if(boxing==3)
{
write_com(0x80+7);
write_date('j');
write_date('u');
write_date(' ');
write_date('c');
write_date('h');
#include<reg52.h>//包含头文件
#include<intrins.h>
#define uchar unsigned char//宏定义
#define uint unsigned int
sbit s1=P3^5;//定义按键的接口
sbit s2=P3^6;
sbit s3=P3^7;
sbit lcdrs=P1^0;//液晶控制位
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
sbit lcden=P1^1;
sbit csda=P3^3;//DA控制位
sbit wr=P3^4;
char num=0,boxing,u;//定义全局变量
uint pinlv;
uchar code table[]="0123456789";//定义显示的数组
uchar code table1[]="frequence:boxing:";
_nop_();_nop_();_nop_();
}
}
break;
case 1:
while(s1&&s2&&s3)
{
for(u=0;u<64;u++)
{
P2=juxing[u];
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
lcden=0;
}
void write_date(uchar date)//写数据函数
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void init_lcd()//初始化函数
{
lcden=0;//默认开始状态为关使能端,见时序图
write_com(0x0f);
bai=pinlv/100;
shi=pinlv%100/10;
ge=pinlv%100%10;