找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2591|回复: 2
打印 上一主题 下一主题
收起左侧

电子系统设计与实习

[复制链接]
跳转到指定楼层
楼主
[p=193, null, left]程序源代码:analog

[p=193, null, left]elevator.c

[p=181, null, left][size=169px]#include<reg52.h>//(

[p=181, null, left]用于单片机开发的一种

[p=181, null, left][size=169px]c

[p=181, null, left]语言

[p=181, null, left][size=169px])

[p=181, null, left]的头文件

[p=181, null, left][size=169px]#include<absacc.h>//

[p=181, null, left]访问绝对地址

[p=181, null, left][size=169px]#include<stdio.h>//

[p=181, null, left]标准输入输出流

[p=181, null, left][size=169px]#define

[p=181, null, left][size=169px]COM8279

[p=181, null, left][size=169px]XBYTE

[p=181, null, left][size=169px][0X5FFF]

[p=181, null, left][size=169px]//

[p=181, null, left]控制命令地址

[p=181, null, left][size=169px]#define

[p=181, null, left][size=169px]DATA8279

[p=181, null, left][size=169px]XBYTE

[p=181, null, left][size=169px][0X5EFF]

[p=181, null, left][size=169px]//

[p=181, null, left]数据地址

[p=181, null, left][size=169px]#define

[p=181, null, left][size=169px]uchar

[p=181, null, left][size=169px]unsigned

[p=181, null, left][size=169px]char//

[p=181, null, left]宏定义

[p=181, null, left][size=169px]#define

[p=181, null, left][size=169px]uint

[p=181, null, left][size=169px]unsigned

[p=181, null, left][size=169px]int//

[p=181, null, left]定义键内码传递参数

[p=181, null, left][size=169px]uint

[p=181, null, left][size=169px]time,temp,i,anjian,shijian,t,flag;//

[p=181, null, left]定义延时时间参数

[p=181, null, left][size=169px]uchar

[p=181, null, left][size=169px]code

[p=181, null, left][size=169px]table[]={0x0C0,0x0F9,0x0A4,0x0B0

[p=181, null, left][size=169px]//

[p=181, null, left]键盘码表

[p=181, null, left][size=169px],0x99,0x92,0x82,0x0F8

[p=181, null, left][size=169px],0x80,0x90,0x88,0x83

[p=181, null, left][size=169px],0x0C6,0x0A1,0x86,0x8E};

[p=181, null, left][size=169px]uint

[p=181, null, left][size=169px]shumaguan[]={0,0,0,0,0,1};//

[p=181, null, left]六个数码管的初始化值

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]delay(uint

[p=181, null, left][size=169px]time);

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]show(void);

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]init(void);

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]light(void);

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]upred=P1^7;

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]downgreen=P1^5;

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]stopled=P1^0;

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]openled=P1^1;

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]closeled=P1^2;

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]ring=P1^3;//

[p=181, null, left]响铃

[p=181, null, left][size=169px]sbit

[p=181, null, left][size=169px]motor=P1^4;//

[p=181, null, left]直流电机









[p=144, null, left]

[p=144, null, left]6

[p=144, null, left]

[p=181, null, left]void

[p=181, null, left]main()//

[p=181, null, left][size=169px]主函数

[p=181, null, left]{

[p=181, null, left]init();//

[p=181, null, left][size=169px]初始化(包括开中断,中断触发方式,

[p=181, null, left]8279

[p=181, null, left][size=169px]的初始化,

[p=181, null, left]RAM

[p=181, null, left][size=169px]和

[p=181, null, left]FIFO

[p=181, null, left][size=169px]的清除、

[p=181, null, left][size=169px]编

[p=169, null, left][size=169px]码方式、分频系数等)

[p=181, null, left]while(1){

[p=181, null, left]show();

[p=181, null, left]if(temp==1){light();}

[p=181, null, left]}

[p=181, null, left]}

[p=181, null, left]/*

[p=181, null, left][size=169px]初始化函数

[p=181, null, left]*/

[p=181, null, left]void

[p=181, null, left]init(void){

[p=181, null, left]delay(1300);

[p=181, null, left]//

[p=181, null, left][size=169px]开机延时约

[p=181, null, left]10ms

[p=181, null, left]IT1=0;

[p=181, null, left]//

[p=181, null, left][size=169px]外部中断

[p=181, null, left]1

[p=181, null, left][size=169px]选用下降沿

[p=181, null, left]EA=1;

[p=181, null, left]//

[p=181, null, left][size=169px]开总中断

[p=181, null, left]EX1=1;

[p=181, null, left]//

[p=181, null, left][size=169px]开外部中断

[p=181, null, left]EX0=1;

[p=181, null, left]COM8279=0XDC;

[p=181, null, left]//

[p=181, null, left][size=169px]清除显示

[p=181, null, left]RAM

[p=181, null, left][size=169px]和

[p=181, null, left]FIFO

[p=181, null, left]delay(100);

[p=181, null, left]COM8279=0X00;

[p=181, null, left]//8279

[p=181, null, left][size=169px]键盘双键互锁

[p=181, null, left],

[p=181, null, left][size=169px]编码扫描,左端入口

[p=181, null, left]COM8279=0X34;

[p=181, null, left]//

[p=181, null, left][size=169px]时钟分频设置

[p=181, null, left]COM8279=0X92;

[p=181, null, left]//

[p=181, null, left][size=169px]设置写显示命令

[p=181, null, left]for(i=0;i<6;i++)

[p=181, null, left]DATA8279=table[0];

[p=181, null, left]TMOD=0x01;

[p=181, null, left]TH0=(65536-50000)/256;

[p=181, null, left]TL0=(65536-50000)%256;

[p=181, null, left]anjian=0;//

[p=181, null, left][size=169px]显示时间

[p=181, null, left]shijian=0;//

[p=181, null, left][size=169px]表示时间

[p=181, null, left]temp=0;

[p=181, null, left]}

