×

单片机课程设计

前端技术网 前端技术网 发表于2024-02-02 11:47:15 浏览1898 评论0

抢沙发发表评论

一、单片机课程设计,急求!!!

#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点阵字符显示、电子万年历、抢答器等。使学生在学习完后,能真正从事单片机或嵌入式的开发工作。包括项目概述、项目要求、系统设计、硬件设计、软件设计、系统仿真及调试,提供完整的程序清单和电路原理图。采了实际应用项目实例,力求理论和实践相结合,同时考虑培养学生解决工程实际问题和综合应用的能力。典型实例都来自实际工程应用,有助于学生动手能力的培养和锻炼。

文章分享结束,单片机课程设计和单片机课程设计的目的的答案你都知道了吗?欢迎再次光临本站哦!