单片机教学打铃控制器程序设计
一、课程设计题:单片机教学打铃控制器程序设计 
  二、设计要求: 
  用LED数码管显示时、分、秒时间,尽量减少时间积累误差,具有秒闪功能。 
  最多能设置40个打铃时间点,打铃时间点数据用非易失存储器存储,防止掉电丢失数据;能逐个检查、修改、删除已设置的打铃时间点和增加打铃时间点。 
  对时、打铃时间点用键盘设置,键盘设计简单、易于操作。 
  具有强电驱动功能,便于控制220V的电铃。 
  三、设计报告要求: 
  说明设计作品的功能、特点、应用范围; 
  方案对比,确定方案。 
  电路工作原理、操作方法; 
  编程方法、程序框图及关键程序清单。 
  课程设计总结。 
  附件: 
  参考电路图 
  24C02芯片资料及参考程序 
  课程设计元器件清单 
  元器件名 毕业论文http://www.751com.cn
  规格/型号 
  单板数量 
  购买数量 
  备注 
  电阻 
  510Ω、1/4W 
  2 
  10K、1/4W 
  2 
  1K、1/4W 
  1 
  电阻排 
  510Ω*8 
  1 
  瓷片电容 
  30pF 
  2 
  独石电容 
  0.1µF 
  4 
  电解电容 
  220µF/16V 
  1 
  二极管 
  1N4007 
  1 
  发光二极管 
  Ф3MM、红光 
  4 
  三极管 
  9013 
  1 
  晶体 
  12MHz(矮封装) 
  1 
  集成块 
  7805 
  1 
  AT89S52 
  1 
  24C02 
  1 
  7407 
  1 
  IC插座 
  40PIN 
  1 
  8PIN 
  1 
  14PIN 
  1 
  数码管 
  2位动态、红光、共阴极(FJ5202AH) 
  3 
  继电器 
  5V、AC220V/5A(HRS4H-S-DC5V) 
  1 
  接插件 
  IDC10 
  1套 毕业论文http://www.751com.cn
  按键 
  国产欧姆龙轻触按键,带透明帽 
  8套 
  -------------------------------------------------------------------------------- 
  程序: 
  ;**************教学打铃控制器程序********* 
  ;CPU: AT89S52, Fosc=12MHz 
  ;++++++++++++++++++变量定义 +++++++++++++++ 
  SET_TIME BIT P1.0 ;时间设定 
  SET_ALARM BIT P1.1 ;打铃设定 
  LEFT BIT P1.2 ;左移位 
  UP BIT P1.3 ;上翻/加1 
  DOWN BIT P1.4 ;下翻/减1 
  RIGHT BIT P1.5 ;右移位 
  ESC BIT P1.6 ;取消/退出 
  ENTER BIT P1.7 ;确认 
  KEY_BUF EQU 30H ;原按键状态 
  KEY_ST EQU 31H ;键闭合标志,ON:0FFH,OFF:00H 
  SCL BIT P3.3 ;IIC时钟线 
  SDA BIT P3.2 ;IIC数据线 
  FLASH_S BIT P3.1 ;秒闪 
  CONTREL BIT P3.4 ;控制;1=ON 
  H_MEM EQU 10H ;时 
  M_MEM EQU 11H ;分 
  S_MEM EQU 12H ;秒 
  CT_50MS EQU 13H ;50mS计数器 
  NEW_TIME EQU 14H ;时间更新标志,0FFH更新 
  DIS_MEM1 EQU 15H ;显示数据存储器1 
  DIS_MEM2 EQU 16H ;显示数据存储器2 
  DIS_MEM3 EQU 17H ;显示数据存储器3 
  DIS_BUF1 EQU 20H ;显示缓冲器1(段码,左) 
  DIS_BUF2 EQU 21H ;显示缓冲器2(段码) 
  DIS_BUF3 EQU 22H ;显示缓冲器3(段码) 
  DIS_BUF4 EQU 23H ;显示缓冲器4(段码) 
  DIS_BUF5 EQU 24H ;显示缓冲器5(段码) 
  DIS_BUF6 EQU 25H ;显示缓冲器6(段码,右) 
  AL_NUMBER EQU 26H ;打铃序号 
  AL_TOTA EQU 27H ;打铃点总数 
  ALARM_ST EQU 28H ;打铃状态,0FFH正在打铃 
  TIME_OVER EQU 29H ;按键返回时间计数器 
  TOTA_ADDR EQU 60H ;打铃点总数在24C02中的存储地址 
  ORG 0000H 
  AJMP START 
  ORG 0002BH 
  AJMP INT_T0 ;T2中断向量 
  ORG 0030H 
  START: MOV SP,#60H 
  CLR CONTREL 
  CLR FLASH_S 
  MOV H_MEM,#12 
  MOV M_MEM,#0 
  MOV S_MEM,#0 
  MOV CT_50MS,#20