今天花了一个上午写了个略微拉风的程序,IAP15F2K61S2开了定时器0中断,每5ms中断一次,然后我把按键的消抖包括按键功能部分移到了定时器中断里,第一次这么干,好激动!!!之后使用了printf来发送正弦表,波形显示在电脑端的Serial Chart中,正弦表使用matlab产生:
先上Serial Chart的效果图(0位置处有抖动,暂时也没查出来是哪的问题,是printf输出格式问题么?):
工程的组织目录如下:
程序说明:
/**********************************************************************
作 者:weifengdq(联系方式:[email protected])
最后修改:2014-4-8
版 本:V1.1
修订历史:使用了printf来发送数据(可以发送小数)
删除了Key_Scan()函数
独立按键的扫描放在了定时器0的中断服务里
按键的功能部分移到了定时器0的中断服务里
主控芯片:IAP15F2K61S2
外围器件:LED
Key
Buzzer
LCD1602
程序说明:测试按键、LED、蜂鸣器、1602液晶
测试定时器0中断(中断服务函数在timer.c中)
串口使用printf来发送,可以发送浮点数
使用printf来打印一个正弦表,在Serial Chart软件中显示
*************************************************************************/
matlab的代码(使用2011b-64bit版本):
/*************************************************************************
%% 正弦表的产生
%先在matlab工作目录下新建一个wf_sin.txt文件,运行以下程序
x=0 : pi/100 : 2*pi; %x取值范围0~2*pi;步进长度pi/100,共计201个数
y=sin(x);
fid=fopen('wf_sin.txt','w'); %以写的方式打开wf_sin.txt文件
fprintf(fid,'%.2f, ',y); %注意手动删除掉最后一个逗号
fclose(fid); %关闭文件
*************************************************************************/
Serial Chart代码:
[_setup_]
port=COM4
baudrate=115200
width=1200
height=400
background_color = black
grid_h_origin = 0
grid_h_step = 200
grid_h_color = #EEE
grid_h_origin_color = #CCC
grid_v_origin = 0
grid_v_step = 100
grid_v_color = #EEE
grid_v_origin_color=#CCC
[_default_]
min=-100
max=100
[pulsetime0]
color=blue
min=-1
max=1
Serial Chart 的使用方法可以参见我翻译的文章:
链接:http://pan.baidu.com/s/1bnrKvH9 密码:ohvt
原帖是我在去年发表在开源电子网的:
http://www.openedv.com/posts/list/21627.htm
点击打开链接
至于串口端总是接收到大量的0,换了串口调试助手依然如此,这个问题暂时无解,求高手作答。。。
最后上传 全部源代码:
链接:http://pan.baidu.com/s/1bnBxlx1 密码:hrxp