矩形波发生器 带按键 c语言,信号发生器(正弦波,方波,三角波)51单片机C语言代码[1].doc-资源下载在线文库www.lddoc.cn...

信号发生器_(正弦波,方波,三角波)51单片机_C语言代码[1].doc

/* 信号发生器 (正弦波,方波,三角波) */ /*/ include include define uchar unsigned char define uint unsigned int sbit csP20; tlc5615 片选端口 sbit clkP21; tlc5615 时钟线 sbit dinP22; tlc5615 传输端口 sbit key1P10; sbit key2P11; 按键的单片机接口 uchar keydat; uchar flag; 波形发生终止信号的标志位 一旦 被置零立马停止发信号 uchar flagsqu; 方波高低电平控制为(运用定时器 1 中断控制) uchar m,num; uchar dat0 xff; uchar code tosin141 正弦波的编码 0 x00,0 x01,0 x02,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08, 0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15,0 x16, 0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x25,0 x27,0 x29,0 x2b, 0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45, 0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,0 x5a,0 x5d,0 x60,0 x63, 0 x66,0 x69,0 x6c,0 x6f,0 x70,0 x71,0 x72,0 x73,0 x74,0 x75, 0 x76,0 x77,0 x78,0 x79,0 x7a,0 x7b,0 x7c,0 x7d,0 x7e,0 x7e, 0 x7f,0 x80,0 x7f,0 x7e,0 x7e,0 x7d,0 x7c,0 x7b,0 x7a,0 x79, 0 x78,0 x77,0 x76,0 x75,0 x74,0 x73,0 x72,0 x6f,0 x6c,0 x69, 0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c, 0 x48,0 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30, 0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a, 0 x18,0 x16,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a, 0 x09,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01, 0 x00; void delayuchar z 延时函数 uchar x,y; forx0;x0;y; void prepare tlc5615 的初始化 cs1; din1; clk0; cs0; cs 的上升沿和下降沿必须在 clk 为低时进 /* 用中断来产生方波 void Squtranslator TR11; 启动定时器 1 控制高低电平 的持续时间 占空比 do do _wave0; whileflagsqu 如果一旦终止信号的 产生可以立马退出循环 flagsqu0; do _wave1; whileflagsqu flagsqu0; whileflag; flag1; TR10; */ void Squtranslator 方波函数 uchar j; uchar dat10 x7f; whileflag do prepare; datdat1; forj0;j7; 将数据的最高位赋给 din clk1; datdat7; 将数据的最高位赋给 din clk1; datdat7; 将数据的最高位赋给 din clk1; datdat7; 将数据的最高位赋给 din clk1; dat1dat11; 一位位的传输 clk0; ifflag0break; cs1; cs的上升沿和下降沿必须在clk为低 时进行 delay1; 稍加延时 ifflag0break; whileflag; 等待控制键的暂停 void keyscan 切换功能按键返回键值函数 uchar i; fori0;i4;i ifkey10 delay10; ifkey10 keydat; dowhilekey1; 松手检测 ifkeydat4keydat1;加满回零处理 void keycountrl 切断输出控制函数 ifkey20 delay10; ifkey20 flag0; dowhilekey2; 松手检测 void main uchar temp; TMOD0 x01; 确定定时器的工作方式 TH065536-50000/256; 给定时器 0 赋予初值 TL065536-50000256; EA1; 开总中断 ET01; 开启定时器 0 中断 TR01; while1 do switchkeydat case 1 flag1;doSintranslatortosin,141;whileflag;break; case 2 flag1;doTratranslator;whileflag;break; case 3 flag1;doSqutranslator;whileflag;break; defaultbreak; whileflag; tempkeydat; 装载键值 whilekeydattemp; 在这里等待键值的改变 void Time0 interrupt 1 TH065536-50000/256; 定时器 0 用来扫描按键不断地扫 描 d TL065536-50000256; num; ifnum4 keyscan; keycountrl; num0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值