• 大小: 30.68MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: 其他
  • 标签: 51  单片机  示波器  

资源简介

利用51单片机做一个简单的示波器 通过12864显示简单波形

资源截图

代码片段和文件信息

#include  
#include
#include
sbit RS=P2^5; //并行的指令/数据选择信号 H数据 L命令
sbit RW=P2^6; //并行读写选择信号 H读 L写
sbit E=P2^7; //并行使能端 H有效 L无效
sbit led=P1^0;
sbit jiakey=P3^0;
sbit jiankey=P3^1;
sbit ledkey=P3^2;
#define  LcdData P0
unsigned char dati=0;
unsigned char dat[100];
unsigned char over=0;
unsigned int temp=0;
unsigned char mode=0;
unsigned int delnop=0;
//////////////////////////////////////
unsigned char Lcd_CheckBusy(void)
{
    unsigned char Busy;
 LcdData=0xff;
    RS=0;
    RW=1;
    E=1;
    _nop_(); 
    Busy=LcdData&0x80;
    E=0;
    return Busy;
}
/*********************************
向LCD写入字节数据
**********************************/
void Lcd_WriteData(unsigned char Data)
{  
while(Lcd_CheckBusy());
RS=1;
RW=0;
E=0;
_nop_();  
_nop_(); 
LcdData=Data;
E=1;
_nop_();
_nop_();
E=0;
}
/***********************************
从LCD中读出数据
************************************/
unsigned char Lcd_ReadData(void)
{
unsigned char Temp;
while(Lcd_CheckBusy());
  LcdData=0xff;
  RS=1;
RW=1;
E=1;
_nop_();
    Temp=LcdData;
    E=0;
    return Temp;
}
/*************************************
想LCD中写入指令代码
**************************************/
void Lcd_WriteCmd(unsigned char CmdCode)
{  
while(Lcd_CheckBusy());
    RS=0;
    RW=0;
    E=0;
    _nop_();  
_nop_();
    LcdData=CmdCode;
    _nop_(); 
_nop_();
    E=1;
    _nop_();  
_nop_();
    E=0;
}
/**************************************
为加速逻辑运算而设置的掩码表,这是以牺牲空间而换取时间的办法
***************************************/
code unsigned int LcdMaskTab[]={0x00010x00020x00040x00080x00100x00200x00400x00800x01000x02000x04000x08000x10000x20000x40000x8000};
/***************************************
向LCD指定坐标写入一个象素象素颜色有两种,0代表白(无显示),1代表黑(有显示)
****************************************/
void Lcd_PutPixel(unsigned char xunsigned char yunsigned char Color)
{
unsigned char zw;
unsigned int Temp;
if(x>=128||y>=64)
return;
Color=Color%2;
w=15-x%16;//确定对这个字的第多少位进行操作
x=x/16;//确定为一行上的第几字

if(y<32) //如果为上页
z=0x80;
else     //否则如果为下页
z=0x88;

y=y%32;
//EA=0;
Lcd_WriteCmd(0x36);
Lcd_WriteCmd(y+0x80);        //行地址
Lcd_WriteCmd(x+z);     //列地址 
Temp=Lcd_ReadData();//先空读一次
Temp=(unsigned int)Lcd_ReadData()<<8;//再读出高8位
Temp|=(unsigned int)Lcd_ReadData();//再读出低8位
//EA=1;
if(Color==1) //如果写入颜色为1
Temp|=LcdMaskTab[w];//在此处查表实现加速
else         //如果写入颜色为0
Temp&=~LcdMaskTab[w];//在此处查表实现加速
//EA=0;
Lcd_WriteCmd(y+0x80);        //行地址
Lcd_WriteCmd(x+z);     //列地址
   Lcd_WriteData(Temp>>8);//先写入高8位,再写入低8位
   Lcd_WriteData(Temp&0x00ff);
Lcd_WriteCmd(0x30);
//EA=1;
}
/*****************************************
清除Lcd全屏,如果清除模式Mode为0,则为全屏清除为颜色0(无任何显示)
否则为全屏清除为颜色1(全屏填充显示)
******************************************/
void Lcd_Clear(unsigned char Mode)
{
unsigned char xyii;
unsigned char Temp;
if(Mode%2==0)
Temp=0x00;
else
Temp=0xff;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-04-09 17:11  基于51示波器\
     目录           0  2017-12-05 21:12  基于51示波器\单片机示波器--12864\
     目录           0  2017-12-06 23:03  基于51示波器\单片机示波器--12864\1-程序\
     文件        6376  2013-06-24 10:27  基于51示波器\单片机示波器--12864\1-程序\STARTUP.A51
     文件       14051  2017-03-31 21:02  基于51示波器\单片机示波器--12864\1-程序\STARTUP.LST
     文件         751  2017-03-31 21:02  基于51示波器\单片机示波器--12864\1-程序\STARTUP.OBJ
     文件       26284  2017-11-09 21:28  基于51示波器\单片机示波器--12864\1-程序\main.LST
     文件       43123  2017-11-09 21:28  基于51示波器\单片机示波器--12864\1-程序\main.OBJ
     文件          42  2017-11-09 21:28  基于51示波器\单片机示波器--12864\1-程序\main.__i
     文件       11898  2017-03-31 21:02  基于51示波器\单片机示波器--12864\1-程序\main.c
     文件       17731  2015-09-25 22:11  基于51示波器\单片机示波器--12864\1-程序\stc12c5a.H
     文件       36407  2017-11-20 19:11  基于51示波器\单片机示波器--12864\1-程序\程序
     文件       38743  2017-11-20 19:11  基于51示波器\单片机示波器--12864\1-程序\程序.M51
     文件       13278  2017-11-20 19:11  基于51示波器\单片机示波器--12864\1-程序\程序.hex
     文件          56  2017-11-20 19:11  基于51示波器\单片机示波器--12864\1-程序\程序.lnp
     文件         349  2017-11-20 19:11  基于51示波器\单片机示波器--12864\1-程序\程序.plg
     文件       84310  2017-04-20 20:31  基于51示波器\单片机示波器--12864\1-程序\程序.uvgui.Administrator
     文件       70673  2017-12-06 23:03  基于51示波器\单片机示波器--12864\1-程序\程序.uvgui.Shinelon
     文件        5380  2017-11-29 09:43  基于51示波器\单片机示波器--12864\1-程序\程序.uvopt
     文件       14024  2017-11-29 09:43  基于51示波器\单片机示波器--12864\1-程序\程序.uvproj
     文件       56456  2017-11-09 21:28  基于51示波器\单片机示波器--12864\1-程序\程序_uvopt.bak
     文件       14024  2017-04-20 19:39  基于51示波器\单片机示波器--12864\1-程序\程序_uvproj.bak
     目录           0  2017-12-05 21:12  基于51示波器\单片机示波器--12864\10-参考设计文档\
     文件     1389933  2016-05-13 14:14  基于51示波器\单片机示波器--12864\10-参考设计文档\基于LCD12864显示器的数字示波器设计.pdf
     文件     2831872  2016-05-13 14:11  基于51示波器\单片机示波器--12864\10-参考设计文档\数字存储示波器-毕业论文(西交大).doc
     文件      373233  2016-05-13 14:12  基于51示波器\单片机示波器--12864\10-参考设计文档\简易数字示波器设计.doc
     目录           0  2017-12-05 21:12  基于51示波器\单片机示波器--12864\11-开发资料\
     文件       58880  2016-03-10 09:01  基于51示波器\单片机示波器--12864\11-开发资料\LCD12864显示屏_带中文字库.doc
     目录           0  2017-12-05 21:12  基于51示波器\单片机示波器--12864\11-开发资料\单片机资料\
     文件     6705087  2016-03-10 08:59  基于51示波器\单片机示波器--12864\11-开发资料\单片机资料\STC12C5Axx.pdf
     目录           0  2017-12-05 21:12  基于51示波器\单片机示波器--12864\2-电路图\
............此处省略88个文件信息

评论

共有 条评论