- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(在两个中)识别最大模拟输入通道
任务
利用0809采集两路模拟电压,将电压值最大的通道号显示在LED显示器上。(硬件电路参见AD_CH2_1.DSN)。
设计参考:
① 算法:依次采集两路模拟电压,并将其保存。当所有通道都采集完后,比较通道的采样值,将采样值最大的通道号显示(当采样值一样时,显示其中最小通道编号)。注:通道IN0~IN7的编号分别为0~7。
② LED显示的段码:
字符 编码
0 0C0H
1 0F9H
2 0A4H
3 0B0H
4 99H
5 92H
6 82H
7 0F8H
8 80H
9 90H
③ 地址分配:
0809片选地址 3C00H
通道地址 片选地址+通道编号
3X3键盘扫描
任务
利用8155的PB、PC口实现3X3键盘扫描(硬件电路参见3X3KEY_8155.DSN)。当1~8号键独立按下时,连接在PA口对应的LEDx点亮(即1号键按下时LDE1亮,2号键按下时LDE2亮),当9号键按下时,所有LED点亮,当没有键按下时,所有LED熄灭。
设计参考:
① 8155命令/状态寄存器格式:
PA 0=A口输入;1=A口输出
PB 0=B口输入;1=B口输出
PC2PC1 00=A口、B口基本输入输出,C口输入
01=A口、B口基本输入输出,C口输出
10=略
11=略
IEA 略
IEB 略
TM2TM1 略
② 8155端口地址分配:
控制口 7F00H
PA 7F01H
PB 7F02H
PC 7F03H
3X3键盘扫描
任务
利用8255的PC口实现3X3键盘扫描(硬件电路参见3X3KEY_8255.DSN)。当1~8号键独立按下时,连接在PA口对应的LEDx点亮(即1号键按下时LDE1亮,2号键按下时LDE2亮),当9号键按下时,所有LED点亮,当没有键按下时,所有LED熄灭。
设计参考:
① 8255控制字格式:
② 8255端口地址分配:
PA 0000H
PB 0400H
PC 0800H
控制口 0C00H
50赫兹同步锯齿波发生器
任务
利用0832同步输出两个频率为50赫兹的锯齿波(硬件电路参见DA_BUF2_1.DSN)。
设计参考:
① 锯齿波算法:设定时周期为200us,在定时时间到后,将当前DA输出值在前次输出值上增加某固定值(例如1),当20ms累计时间到后,DA输出值清零。
if(TIME20ms)
DAVAL++ ;
else
DAVAL = 0 ;
OUTPUT(DAVAL);
② 同步输出方法:先分别向2个0832的第1级缓冲寄存器送DA值,然后同时向0832的第2级缓冲寄存器送值(因2个0832的第2级控制信号是并联的),及可实现同步转换输出。
③ 0832地址分配:
1#第1级缓冲寄存器 2000H
2#第1级缓冲寄存器 2400H
第2级缓冲寄存器 3C00H
PWM波发生器
任务
在硬件电路PWM.DSN中实现P1.7输出PWM波。周期T=100ms,初始占空比(T1/T)为50%,按键KEY1每次增加占空比10%(直到90%),KEY2每次减小占空比10%(直到10%)。
设计参考:
① PWM产生方法:
思路:
在一个载波周期内,时间小于T1时P1.7输出为1,其余P1.7均为0。因此,通过比较当前时间值与设定值的位置关系来决定P1.7置0或置1,即可生成PWM波形。
算法:
定义变量
占空比设定值(记为Duty,数值为1~9,时间单位为定时时间常数)。
当前时间值(记为设置Counts,数值为0~10,时间单位为定时时间常数)
设置定时时间为固定常数(10ms),在定时中断服务时做以下处理:
重置定时器;
Counts ++;
Counts %= C;(C为固定载波周期,数值为10,时间单位为定时时间常数)
IF Counts Duty THEN P1.7 = 1 ELSE P1.7 = 0;
继续其他服务。
② 按键应考虑去除键抖动,在改变PWM占空比后应等待键释放,释放时同样要考虑去除键抖动。
编码显示器
任务
利用8255扩展并行端口(硬件电路参见CodeDisplay_8255.DSN)。当KEY按下时,利用8255的PC口输入二进制值编码(6位),将该值转换成十进制后显示在2位7段LED显示器上。
设计参考:
步进电机转速控制
任务
在SMSpeed.DSN的电路上实现:当KEY2按下时,电机停止转动,释放时继续转动。当KEY1按下时,电机以60转/min的转速正转,释放时以120转/min的转速反转。
设计参考:
① 4相步进电机,每顺序切换一相(1步),电机旋转18°,电机转动1圈共需要
文档评论(0)