Iap15f2k61s2单片机
时间: 2023-07-24 08:32:48 浏览: 179
好的,针对Iap15f2k61s2单片机,以下是一个实现手机号循环移位显示的例子代码。假设你使用的是共阳极的ch452数码管,它的引脚分配如下:
```
P2.0 -> D0
P2.1 -> D1
P2.2 -> D2
P2.3 -> D3
P2.4 -> D4
P2.5 -> D5
P2.6 -> D6
P2.7 -> D7
P3.7 -> EN
```
接着,你需要连接一个蜂鸣器,将它的正极连接到P3.3,负极连接到GND。代码如下:
```
#include <iap15f2k61s2.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP = P3^3; // 蜂鸣器
uchar code LED_TBL[]={ // 数码管显示表
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void delay(uint xms) { // 延时函数
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar *p) { // 显示函数
uchar i;
for(i=0;i<8;i++) {
P2 = LED_TBL[p[i]];
P3_7 = 0; // 使能
delay(1);
P3_7 = 1; // 禁止
}
}
void main() {
uchar cnt = 0;
uchar phone[11] = {1,3,2,3,4,3,7,9,5,6,6}; // 手机号
while(1) {
uchar i;
for(i=0;i<8;i++) {
phone[i] = phone[i+1]; // 循环移位
}
phone[8] = phone[0]; // 最高位补到最低位
cnt++;
if(cnt >= 11) { // 显示结束
BEEP = 0;
delay(200);
BEEP = 1;
cnt = 0;
}
display(phone); // 显示手机号
delay(100); // 显示间隔
}
}
```
这份代码实现的功能是,将手机号循环移位显示在ch452数码管上,每次显示完整的手机号后,蜂鸣器会响一次,并且稍作延迟之后重新开始循环移位显示。你可以根据自己的需要进行修改和调整。
阅读全文