资源简介
89C51单片机程序例 用拨码盘输入数据,控制电机转动,用LCD显示计数。
代码片段和文件信息
#include“lcd1602.h“
#define uchar unsigned char
#define uint unsigned int
uchar out[6];
sbit STAR_KEY =P3^2;//定义键与单片机的连接引脚
sbit L0=P1^0; //定义SFR中引脚的位
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
sbit L4=P1^4;
sbit L5=P1^5;
sbit L6=P1^6;
sbit L7=P1^7;
sbit MOTOR=P3^0;
uchar n[2]={10};
void delayms(uint x) //延时子程序
{
uchar y;
while(x--)
{
for(y=0;y<123;y++){;}
}
}
uchar Keynum() //按键子程序1
{
uchar key=0;
STAR_KEY=1; //置初值
if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} //按下STAR键则n[0]=0;n[1]=1
return n[1]; //返回n值
}
void xianshi(uint dispbuf) //显示子程序
{
out[0]=dispbuf/10000+0x30;
out[1]=((dispbuf%10000)/1000)+0x30;
out[2]=((dispbuf%1000)/100)+0x30;
out[3]=((dispbuf%100)/10)+0x30;
out[4]=dispbuf%10+0x30;
out[5]=‘\0‘;
LCD_Initial(); //LCD初始化
LCD_Prints(1 0“The Speed Is“); //LCD输出
LCD_Prints(10 1“n/min“);
LCD_Prints(4 1out);
}
uint qiuzhi() //求用拨码盘所置数的值的子程序
{
uchar a;
uchar b;
uchar c;
uchar d;
uchar e;
uchar f;
uchar g;
uchar h;
uint p=0;
if (L0==1) {a=1;} else {a=0;} //将电平信号变为数字的值
if (L1==1) {b=1;} else {b=0;}
if (L2==1) {c=1;} else {c=0;}
if (L3==1) {d=1;} else {d=0;}
if (L4==1) {e=1;} else {e=0;}
if (L5==1) {f=1;} else {f=0;}
if (L6==1) {g=1;} else {g=0;}
if (L7==1) {h=1;} else {h=0;}
p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2;
return p; // 返回所求的P值
}
void main(void) //主程序
{
uint q;
IT0=1; //负跳变触发
EA=1; //开总允许中断
EX0=1; //开INTO中断
TMOD=0X05; //置T0为计数器 方式1
TL0=0; //置计数器初值
TH0=0;
while(1) //无限循环
{
q=qiuzhi(); //调用求值子程序求出所置的数
if (MOTOR==1) {xianshi(q);} else {xianshi(TL0);Keynum();TR0=n[1];} //当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值
if (TL0==q) {TR0=0;MOTOR=1;} else {Keynum();MOTOR=n[0];} //当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制,所以不存在计数值超过置数值的情况
}
}
void Int0(void) interrupt 0 //中断服务程序,工作寄存器用0组
{
TL0=0;TR0=1; //重置计数值,重新开始计数
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12268 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre
文件 2474 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.c
文件 137174 2011-10-30 00:03 传送带产品计数器的设计(LCD显示)\gyreyre.DSN
文件 2695 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.hex
文件 47 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.lnp
文件 5569 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.LST
文件 13623 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.M51
文件 7406 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.OBJ
文件 1357 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.Opt
文件 621 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\gyreyre.plg
文件 768 2011-11-02 13:21 传送带产品计数器的设计(LCD显示)\gyreyre.PWI
文件 2024 2011-10-29 23:59 传送带产品计数器的设计(LCD显示)\gyreyre.Uv2
文件 1348 2011-10-29 23:59 传送带产品计数器的设计(LCD显示)\gyreyre_Opt.Bak
文件 2024 2011-10-29 23:56 传送带产品计数器的设计(LCD显示)\gyreyre_Uv2.Bak
文件 137174 2011-10-29 23:31 传送带产品计数器的设计(LCD显示)\Last Loaded gyreyre.DBK
文件 3194 2011-09-16 22:22 传送带产品计数器的设计(LCD显示)\LCD1602.c
文件 857 2011-03-30 18:31 传送带产品计数器的设计(LCD显示)\LCD1602.h
文件 6313 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\LCD1602.LST
文件 6514 2011-10-30 00:02 传送带产品计数器的设计(LCD显示)\LCD1602.OBJ
目录 0 2011-11-04 22:57 传送带产品计数器的设计(LCD显示)
----------- --------- ---------- ----- ----
343450 20
- 上一篇:全国省市区县乡镇数据库
- 下一篇:STM32智能家居完整项目代码
相关资源
- modbus RTU单片机程序编写
- 基于单片机的串口多机通信6机
- 基于单片机的心型灯设计.rar
- 基于单片机+PCF8591的数字电压表(四路
- 51单片机控制GSM模块发短信程序
- 基于51单片机的简易频率计程序
- 模拟I2C读写24C256和24C02
- 第十届蓝桥杯省赛代码
- 用SST89系列单片机读取SD卡与TLC5620播放
- 基于51单片机矩阵键盘的实现含仿真原
- 用51单片机驱动DS1302时间模块+DS18B20温
- PIC单片机温度控制
- 普通单片机IO口模拟UART程序
- 51单片机与PS2鼠标C程序带滚轮识别,
- 飞思卡尔MC9S12单片机教程
- 流水灯Protues图和程序
- 单片机产生SPWM设计报告
- 78K0-Kd2系列单片机demo源码
- 组态王与51单片机ASCII通信
- 基于51单片机的两轮平衡车程序
- SiI9134配置完整程序,单片机上已测试
- 基于51单片机的RFID智能门禁系统源码
- 基于51单片机的电子密码锁源码+电路
- 51单片机超声波测距数码管显示
- 51单片机超声波测距1602LCD显示
- 51单片机+tlc5615+信号发生器正弦波 方
- 电能收集充电器 51单片机实现
- 51单片机超声波测距HC-SR04程序
- NRF905无线PC控制台操作界面及单片机程
- 51单片机小车巡线L298N驱动
评论
共有 条评论