吴志元 基于单片机的函数信号发生器设计(3)

2019-03-11 15:32

shi=(int)date/10; ge=(int)date; temp=date-(int)date; temp1=temp*100;

write_com(0x80+0x42); //十位计算

//写数据地址

write_data(0x30+qian); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); write_data('.');

write_data(0x30+temp1/10); write_data(0x30+temp1); write_data(0x48); write_data(0x5a); }

void xsf(void) //显示频率

{

if(s1num==1)

{

fre=((float)1000/(9+3*ys)); write_f(fre);

}

if(s1num==2) {

fre=((float)100000/(3*ys)); write_f(fre);

}

if(s1num==3) {

fre=((float)1000/(15+3*ys)); //

write_f(fre);

} }

//频率的计算公式//显示频率

//频率的计算公式//显示频率

频率的计算公式 显示频率

8

//

4.3波形切换模块 void keyscanf(void) { d=0; if(s1==0) {

//说明按键1按下了

if(S1_Flag==1)

{

S1_Flag=0;

ChagneFlag=1; s1num++; if(s1num==1) {

//说明是正弦波

//波形加1

ys=0;

write_com(0x80+0x05);

write_data(0x73); //写sine: write_data(0x69); write_data(0x6e); write_data(0x65);

write_data(0x20); //0x20代表空格,即清屏 write_data(0x20); //0x20代表空格,即清屏 }

if(s1num==2) {

//说明是矩形波

ys=10;

write_com(0x80+0x05);

write_data(0x73); //写squrae write_data(0x71); write_data(0x75); write_data(0x61); write_data(0x72); write_data(0x65);

}

if(s1num==3)

//说明是三角波

9

{

ys=0;

write_com(0x80+0x05);

//train

write_data(0x74); write_data(0x72); write_data(0x61); write_data(0x69); write_data(0x6e);

write_data(0x20);

} if(s1num==4) {

s1num=0;

P1=0;

write_com(0x80+0x05); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20);

write_data(0x20); write_data(0x20);

write_com(0x80+0x42);

write_data(0x20);

write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20); write_data(0x20);

write_data(0x20);

write_data(0x20); write_data(0x20);

//0x20代表空格,即清屏 //清屏

//设置为第二行

10

write_data(0x20);

write_data(0x20); }

write_data(0x20);

write_data(0x20);

}

}

4.4定时模块

void system_Ini(void) {

TMOD|= 0x11;

//定时器0工作方式1,定时器1工作在方式1

//系统初始化

TH1 = 0xD8; //10 TL1 = 0xF0;

IE = 0x8A; TR1 = 1; }

//10MS的定时

//开关中断和定时器1中断 //开启定时器1

5.基于单片机的函数信号发生器具体硬件实现

5.1单片机的最小系统

AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用AT89C51单片机构成最小应用系统时,由于集成度的限制,最小应用系统只能用作一些小型的控制单元。

11

图5-1 89C51单片机最小系统

如图5-1所示AT89C51各引脚功能:1.P0.0-P0.7:P0口的8位双向三态I/O口线。2.P1.0-P1.7:P1口的8位准双向口线。3.P2.0-P2.7:P2口的8位准双向口线。4.P3.0-P3.7:P3口的8位具有双重功能的准双向口线。5.PSEN:外部程序存储器读选通信号,读外部ROM时PSEN低电平有效。6.ALE:地址锁存控制信号。7.EA:访问程序存储器控制信号,当EA为高电平或悬空时,对ROM的读操作限制在内部程序存储器;当EA为低电平时,则对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器。8.RST:复位信号,复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。9.XTAL1和XTAL2:外接晶体引线端,当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 P3口线的第二功能如表5-1所列。

表5-1 P3口线的第二功能 口线 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 时钟电路

12

[6]

第二功能 RXD TXD INT0 信号名称 串行数据接收 串行数据发送 外部中断0申请 外部中断1申请 定时器/计数器0计数输入 定时器/计数器1计数输入 外部RAM写选通 外部RAM读通 INT1 T0 T1 WR RD


吴志元 基于单片机的函数信号发生器设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新目标英语九年级新版第八单元教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: