第一范文网 - 专业文章范例文档资料分享平台

基于单片机的自行车里程表及速度仪的毕业设计

来源:用户分享 时间:2025/5/30 16:58:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

附录

系统总设计图

全程平均速度、里程L、运行时间RP1RESPACK-8运行过程中5秒内当前速度(m/s)LCD1LM016LVSSVDDVEERSRWE456123456789123P0P1P2P3P4P5P6P7P0P1P2P3P4P5P6P77891011121314D0D1D2D3D4D5D6D7C1U133p19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617P0P1P2P3P4P5P6P7X1CRYSTAL18C2R1200R33pXTAL2D21N40019RST清零复位开关C322u293031PSENALEEAD0D1D2D3D4D5D6D712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51D0D1D2D3D4D5D67D7AX1R22kBCDRP2转换开关SW1D1LED-REDSW-SPDTX1SW1(NC)示波器激励源(脉冲信号)1D0D1D2D3D4D5D6D723456789RESPACK-8超速报警灯8m/s,即28.8Km/hR3220R传感器开关自行车里程表与速度仪的设计 2010级电子信工程(应电应本)徐朝军

第 19 页 共 26页

程序代码

#include

#include //包含_nop_();函数定义的头文件 void timer0_int(); sbit LED=P3^7;

sbit E=P3^2; //1602使能引脚 sbit RW=P3^1; //1602读写引脚 sbit RS=P3^0; //1602数据/命令选择引脚 unsigned char hour,minute,second; unsigned char n,count;

unsigned long lengthbuf,lengthvalue; unsigned char code

Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9的共阴极七段管代码 unsigned char code

Table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //0~9的共阴极七段管代码带小数点 void Delay0(int Times); void Display(unsigned int x); void delay() //延时5US { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }

bit Busy(void) //读状态函数判断液晶模块的忙碌状态 {

bit busy_flag = 0; RS = 0; RW = 1; E = 1; delay();

第 20 页 共 26页

busy_flag = (bit)(P0 & 0x80); E = 0;

return busy_flag; }

void wcmd(unsigned char del) //将模式设置指令或显示地址写入液晶模 {

while(Busy()); RS = 0; RW = 0; E = 0; delay(); P0 = del; delay(); E = 1; delay(); E = 0; }

void wdata(unsigned char del) ///将数据字符ASCII码写入液晶 {

while(Busy()); RS = 1; RW = 0; E = 0; delay(); P0 = del; delay(); E = 1; delay(); E = 0; }

void L1602_init(void) //初始化液晶模块 {

wcmd(0x38); //功能设置8位字长2行5*7点阵 wcmd(0x0c); //显示设置显示屏右移 wcmd(0x06); //显示设置光标右移字符不移 wcmd(0x01); //清屏命令 }

第 21 页 共 26页

void L1602_string(unsigned char hang,unsigned char lie,unsigned char p) //将数据写入液晶模块 {

unsigned char a;

if(hang == 1) a = 0x80; //显示在第一行 if(hang == 2) a = 0xc0; //显示在第一行 a = a + lie -1; wcmd(a); wdata(p); }

void timer0_int() interrupt 1 using 3 //中断用于构成时钟{ n++; if(n==100) { n=0; count++; second++; if(second>=60) {

second=0; minute++; if(minute>=60) { minute=0; hour++;

if(hour>=24) hour=0; } } }

if(count==5) { count=0;

lengthvalue=(TL1+TH1*256)*215-lengthbuf; lengthbuf=(TL1+TH1*256)*215; } TH0=0xd8;

第 22 页 共 26页

基于单片机的自行车里程表及速度仪的毕业设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2s6o83nbgx55mbv22qot_6.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top