一、MC20P24B芯片简介
MC20P24B是由上海晟矽微电子有限公司基于HC05设计的MCU,具有成本低、抗干扰能力强、指令丰富等特点。主要有以下特点:
●8位CISC型内核(HC05)
●4K byte OTP ROM、208 byte RAM
●3组IO口(最多可支持17个通用IO口和1个输入口)
●1个PWM输出、1个8位基本定时器、1个8位带比较输出的定时器
●1个10位ADC(9路输入)
●1个CLO输出(CLO频率为系统振荡频率的1/8)
●2个外中断、1个定时器中断、1个 PWM中断
●看门狗复位功能
●2.1V/3.6V低压复位
●可选晶振/RC振荡
晶振 400K-8MHz;RC振荡有 2MHz、4MHz、8MHz 3种可选(精度<2.5%)
●工作电压
2.2-5.5V(工作频率 400K-4MHz);2.7-5.5V(工作频率 4M-8MHz)
●工作温度-40-85℃
●封装形式:SOP20/DIP20/SOP16/DIP16/SOP8/DIP8
二、原理图
该系统主要由显示部分(TM1628和4位数码管)、按键部分及MCU(MC20P24B)组成MCU设置为内部RC振荡方式,频率为4MHz;P26设置为CLO输出功能(频率为 4MHz/8 = 500KHz)。
三、程序设计
1)软件流程图(见下图)
2)AD转换
AD转换程序主要完成对 4个按键值的采样,本例程采用采样 8次取平均值的方式;每 8次完成后分别与 4个按键 AD的前一个值(ADValue[ ])比较,如果大于则替代上一个值,小于则把两者的差值存放到对应的差值存储器(addifference[ ])【注 1】;
对差值进行排序,如果其中的最大值超过设定值【注 2】且第二大值小于设定值则认为此按键被按下,并把对应的按键值存放到按键值存储单元(KeyBuf)。
如果第二大值大于设定则认为按键无效【注 3】。
注 1:由于PCB布线的原因,差值会有一定的误差,所以要根据实际的情况进行修正
注 2:设定值要根据按键该板的厚度和材质实际测定。
注 3:出设置是为了避免按键板有水的情况,出现按键误判断。
3)按键程序
按键程序可以按照常规的做法设计,直接判断KeyBuf是否有值即可。
4)显示程序
本例程在无按键按下时,数码管循环显示每个按键的值及对应的按键AD值显示的差值,当有按键按下时最高位显示被按下的按键值,次高位和最低两位循环显示不同的按键值对应的按键AD值的差值。
|
||||||
|
||||||