一、单片机课程设计,急求!!!
#defineLCD1602_FLAG
#defineLCD1602_PORTP0
#include<reg51.h>
#include<stddef.h>
#defineucharunsignedchar
**itlcd1602_rs=P2^0;
**itlcd1602_e=P2^2;
**itlcd1602_rw=P2^1;
**itlcd1602_busy=P0^7;
ucharstr[]="ThisisKeyTest";
ucharkeyval,keystr[16];
voiddelay(uchara)
{
uchari;
while(a--)for(i=0;i<120;i++);
}
/*
************************************
*函数名称:lcd1602_CheckBusy()
*函数功能:状态查询
************************************
*/
voidlcd1602_CheckBusy()
{
do
{
lcd1602_busy=1;
lcd1602_rs=0;
lcd1602_rw=1;
lcd1602_e=0;
lcd1602_e=1;
}
while(lcd1602_busy);
}
/*
***************************************
*函数名称:lcd1602_WriteCmd()
*函数功能:写命令
*入口参数:命令字
*出口参数:无
***************************************
*/
voidlcd1602_WriteCmd(constucharcmd)
{
lcd1602_CheckBusy();
lcd1602_rs=0;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=cmd;
lcd1602_e=0;
}
/*
*******************************************
*函数名称:lcd1602_WriteData()
*函数功能:写数据
*入口参数:c--待写数据
*出口参数:无
*********************************************
*/
voidlcd1602_WriteData(constucharc)
{
lcd1602_CheckBusy();
lcd1602_rs=1;
lcd1602_rw=0;
lcd1602_e=1;
LCD1602_PORT=c;
lcd1602_e=0;
}
/*
***********************************************
*函数名称:lcd1602_Init()
*函数功能:初始化LCD
*入口参数:无
*出口参数:无
***********************************************
*/
voidlcd1602_Init()
{
lcd1602_WriteCmd(0x38);//显示模式为8位2行5*7点阵
lcd1602_WriteCmd(0x0c);//displayenable,flagenable,flashenable,
lcd1602_WriteCmd(0x06);//flagmovetoright,screendon'tmove
lcd1602_WriteCmd(0x01);//clearscreen
}
/*
************************************************
*函数名称:lcd1602_Display()
*函数功能:字符显示
*入口参数:ptr--字符或字符串指针
*出口参数:无
*说明:用户可通过以下方式来调用:
*1)lcd1602_Display("Hello,world!");
*2)INT8U存储类型txt[]="要显示的字符串";
*或者INT8U存储类型txt[]={'t','x','t',..,'\0'};
*INT8U*ptr;
*ptr=&txt;
*lcd1602_Display(ptr);
*或lcd1602_Display(txt);
*或lcd1602_Display(&txt);
************************************************
*/
voidlcd1602_Display(constuchar*ptr,ucharline)
{
uchardatai=0;
uchar*dataq;
q=ptr;
switch(line)
{
case0:
lcd1602_WriteCmd(0x80);
while(q!=NULL&&(*q!='\0')&&i<16)
{
lcd1602_WriteData(*q);
q++;
i++;
}
break;
case1:
lcd1602_WriteCmd(0xc0);
while(q!=NULL&&(*q!='\0')&&i<16)
{
lcd1602_WriteData(*q);
q++;
i++;
}
break;
}
}
ucharkbscan(void)
{
unsignedcharsccode,recode;
P3=0x0f;//发0扫描,列线输入
if((P3&0x0f)!=0x0f)//有键按下
{
delay(20);//延时去抖动
if((P3&0x0f)!=0x0f)
{
sccode=0xef;//逐行扫描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
while((P3&0x0f)!=0x0f);//等待键抬起
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return0;//无键按下,返回0
}
uchargetkey(void)
{
ucharkey;
key=kbscan();
if(key==0){keyval=0xff;return(0);}
switch(key)
{
case0x11:keyval=7;break;
case0x12:keyval=4;break;
case0x14:keyval=1;break;
case0x18:keyval=10;break;
case0x21:keyval=8;break;
case0x22:keyval=5;break;
case0x24:keyval=2;break;
case0x28:keyval=0;break;
case0x41:keyval=9;break;
case0x42:keyval=6;break;
case0x44:keyval=3;break;
case0x48:keyval=11;break;
case0x81:keyval=12;break;
case0x82:keyval=13;break;
case0x84:keyval=14;break;
case0x88:keyval=15;break;
default:keyval=0xff;break;
}
if(keyval!=0xff)return(1);
elsereturn(0);
}
main()
{
ucharnum;
lcd1602_Init();
lcd1602_Display(str,0);
while(1)
{
if(getkey())
{
if(keyval<10)keystr[num]=keyval+0x30;
elsekeystr[num]=keyval-10+'A';
lcd1602_Display(keystr,1);
num++;
num%=16;
}
}
}
二、单片机课程设计的目的
1.熟练掌握C51系统仿真开发系统的应用。
2.加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和开发工作打下良好基础。
3.掌握的液晶的工作原理以及应用设计。能够对液晶芯片进行编程。
4.掌握小系统开发设计的流程以及设计思路。
三、单片机课程设计!不要**百度!高分悬赏!!
1.单片机控制的60s倒计时
这个太简单了,不用什么提示吧?硬件上只要单片机最小系统加上数码管两个,程序上只要设置好定时器就行.
2.
基于单片机的电子钟设计
这个要复杂一点.大概要单片机+数码管+实时时钟芯片如DS系列(ds1302加要电池)+存储芯片如24C02,当然驱动数码管的如译码器或锁存器也要有.
实在说你第一个设计网上能找到现成的,第二个设计网上也能找到现成的,不过要你自己使用keil、proteus软件综合调试仿真,这两个内容都有,自己动手百度一下吧,不要太依赖别人.毕竟这样才能提高一下你自己.
四、单片机课程设计的介绍
单片机课程设计,是很多高校,电子信息专业、自动化专业、通信专业等学生在校学习期间,必须完成的一项重要的动手实践活动,但现在很多高校的课程设计流于形式,是典型的欺软怕硬。凌阳教育根据对大学生整体动手能力和实践能力的培养要求,精心选择了单片机课程设计与工程应用实例,典型实例包括了单片机接口、A/D转换、D/A转换、道路交通灯控制、温度测量、微机通信、LED点阵字符显示、电子万年历、抢答器等。使学生在学习完后,能真正从事单片机或嵌入式的开发工作。包括项目概述、项目要求、系统设计、硬件设计、软件设计、系统仿真及调试,提供完整的程序清单和电路原理图。采了实际应用项目实例,力求理论和实践相结合,同时考虑培养学生解决工程实际问题和综合应用的能力。典型实例都来自实际工程应用,有助于学生动手能力的培养和锻炼。
文章分享结束,单片机课程设计和单片机课程设计的目的的答案你都知道了吗?欢迎再次光临本站哦!