具体实现功能

具体功能:

通过逻辑生成仪模拟速度,再通过LCD1602进行显示。

设计介绍

单片机介绍

51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

设计思路

文献研究法:搜集整理相关单片机智能手环系统相关研究资料,认真阅读文献,为研究做准备;

调查研究法:通过调查、分析、具体试用等方法,发现单片机智能手环系统的现状、存在问题和解决办法;

比较分析法:比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景;

软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。

设计内容

仿真图

本设计利用protues8.7软件实现仿真设计,具体如图。

Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。

程序

本设计利用KEIL5软件实现程序设计,具体如图。作为本科期间学习的第一门编程语言,C语言是我们最熟悉的编程语言之一。当然,由于其功能强大,C语言是当前世界上使用最广泛、最受欢迎的编程语言。在单片机设计中,C语言已经逐步完全取代汇编语言,因为相比于汇编语言,C语言编译与运行、调试十分方便,且可移植性高,可读性好,便于烧录与写入硬件系统,因此C语言被广泛应用在单片机设计中。keil软件由于其兼容单片机的设计,能够实现快速调试,并生成烧录文件,被广泛应用于C语言的编写和单片机的设计。

全部代码

#include "reg51.h"#include "intrins.h" sbit LCM_RS=P3^0;sbit LCM_RW=P3^1;sbit LCM_EN=P3^7; #define BUSY 0x80 //常量定义#define DATAPORT P1#define uchar unsigned char#define uint unsigned int#define L 50 uchar str0[16],str1[16],count;uint speed;unsigned long time; void ddelay(uint);void lcd_wait(void);void display();void initLCM();void WriteCommandLCM(uchar WCLCM,uchar BusyC);void STR();void account(); /*********延时K*1ms,12.000mhz**********/ void int0_isr(void) interrupt 0 /*遥控使用外部中断0,接P3.2口*/{ unsigned int temp; time=count; TR0=0; temp=TH0; temp=((temp << 8) | TL0); TH0=0x3c; TL0=0xaf; count=0; TR0=1; time=time*50000+temp;} void time0_isr(void) interrupt 1 /*遥控使用定时计数器1 */{ TH0 =0x3c; TL0 =0xaf; count++;} void main(void){ TMOD=0x01; /*TMOD T0选用方式1(16位定时) */ IP|=0x01; /*INT0 中断优先*/ TCON|=0x11; /*TCON EX0下降沿触发,启动T0*/ IE|=0x83;  TH0=0x3c; TL0=0xaf;  initLCM(); WriteCommandLCM(0x01,1); //清显示屏 for(;;) { account(); display(); }} void account(){ unsigned long a;  if (time!=0) { a=L*360000000/time; } speed=a;} void STR(){ str0[0]='S'; str0[1]='p'; str0[2]='e'; str0[3]='e'; str0[4]='d'; str0[5]=' ';  str0[6]=(speed%100000)/10000+0x30; str0[7]=(speed%10000)/1000+0x30; str0[8]=(speed%1000)/100+0x30; str0[9]='.'; str0[10]=(speed%100)/10+0x30; str0[11]=speed%10+0x30; str0[12]='k'; str0[13]='m'; str0[14]='/'; str0[15]='h';} void ddelay(uint k){ uint i,j; for(i=0;i<k;i++) { for(j=0;j<60;j++) {;} }}/**********写指令到LCD子函数************/ void WriteCommandLCM(uchar WCLCM,uchar BusyC){ if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0; /* 选中指令寄存器*/ LCM_RW=0; // 写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } /**********写数据到LCD子函数************/ void WriteDataLCM(uchar WDLCM){ lcd_wait( ); //检测忙信号 DATAPORT=WDLCM; LCM_RS=1; /* 选中数据寄存器 */ LCM_RW=0; // 写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0;} /***********lcd内部等待函数*************/ void lcd_wait(void){ DATAPORT=0xff; //读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色 LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); _nop_(); _nop_(); while(DATAPORT&BUSY) { LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0; } /**********LCD初始化子函数***********/void initLCM( ){ DATAPORT=0; ddelay(15); WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号 ddelay(5); WriteCommandLCM(0x38,0); ddelay(5); WriteCommandLCM(0x38,0); ddelay(5);  WriteCommandLCM(0x38,1); //8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCM(0x08,1); //关闭显示,检测忙信号 WriteCommandLCM(0x01,1); //清屏,检测忙信号 WriteCommandLCM(0x06,1); //显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号} /****显示指定坐标的一个字符子函数****/ void DisplayOneChar(uchar X,uchar Y,uchar DData){ Y&=1; X&=15; if(Y)X|=0x40; //若y为1(显示第二行),地址码+0X40 X|=0x80; //指令码为地址码+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData);} /*******显示指定坐标的一串字符子函数*****/void DisplayListChar(uchar X,uchar Y,uchar *DData){ uchar ListLength=0; Y&=0x01; X&=0x0f; while(X<16) { DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; }} void display(){  STR();  DisplayListChar(0,0,str0); DisplayListChar(0,1,str1);}

