集体备课有效性研究结题报告docxWord文档格式.docx
《集体备课有效性研究结题报告docxWord文档格式.docx》由会员分享,可在线阅读,更多相关《集体备课有效性研究结题报告docxWord文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
(2)完成硬件原理图的设计,并选择相关元器件。
(3)完成控制软件流程图的设计,编写相应的单片机控制程序。
(4)撰写设计报告。
四、应收集的资料及主要参考文献:
1.李建忠.单片机原理及应用.西安电子科技大学出版社,2008
2.杨居义.单片机课程设计指导.清华大学出版社,2009
3.李海滨等.单片机技术课程设计与项目实例.中国电力出版社,2009
以及与51系列单片机相关的文献及教材。
五、审核批准意见
教研室主任(签字)
正弦信号发生器设计方案框图
图1-1硬件设计方框图
DAC0832硬件简介
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种连接方式:
直通方式、单缓冲方式和双缓冲方式。
1、双缓冲方式:
进行两级缓冲;
2、单缓冲方式:
只进行一级缓冲;
3、直通方式:
不进行缓冲,适用于比较简单的场合。
本设计采用的是直通连接方式。
具体电路设计如图1-2所示:
图1-2DAC0832连接图
放大整形电路
为了输入的是小信号时也能对精确的测出它的频率,所以在信号的输入口加电压放大。
有时输入的信号波形不是很好时,放大后也是失真的信号,这就会影响到所测信号的频率,因此要经过整形。
其电路如图1-3所示:
图1-3放大整形电路
振荡电路
单片机必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
系统所采用的振荡电路如图1-4所示。
图1-4振荡电路图
系统选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:
一是帮助振荡器起振;
二是对振荡器的频率进行微调。
C1,C2的典型值为30PF。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,常用fosc表示。
如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12μs。
复位电路
复位电路如图3-7所示,采用上电复位,由极性电容C3和电阻组成。
复位电路具有上电自动复位功能,高电平有效,在正常工作状态下复位管脚为低电平。
其电路如图1-5所示
图1-5复位电路
键盘电路
键盘电路如图所示,P2.0对应的按键有启动和停止作用,P2.1对应的按键是减少频率,P2.1对应的按键是加频率。
电路如图1-6所示
图1-6键盘电路
显示电路
显示电路如图1-7所示,频率通过与单片机相连接的LM016L显示
图1-7显示电路
软件设计和仿真调试
正弦信号发生器程序的流程图
图2-1程序流程图
程序设计:
#include<
reg51.h>
//头文件
#defineucharunsignedchar
#defineuintunsignedint
sbitlcdrw=P3^3;
//位变量的定义,显示器选通信号
sbitlcdrs=P3^2;
//位变量的定义,显示器读写信号
sbitlcde=P3^4;
//位变量的定义,显示器使能信号
sbitk1=P2^0;
//位变量的定义,按键1
sbitk2=P2^1;
//位变量的定义,按键2
sbitk3=P2^2;
//位变量的定义,按键3
sbitcs1=P3^5;
//位变量的定义,DAC0832片选信号
sbitcs2=P3^6;
//位变量的定义,DAC0832数据传送信号
uchars1num,a,ys,j;
//变量的定义(字符型),延时变量
uintfre;
//变量的定义(整型)频率值
ucharcodetosin[256]={
0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,
0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,
0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,
0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,
0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,
0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,
0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,
0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,
0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,
0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,
0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,
0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,
0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,
0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,
0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,
0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,
0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,
0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,
0x76,0x79,0x7c,0x80};
/*正弦波码*/
voiddelay(uintz)//延时子程序
{
uchari,j;
for(i=z;
i>
0;
i--)
for(j=50;
j>
j--);
//设置频率最大值为50HZ
}
voiddelay1(uinty)//延时子程序
uinti;
for(i=y;
i--);
voidwrite_com(ucharcom)//LM160L写指令
{
lcdrs=0;
//LM160L选通信号
P1=com;
delay(5);
lcde=1;
lcde=0;
voidwrite_data(uchardate)//向LM160l发送数据
{lcdrs=1;
P1=date;
}
voidinit()//初始化
lcdrw=0;
cs2=0;
cs1=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x00);
write_data(0x77);
//写wave:
write_data(0x61);
write_data(0x76);
write_data(0x65);
write_data(0x3a);
write_com(0x80+0x40);
//写f:
write_data(0x66);
voidwrite_f(uintdate)//写频率
ucharshi,ge;
shi=date/10%10;
ge=date%10;
write_com(0x80+0x42);
write_data(0x30+qian);
write_data(0x30+bai);
write_data(0x30+shi);
write_data(0x30+ge);
write_data(0x48);
write_data(0x5a);
voidxsf()//显示频率
if(s1num==1)//if语句(判断是否是状态1)
{
fre=50-ys;
//频率计算公式
write_f(fre);
//写频率
}
}
voidkeyscanf()//按键部分
if(s1==0)
if(s1==0)
{
while(!
s1);
//无限循环函数
s1num++;
//s1num+1
if(s1num==1)//if语句(判断是否是状态1)
ys=0;
write_com(0x80+0x05);
write_data(0x73);
//写sine:
write_data(0x69);
write_data(0x6e);