这学期我开了 51 单片机的课,之后会将我的一些作业发自己网站上,希望能有用。我使用的开发板核心是 STC12C5A16S2,理论上以下代码是适用于 8051 内核单片机。
实验 1 利用数码管显示数字
本实验利用“共阳数码管”显示一串数字,利用中断方式每隔 1 秒更换一个数字。
代码如下,对其中的一些语句做出了标注。
说明:我所用的 STC 实验板中,p21 是“4 位共阳数码管”的第一位数字的控制引脚,P0 是数码管的公共极。
1 | // 数码管显示数字 |
实验 2 数码管显示脉冲的时间(计数器)
本实验利用“共阳数码管”显示测量脉冲的时间(ms),而这个脉冲由按键产生。
代码如下,对其中的一些语句做出了标注。
说明:我所用的 STC 实验板中,p21-p24 是“4 位共阳数码管”的第一位数字的控制引脚,P0 是数码管的公共极;p32 是按键引脚,按下是高电平。
1 |
|
实验 3 检测按键次数(计数器)
本实验利用“共阳数码管”显示测量脉冲的次数,脉冲由按键产生。
说明:我所用的 STC 实验板中,p21-p24 是“4 位共阳数码管”的第一位数字的控制引脚,P0 是数码管的公共极;p34 是按键引脚,按下是高电平。
1 | //P32 按键外部中断启动计时 |
实验 4 按键的短按长按
实验目的:体会外部中断的边沿触发和电平触发。
1 | // 实验 4 按键的短按长按 |
实验 4% 按键设置倒计时
实验目的:设计一个可以自定时间的倒计时器。
1 | // 实验 4% 利用按键设置倒计时 |
实验 5 串口通信
实验目的:初步接触串口通信,单片机接收电脑发来的数据,用数码管显示,并发送回电脑。
1 | // 单片机接收电脑发来的数据,用数码管显示,再发送回电脑 |
实验 6 检测脉冲 串口显示
实验目的:实验 2 和 5 的结合。
1 | // 单片机检测 高电平时间或低电平时间或周期时间 |
实验 6% 电子琴
实验目的:利用中断模拟出蜂鸣器的不同音调的声音。
说明:我所用的 STC 实验板中,使用 12MHz 晶振,p37 是蜂鸣器控制引脚。
1 | // 单片机 电子琴 |
以下是我找的一个例程,可以播放出《两只老虎》。
1 | /********* 两只老虎 例程 ***********/ |
实验 7 串口收数据 倒计数亮灯
实验目的:实验 6 拓展。
1 | // 实验 7 串口收数据 倒数亮灯 |
实验 8 电子表
实验目的:使用 4 个数码管的前两位表示小时,后两位表示分钟。使用 3 个按键对电子表进行调节,其中 p32 更换调节位,p33 加 1,p34 减 1。
难点:按键消抖;时间的进位(小时最大 24,分钟最大 60)。
1 |
|