[p=181, null, left]/*

[p=181, null, left][size=169px]延时函数

[p=181, null, left]*/

[p=181, null, left]void

[p=181, null, left]delay

[p=181, null, left](uint

[p=181, null, left]time)

[p=181, null, left]{

[p=181, null, left]uchar

[p=181, null, left]j;

[p=181, null, left]while

[p=181, null, left](time--)

[p=181, null, left]{

[p=181, null, left]for

[p=181, null, left](j=100;j>0;j--);

[p=181, null, left]//

[p=181, null, left][size=169px]用

[p=181, null, left]j

[p=181, null, left][size=169px]来进行

[p=181, null, left]100

[p=181, null, left][size=169px]次循环

[p=181, null, left],

[p=181, null, left][size=169px]大约

[p=181, null, left]8us

[p=181, null, left]}

[p=181, null, left]}









[p=144, null, left]

[p=144, null, left]7

[p=144, null, left]

[p=181, null, left][size=169px]/*

[p=181, null, left][size=169px]显示函数

[p=181, null, left][size=169px]*/

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]show(void){

[p=181, null, left][size=169px]COM8279=0x92;//8279

[p=181, null, left][size=169px]命令字

[p=181, null, left][size=169px]shumaguan[1]=anjian;

[p=181, null, left][size=169px]for(i=0;i<6;i++){

[p=181, null, left][size=169px]DATA8279=table[shumaguan];//

[p=181, null, left][size=169px]显示

[p=181, null, left][size=169px]shumaguan

[p=181, null, left][size=169px]数组

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]/*

[p=181, null, left][size=169px]键盘中断

[p=181, null, left][size=169px]*/

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]int1_serve(void)

[p=181, null, left][size=169px]interrupt

[p=181, null, left][size=169px]2

[p=181, null, left][size=169px]{

[p=181, null, left][size=169px]COM8279=0x40;//

[p=181, null, left][size=169px]读键盘命令

[p=181, null, left][size=169px]shumaguan[0]=DATA8279;

[p=181, null, left][size=169px]temp=1;

[p=181, null, left][size=169px]flag=1;

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]/*

[p=181, null, left][size=169px]定时器

[p=181, null, left][size=169px]0

[p=181, null, left][size=169px]中断

[p=181, null, left][size=169px]*/

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]time0()

[p=181, null, left][size=169px]interrupt

[p=181, null, left][size=169px]1

[p=181, null, left][size=169px]{

[p=181, null, left][size=169px]TH0=(65536-50000)/256;

[p=181, null, left][size=169px]TL0=(65536-50000)%256;

[p=181, null, left][size=169px]if(t==20){

[p=181, null, left][size=169px]t=0;

[p=181, null, left][size=169px]if(anjian==8)

[p=181, null, left][size=169px]{anjian=0

[p=181, null, left][size=169px];

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]else

[p=181, null, left][size=169px]anjian++;

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]t++;

[p=181, null, left][size=169px]show();

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]void

[p=181, null, left][size=169px]light()

[p=181, null, left][size=169px]{

[p=181, null, left][size=169px]EX1=0;

[p=181, null, left][size=169px]while(flag){

[p=181, null, left][size=169px]if

[p=181, null, left][size=169px](shumaguan[0]>shumaguan[5]){

[p=181, null, left][size=169px]ET0=1;TR0=1;upred=0;

[p=181, null, left][size=169px]motor=0;

[p=181, null, left][size=169px]shijian=2*(shumaguan[0]-shumaguan[5]);

[p=181, null, left][size=169px]//

[p=181, null, left][size=169px]电梯上升时间

[p=181, null, left][size=169px]if(shumaguan[1]<shijian)

[p=181, null, left][size=169px]{upred=0;motor=0;

[p=181, null, left][size=169px]}

[p=181, null, left][size=169px]else









[p=144, null, left]{ET0=0;TR0=0;upred=1;motor=1;anjian=0;shumaguan[5]=shumaguan[0];}第

[p=144, null, left]6

[p=144, null, left]

[p=181, null, left]void

[p=181, null, left]main()//

[p=181, null, left][size=169px]主函数

[p=181, null, left]{

[p=181, null, left]init();//

[p=181, null, left][size=169px]初始化(包括开中断,中断触发方式,

[p=181, null, left]8279

[p=181, null, left][size=169px]的初始化,

[p=181, null, left]RAM

[p=181, null, left][size=169px]和

[p=181, null, left]FIFO

[p=181, null, left][size=169px]的清除、

[p=181, null, left][size=169px]编

[p=169, null, left][size=169px]码方式、分频系数等)

[p=181, null, left]while(1){

[p=181, null, left]show();

[p=181, null, left]if(temp==1){light();}

[p=181, null, left]}

[p=181, null, left]}










267090811789939135.png (92.32 KB, 下载次数: 145)

仿真图

仿真图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-3-20 01:11 | 只看该作者
楼主麻烦把源码重新排版一下(可获得100黑币)
回复

使用道具 举报

板凳
ID:109680 发表于 2016-3-26 09:59 | 只看该作者
admin 发表于 2016-3-20 01:11
楼主麻烦把源码重新排版一下(可获得100黑币)

是不能使用吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表