基于stc89c52rc单片机的路灯模拟控制系统设计内容摘要:
08 a8255 table[hour_zhi_2_c10] delay void display_1 b8255 0x01 a8255 table[1] delay void display_2 b8255 0x02 a8255 table[2] delay 六 声光报警子程序 程序清单如下 void baojing_1 if INT1 1 display_1 J8 0 光报警程序开始位置 delay_2 J8 1 delay_2 光报警程序结束位置 J3 1 声音报警指令 else if INT1 0 display keyscan keydown_if J8 0 J3 0 void baojing_2 if RXD 1 display_2 J8 0 光报警程序开始位置 delay_2 J8 1 delay_2 光报警程序结束位置 J3 1 声音报警指令 else if RXD 0 display keyscan keydown_if J8 0 J3 0 七 交通情况检测子程序 程序清单如下 void environment if TXD 1 J1 1 J2 1 display keyscan keydown_if else J1 0 J2 0 display keyscan keydown_if 八 路灯控制子程序设计 程序清单如下 void road_light_control if hour100minute hour_zhi_1100minute_zhi_1hour100minute hour_zhi_1_c100minute_zhi_1_c display keyscan keydown_if if hour100minute hour_zhi_2100minute_zhi_2hour100minute hour_zhi_2_c100minute_zhi_2_c display keyscan keydown_if else if hour100minute hour_zong100minute_zonghour100minute hour_zong_c100minute_zong_c display keyscan keydown_if 九 看门狗技术 PC 受到干扰而失控引起程序乱飞也可能使程序陷入死循环 [6]指令技术软件陷阱技术不能使失控的程序摆脱死循环的困境这时系统完全瘫痪如果操作者在场就可以按下人工复位安钮强制系统复位但操作者不能一直监视着系统也往往是在引起不良后果之后才进行人工复位为使程序脱离死循环通常采用看门狗技术看门狗技术就是不断监视程序 循环运行时间若发现时间超过已知的循环设定时间则认为系统陷入了死循环然后强迫程序返回到 0000H入口在 0000H处安排一段出错处理程序使系统运行纳入正规 看门狗技术可由硬件实现可由软件实现也可由两者结合实现本系统采用硬件看门狗电路 实现硬件看门狗电路方案较多目前采用较多的方案有以下几种 采用微处理器监控器 采用单稳态电路来实现看门狗单稳定电路可采用 74LS123 采用内带震荡器的记数芯片 本设计采用第三种方案实现看门狗电路下面就对该方案作以介绍 1 基本原理 CD4060 是带震荡器的 14 位计数器由该芯片构 成的看门狗电路如图 42 看门狗电路图所示 4060 记数频率由 RT 和 CT 决定设实际的程序所需工作周期为 T 分频器记满时间为 T 当 T T 且系统正常工作时程序每隔 T 对 4060 进行扫描一次分频且永无记满输出信号如系统工作不正常如程序跑飞死循环等程序对 4060 发不出扫描信号分频器记满输出一脉冲号使 CPU 复位 2 参数选择 4060 的振荡频率 f 由 RT CT 决定 Rs 用于改善振荡器的稳定性 Rs 要大于 RT一般取 Rs 10RT 且 RT 1kΩ CT≥ 100pF 如果 Rs 450Ω RT 45Ω CT 1uF 则 f 10HZ4060的振荡 频率和 Qi i 678910121314 的选择要根据情况确定 3 几个原则 看门狗电路必须由硬件逻辑组成不宜由可编程计数器充当因为 CPU 失控后可能会修改可编程器件参数使看门狗失效 4060 的 RST 线上阻容组成的微分电路很重要因为扫描输入信号是 CPU 产生的正脉冲若此信号变 1 后由于干扰程序乱飞微分电路只能让上跳沿通过不会封死 4060 看门狗仍能计数起作用若没有微分电路扫描输入信号上的 1 状态封死4060 使之不能记数看门狗不起作用 图 42 看门狗电路图 CPU 必须在正确完成所有工作后才能发扫描输入信号且程序中发扫描 信号的地方不能太多否则正好在哪里有死循环看门狗就不产生记满输出信号不能重新启动 CPU 4060的记满输出信号不但要接到 MCS51 的 RST脚而且还应接到其它芯片的RST 脚因为程序乱飞后其它具有 RST 脚的芯片也混乱了必须全部复位 图 10 参考文献 《信号与系统》 ALAN VOPPENHEIM 著西安西安交通大学出版社 1997 年 《数字图像处理学》元秋奇著北京电子工业出版社 2020 年 《模拟电子线路基础》吴运昌著广州华南理工大学出版社 2020 年 《数字电子技术基础》阎石著北京高等教育出版社 1997 年 《数据结构 与算法》张晓丽等著北京机械工业出版社 2020 年 《 ARMLinux 嵌入式系统教程》马忠梅等著北京北京航空航天大学出版社2020 年 《单片机原理及应用》李建忠著西安西安电子科技大学 2020 年 附录 附 1 元器件明细表 D8255AC STC89C52 DAC0832 ADC0809 74LS245 附 2 仪器设备清单 数字示波器 数字万用表 信号发生器 稳压电源 附 3 电路图图纸 附 4 程序清单 此程序是路灯模拟系统 include include STC 应包含的头文件 include 以下是对 p1 口的位寻址定义 sbit DIR P20 sbit J1 P10 sbit J2 P11 sbit J3 P12 sbit J4 P13 sbit J5 P14 sbit J6 P15 sbit J7 P16 sbit J8 P17 以下是对 8255 的端口地址的宏定义 define a8255 XBYTE[0X0FF7C] define b8255 XBYTE[0X0FF7D] define c8255 XBYTE[0X0FF7E] define con8255 XBYTE[0X0FF7F] define uchar unsigned char Unsignedcharcode table[] 0xfc0x600xda0xf20x660xb60xbe0xe00xfe0xf60xee0x3e0x9c0x7a0x9e0x8e 此为自己做的板子上的数码管显示编码 以下是对时分秒变量的声明 int scount 0 这是中断次数的计数寄存器 unsigned int second 0 unsigned int minute 0 unsigned int hour 0 unsigned int hour_zong 7 unsigned int hour_zong_c 10 unsigned int minute_zong 0 unsigned int minute_zong_c 0 unsigned int hour_zhi_1 13 unsigned int hour_zhi_1_c 16 unsigned int minute_zhi_1 0 unsigned int minute_zhi_1_c 0 unsigned int hour_zhi_2 20 unsigned int hour_zhi_2_c 22 unsigned int minute_zhi_2 0 unsigned char minute_zhi_2_c 0 unsigned int zong unsigned int zong_k unsigned int zong_c unsigned int zhi_2 unsigned int zhi_2_k unsigned char zhi_2_c unsigned int zhi_1 unsigned int zhi_1_k unsigned int zhi_1_c 以下是按键复用的变量的声明 unsigned char x 0 unsigned char y 0 unsigned char z 0 按键扫描部分 判断哪一个按键被按下 unsigned char temptemp1temp2 unsigned char key 0 unsigned char key_down 0 unsigned char key2 0 unsigned char abk 以下是一段大约 6ms 的延时 void delay uchar ijk for i 1i 0i for j 2j 0j for k 200k 0k 以下是一段大约防抖的延时 void delay_1 uchar def for d 10d 0d for e 10e 0e for f 200f 0f 以下是声光报警部分的延时程序 void delay_2 uchar iijjkk for ii 2ii 0ii for jj 50jj 0jj for kk 100kk 0kk 以下是 8255 的初始化 void init8255 con8255 0x80 c8255 0xffcolse light 以下是定时器 0 的初始化 void timer0_init TMOD 0X01 TH0 6553650000 256 TL0 6553650000 256 EA 1 TR0 1 ET0 1 关闭定时器 0 void close_timer EA 0 ET0 0 TR0 0。基于stc89c52rc单片机的路灯模拟控制系统设计
相关推荐
序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。 一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用 于定时目的。 要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH
2 627P 2 021P 2 526P 2 122P 2 425P 2 223P 2 324G N D208 0 5 2R12 0 0R21 0 K复位按键C11 0 u FC23 0 u FC33 0 u FC41 0 u FC50 .1 u FXTG N DG N DV C C+ 5 VV C C+ 5 VG N D 图 STC89C52 最小系统 LCD1602 液晶显示器介绍 LCD
1 0P 1 1P 1 2P 1 3P 1 4P 1 5V C C9VX T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D
设计的制作过程。 在这个过程中我收获的不只是制作成了一个能实现特定功能的电路 板,更重要的是在自己亲自的制作过程中发现任何小的问题都至关重要,任何大的问题基本不应该出现。 只有通过亲自操作才能发现问题,最重要的是要能在老师同学的帮助下解决问题,达到设计要求。 致谢 通过这次毕业设计的制作及论文的完成,我得到了鹤壁职业技术学院司老师的悉心指导和帮助
储器 RCAP2L和 RCAP2H中的数值是通过软件编程预设置的 ( 3) 波特率发生 模式 : T2CON的控制位 TCLK以及 RCLK允许 T/C1或者 T/2从串行口发送和接收波特率,寄存器 TCLK=0, T/C1作 为串行口发送波特率的发生器,当寄存器 TCLK=1时, T/C2作为串行口波特率发生器,寄存器 RCLK对接收的波特率作用是相同的,通过 TCLK和 RCLK两个寄存器
重、高难度的新工作,要谦虚谨慎,戒骄戒躁,主动向老同 志求教,虚心听取别人意见。 工作中,要有宽广的胸怀,要有容人、容言、容事之大气量。 现在这个浮躁的社会,大家都带着有色眼镜看待公务员。 而我们作为新进公务员,不必理会外人的眼光,唯一需要做的是:不忘初心,方得始终。 我的演讲到此结束,谢谢大家。 市委书记在第一季度党建工作调度会上的讲话 最 新精 品 资料推荐 提 供全程指导服务 2020