东西做的比较粗糙,但是还是发出来吧,哪怕是有人复制一下数组,也可以让人家少写个辅助的小程序。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
一共有32个按键,第一个是模式选择键,有三种模式,同时控制三盏LED显示模式
模式1中第二个键为传统电键,就是谍报剧里经常看见的那种
模式2中第二三个键构成了双桨自动电键,按住就连续持续发点或者划
模式3中后26个键是个英文字母,自动发报
有一个卡了一整子的点是,我不理解,为啥MSP430搞矩阵键盘,只能是输出低电平,拉低某一引脚,我不是学这个的,也没深究。
示波器输出两种波形,一种是电报波,另一种是调制波,调制波的频率就是系统的总“帧率”
D4是自动发报提示,熄灭表示在自动发报,自动发报序列里面有东西,是不响应新发报请求的
D5是暂停提示,熄灭时表示暂停记录
LCD显示已经保存的电报,支持暂停保存,清空已有,自动重发。
缓存32位的01串,实际上人的操作可能会有一点相位差,那么根据奈奎斯特采样定律,采用两倍采样即可完成无损还原。所以程序内部存储为64位。理想来说,应该用移位来处理的,实际上为了写起来方便,用了64个int,大概率会影响时序什么的。
使用了若干计数器,每10个程序帧,记录一次,每20个程序帧显示一次,等等。
电码的码率是,额,玄学,因为我不懂引入外部中断什么的,整个时序逻辑还是挺怪的。而且在仿真情况下,delay也不清楚究竟怎延迟,还要驱动LCD。或许将程序帧和外部的某个计时中断绑定,可以一定程度上解决问题,但我的单片机编程是现学现卖的,只要能过学校老师的验收就行,我是学信安的,有不足的地方就卖个萌混过去吧0v0。
单片机代码如下,变量命名比较乱,ACM打多了改不过来了