• 大小: 78KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签:

资源简介

单片机与TLC5615组成的波形发生器。能产生周期可调,幅值可调的正弦波,并通过虚拟示波器观察波形的周期是否正确。使用keil和proteus软件进行仿真实现。

资源截图

代码片段和文件信息

#include //头文件
#include
#define uchar unsigned char //宏定义
#define uint  unsigned int
uchar code table[]=“0123456789ABCDEF “ ;  //显示的字母
uchar code table1[]=“V: T:“ ;
//LCD1602
sbit lcdrs=P3^0; //寄存器选择引脚
sbit lcdwr=P3^1; //读写引脚
sbit lcde=P3^2;  //片选引脚
//TLC5615
sbit sclk=P1^0;//sclk的上升沿把数据移入输入寄存器
sbit cs=P1^1;  //cs的跳变发生在sclk输入低电平
sbit din=P1^2; //cs的上升沿把数据从输入寄存器存入Dac寄存器开始转化//最高位在前
uchar Key_Value;  //读出的键值
uchar code sine_tab[]={
//输出电压从0到最大值(正弦波1/4部分)
0x800x830x860x890x8d0x900x930x960x990x9c
0x9f0xa20xa50xa80xab0xae0xb10xb40xb70xba
0xbc0xbf0xc20xc50xc70xca0xcc0xcf0xd10xd4
0xd60xd80xda0xdd0xdf0xe10xe30xe50xe70xe9
0xea0xec0xee0xef0xf10xf20xf40xf50xf60xf7
0xf80xf90xfa0xfb0xfc0xfd0xfd0xfe0xff0xff
0xff0xff0xff0xff
//输出电压从最大值到0(正弦波1/4部分)
0xff0xff0xff0xff0xff0xff0xfe0xfd0xfd0xfc
0xfb0xfa0xf90xf80xf70xf60xf50xf40xf20xf1
0xef0xee0xec0xea0xe90xe70xe50xe30xe10xde
0xdd0xda0xd80xd60xd40xd10xcf0xcc0xca0xc7
0xc50xc20xbf0xbc0xba0xb70xb40xb10xae0xab
0xa80xa50xa20x9f0x9c0x990x960x930x900x8d
0x890x860x830x80
//输出电压从0到最小值(正弦波1/4部分)
0x800x7c0x790x760x720x6f0x6c0x690x660x63
0x600x5d0x5a0x570x550x510x4e0x4c0x480x45
0x430x400x3d0x3a0x380x350x330x300x2e0x2b
0x290x270x250x220x200x1e0x1c0x1a0x180x16
0x150x130x110x100x0e0x0d0x0b0x0a0x090x08
0x070x060x050x040x030x020x020x010x000x00
0x000x000x000x00
//输出电压从最小值到0(正弦波1/4部分)
0x000x000x000x000x000x000x010x020x020x03
0x040x050x060x070x080x090x0a0x0b0x0d0x0e
0x100x110x130x150x160x180x1a0x1c0x1e0x20
0x220x250x270x290x2b0x2e0x300x330x350x38
0x3a0x3d0x400x430x450x480x4c0x4e0x510x55
0x570x5a0x5d0x600x630x660x690x6c0x6f0x72
0x760x790x7c0x80};

void delay(uchar x) //延时子函数
{
    uchar ij;
    for(i=x;i>0;i--)
    for(j=0;j<=65;j++);    
}
void Delay_1ms(uint x)//1ms延时
{
uchar ij;
for(j=0;j for(i=0;i<=148;i++);
}
void write_com(uchar com) //写指令子函数  
{       //根据1602液晶显示器协议编写
    P0=com;   
    lcdrs=0;
    lcdwr=0;
    Delay_1ms(5);
    lcde=0;
    Delay_1ms(5);
    lcde=1; 
}
void write_dat(uchar dat) //写数据子函数
{
    P0=dat;
    lcdrs=1;
    lcdwr=0;
    Delay_1ms(5);
    lcde=0;
    Delay_1ms(5);
    lcde=1;
}
void init()    //初始化子函数
{
    write_com(0x01); //清屏
    write_com(0x3f); //功能设置
    write_com(0x0d); //显示控制
    write_com(0x06); //输入方式设置
}
/********************************************************************
* 名称 : Keyscan()
* 功能 : 实现按键的读取。 
***********************************************************************/
uchar Keyscan(void)
{
uchar n;
//扫描第一行
P2=0xfe;
n=P2;
n&=0xf0;
if(n!=0xf0)
{
  Delay_1ms(20);
  P2=0xfe;
  n=P2;
  n&=0xf0;
  if(n!=0xf0)
{
    switch(n)
{
     case(0xe0):return(7);break;
     case(0xd0):retur

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      110734  2014-12-31 19:27  graph2.DSN
     文件         840  2014-12-31 19:27  graph2.PWI
     文件      110734  2014-12-31 19:19  Last Loaded graph2.DBK
     目录           0  2014-12-27 20:36  prject\
     文件        7189  2014-12-31 19:26  prject\main.c
     文件       13962  2014-12-31 19:14  prject\main.LST
     文件       11224  2014-12-31 19:14  prject\main.OBJ
     文件       10411  2014-12-31 19:14  prject\prj
     文件        2828  2014-12-31 19:14  prject\prj.hex
     文件          55  2014-12-31 19:14  prject\prj.lnp
     文件       17483  2014-12-31 19:14  prject\prj.M51
     文件         433  2014-12-31 19:26  prject\prj.plg
     文件       56080  2014-12-31 19:26  prject\prj.uvopt
     文件       13397  2014-12-27 20:35  prject\prj.uvproj
     文件       56084  2014-12-31 00:11  prject\prj_uvopt.bak
     文件           0  2014-12-27 18:17  prject\prj_uvproj.bak
     文件        6376  2009-05-07 14:37  prject\STARTUP.A51
     文件       14048  2014-12-27 19:14  prject\STARTUP.LST
     文件         758  2014-12-27 19:14  prject\STARTUP.OBJ

评论

共有 条评论