山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验

这篇具有很好参考价值的文章主要介绍了山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、实验题目

二、实验要求

三、实验过程及结果分析

四、实验流程图

五、实验源代码


一、实验题目

4.5 8255并行I/O扩展及交通信号灯控制实验

二、实验要求

1、画出实验的流程图

2、编写源程序并进行注释

3、记录实验过程

4、记录程序运行结果截图

三、实验过程及结果分析

本实验利用 8255 实现可编程的并行 IO 扩展功能,并利用其完成交通灯控制。实验要求红灯常亮 30S,绿灯常亮 25S 后闪烁 5S。使用静态数码管显示绿灯常亮倒计时。实验原理图1如下:

山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验

图1:实验原理图

1. 关掉实验箱电源。将MCU 板,PIO 版,KEY&LED 板插接在母板上。按照前面连接关系表将硬件连接好。

2. 在仿真器断电情况下将仿真器的仿真头插在 MCU 板的CPU 插座上。将仿真器与开发PC 机的通信口连接好,打开实验箱及仿真器的电源。

3. 运行 Keil uVision2 开发环境,建立工程PIO8255_trafic_c.uV2,CPU 为AT89S51,包含启动文件STARTUP.A51。

4. 按照实验功能要求创建源程序 PIO8255_trafic.c 并加入到工PIO8255_trafic _c.uV2,并设置工程PIO8255_trafic_c.uV2 属性,将其晶振频率设置为11.0592MHz,选择输出可执行文件,DEBUG 方式选择硬件DEBUG,并选择其中的“WAVE V series MCS51 Driver”仿真器。

山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验

图2:设置晶振频率

山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验

图3:选择仿真器

5. 构造(Build)工程PIO8255_trafic_c.uV2。如果编程有误进行修改,直至构造正确为止。

6. 运行程序,交通灯状态切换以及倒计时器的显示是否符合程序要求,若不符合,分析出错原因,继续重复第4、5 步的步骤,直至结果正确。

四、实验流程图

山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验

图4:实验流程图

实验分析:本实验中的东西方向信号灯同步控制,南北方向信号灯同步控制,即:东西方向上同种颜色的灯同时亮或灭,南北方向上同种颜色的灯同时亮或灭。程序中的延时1 秒钟,可以利用纯软件延时实现,也可以结合定时器硬件中断加软件计数方式实现。图中的CD4511 是BCD 码到LED 数码管的显示码转换芯片,因此要显示某个数字,只需要在相应的端口送出该数字的BCD 码即可,不用进行软件译码。首先将模式设置成模式0,开始时将数组bcd[]对应的BCD码移位送到sbuf中。接着通过RXD采用串行的方式送到数码管芯片,直接将该BCD码显示出来。同时,TXD输出一个同步移位时钟,从而驱动数码管的正常运行。

五、实验源代码

#include<reg51.h>         // 头文件
#define uint unsigned int    
#define uchar unsigned char

uchar xdata led _at_ 0x7ffc; //外部寻址为8255的A口的地址
uchar xdata COM _at_ 0x7fff; /外部寻址为8255的控制寄存器的地址
sbit RX=P3^0;        // 设置P3.0为端口RXD
sbit TX=P3^1;     // 设置P3.1为端口TXD 
//定义数字0~25的BCD码
uint code bcd[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,
0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24,0x25};       
void delayms(uint ms)     //定义延迟子程序
{
	uchar t;
	while(ms--)	for(t=0;t<120;t++); //共延时1毫秒
}
void num(uint bcddata) //定义显示子程序
{
	SCON=0x00;       //工作模式0
	SBUF=bcddata;       //将数据存入SBUF
	while(!TI);
	TI=0;      //清零
} 
//主函数
void main()
{
	COM=0x80;
	EA=1;       //允许中断
	ET0=1;      //允许T0中断
	TF0=0;      //T0溢出的请求中断标志位
	while(1)      //一直循环
	{
		char i=0;       //设置循环控制变量
		led=0x69;       //低电平时,东西绿灯亮,南北红灯亮 
		for(i=25;i>=0;i--) //数码管从25倒计时到0
		{
			num(bcd[i]);  //调用数码管显示子程序
			delayms(1000);    //调用延时子程序
		}
		for(i=0;i<5;i++)    // 循环并发出五次闪烁
		{
			led=0xeb;      //东西绿灯灭,南北红灯灭
			delayms(500);     //延时
			led=0x69;        //东西绿灯亮
			delayms(500);     //延时以达到闪烁
		}
		
		led=0x96;    //南北绿灯亮 
		for(i=25;i>=0;i--)//数码管从25倒计时到0
		{
			num(bcd[i]);     //调用数码管显示子程序
			delayms(1000);      //延时
		}
		for(i=0;i<5;i++)        // 循环并发出五次闪烁
		{
			led=0xbe;           //南北绿灯灭
			delayms(500);        //延时
			led=0x96            //南北绿灯亮
			delayms(500);        //延时以达到闪烁
		}	
	}
	}

