资源简介
利用C51单片机做的一个关于交通灯的设计,其中包含按键中断的扩展,压缩文件内包含代码、Proteus仿真和实验报告。(C语言)
代码片段和文件信息
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define PA XBYTE[0x7F00] //PA端口地址
#define PB XBYTE[0x7F01]
#define PC XBYTE[0x7F02]
#define COM XBYTE[0x7F03]
//char code dx516[3] _at_ 0x003b;
uchar tempaann;
sbit shi=P3^0;
sbit ge=P3^1; /*对要使用的单片机各个口进行定义*/
bit flag=0;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
sbit key6=P3^3;
uchar code table[]={
0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71}; /*将数字0123456789的16进制数定义成数组用以显示*/
//定义所有函数
void delay(uint z);
void disp(uint n);
void xint0();
void xint1();
void timer0();
void nb_flash(void);
void dx_flash(void);
void nanbei();
void dongxi();
void nanbeizuo();
void dongxizuo();
void dongxizuogreen();
void nanbeizuogreen();
void dongxigreen();
void nanbeigreen();
void allred();
void allyellow();
//主函数
void main()
{
uint num;
num=0;
aa=0;
COM =0x82; //PA口输出,PB口输入,PC口输出
TMOD=0x01; //定时器工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开启总中断
ET0=1; //开启定时器中断
TR0=1; //开启定时器0
EX0=1; //外部中断0允许标志
IT0=0; //外部中断0电平触发
EX1=1; //外部中断1允许标志
IT1=0; //外部中断1电平触发
while(1){
nanbei();
nb_flash();
nanbeizuo();
dongxi();
dx_flash();
dongxizuo();
}
}
void delay(uint z) //延时函数
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1 //定时器0中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==18)
{
aa=0;
flag=1;
}
}
void disp(uint n) //数码管显示函数
{
while(!flag)
{
ge=0;
PC=table[n%10];
delay(50);
shi=1;ge=1;
shi=0;
PC=table[n/10];
delay(50);
shi=1;ge=1;
}
if(flag==1)
flag=0;
}
void nanbei() //南北绿灯东西红灯及数码管显示
{ //南北通行
uint num;
num=60;
disp(num);
while(num<=60&&num>0)
{ PA=0xd8;
num--;
P1=0xe1;
disp(num);
}
}
void nanbeizuo() //南北方向左转及数码管显示
{ uint num;
num=15;
disp(num);
while(num<=15&&num>0)
{ P1=0xe4;
num--;
PA=0xe9;
disp(num);
}
}
void dongxizuo() //东西方向左转及数码管显示
{ uint num;
num=15;
while(num<=15&&num>0)
{ P1=0xe4;
PA=0xea;
disp(num);
num--;
}
}
void dongxi() //东西绿灯南北红灯及数码管显示
{ uint num;
num=45;
disp(num);
while(num<=45&&num>0)
{
PA=0xe4;
P1=0xcc;
disp(num);
num--;
}
}
void nb_flash(void) //南北方向黄灯闪烁及数码管显示
{
uint a;
for(a=3;a>0;a-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5000 2020-05-28 17:33 新建文件夹 (2)\main.c
文件 28063 2020-05-28 17:35 新建文件夹 (2)\实训.pdsprj
文件 1601024 2020-06-08 18:07 新建文件夹 (2)\实验报告.doc
目录 0 2020-06-08 18:07 新建文件夹 (2)\
相关资源
- 课程设计--C语言学生成绩管理系统内
- 利用C语言实现的ATM机
- C语言程序设计第四版谭浩强课后习题
- 现代优化设计黄金分割法和二次插值
- 数据结构c语言版第2版课后习题答案
- 谭浩强C语言教程
- 求曼德勃罗集合C语言串行并行代码
- 流程图生成器C语言
- C语言大一期末考小助手
- 超声波测距及蓝牙模块源码程序c语言
- 重庆邮电大学C语言期末考试题
- 学校教材订购系统,C语言版,内容详
- 利用FFT计算频谱图
- 数据结构——C语言描述》习题及答案
- 郝斌C语言详细笔记().doc
- 基于51单片机汽车尾灯设计论文
- C语言编写的中文分词程序
- 全国计算机等级考试-二级教程-C语言
- 使用C++实现HDLC协议
- FFT的C语言实现
- LZ77数据压缩C语言源代码
- C语言实现TCP/IP协议通信和UDP协议通信
- 中值滤波_均值滤波c语言实现_工程文
- 直方图均衡化_c语言实现_源代码+实验
- keilC51和C语言入门教程(PDF版)
- 决策树分类器ID3算法C语言
- 通讯录的制作数据结构c语言 代码+报
- SVM分类算法实验报告+C语言程序 加强
- C程序设计试题汇编谭浩强pdf
- 超级马里奥,C语言实现
评论
共有 条评论