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

信号发生器 正弦波 方波 三角波 include include define uchar unsigned char define uint unsigned int sbit cs P2 0 tlc5615 片选端口 sbit clk P2 1 tlc5615 时钟线 sbit din P2 2 tlc5615 传输端口 sbit key1 P1 0 sbit key2 P1 1 按键的单片机接口 uchar keydat uchar flag 波形发生终止信号的标志位 一旦 被置零立马停止发信号 uchar flagsqu 方波高低电平控制为 运用定时器 1 中断控制 uchar m num uchar dat 0 xff uchar code tosin 141 正弦波的编码 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 delay uchar z 延时函数 uchar x y for x 0 x0 y void prepare tlc5615 的初始化 cs 1 din 1 clk 0 cs 0 cs 的上升沿和下降沿必须在 clk 为低时进 用中断来产生方波 void Squtranslator TR1 1 启动定时器 1 控制高低电平 的持续时间 占空比 do do wave 0 while flagsqu 如果一旦终止信号的 产生可以立马退出循环 flagsqu 0 do wave 1 while flagsqu flagsqu 0 while flag flag 1 TR1 0 void Squtranslator 方波函数 uchar j uchar dat1 0 x7f while flag do prepare dat dat1 for j 0 j 7 将数据的最高位赋给 din clk 1 dat dat 1 一位位的传输 clk 0 cs 1 cs 的上升沿和下降沿必须在 clk 为低时进行 delay 200 使高低电平持续一段时间 if dat1 0 dat1 0 x7f 完成了 0 和 0 x7f 之间的替换 else dat1 0 while flag void Tratranslator 锯齿波的发生函数 uchar j uchar dat1 0 x7f while flag do prepare dat dat1 for j 0 j 7 将数据的最高位赋给 din clk 1 dat dat 1 一位位的传输 clk 0 cs 1 cs 的上升沿和下降沿必须在 clk 为低时进行 delay 2 稍加延时 dat1 while flag 一旦有终止信号就可以停止 do prepare dat dat1 for j 0 j 7 将数据的最高位赋给 din clk 1 dat dat 1 一位位的传输 clk 0 cs 1 cs 的上升沿和下降沿必须在 clk 为低时进行 delay 2 稍加延时 dat1 while flag void Sintranslator uchar wave uchar num 正弦波的转换函数 uchar i j uchar dat1 do for i 0 i num i prepare dat1 wave i 打开片选 开始工作 for j 0 j 7 将数据的最高位赋给 din clk 1 dat1 dat1 1 一位位的传输 clk 0 if flag 0 break cs 1 cs 的上升沿和下降沿必须在 clk 为 低时进行 delay 1 稍加延时 if flag 0 break while flag 等待控制键的暂停 void keyscan 切换功能按键返回键值函数 uchar i for i 0 i 4 i if key1 0 delay 10 if key1 0 keydat do while key1 松手检测 if keydat 4 keydat 1 加满回零处理 void keycountrl 切断输出控制函数 if key2 0 delay 10 if key2 0 flag 0 do while key2 松手检测 void main uchar temp TMOD 0 x01 确定定时器的工作方式 TH0 65536 50000 256 给定时器 0 赋予初值 TL0 65536 50000 256 EA 1 开总中断 ET0 1 开启定时器 0 中断 TR0 1 while 1 do switch keydat case 1 flag 1 do Sintranslator tosin 141 while flag break case 2 flag 1 do Tratranslator while flag break case 3 flag 1 do Squtranslator while flag break default break while flag temp keydat 装载键值 while keydat temp 在这里等待键值的改变 void Time0 interrupt 1 TH0 65536 50000 256 定时器 0 用来扫描按键不断地扫 描 d TL0 65536 50000 256 num if num 4 keyscan keycountrl num 0

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值