机动车“尾号限行”的轮号使不少记性不佳的有车族被限行日期搞得有点晕。特别是那些家里有不止一辆车的人,要分别记住两辆车两天限行且对号入座,说起来容易,但做起来真的有一点点难度。本文介绍一种机动车尾号限行控制器,可以解决司机们的上述烦恼。

一、电路组成及原理

该控制器电路见图1,它由输入电路、日期产生电路、LCD显示电路、输出控制电路、单片机和电源组成。自己的车牌尾号由DIP开关S1输入到DS1302芯片中保存,当司机发动汽车时,控制器将自动与限行的车牌号对比,若当天是限行日,则在液晶屏幕上显示提示信息,同时切断启动电机开关线,使汽车不能启动;若当天不是限行日,则汽车即可正常使用。

1. 输入电路

由于车牌尾号和日期、时间不需要经常输入,所以输入电路采用了DIP开关S1 和4个10kΩ电阻组成键盘电路,DIP开关如图2所示,其优点是体积小,可靠性高。S1中的开关1是限行选择开关,当它处于OFF位置时,取消限行管制,该控制器不起作用。只有当它处于ON位置时,机动车尾号限行控制器才起作用。开关2是功能选择开关,可以选择不同的输入功能。开关3是数字“加”键,开关4是数字“减”键。通过2、3、4开关的配合使用可设置控制器的初始年、月、日、时、分、秒和自己的车牌尾号。

图1 机动车尾号限行控制器电路

图2 DIP开关

2. 日期产生电路

日期产生电路的芯片型号是DS1302,其引脚图见图3 。它是一种高性能低功耗时钟芯片,包括实时时钟/日历和31 字节的静态RAM,可实时地对秒、分、时、日、周、月以及闰年进行计数处理。31字节的高速RAM通过外接充电电池可长期保存数据。正常工作时DS1302芯片还能慢速为电池充电。它能在2.5~5.5V 电源下可靠工作,在2.5V时耗电小于300nA。在主电源关闭的情况下,能保持时钟的连续运行。DS1302芯片有8个引脚,2、3脚X1、X2是晶体引脚,晶体的频率是32.768kHz 。1脚是主电源引脚VCC2,8脚是备用电源引脚VCC1,当VCC2小于VCC1电压0.2V以下时,VCC1给DS1302芯片供电。5脚是复位引脚,RST低电平有效。7脚是串行时钟引脚SCLK。6脚是串行数据输入/输出脚I/O,它和SCLK配合与单片机交换数据。4脚是电源地。

图3 DS1302引脚图

图4 电源电路

3. LCD显示电路

LCD显示电路采用的是12232F,它内置了8192个16×16点汉字和128个16×8点ASCII字符集。它主要由行驱动/列驱动器及128×32全点阵液晶显示器组成。可完成图形显示,也可以显示7.5×2个(16×16点阵)汉字。它与单片机采用串行方式交换数据。1 2 2 3 2 F 有8 个引脚, 1 脚是电源地V S S 。2 脚是电源正V D D(3.0~5.5V)。3脚是对比度调整V l c d 。4 脚是串行同步时钟输入脚CLK,上升沿时读取SID数据。5脚是串行数据输入脚SID。6脚是片选脚,高电平有效。7脚是背光源正BL+。8脚是背光源负BL-。

4. 输出控制电路

输出控制电路由R2、VT1、VD1、K1组成。其中VD1是保护管,避免VT1截止时K1产生的感应电压把VT1损坏。当控制系统判断出今日该车尾号限行时,则在IC2的P1.3输出一个高电平使VT1饱和导通,K1线圈得电,常闭触点断开,机动车启动开关线断开,使机动车不能发动。同时在LCD显示屏上显示“今日不能开车”的信息提醒司机注意。

5. 单片机和电源

为了便于大家制作,本控制器选用AT89C2051为控制核心。由于它内部程序存储器为Flash,所以修改内部程序十分方便快捷,只要配备一个可以编程89C2051的编程器即可。调试人员可以采用程序编辑、编译、固化和插到电路板中试验这样反复循环的方法,对大多数人来说,这种调试方法并不困难。AT89C2051是20引脚的与8051兼容的8位高性能单片机。图1中C1、C2、晶体与单片机内部电路组成了时钟电路。C3、R3构成了上电复位电路。本控制器的电源取自汽车的Acc线,通过7805稳压提供稳定的5V电源电压。电源电路见图4,其中C1、C2和C3是滤波电容。

二、程序结构及原理

该程序用C 语言编写,其程序结构包括参数输入模块、显示模块和控制输出模块。在程序的参数输入模块中,主要涉及DS1302时钟芯片的编程。通过输入模块程序,给DS1302设置初始的年、月、日及时间的初值,然后输入自己的车牌尾号。

程序首先检查与S1的开关2相连的P3.1脚,每检测到一个脉冲,“功能选择”变量值加1。具体要输入什么参数,由变量“功能选择”的数值决定,见附表。

图5 程序流程图

附表 功能键说明

再检查与S1的开关3相连的P3.2脚,每检测到一个脉冲,给相应的变量加1。例如“功能选择”变量=7,表示要输入车牌尾号。P3.2脚每得到一个脉冲,车牌尾号变量加1。与S1的开关3相连的P3.3脚,每输入一个脉冲,给相应的变量减1。

显示模块主要涉及对12232F芯片进行编程,包括液

晶屏初始化部分程序和写命令和数据到12232F芯片的程序。其中液晶屏初始化部分程序放在总程序的初始化部分。由于12232F芯片本身内置8192个16×16点汉字库和128个16×8点ASCII字符集图形点阵库,所以对它的编程比较简单。

