我也是最近学习单片机和MATLAB的小白平时在看学习的时候 下载了一些有价值的参考文献
概述采用51单片机,atmel的STC89C52RC芯片,主要用到的是七段数码管用来做一个时钟,程序编写软件为keil,烧录软件为STC-ISP 4.88,串口调试软件用的是sscom42。
运用Matlab的GUI工具编辑一个可视化界面,用以跟单片机进行串口通信
实现功能运用keil编写时钟程序,烧录到单片机中,时钟程序实现的功能是实现时钟的显示,并且能用开发板上的三个按钮进行时钟的修改,一个按钮进入修改模式,另两个实现时间的增减。
编辑GUI界面,实现对单片机的控制,其中,GUI界面通过串口能不断的采样开发板上时钟的数值,并在GUI界面上进行显示。同样的,可以通过GUI界面实现对开发板上时钟的修改。
具体实现开发板部分:
B) Matlab GUI界面的编辑
效果图如下,操作说明:START点击开始,采集单片机时钟时间,ADJUST点击进入修改模式,同时单片机开发板亦会进入修改模式,EXIT点击关串口,退出界面,GET点击获取当前值,另外一些辅助按钮,滑块按钮都有各自功能,易于理解。
其中:添加控件,具体略
START添加callback:
global s
s=serial('COM10');
fopen(s);
handles.timer = timer('TimerFcn',{@mycallback,handles}, 'Period',0.01,'ExecutionMode','FixedRate');
start(handles.timer);
ADJUST添加callback:
a=get(handles.text8,'String');
set(handles.text28,'String',a);
a=get(handles.text10,'String');
set(handles.text27,'String',a);
a=get(handles.text13,'String');
set(handles.text25,'String',a);
a=get(handles.text14,'String');
set(handles.text24,'String',a);
a=get(handles.text15,'String');
set(handles.text22,'String',a);
a=get(handles.text16,'String');
set(handles.text21,'String',a);
global s
fwrite(s,0);EXIT添加callback:
global s
fclose(s);
close;GET添加callback:
global s
a=fread(s,6);
set(handles.text8,'String',a(6));
set(handles.text10,'String',a(5));
set(handles.text13,'String',a(4));
set(handles.text14,'String',a(3));
set(handles.text15,'String',a(2));
set(handles.text16,'String',a(1));调整时钟 调整分钟 调整秒钟 都添加callback:
global s
a=str2num(get(handles.edit1,'String'));
fwrite(s,a);SLIDER1添加callback:
a=get(handles.slider1,'value');
set(handles.edit1,'String',a);
C)操作说明
1. 开发板上的按钮修改时钟显示
2. 开发板上时钟显示
3. START前的开发板以及GUI界面,此时GUI界面的时钟无显示
4. START点击后GUI有了显示,与开发板显示一致
5. ADJUST点击后进入修改模式