⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 top.c

📁 lcd1602显示系统 EWB Quartus2编译 电子综合设计试验箱程序
💻 C
字号:
/*电子综合设计实验箱测试程序
说明:此程序为51单片机系统模块,键盘LED模块,LCD1602显示模块,LCD12864显示模块
万能板模块测试程序
插上跳线冒J104确保总线给其他模块供电
技术支持:qq:190189667 胡玉贵
*/
#include <reg51.h>
#include <absacc.h>
#include <string.h>
#include<INTRINS.H>
#include "lcd.h"
#include "serial.h"
//#include "lcd12864.h"



sbit sdata=P0^3;
sbit sclk=P0^4;
sbit load=P0^5;
sbit ldac=P0^6;
//注意跳线冒P13~P15插到右边
sbit ds=P1^3;
sbit sh=P1^4;
sbit st=P1^5;

//AD9850控制引脚,注意将P32~P35的跳线冒插到左边
sbit DDS_reset=P3^2;
sbit DDS_sclk=P3^3;
sbit DDS_load=P3^4;   //FQUD
sbit DDS_sdata=P3^5;  //DATA

typedef unsigned char uint8;
//extern uint8 code tab[13];
//extern uint8 d[8];
#define uchar unsigned char


/*************************AD9850初始化********************************/
void  ad9850init()
{
  DDS_reset=0;
  DDS_reset=1;
  DDS_reset=0;
  DDS_load=0;
}

/*************************AD9850显示正弦波********************************/
AD9850(float freq)
{
    float fw;
    uchar temp;
	uchar i,j;
    uchar d[5];
//   fw=freq*34.359738368;                     //d[4]中存放控制字最高位,即相位控制字
                                               //Freq=MCLK*FW/2^32
    fw=freq*85.89934592;
    d[4]=0;
    d[0]=(unsigned long)fw;
    d[1]=(unsigned long)fw>>8;
    d[2]=(unsigned long)fw>>16;
    d[3]=(unsigned long)fw>>24;
    DDS_load=0; 
    DDS_sclk=0; 
    DDS_sclk=1;
    DDS_sclk=0;
    DDS_load=1;
    DDS_load=0;
     for(i=0;i<5;i++)
     {
        temp=d[i];
        for(j=0;j<8;j++)
        {
            DDS_sclk=0;
            if(temp&1) DDS_sdata=1;
            else DDS_sdata=0;
            DDS_sclk=1;
            temp=temp>>1;
         }
      }

      DDS_load=1;
      DDS_load=0;
	  DDS_load=0;
	  DDS_load=0;
}


void WriteSIOByte(unsigned char led,unsigned char sel,unsigned char seg) 
{ 
  unsigned char i; 
   	for (i=0;i<8;i++)
	{
		led=led<<1; ds=CY; sh=1; sh=0;  
     }
	_nop_();//延时
   	for (i=0;i<8;i++)
	{
		sel=sel<<1; ds=CY; sh=1; sh=0;  
     }  
	_nop_();//延时
   	for (i=0;i<8;i++)
	{
		seg=seg<<1; ds=CY; sh=1; sh=0;  
     }

  //SER=1;//释放数据总线 
//以下3条指令若在多字节时,应该移入多字节全发送完后在执行此3条指令 
   st=0; 
 // #asm("nop");//延时 
   //delay(2);
   st=1;//打入并行数据 
}  

main()
{
	unsigned char xdata i,str[]="freq:1K ";
	unsigned char xdata str2[]="KeyValue:";
	//unsigned int v;
	ad9850init();
	AD9850(1000);//AD9850输出1KHZ的正弦波
    WriteSIOByte(1,0,0);//防止蜂鸣器乱叫
	InitSerial();
	//Timer0Init();
	InitSerialBuffer();//初始化串口波特率:9600bps
	LCDInit();
	LCDWriteCommand(0x80);
	for(i=0;i<strlen(str);i++)
	   LCDWriteData(str[i]);
	LCDWriteCommand(0xC0);
	for(i=0;i<strlen(str2);i++)
	   LCDWriteData(str2[i]);
	while(1)
	{	
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -