单片机课程设计

发布 2022-10-04 22:26:28 阅读 3292

目录。1 实验目的 3

2 实验要求 3

3实验原理图 3

4实验结果 4

5实验程序 6

6 优缺点分析 10

7心得体会 11

实验九信号发生器设计的**。

一实验目的:

使用proteus开发平台**,使用51单片机、数模转换器件产生三角波信号、方波信号、锯齿波信号、正弦波信号。

二实验要求:

可以使用at89c51,dac0832来实现。

1 可以使用按键选择不同的信号。

2 可以使用lcd或者led显示选择的内容。

三实验原理图。

四实验结果。

三角波。锯齿波。

矩形波。正弦波。

五实验程序。

#include<>

#include<>

#define uchar unsigned char

#define uint unsigned int

#define dac0832_adr xbyte[0x8000] /dac0832的地址。

char code sindat一个正弦波的256的数据。

0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xel,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,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,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,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};

bit flag=0; /flag=0,键未按下;flag=1,键按下。

void delay(uint n延时程序。

uint i;

for (i=0;i //for(i=0;i<100;i++)

void dac0832_conversiononce(uchar out_data) /da转换程序。

dac0832_adr=out_data; /输出数据。

delay(10延时等待转换。

uchar key_scan(void) /键盘扫描程序。

uchar key;

if(p1!=0xff)

delay(10);

key=p1;

if(key&0x0f!=0x0f)

flag=1;//flag;

else flag=0;

return(key);

else return (key=0xff);

void fun_********(void) /产生三角波。

uchar i;

for(i=0;i<255;i++)

dac0832_conversiononce(i);

for(;i>0;i--)

dac0832_conversiononce(i);

void fun_rectangular (void) /产生矩形波。

dac0832_conversiononce (0xff);

delay (1000);

dac0832_conversiononce (0x00);

delay (1000);

void fun_sawtooth (void) /产生锯齿波。

uchar i;

for (i=0;i<255;i++)

dac0832_conversiononce (i);

void fun_sin (void) /产生正弦波。

uchar i;

for(i=0;i<255;i++)

dac0832_conversiononce (sindat [i]);

void main主程序。

uchar key_num;

while(1)

key_num=key_scan();

*if(p1!=0xff)

delay(10);

key=p1;

if(key&0x0f!=0x0f)

flag=~flag;

key_num=key_scan();

if (key_num&0x0f==0x0e)

fun_********();

else if (key_num&0x0f==0x0d)

fun_sawtooth();

else if (key_num&0x0f==0x0b)

fun_rectangular();

else if (key_num&0x0f==0x07)

fun_sin();

switch (key_num&0x0f)

case 0x0e: /转三角波。

do{fun_********();

while (key_scan()&flag==1));break;

case 0x0d: /转锯齿波。

do{fun_sawtooth();

while (key_scan()&flag==1));break;

case 0x0b: /转矩形波。

do{fun_rectangular();

while (key_scan()&flag==1));break;

case 0x07: /转正弦波。

do{fun_sin();

while (key_scan()&flag==1));break;

default: break;

六优缺点分析。

本实验为函数发生器的**,优点就是所出的波形都很精确,利于操作只要简单地按键即可,缺点就是只能输出四种波形即:三角波信号、方波信号、锯齿波信号、正弦波信号,如要在输出其他波形则必须要在写程序连电路,也很麻烦。

六实验总结。

通过本次试验我学会了很多,我们做实验必须要有耐心,不会的东西一定要向老师请教。通过这两天的研究学习,我学会了使用proteus开发平台**,单片机和dac0832,虽然课本上有现成的例题,但是我不能融会贯通,做的还不够好,这说明我对基础知识掌握还是不够,还应加强对课本的熟练程度。同时通过实验还培养了团队意识,明白团队意识的重要性。

一个课题只凭借一个人是做不到的,团体的力量是强大的。

单片机课程设计

可变程序控制器是集微机技术 自动化技术 通讯技术于一体的通用工业控制装置。它可靠性强 性能 比高 使用方便,已在工业控制的各个领域里得到了极为广泛的应用,成为实现工业自动化的一种强有力的工具 1 plc的定义有许多种。国际电工委员会 iec 对plc的定义是 可编程控制器是一种数字运算操作的电子系统...

单片机课程设计

目录。内容提要2 关键词2引言3 一 硬件电路设计3 一 电路板原理3 二 电路元器件3 二 软件设计3 一 秒钟设计方案3 二 时钟设计方案4 结语7单片机时钟设计。内容摘要 一 在实验板上用动态扫描显示00 59秒钟,具体要求如下 一 6m晶振 二 l9 l10显示00 59十进制数并循环,间隔...

单片机课程设计

1 选题背景。1.1 家庭智能防盗报警系统设计的背景及目的。随着经济的发展,人们对防盗 防劫 防火保安设备的需求量大大增加。针对偷盗 抢劫 火灾 煤气泄漏等事故进行检测和报警的系统,其需求也越来越高。家居智能是以家为平台,兼备建筑 自动化,智能化于一体的高效 舒适 安全 便利的家居环境。自动化的家居...