第三章 系统软件设计
软件部分主要包括了具有友好界面的操作菜单,各种信号的设置和控制。正弦波产生过程为:频率设置,数据处理,然后控制DDS芯片完成各种频率的正弦波产生;调频信号产生过程:通过A/D转换器采集调制信号,然后根据调制信号的幅度计算出频偏,把频偏数据下载到DDS即可实现调频信号的产生。
软件流程图:
图3-1 计算机毕业设计软件流程图:
3.1 初始化A/D9850
void init_9850(void)
{
RST_9850=0;dds_up=0; //清除9850复位信号和9850频率更新信号
WR_9850=0x00;WR_9850=dp0_d32;WR_9850=dp0_d24;WR_9850=dp0_d16;WR_9850=dp0_d08;
dds_up=1; //9850频率更新信号有效
}
void set_ad9850(void)
{
RST_9850=1;dds_up=1;
_Nop_();_Nop_();
RST_9850=0;dds_up=0;
WR_9850=0x00;WR_9850=tp1_d32;WR_9850=tp1_d24;WR_9850=tp1_d16;WR_9850=tp1_d08;
dds_up=1;
3.2 初始化LCD图3-2 初始化LCD流程图
MOVLW .40
CALL DELAY_2
MOVLW B'00110000' ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00110000' ;功能设定
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00001100' ;显示状态开/关
MOVWF DAT
CALL W_COMMOND
CALL DELY_1
MOVLW B'00000001' ;清除显示
MOVWF DAT
CALL W_COMMOND
VLW .10
CALL DELAY_2
MOVLW B'00000110' ;进入点设定
MOVWF DAT
CALL W_COMMON
3.3 初始化PIC16F877程序
void INIT877()
{
PORTA=0;
PORTB=0;
PORTC=0;
PORTD=0;
PORTE=0;
TRISA=0xff;
TRISB=0xfd;
TRISC=0xd7; // SCK, SD输出,SDI:输入
TRISD=0;
TRISE=0x03; // 片选CS 信号输出
PORTA=0xff;
PORTB=0x03; // RST=1
PORTC=0;
PORTD=0xff;
PORTE=0x04;
return;
}
4.4 AD9850控制字写入
图3-3 AD9850控制字写入
#define PORTCIT(adr,bit) ((unsigned)(&adr)*8+(bit));
static bit W_CLK @ PORTCIT(PORTA,0);
static bit fq_ud @ PORTCIT(PORTA,1);
main
{
int i;
for (i=0;i<32;i++);
{
w_clk=0;fq_ud=0;
PORTD=0;
w_clk=1; fq_ud=1;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=1;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=0;
PORTD=(x0/65535)/255;
w_clk=1; fq_ud=0;
PORTD=(x0/65535)/255;
w_clk=1, fq_ud=0;
}
fq_ud=1;
}
4.5 键盘扫描显示
图3-4 键盘扫描显示
CALL KEYSCAN ;调用键盘扫描子程序
COMF VALUE ;
BTFSC STATUS,Z ;测试有没有按下,有,跳过下条指令
GOTO CHECK ;无,则继续进行下一条指令
MOVLW DATA1
CALL DELAY ;产生时延
KEYSCAN CLRF PORTB ;b1和b2两条线置0
NOP;
NOP ;延时使引脚电平稳定
MOVF PORTB ,W
ANDLW 0X30; ;只检查B4和B5两位,屏蔽其他
SUBLW 0X30
BTFSC STATUS,Z
BCF FLAG,F0; ;清除标志F0,表示键没按下
NOP
BTFSS STATUS,Z
BSF FLAG ;表示键没按下
RETURN
4.6 LCD显示
#INCLULDE (P16F877)
RS EQU 01H ;定义PORTD的位地址
E EQU 05H ;定义PORTC的位地址
LCD—DATA1 EQU 70H ;定义数据暂存器
BYTE EQU 71H ;定义数据暂存器
ORG 00H
GOTO START
SEMDCMD ;命令送到LCD
MOVWF BYTE ;存WREG到BYTE寄存器
SWAPF BYTE,W ;写入高半字节
Movwf LCD_DATA1
Rlf LCD_DATA1,1
Rlf LCD_DATA1,1
Movlw 0x3c
ANDWF LCD_DATA1,1
MOVF LCD_DATA1,W
MOVWF PORTD
Bcf PORTD,RS ;设置为送命令模式
BSF PORTC ;E发送数据信号
BSF PORTC,E
MOVF BYTE
MOVWF LCD_DATA1
RLF LCD_DATA1,1
RLF LCD_DATA1,1
MOVLW 0X3C
ANDWF LCD_DATA1,1
MOVF LCD_DATA1,W
MOVWF PORTD
BCF PORTD,RS ;设置为送命令模式
BSF PORTC ;E发送数据信号
BCF PORTC,E
CALL YS ;调延时子程序,等待LCD忙碌过后
RETURN
YS MOVLW OFH ;延时子程序
MOVWF 21H
ZM2 MOVLW 0FFH
MOVWF 22H
ZM1 DECFSZ 22H
GOTO ZM1
DECF SZ 21H
GOTO ZM2
RETURN
计算机毕业设计总结
本设计以信号发生源为研究对象,使用PIC16F877单片机作为主控制器,通过AD9850产生频率并且经过DDS技术对频率的合成以完成对信号发生源的研制。文中详细介绍了AD9850并行方式的工作原理,DDS的合成技术,PIC16F877芯片功能和对AD9850的程序控制。本设计其他的部分包括人机界面(键盘控制)技术的实现,LCD液晶显示等。
在完成本次设计的过程中,遇到了很多的困难。在老师和同学们的帮助下,这些困难被一一克服了。通过本次设计,我不仅学习到了AD9850和PIC系列单片机的知识,更拓展了自己的视野。
当然,由于涉及的时间较短,加之对新的单片机系列比较陌生,设计之中还有很多不足的地方需要改进,真诚希望老师,前辈指正!
参考文献
[1] 窦振中,汪立森. PIC系列单片机的应用设计与实例. 第二版. 北京. 北京航空航天大学出版社. 1999. P20-P87
[2] 王有绪,许杰. PIC系列接口技术及应用系统设计. 第一版. 北京. 北京航空航天大学出版社. 2000. P56-P126
[3] 窦振中. PIC系列单片机原理与程序设计. 第一版. 北京. 北京航空航天大学出版社. 1998. P52-P180
[4] 李学海. PIC系列单片机实践. 第二版. 北京. 北京航空航天大学出版社. 2004. P123-P186
[5] 周耀华,汪凯仁. 数字信号处理. 第二版. 上海. 复旦大学出版社. 1991. P39-P131
[6] 刘和平. PIC16F87X单片机实用软件与接口技术----汇编语言及其应用. 第一版. 北京. 北京航空航天大学出版社.2002. P211-P259
[7] 陈国先. PIC弹片机原理与接口技术. 第二版. 北京. 电子工业出版社. 2004. P15-P41
[8] 施庆隆. PIC16F877单片机原理与专题应用. 第一版. 北京.电子工业出版社. 2003. P55-P99
[9] 刘和平,黄开长. PIC16F877数据手册.第一版. 北京. 北京航空航天大学社.2001.P133-P151
[10] Mircrochip.PIC16F877 Data Sheet .1999. P179-P219
[11] Peatman john B.Design With PIC Mirocontrolers. 2000. P227-P249
[12] Mircrochip.Stand-Alone CAN Controler with SPI Interfaces. 北京. 北京航空航天大学出版社. 2001. P117-139
计算机毕业设计致谢
我的毕业设计终于在李庆华老师的悉心指导下完成了。从开始制作到完成,共经过了十个周的时间。作为一名即将离开大学校门的学生,我把毕业设计看作是大学中的最后一门功课,也投入了巨大的时间和精力。设计题目是单片机实现AD9850信号发生源的研制.由于大学中接触过的单片机都是51系列的,而且AD9850对我来说也是一个全新的器件.因此仅靠自己的力量完成设计的任务难度相当大,在制作设计的过程中也确实遇到了许多棘手的问题,碰到了很多的困难。但是这些问题和困难在老师和同学们的帮助下都被一一解决。
在毕业设计的这段时间里,老师们言传身教,以他们广博的知识,敏锐的洞察力,多年的教学和实际工作经验,在毕业设计上给予我很大的帮助。在本次设计中我学到的不仅是科学知识和工作方法,更学到了作为一个研究人员应有的治学态度以及为人处世的道理,这一切都将使我终身受益,谨在此向邱书波院长,张迎春老师,李庆华老师致以崇高的敬意和衷心的感谢!
同时,对在设计中给予我支持和帮助的李现伟同学,张作栋同学一并表示衷心的感谢!