初学单片机,可能存在错误之处,还请各位不吝赐教。文章来源地址https://www.toymoban.com/news/detail-454093.html

到了这里,关于山东大学单片机原理与应用实验 4.5 8255并行I/O扩展及交通信号灯控制实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 山东大学计算机科学与技术学院程序设计思维与实践作业 week8-图和树的性质与应用(下)

    山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践作业 sdu程序设计思维与实践 山东大学程序设计思维实践作业H8 山大程序设计思维实践作业H8 山东大学程序设计思维与实践 week8-图和树的性质与应用(下) 相关资料:GitHub 问题描述 现在有一个长

    2023年04月25日
    浏览(61)
  • 山东大学增强现实实验四

    注意:本人尚处在opencv的入门学习阶段,本博客仅为个人学习笔记见解,如有不当,欢迎指出 (实验/理论)平面标志物的视觉跟踪,要求: 选择一个标志物,可以是人工标志物,也可以是自然标志物;实现和实验二相同的效果。 用手机或摄像头拍摄标志物的影像,建议读取视

    2024年02月08日
    浏览(64)
  • 山东大学计算机网络期末

    内容仅供参考。如有错误之处,敬请指正! 第一章 概述 第二章 物理层 第三章 数据链路层 第四章 介质访问子层 第五章 网络层 第六章 传输层 第七章 应用层 1.基本概念 计算机网络定义: 表示一组通过单一技术相互连接起来的自主计算机集合。 分布式系统: 是建立在网络

    2024年02月03日
    浏览(45)
  • 整数序列(山东大学考研机试题)

    题目链接:3717. 整数序列 - AcWing题库

    2024年02月13日
    浏览(43)
  • 2021山东大学众智期末复习笔记

    目录 社交网络 同质性 正负关系 小世界 搜索引擎 博弈论 市场 权力 从众 新事物的扩散 信息不对称 流⾏病和线粒体夏娃 强连通图:有向图G中,任意两点可以相互到达。 有向图的强连通分量:有向图中的极大强连通子图。 三元闭包:如果两个互不相识的人有了一个共同的朋

    2023年04月08日
    浏览(43)
  • 山东大学数字图像处理实验(一)

    题目:加载并显示图像 imread 函数原型为 imread(const string filename, int flags=1) 这里的 filename 需要的是图像的路径。该函数从文件中加载图像并返回一个矩阵,如果图像不能被读取,则返回一个空的矩阵 这里介绍一下不同 flag 的效果 flag=-1 :8位深度,原通道 flag=0 :8位深度,

    2024年02月06日
    浏览(55)
  • 【山东大学】web数据管理——复习笔记

    写在前面 若有图片加载失败,请 科学上网 。 本文为对软件学院连老师的PPT课件总结所得的复习笔记,仅供参考。不保证对考点的全覆盖,以PPT为主。 对往年考过的题相关知识点前面都标注了“考过”,并高亮,供参考。 写的比较匆忙,有遗漏、错误之处敬请指正。 笔记中

    2024年02月08日
    浏览(45)
  • 山东理工大学单元测试2重现

    本次单元测试虽然较第一次机测难度增加,但整体难度与平时pta练习相比,难度并不大,一些细节同学们在考试时容易忽略,本次八道题,可关注第四题的简便公式,以及第七题的注意事项和第八题运行超时的解决办法。 7-1 sdut-C语言实验-A+B for Input-Output Practice (不确定次数循

    2024年02月05日
    浏览(38)
  • 【软件工程】山东大学软件工程复习提纲

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 本提纲可以完全摘抄,考试命中率100%,先上考试带的A4纸: 1. 软件工程三要素 方法:为软件开发提供了“如何做 ”的技术,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计等; 工具:为软件工

    2024年02月13日
    浏览(31)
  • 山东大学众智科学与网络化产业复习笔记

    写在前面:鹿男神yyds,讲课诙谐有趣,条理清晰,给分可冲,总而言之,众智可冲,题主94,12/160,本文是复习时的总结,希望学弟学妹95+ 图 = 事物(节点) + 联系(边) 同构:图的画法不同,结构上相同,两图同构意味着可以找到一组对应的点,其关系也一致。 邻接矩阵

    2024年01月23日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包