AD9833-S52单片机-主程序(共10页).doc
《AD9833-S52单片机-主程序(共10页).doc》由会员分享,可在线阅读,更多相关《AD9833-S52单片机-主程序(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上#include /调用头文件(单片机内部的寄存器定义)#define uchar unsigned char#define uint unsigned int/*本段为硬件I/O口定义*/sbit LCD_E = P11;/定义1602液晶的使能管脚;sbit LCD_RW = P12;/定义1602液晶的读写管脚; sbit LCD_RS = P13;/定义1602液晶的选通管脚; sbit ddsen = P14; /ad9833的使能引脚;/sbit sda = P17; /ad9833的数据引脚;/sbit sclk = P16; /ad9833的时钟引脚;
2、 #define LCD_DATA P2 /向1602液晶传送数据的端口,这里用的是P2口;#define LCD_BUSY 0x80 / 用于检测LCD的忙标识(本程序中用的是延时,未检测) /LCD显示内容,定义到代码段;unsigned char code LcdBuf1= FRQ: Hz;unsigned char code LcdBuf2= Step:;double Con_Word_1 = 0x00;/定义了一个浮点变量,用于计算控制字;double Con_Word_2 = 0x00;/定义了一个浮点变量,用于计算控制字;long uint ConTrol_Word = 0x00
3、;/用来存储控制字的数值;long uint Frequency_Out;/设置的频率值;uchar a,b,c,d,e,f,g,h; /为了向1602写入频率值,首先将频率值拆分存于这8个变量中;sbit Light = P10; /程序状态指示灯,它与单片机对9833控制无关,只是调试程序的时候使用!/定义按键;2X3矩阵键盘;sbit P3_3 = P33;sbit P3_4 = P34;sbit P3_5 = P35;sbit P3_6 = P36;sbit P3_7 = P37; uchar dat = 0;/键盘子程序处理过程中使用的中间变量;uchar keyzhi = 0x00
4、;/键值;键盘扫描子程序的返回值存于该变量中;/函数声明void lcd_init(void);/1602液晶初始化子程序;void display_string(unsigned char x,unsigned char y,unsigned char *s);/显示字符子程序;x、y是坐标;x:从左边数起第几个字符:y:是第一行还是第二行; /* 函数名称: delay* 入口参数:h(unsigned int型)* 出口参数:无* 功能描述: 短暂延时,使用11.0592晶体,约0.01MS*/void delay(long unsigned int h) while(h-); /延时子
5、程序/* 函数名称: WriteDataLcd* 入口参数:wdata(unsigned char型)* 出口参数:无* 功能描述: 写数据到LCD*/void WriteDataLcd(unsigned char wdata)/向1602液晶写入数据; LCD_RS=1; LCD_RW=0; LCD_E=0; LCD_E=1; LCD_DATA=wdata; delay(100); /短暂延时,代替检测忙状态 LCD_E=0;/* 函数名称: WriteCommandLcd* 入口参数:wdata(unsigned char型)* 出口参数:无* 功能描述: 写命令到LCD*/void Wr
6、iteCommandLcd(unsigned char wdata)/向1602液晶写入命令; LCD_RS=0; LCD_RW=0; LCD_E=0; LCD_E=1; LCD_DATA=wdata; delay(100); /短暂延时,代替检测忙状态 LCD_E=0; /LCD初始化void lcd_init(void) LCD_DATA = 0; delay(1000); WriteCommandLcd(0x38); delay(500); WriteCommandLcd(0x38); /显示模式设置 delay(500); WriteCommandLcd(0x38); /显示模式设置
7、delay(500); WriteCommandLcd(0x01); /关闭显示 WriteCommandLcd(0x38); /显示清屏 WriteCommandLcd(0x0c); /显示光标移动设置 WriteCommandLcd(0x06); /显示开及光标移动设置/* 函数名称: display_xy* 入口参数:x(unsigned char型),y(unsigned char型)* 出口参数:无* 功能描述: 设置光标位置, x是行号,y是列号*/void display_xy(unsigned char x,unsigned char y) if(y=0x01) x = x +
8、 0x40 + 0x80; else x = x+0x80; WriteCommandLcd(x);/* 函数名称: display_string* 入口参数:x(unsigned char型),y(unsigned char型),s(指针型)* 出口参数:无* 功能描述: 在具体位置显示字符串,以/0结束,x是列号,y是行号*/void display_string(unsigned char x,unsigned char y,unsigned char *s) display_xy(x,y); while(*s) WriteDataLcd(*s); s+; Qu_Chu_Shu_Ma_G
9、e_Wei() /取出要显示的每一位数据; a = Frequency_Out % 10; b = (Frequency_Out % 100)/10; c = (Frequency_Out % 1000)/100; d = (Frequency_Out % 10000)/1000; e = (Frequency_Out % )/10000; f = (Frequency_Out % )/; g = (Frequency_Out % )/; h = (Frequency_Out % )/; display_data() /显示数据子程序Qu_Chu_Shu_Ma_Ge_Wei();/取出要显示的
10、每一位数据;display_string(1,0,LcdBuf1);/显示第一行,从第2个位置开始WriteCommandLcd(0x85);/显示数值的话,用其真实的地址,如0x83等,WriteDataLcd(0x30+h); /如果要显示字符的话,暂时用x、y坐标的方式WriteDataLcd(0x30+g);/以下都是送显示数据;WriteDataLcd(0x30+f);WriteDataLcd(0x30+e);WriteDataLcd(0x30+d);WriteDataLcd(0x30+c);WriteDataLcd(0x30+b);WriteDataLcd(0x30+a); /sc
11、an_KEY(void) /键值处理子程序uchar key = 0;key = P3; key = key & 0xf8; switch(key) case 0xb0: keyzhi = 3 ;break; case 0xa8: keyzhi = 2 ;break; case 0x98: keyzhi = 1 ;break; case 0x70: keyzhi = 6 ;break; case 0x68: keyzhi = 5 ;break; case 0x58: keyzhi = 4 ;break; default: keyzhi=0; return(keyzhi);keychuli()/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AD9833 S52 单片机 主程序 10
限制150内