在控制输出模块程序中,首先检测P3.0脚,它与S1的开关1相连,当P3.0=0时表示取消限行管制,使P1.3脚输出为“0”,三极管VT1截止,继电器K1不动作,K1的常闭触点处于闭合状态,汽车启动机开关线接通,司机可以启动汽车行驶。当P3.0=1时,表示要进行限行管制,此时程序从DS1302芯片中取出当天日期,并计算出当日限行号码,与该车尾号进行比对,如果相同则使P1.3=1,三极管VT1饱和导通,继电器K1吸合,K1的常闭触点断开,机动车启动开关线断开,司机不能启动汽车行驶,同时在LCD屏上显示“今日不能开车”的信息提醒司机注意。

如果不同则使P1.3=0,三极管VT1截止,继电器K1不动作,K1的常闭触点处于闭合状态,汽车启动开关线接通,司机可以启动汽车行驶。

c语言编程车牌限行,机动车尾号限行提示器相关推荐

  1. c语言车辆限行,机动车尾号限行提示器

    机动车"尾号限行"的轮号使不少记性不佳的有车族被限行日期搞得有点晕.特别是那些家里有不止一辆车的人,要分别记住两辆车两天限行且对号入座,说起来容易,但做起来真的有一点点难度.本文介 ...

  2. 2023年4月北京机动车尾号限行轮换新规定用手机提醒

    为了巩固大气污染治理效果,有效减轻城市交通压力,很多地区都实行了工作日机动车尾号限行措施,一般是每个工作日限行2个尾号,而北京也不例外.此外自2023年4月3日起,北京机动车尾号限行轮换时间到了,实行 ...

  3. c语言编程输入5输出五行五列,C语言编程 在屏幕上打印五行*号,每行分别为5个,30个,10个,28个,16个。...

    C语言输出如题所示图案的代码如下: #include int main( ) { int x; int i,j,k; { for(j=0;j<2*i-1;j++) printf("*& ...

  4. c语言编程新思路知道答案,C语言编程新思路_知道答案公众号免费

    有潜力的创意的根本特征是 CCBⅡ制动机中,LCDM称为() [单选题]电影摄影角度是摄影机拍摄时的视角.即摄影师构图时运用摄影机取景器观察.选择确定的画面拍摄位置,由___.拍摄方向和拍摄高度决定. ...

  5. 头条限流是什么原因_今日头条限流吗 头条号限流是什么状态

    头条号突然被限流了是什么原因? 我不在乎这个!有些人会对他们写的东西感兴趣,并会继续努力工作.没人看到,自己的水平太差了,限制在极限上,不要指望在这里发财或出名!(不管怎样,我不知道我是否有限)只要快 ...

  6. 借助尾号限行 API 实现限行规则应用的设计思路分析

    引言 尾号限行是指根据车牌号的末尾数字,规定某些时段内不能在特定区域行驶,这是城市交通管理的一种措施.尾号限行政策的实施可以缓解城市交通拥堵问题,减少环境污染和交通事故等问题. 尾号限行 API 是一 ...

  7. 清明节快到了,车辆尾号限行规则提前看!一文带你了解全国各地的尾号限行规则

    写在前面 车辆尾号限行是一个交通出行政策,根据地方交通管理政策,在一周内的某一天,该尾号车辆不允许在规定路段行驶.这种政策不是针对特定道路和特定车辆,是在一定区域内对所有车辆都具有制约能力,而且会不定 ...

  8. c语言编程杨辉三角前八行思路,C语言----(杨辉三角)

    用C语言编程打印出杨辉三角的前10行.如下图所示: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 ... ... 解法1: ...

  9. Go 语言编程 — Cobra 指令行工具

    目录 文章目录 目录 Cobra(眼镜蛇) Cobra 的核心概念 Cobra 的使用 初始化应用程序的项目框架 main.go 生成应用程序的子命令(SubCmd) 实现 Command 的功能 为 ...

  10. C 语言编程 — 指令行参数

    目录 文章目录 目录 前文列表 命令行参数 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> <C 语言编程 - 基本数据类型> < ...

最新文章

  1. HNUSTOJ-1674 水果消除(搜索或并查集)
  2. MOSS字段编辑权限控制方案--发布源码
  3. 网站被黑你隔了多久才知道?
  4. linux nslookup脚本,Linux中nslookup命令起什么作用呢?
  5. 【C语言项目】贪吃蛇游戏(下)
  6. 使用Capistrano向EC2部署Django代码--关于SSH相关的配置
  7. 德国留学语言c1,德国留学申请,关于语言
  8. C语言中字符型和字符串型的对比
  9. 深度学习(1)--引言
  10. Codeforces Round #518 (Div. 2): F. Knights(神题)
  11. 怎么从视频文件中提取音频?
  12. window.open打开txt文件
  13. autojs利用坚果云实现云更新
  14. SSL单向认证和双向认证
  15. VS 错误: cout 不明确
  16. mxgraph.js实现Topo图
  17. MyBatis-Spring(五)--MapperScannerConfigurer实现增删改查
  18. C和C++和Java的一些区别
  19. 零基础学习CANoe Panel(6)—— 开关/显示控件(Switch/Indicator)
  20. 1.python真的是万恶之源么?(初识python)

热门文章

  1. HFSS----微带天线设计实例之模型建立
  2. 补偿IIR滤波器引入的延迟
  3. sdk环境变量配置win10_sdk环境变量配置好检查
  4. 小米miui全机型代码对照与各机型发布时间表 了解小米机型发展历程
  5. CDA第九届认证考试数据报告重磅发布!
  6. 自动控制原理学习笔记(三)线性定常离散控制系统的数学模型
  7. A星寻路算法详解(完整代码+图片演示)
  8. 机器人方队解说词_创想机器人博物馆配音解说词
  9. spring源码分析AOP原理图文详解
  10. YOLO v2算法详解