1、1. 编写程序,驱动一个 8 段数码管,依次点亮 0-1-2-。 。 。-F.2. 编写程序,一个 44 矩阵键盘,每次按下对应的键时,数码管显示相对应的数字。(如按下第一个键,则数码管显示 0,按下第二个键,则显示 1, 。 。 。 。 。按下第十六个键,则显示 F。 ) (提高部分,键盘加入去抖动功能,可硬件去抖动,也可软件去抖动。)3. 编写程序,采用一个管脚,驱动四个 8 段数码管,依次点亮四个数码管,每个依次显示 0-1-2-。 。 。-F. 提示:采用串入并出移位寄存器和单片机串口完成。4. 5*7LED 字幕显示5. LCD-2021 液晶分两行显示 “hello world”及
2、你的名字。6. LCD-2021 液晶显示器制作双计数器。 (图参见 8051 单片机典型模块设计与应用 P149)7. CMOS-EEPROM AK93C46:在实际应用中,经常有一些数据要保存下来,而且需要保证这些数据在系统断电时仍然不丢失,以便在系统下次启动时使用。微处理器中的 RAM 时易失性存储器,断电后,保存在其中的数据就会丢失,因此,通常需要外界非易失性存储器。目前也有一些微处理器内置了易失性存储器,就不需要外接。AK93C46 是一种常用的非易失性存储器,它具有代表性。测试 AK93C46:首先使用 AK93C46 的写指令写一些数据到 AK93C46 内部,然后再用AK93C
3、46 的读指令将数据读出来,并且输出到 P1 端口。存入 AK93C46 内的数据依次时 01H,02H,04H,08H,10H,20H,40H,80H,存入后再提取出来依次放到 51 内部 RAM 地址 30H37H。然后再依次送到 P1 端口上。8. 定时器及内部定时中断的使用:使用定时器 1 做单一 PWM 脉冲宽度调制控制(直流伺服电机 pwm 脉冲宽度调制控制)将定时器 1 设置为模式 0,因此 TL1 部分如果在程序中不做任何设定,则为一分频系数为 32 的分频器,如果外部接振荡器为 12MHZ,则送到 TH1 的技术脉冲为 32us 一次,由于 TH1 为 8 位,其内容从 00
4、HFFH,因此脉冲的分辨率为 1/256=0.4%.如果要求表针工作脉冲频率为 120HZ,且因 TH1 可划分 256 等分,则 120256=30720HZ,其中每一等分的时间为 1/30720=32.5us,其时间值正好等于模式 0 中的 TL0 的分频值(即32us) 。程序设计输出脉冲的脉宽比例(占空比)为 1/256.,从 P1.0 口输出,接示波器看波形。(提高部分:使用定时器 0 做四相 PWM 脉冲宽度调制控制,脉宽比例渐增式 PWM 输出,脉宽比例渐减式 PWM 输出)。9. 外部中断的使用:P1.0 口接发光二极管,INT0(P3.2)接一个开关,开关另外一端接地。当开关
5、合上时,INTO 端低电平,产生中断。正常时,P1 口输出全 1,当接到外部中断时,P1 口输出全 0.#include sbit P10=P10;void main () IT0=1; /外中断请求低电平有效EX0=1;/外部中断 0 许可EA=1; /打开总中断while(1); int0() interrupt 0 P10=0; 10. 定时器/计数器及内部定时中断的使用:例 1:P 1.0 口接发光二极管, 设置定时器 1 工作于工作方式 1,16 位,设置定时器初值,如 0x0006,则定时器的计数范围为:65536-初值。#include /包括一个 52 标准内核的头文件 sbi
6、t P11 = P11;/要控制的 LED 灯void main(void)TMOD=0x01;/定时器 0, 16 位工作方式TR0=1; /启动定时器ET0=1; /打开定时器 0 中断EA=1; /打开总中断while(1) /程序循环;/主程序在这里就不断空循环 timer0() interrupt 1 / 定时器 0 中断是 1 号TH0=0x00; /写入定时器 0 初始值 0x0006TL0=0x06;P11=P11; /反转 LED 灯的亮灭例 2:设单片机的晶振频率为 12MHz,使用定时器 1 的工作方式 1,在 P1.0 端输出周期为10ms 的方波,要求使用中断方式设计
7、程序。例 3:使用计数器 0,记录 T0 引脚(P3.4) 输入的脉冲数,计数满 100 个脉冲,则在 P1.0 输出一个正脉冲,要求使用中断方式设计程序。2.外部中断的使用:P1.0 口接发光二极管,INT0(P3.2 )接一个开关,开关另外一端接地。当开关合上时,INTO 端低电平,产生中断。正常时, P1 口输出全 1,当接到外部中断时,P1 口输出全 0.#include sbit P10=P10;void main () IT0=1; /外中断请求低电平有效EX0=1;/外部中断 0 许可EA=1; /打开总中断while(1); int0() interrupt 0 P10=0;
8、例 2:使用计数器 1,当 INT1 高电平时,记录 T1 引脚输入的脉冲数,累计值在 P1 口输出,当 INT0 有下降沿时,清楚累计值,要求使用中断方式设计程序。11. ADC0809(ADC0804)将外界模拟电压信号转换成数字信号时,发出中断信号。由 51在中断程序中把 ADC0809 输出的数字信号送到端口 P2 上显示,以便观察转换后所得的电压数字值。图参见 8051 单片机典型模块设计与应用 P117。12. DA 掌握 max515 芯片的使用。由单片机发出数字量 00ff,经 max515 转换后,将该模拟电压加至继电器两端。13. 声音发生器:在单片机控制中,除了用各种指示
9、灯指示出目前的动作情形之外,有时还需用声音提醒或警告操作人员。1.首先介绍忙音。忙音是 由 400hz 的声音叫 0.5s 停0.5s 而形成的。2.铃声可由 320hz 和 480hz 的声音组合而成,只要使 320hz 和 480hz 交替鸣叫 25ms,即可仿真电话铃声。 3.警告声:以扬声器重复输出 256hz 及 350hz 的叫声各 0.73s,即可模拟警车的叫声,从而产生警告的作用。 、编写程序实现以上三种声音。14. I2C 总线协议软件实现。单片机应用系统哦哦那个中,各功能模块都需要与单片机的交互信息,如果每个模块都直接连接到单片机上,一方面单片机没有足够的 IO 端口资源,
10、另一方面,过多的物理线路增加了设计的难度,也增加了系统的不稳定性,如果把所有的设备都挂在总线上,端口的问题是解决了,但是电路会更加负责,因为增加地址译码电路。就这一问题,有很多解决方案,I2C 总线就是其中一种。利用 I2C 总线,只需要占用IO 端口,就可以连接系统中的各模块,组成一个完整的系统。I2C 总线有严格的协议标准,每个设备都需要严格遵循。可以通过软件模拟,实现对 I2C 总线协议的解释,使一个普通的单片机,具有符合 I2C 总线协议要求的接口。解决思路:1 准备器件,一台示波器。2.连接电路:连接单片机基本工作电路(电源电路和时钟电路)3.编写程序:模拟 I2C 开始时序,停止时
11、序,应答时序和非应答时序,利用这些基本时序实现数据的发送和接收。4.验证结果:用示波器观察开始时序,停止时序,应答时序和非应答时序,发送数据时序是否满足协议要求。15. SPI 总线协议软件实现。16. I2C 接口 AD 转换器 ADS7824准备器件:一片 ADS7824连接电路:根据 I2C 接口的电气特征,设计 ADS7824 与单片机的接口电路编写程序:编写 I2C 总线基本读写程序,利用总线读写程序实现对 ADS7824 内部寄存器的控制,通过设置 ADS7824 内部寄存器,实现初始化,AD 转换等操作。17. SPI 接口 AD 转换器 TLC2543.18. 串口通信,19. 继电器