上海电力学院
大作业报告
课程名称: 嵌入式系统
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
与实践
项目名称: 《洗衣机控制器》
班 级: 2009074
姓名: 杨孟迪 学号: 20092040
成绩:________ 实验时间:2011.12.16
设计目的
运用C语言,HCS12 16位单片机的知识,根据
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目的要求进行软硬件的设计和调试,从而加深对于本课程
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
的理解,掌握了如何使用CodeWarrior来整合各种驱动模块,再通过算法实现硬件上的运行。
功能描述
最终运行的功能为:
1、 DG128开启,上电,LCD提示显示输入。
2、 键入所选定时量程,LCD开始计时,此时,洗衣机启动。
3、 定时结束,LCD提示计数完毕,洗衣机工作完毕。此时,手动关闭电源即可。
通过对于CodeWarrior 软件的操作,编写代码,最终实现freescale HCS12DG128单片机简单控制家用洗衣机的开启——计数——关闭功能。
导线接插点
硬件连接
PTA口(KEY1-8)
PTA0 PTA1 PTA2 PTA3 PTA4 PTA5 PTA6 PTA7
PTM6
PTM3
PTM2
设计方案
关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案
定时档位:
在洗衣机启动的时候,LCD上电,显示提示输入,键入不同的键,所对应的模式不同,共分为20分钟、25分钟、、、65分钟10个定时档。每个键所定义的模式为:键定义值0键位20分钟,键定义值每加1,相应计数值在20的基础上加5分钟。
主要驱动模块
键盘驱动源文件:KBI_I.c.
计数驱动模块:Timer.c
LCD显示驱动模块:LCD.c
程序设计代码
//头文件包含
#include "Includes.h" //总头文件
#include
//在此添加全局变量定义
uint8 time[3];
uint8 a,b,c;
extern uint8 KB_valueN,KB_DefValue;
void main()
{
//0.1 主函数中的变量定义
uint8 remember,cnt,state=0;
uint32 mRuncount=0; //运行计数器
uint8 receive_data[33]="Timer ";
//uint8 d;//
//0.2 关总中断
DisableInterrupt(); //禁止总中断
//0.3 芯片初始化
MCUInit();
//0.4 模块初始化
TimerInit(); //(1)定时器1初始化
SCIInit(0,FBUS_32M,9600); //(2)串行口初始化
LCDInit(); //(3)LCD初始化
Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //RUN指示灯初始化为暗
//0.5 开放中断
//
EnableSCIReInt0; //(1)开放串口接受中断
EnableTimer; //(2)开放定时器1溢出中断
EnableKBint(); //(3)开放键盘中断
EnableInterrupt(); //(4)开放总中断
time[0] = 0; //(1) "时分秒"缓存初始化(00:00:00)
time[1] = 0;
time[2] = 0;
remember = time[2]; //(2) 临时变量remember初始化
KB_DefValue = 0xff;
// 主循环
for(;;)
{
//LCD显示计数器值
if (KB_DefValue >= 0)
{
if(state==0)
{
cnt=KBDef(KB_valueN)-0x30;
state=1;
}
else if(state==1)
{
cnt=(cnt*10+ (KBDef(KB_valueN)-0x30));
state=2;
}
if(state==2)
{
if(remember!=time[2] )
{
strcpy((char*)receive_data,"Timer ");
remember = time[2];
cnt--;
receive_data[8]=cnt/10+0x30;
receive_data[9]=cnt%10+0x30;
LCDShow((uint8 *)receive_data);
}
}
}
else
LCDShow((uint8 *)"Timer ");
if(cnt==0)
//state=0;
LCDShow((uint8 *)"END ");
} //for_end(主循环结束)
}//main_end
中断程序 isr.c中要添加中断程序,如定时器溢出中断处理程序,键盘中断程序。这些程序主要在平时课上的实验
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
代码中可以获得。
设计心得
单片机是一门应用性和实践性很强的学科,熟悉单片机的人都知道,要学好单片机可不是一件容易的事
首先,学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。C语言是一门学问,有很多专业书籍来讲解,并且对我们今后的编程生涯有绝对的好处。
其次,是单片机教材选择。单片机是一门非常重视实践的技术,不能总是看书,但要学习它首先应看书,对单片机引脚、内部结构、寄存器和原理有一定地了解和感官认识,它的是怎样工作的,能干些什么?刚开始时,我看不明白,但我觉得这些并不要紧,因为我还缺乏实践经验。现在单片机应用广泛,因此各个厂家分别推出了自己的单片机,按内部结构体系派系分:51系列、PIC系列、AVR系列、摩托罗拉等等……我们没必要每样都学!因为他们的编程方法和调试过程以及内部指令结构有一定的相似,只要学精通一款就OK了!尤其是用C语言编程,就几乎不用分什么派系,但是我们要选择一款有代表性的知识范围广,并且入门容易,书籍多。一般来说,MCS-51系列单片机已经得到广泛的普及和应用,市场上它的资料也比较多,用的人也很多。
单片机初学者几个不易掌握的概念
一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中 ,连连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很 多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各 器件之间的工作必须相互协调?所以就需要的连线就很多了,如果仍如同模拟电路一样 ,在各微处理器和各器件间单独连线线,则线的数量将多得惊人,所以在微处理机中引 入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线 上,即相当于各个器件并联起来,但仅这样还不行,如果有两?器件同时送出数据,一 个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是是不允许的,所以 要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有 多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称 控制 总线。