//*************************************************************************************************
//* *
//* ***************************SMC1602驱动程序************************* *
//* *
//*************************************************************************************************
//*************************************************************************************************
//* *
//* ******************************头文件及宏定义************************** *
//* *
//*************************************************************************************************
#include <at89x51.h>
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<端口设置宏定义>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define LCDRS P3_5 //寄存器选择信号:
// 0--数据寄存器;
// 1--指令寄存器。
#define LCDRW P3_6 //读写信号:
// 1--读LCD;
// 0--写LCD。
#define LCDE P3_7 //片选信号,当输入下降沿信号时,
//执行指令或传送数据。
#define LCDPORT P0 //LCD数据接口。
//*************************************************************************************************
//* *
//* ******************************延时函数***************************** *
//* *
//*************************************************************************************************
void vDelay()
{
unsigned int uiCount;
for(uiCount=0;uiCount<250;uiCount++);
}
//*************************************************************************************************
//* *
//* **************************把1个命令写入LCD************************* *
//* *
//*************************************************************************************************
void vWriteCMD(unsigned char ucCommand)
{
vDelay(); //先延时。
LCDE=1; //然后把LCD改为写入命令状态。
LCDRS=0;
LCDRW=0;
LCDPORT=ucCommand; //再输出命令。
LCDE=0; //最后执行命令。
}
//*************************************************************************************************
//* *
//* ***************************把1个数据写入LCD************************ *
//* *
//*************************************************************************************************
void vWriteData(unsigned char ucData)
{
vDelay(); //先延时。
LCDE=1; //然后把LCD改为写入数据状态。
LCDRS=1;
LCDRW=0;
LCDPORT=ucData; //再输出数据。
LCDE=0; //最后显示数据。
}
//*************************************************************************************************
//* *
//* **********************把1个字符显示到当前光标处********************* *
//* *
//*************************************************************************************************
void vShowOneChar(unsigned char ucChar)
{
switch(ucChar)
{
case ' ': vWriteData(0x20);break;
case '!': vWriteData(0x21);break;
case '"': vWriteData(0x22);break;
case '#': vWriteData(0x23);break;
case '$': vWriteData(0x24);break;
case '%': vWriteData(0x25);break;
case '&': vWriteData(0x26);break;
case '>': vWriteData(0x27);break;
case '(': vWriteData(0x28);break;
case ')': vWriteData(0x29);break;
case '*': vWriteData(0x2A);break;
case '+': vWriteData(0x2B);break;
case '-': vWriteData(0x2D);break;
case '.': vWriteData(0x2E);break;
case '/': vWriteData(0x2F);break;
case '=': vWriteData(0x3D);break;
case '<': vWriteData(0x3E);break;
case '?': vWriteData(0x3F);break;
case '^': vWriteData(0x5E);break;
case ':': vWriteData(0x3A);break;
case '0': vWriteData(0x30);break;
case '1': vWriteData(0x31);break;
case '2': vWriteData(0x32);break;
case '3': vWriteData(0x33);break;
case '4': vWriteData(0x34);break;
case '5': vWriteData(0x35);break;
case '6': vWriteData(0x36);break;
case '7': vWriteData(0x37);break;
case '8': vWriteData(0x38);break;
case '9': vWriteData(0x39);break;
case 'A': vWriteData(0x41);break;
case 'B': vWriteData(0x42);break;
case 'C': vWriteData(0x43);break;
case 'D': vWriteData(0x44);break;
case 'E': vWriteData(0x45);break;
case 'F': vWriteData(0x46);break;
case 'G': vWriteData(0x47);break;
case 'H': vWriteData(0x48);break;
case 'I': vWriteData(0x49);break;
case 'J': vWriteData(0x4A);break;
case 'K': vWriteData(0x4B);break;
case 'L': vWriteData(0x4C);break;
case 'M': vWriteData(0x4D);break;
case 'N': vWriteData(0x4E);break;
case 'O': vWriteData(0x4F);break;
case 'P': vWriteData(0x50);break;
case 'Q': vWriteData(0x51);break;
case 'R': vWriteData(0x52);break;
case 'S': vWriteData(0x53);break;
case 'T': vWriteData(0x54);break;
case 'U': vWriteData(0x55);break;
case 'V': vWriteData(0x56);break;
case 'W': vWriteData(0x57);break;
case 'X': vWriteData(0x58);break;
case 'Y': vWriteData(0x59);break;
case 'Z': vWriteData(0x5A);break;
case 'a': vWriteData(0x61);break;
case 'b': vWriteData(0x62);break;
case 'c': vWriteData(0x63);break;
case 'd': vWriteData(0x64);break;
case 'e': vWriteData(0x65);break;
case 'f': vWriteData(0x66);break;
case 'g': vWriteData(0x67);break;
case 'h': vWriteData(0x68);break;
case 'i': vWriteData(0x69);break;
case 'j': vWriteData(0x6A);break;
case 'k': vWriteData(0x6B);break;
case 'l': vWriteData(0x6C);break;
case 'm': vWriteData(0x6D);break;
case 'n': vWriteData(0x6E);break;
case 'o': vWriteData(0x6F);break;
case 'p': vWriteData(0x70);break;
case 'q': vWriteData(0x71);break;
case 'r': vWriteData(0x72);break;
case 's': vWriteData(0x73);break;
case 't': vWriteData(0x74);break;
case 'u': vWriteData(0x75);break;
case 'v': vWriteData(0x76);break;
case 'w': vWriteData(0x77);break;
case 'x': vWriteData(0x78);break;
case 'y': vWriteData(0x79);break;
case 'z': vWriteData(0x7A);break;
default: break;
}
}
//*************************************************************************************************
//* *
//* *********************把1个字符串显示到当前光标处******************* *
//* *
//*************************************************************************************************
void vShowChar(unsigned char ucaChar[])
{
unsigned char ucCount;
for(ucCount=0;;ucCount++)
{
vShowOneChar(ucaChar[ucCount]);
if(ucaChar[ucCount+1]=='\0')
break;
}
}
//*************************************************************************************************
//* *
//* *********************把1个3位数字显示到当前光标处******************* *
//* *
//*************************************************************************************************
void vShowNumber(unsigned int uiNumber)
{
unsigned char ucaNumber[3],ucCount;
if(uiNumber>999)
uiNumber=999;
ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。
ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];
for(ucCount=0;ucCount<3;ucCount++)
{
vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
AT89C51驱动H桥电机实验proteus仿真源文件(含C程序源码)
共28个文件
c:4个
lst:4个
obj:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 15 下载量 158 浏览量
2020-11-30
21:03:50
上传
评论 6
收藏 82KB RAR 举报
温馨提示
AT89C51驱动H桥电机proteus仿真源文件(含C程序源码),带1602显示和按键控制正转,反转,停止,包含proteus工程源文件,单片机C语言程序。proteus8.6可正常打开,仿真。
资源推荐
资源详情
资源评论
收起资源包目录
AT89C51驱动H桥电机.rar (28个子文件)
AT89C51驱动H桥电机
Motor.PWI 768B
Motor.pdsprj.AUTT--20200101K.Administrator.workspace 2KB
Motor.DSN 130KB
Keil
KeyProcess.__i 112B
Motor 25KB
Motor.lnp 77B
Motor.Opt 2KB
KeyProcess.lst 8KB
KeyProcess.obj 5KB
KeyScan.obj 3KB
Motor.plg 216B
KeyScan.lst 7KB
include
Includes.h 155B
SMC1602.h 1KB
KeyScan.h 126B
KeyProcess.h 276B
main.lst 12KB
SMC1602.lst 17KB
Motor.M51 19KB
source
KeyProcess.c 3KB
main.c 6KB
SMC1602.c 7KB
KeyScan.c 3KB
SMC1602.obj 12KB
Motor.hex 5KB
main.obj 9KB
Motor.Uv2 2KB
Last Loaded Motor.DBK 128KB
共 28 条
- 1
小鱼电子
- 粉丝: 428
- 资源: 1249
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页