设计分享|基于单片机LCD数字测速仪的设计相关推荐

  1. 单片机课程设计数字心率计_基于单片机的数字心率计设计

    基于单片机的数字心率计设计 摘要 : 本论文中的心率计采用光电传感和放大滤波技术制作出一 个光电脉搏探头 , 然后经过 A/D 转化把信号传送给主芯片 STC89S52 单片机作信息处理后送 LCD ...

  2. 基于单片机控制的数字温度计课程设计c语言,基于单片机的数字温度计课程设计.doc...

    基于单片机的数字温度计课程设计.doc 目录1 绪论 .11.1 设计背景 .11.2 设计要求 .11.3 设计思路 .12 系统硬件设计 12.1 设计总框图 12.2 各模块功能 .22.3 设 ...

  3. 基于单片机的超市储物柜设计_基于单片机的自动存储柜的设计

    金红娟 张娣 王历 摘  要: 隨着科技的日趋发展,智能化产品随处可见,极大地方便了人们的生产生活.在一些综合超市,大型购物商场等一些公共场合,由于人流大,购物的人多,仅靠人工来存储物品速度慢,效率低 ...

  4. 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】

    1302基于单片机波形发生器PCB原理图报告设计资料-毕设课设原理图程序资料 设计一个信号发生器,能在单片机的基础上控制并产生三角波.方波.正弦波和矩形波,且频率幅度和波形可以通过按键改变. #inc ...

  5. 设计分享|基于单片机的跑马灯

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 单片机的P0口驱动8个LED,从右到左依次点亮LED灯,实现跑马灯( ...

  6. 设计分享|基于单片机的矩阵电子琴(汇编)

    目录 具体功能: 设计介绍 单片机介绍 设计思路 设计内容 仿真图 程序 具体功能: 通过矩阵按键按下切换不同的歌曲进行播放,同时LCD1602进行计时显示,按键按下依次分别播放以下歌曲:<精忠 ...

  7. 设计分享|基于单片机电子密码锁(汇编)

    具体实现功能 具体功能: (1)共3位密码,每位的取值范围为1-8. (2)用户可以自行设定和修改密码. (3)按每个密码键时都有声.光提示. (4)若键入的3位开锁密码不完全正确,则报警5秒钟,以提 ...

  8. 单片机编码电位器c语言,基于单片机的数字电位器的设计

    分辨率扩展 Ra和Rb同时并联在输入信号Vin的两端,其抽头数均为32.Ra和Rb的输出作Rc端口电压VH和VL设置,Ra始终比Rb高一个位置间隔,这样就可以将1/32Vi-31/32Vi共31种输入 ...

  9. 基于单片机的数字秒表

    设计简介: 本设计是基于单片机的数字秒表的设计,主要实现以下功能: 可实现LCD12864显示时间以及倒计时.顺计时等信息: 可实现通过按键调节调节时间的大小以及实现计时功能: 可实现通过通过语音播报 ...

最新文章

  1. 距离QCon纽约还有3个礼拜:新的演讲、播客节目和研讨会
  2. 有医学又有计算机系的学校,中山最好的中专学校有哪些 十大中专学校排名
  3. Windows服务编写综述
  4. 感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
  5. 推荐系统知识梳理——协同过滤
  6. 安装运行symfony框架编写的edusoho开源程序
  7. cloud_config学习_1
  8. CUDA库之NPP(四):内存开辟和字节对齐
  9. win7计算机怎么重置,win7系统的电脑如何重置 win7重置电脑的方法
  10. 求取scores最近邻的方法之二开始新的实践Chorus
  11. C语言计算排列组合C(m,n)的值
  12. 原生WebGL场景中绘制多个圆锥圆柱
  13. 如何修复excel文件损坏
  14. Linux查看文件的命令
  15. jni in linux
  16. 为什么电脑传到手机上的html,电脑上的Excel表格传到手机上,手机为什么打不开?...
  17. 服务器提示临时文件已满,win10系统提示”由于临时文件夹已满而导致“磁盘空间不足”错误的解决办法_win10教程_uc电脑园...
  18. 关于回波损耗 和 驻波比的摘要 Return Loss and VSWR
  19. 狄兰·托马斯诗合集▷Do not go gentle into that good night
  20. python实现阵列信号处理(三):多重信号分类Music算法

热门文章

  1. 获得屏幕分辨率的宽和高
  2. 猪与蟒(pig and python)
  3. 玩转Reactjs第一篇-构建工程(create-react-app)
  4. Netty的深入浅出--7.ProtocalBuffers的分析
  5. 贷款平台微信后台流程策划
  6. 通达信二次开发接口api如何操作?
  7. CSS3技巧35:滚动的条纹背景
  8. 微信小程序 GitHub Trending Hub 上线 84 天了~
  9. 竞争冒险 亚稳态 跨时钟域 异步fifo
  10. 使用C#实现WinForm窗体的动画效果