已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工业大学单片机课程设计王晶 设计题目:出租车计费器和温度报警系统所在系:电气与信息工程学院班级:电子信息1005班学生姓名: 学号:同组学生姓名: 学号:同组学生姓名 : 学号:指导老师:完成时间:二一三年一月五号单片机课程设计(一)出租车计费器的设计一、设计任务:11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)注:要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。二、设计思路1. 设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。原理:255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。然后对TL1的内容进行相应的二进制-十进制转换:首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。接着将相应的十进制数进行译码,并在LED数码管上显示出来。每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。2设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。原理: 将TH1和TL1中的十六进制数转为BCD码,入口:HT1,TL1中是 16 位二进制数,其中TH1中是高 8 位;出口:R2 R3 R4 中是 BCD 码,其中R2中是万位,R3中是千、百位,R4中是十、个位。再转为对应的个.十.百.千.万位。送到缓冲区。接着调用显示子程序。3.设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8为数码管中,前3为显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)原理:计数器每计数100个外部脉冲就产生中断,里程加1百米,大于两千米百位就和5和0比较,如果相等就调用价格计算子程序,价格加0.8元。然后返回中断,调用里程和价格显示子程序。三、PROTEUS硬件电路图1、255计数器2、50000计数器3、 出租车计费系统四、调试程序1、255计数器9ORG 0000HAJMP STARTORG 001BHAJMP TINT1ORG 0030HSTART:MOV TMOD,#60H ;计数工作方式2MOV TH1,#00H ;初值0MOV TL1,#00H SETB TR1SETB ET1SETB EALOOP:LCALL DISPSJMP LOOPTINT1:RETIDISP: MOV A,TL1 MOV B,#64HDIV AB;A为百位 MOV DPTR,#SEGTABMOVC A,A+DPTR MOV P2,#03H ;位选4 MOV P0,A ;送百位数据 ACALL DELAYMOV A,BMOV B,#0AHDIV AB;A为十位,B为个位MOVC A,A+DPTR MOV P2,#04H ;位选5 MOV P0,A ;送十位数据 ACALL DELAY MOV A,BMOVC A,A+DPTRMOV P2,#05H;位选6MOV P0,A ;送个位数据ACALL DELAYRETDELAY: MOV R5,#05H ;延时1msLOOP1: MOV R6,#0FFH DJNZ R6,$ DJNZ R5,LOOP1 RETSEGTAB: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9END2、50000计数器ORG 0000HAJMP STARTORG 0030HWANWEI EQU 20HQIANWEI EQU 21HBAIWEI EQU 22HSHIWEI EQU 23HGEWEI EQU 24HSTART: MOV R0, #20H;显示缓冲数据MOV R1, #01H;位选缓冲MOV TMOD,#50H ;计数工作方式1MOV TH1, #00H ;初值0MOV TL1, #00HSETB TR1SETB ET1SETB EALOOP:LCALL DISPSJMP LOOPDISP: LCALL READDISP1:MOV P2, R1MOV P0, R0LCALL DELAYINC R0INC R1CJNE R1,#06H,DISPMOV R1, #01H MOV R0, #20HSJMP DISP1READ: MOV R5, TH1 MOV R6, TL1 CJNE R5, #0C3H,READ1 CJNE R6, #51H,READ1 MOV TH1,#00H ;初值0 MOV TL1,#00H;调用子程序把R5 R6中的数字,转换成BCD码,送到R2 R3 R4READ1:LCALL TXBCD MOV A, R4 MOV B, #16 DIV AB ;除以16,目的是分离出高、低四位 MOV DPTR,#SEGTAB MOVC A, A+DPTR MOV SHIWEI, A ;存放十位 MOV A,B MOVC A,A+DPTR MOV GEWEI, A ;存放个位 MOV A, R2 MOVC A,A+DPTR MOV WANWEI, A ;存放万位 MOV A, R3 MOV B, #16 DIV AB MOVC A,A+DPTR MOV QIANWEI, A MOV A,B MOVC A,A+DPTR MOV BAIWEI, A RET;两个字节的二进制数转换成BCD码的程序如下:;功能:16位二进制数变换成为 BCD 码;;入口:R5 R6 中是 16 位二进制数,其中R5中是高 8 位;;出口:R2 R3 R4 中是 BCD 码,其中R2中是万位,R3中是千、百位,R4中是十、个位。TXBCD: CLR A MOV R2, A ;先清零 MOV R3, A MOV R4, A MOV R7, #16 ;共转换十六位数READ2: CLR C MOV A, R6 ;从待转换数的高端移出一位到Cy RLC A MOV R6, A MOV A, R5 RLC A MOV R5, A MOV A, R4 ;送到BCD码的低端 ADDC A, R4 ;带进位加。自身相加,相当于左移一位 DA A ;十进制调整,变成BCD码 MOV R4, A MOV A, R3 ADDC A, R3 DA A MOV R3, A MOV A, R2 ADDC A, R2 MOV R2, A DJNZ R7,READ2 ;共转换十六位数 RETDELAY: MOV R5,#05H ;延时1msLOOP2: MOV R6,#0FFH DJNZ R6,$ DJNZ R5,LOOP2 RETSEGTAB: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9END3、 出租车计费系统 ORG 0000HAJMP STARTORG 001BHSJMP T1INTORG 0030HSHIQIAN EQU 20HQIANMI EQU 21HBAIMI EQU 22HSHIYUAN EQU 24HYUAN EQU 25HJIAO EQU 26H;程序初始化START: CLR P2.3 MOV R3,#02H MOV SHIQIAN,#00H MOV QIANMI ,#00H MOV BAIMI,#00H MOV SHIYUAN,#00H MOV YUAN,#05H MOV JIAO,#00H MOV TMOD, #60H MOV TH1,#9CH MOV TL1,#9CHSETB TR1SETB ET1SETB EA;主程序MAIN: LCALL DISPM LCALL DISPL SJMP MAIN;中断处理程序T1INT: LCALL LONG MOV A,QIANMI CLR C SUBB A,#02H JNC T1 ;大于两千米转到T1 RETIT1: DJNZ R3,T2 MOV R3,#01H MOV A,BAIMI CJNE A,#05H,NEXT ;和5相等,就更新价格,否则判断是否和0相等 LCALL MONEY RETINEXT: CJNE A,#00H,T2 ;和0相等,更新价格,否则返回 LCALL MONEYT2: RETI; 显示里程DISPL: MOV R0, #20HMOV A,R0MOV DPTR,#SEGTABMOVC A,A+DPTR MOV P2,#09H ;位选MOV P0, A ;段选LCALL DELAYINC R0MOV A,R0MOVC A,A+DPTRADD A,#80H ;显示小数点MOV P2,#0AH ;位选 MOV P0,A ;段选 LCALL DELAY INC R0MOV A,R0MOVC A,A+DPTRMOV P2,#0BH ;位选 MOV P0,A ;段选 LCALL DELAY RET;显示价格DISPM: MOV R0, #24H MOV A, R0 MOV DPTR,#SEGTAB MOVC A,A+DPTR MOV P2,#0DH MOV P0,A ;显示十元 LCALL DELAYINC R0 MOV A,R0 MOVC A,A+DPTR ADD A,#80H MOV P2,#0EH MOV P0,A ;显示元 LCALL DELAY INC R0 MOV A,R0 MOVC A,A+DPTR MOV P2,#0FH ;显示角 MOV P0,A LCALL DELAYRET;价格计算子程序MONEY: MOV R6,28H MOV A,R6MOV DPTR,#NUMMOVC A,A+DPTRMOV JIAO,AINC R6MOV 28H,R6CJNE R6,#05H,M1MOV 28H,#00HM1:CJNE A,#08H,M2 ;等于8没有进位SJMP M4M2:MOV A,YUANCJNE A,#09H,M3 ;等于9,进位INC SHIYUANMOV YUAN,#00H SJMP M4M3:INC YUANM4:RETNUM: DB 08H,06H,04H,02H,00H;里程计算子程序LONG: MOV A,BAIMICJNE A,#09H,L1;和9相等就置0,不等就跳到L1MOV BAIMI, #00HINC QIANMIMOV A,QIANMI;千米加1CJNE A,#0AH,L2;等于10就置0,不等跳到L2MOV QIANMI,#00HINC SHIQIANL1: INC BAIMI;百米加1L2:RET湖南工业大学单片机课程设计王晶;延时子程序DELAY: MOV R5,#05H ;延时2.5msLOOP1: MOV R6,#0FFH DJNZ R6,$ DJNZ R5,LOOP1 RETSEGTAB: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4 DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9END单片机课程设计(二)温度报警系统的设计一、设计任务:设计一个温度报警系统: 温度显示范围为051度,当温度大于40度时,上限报警指示灯点亮,并驱动电机1转动;当温度小于于10度时,下限报警指示灯点亮,并驱动电机2转动;二、设计思路1、按键识别,判断启动按钮是否按下。2、A/D转换,将ADC0809通道0的电压值(温度值)转换成数字量,并通过P0口读入。(1)送启动脉冲。(2)判断A/D转换是否结束(EOC是否为高电平)。(3)是否可以取数(OE是否为高电平)。3、二进制转换为十进制。4、数码管动态扫描显示。三、PROTEUS硬件电路图1、温度显示范围为051度2、当温度小于于10度时,下限报警指示灯D2点亮,并驱动电机2转动3、当温度大于40度时,上限报警指示灯D1点亮,并驱动电机1转动四、调试程序17#include #include #define uchar unsigned char#define uint unsigned intuchar Temp = 0 ;uchar buffer = 0 ;uchar count = 0;uchar pnts = 0 ;uchar tens = 0 ;uchar units = 0 ;sbit ALE = P10 ;sbit START = P11 ;sbit OE = P12 ;sbit EOC = P13 ;sbit S1 = P14 ;sbit S2 = P15 ;sbit S3 = P16 ;sbit M1 = P30 ;sbit M2 = P31 ;sbit puls = P30 ;uchar LED=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 ;void Delayms(uint m)uint l;for(; m0; m-)for(l=0; l125; l+);void Display(void)uchar i=0;pnts = buffer%5;tens = Temp%100/10;units = Temp%100%10;for(i=0; i 200)M1 = 1;else if(buffer 50)M2 = 1;else M1 = 0;M2 = 0;五、心得体会作为一名电子与信息工程专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。 完成这次的单片机课程设计花费将近一周时间,但是却从理论到实践,学到了很多的东西。同时不仅巩固了以前所学过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。 开始的第一天就自己做的是0到255的计数器,对于数码管显示数据这部分不是很熟悉,在TH、TL里面放个初值,然后启动定时/计数器就可以开始计数了,然后到了255个后又重新开始,但是怎么把所记的脉冲数显示出来却总是不大懂。于是把书好好看了遍,对数码管显示熟悉之后就开始了设计。 这次的单片机课程设计遇到的最多的问题就是在程序的编写上,尤其是0到5000计数时,在那里卡了好久,一直就是TL和TH两个寄存器里的数据取不出来,自然就无法送到数码管显示,因为两个寄存器里的数据加一起有十六位,我们所用的单片机是8位机,最大只能赋值256,超过256就会发生错误,为此试过好多种方法,但是都不行,最后用的BCD转换才解决得。 通过温度报警系统单片机课程设计,加深了我对单片机指令系统,中断系统,放大器放大倍数,模数转换有了深刻的理解,开始我对 SJMP,LCALL这两种指令的返回点不清楚,我就把
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高三语文对口试题及答案
- 深度解析(2026)《GBT 30110-2013空间红外探测器碲镉汞外延材料参数测试方法》
- 深度解析(2026)《GBT 29833.3-2013系统与软件可移植性 第3部分:测试方法》
- 深度解析(2026)《GBT 29791.3-2013体外诊断医疗器械 制造商提供的信息(标示) 第3部分:专业用体外诊断仪器》
- DB45∕T 1828-2018 海港工程混凝土材料与结构耐久性定量设计规范
- 《GBT 4032-2013具有摆轮游丝振荡系统的精密手表》(2026年)合规红线与避坑实操手册
- 《GBT 491-2008钙基润滑脂》(2026年)合规红线与避坑实操手册
- 《DL/T 2602-2023电力直流电源系统保护电器选用与试验导则》(2026年)合规红线与避坑实操手册
- 2026年社区生鲜采购配送合同协议
- 江苏事业单位面试培训深度测评-更新版
- 北师大版八年级数学下册数学活动:体脂率的计算与分析课件
- 2026新疆天宜养老有限责任公司招聘6人备考题库含答案详解(培优b卷)
- 电气控制与PLC应用技术 (S7-1200)-教案 模块3 S7-1200 PLC的基本指令及其应用
- 【2026年春新教材】部编版小学二年级下册道德与法治全册教案
- 胰腺癌化疗后骨髓抑制姑息处理方案
- 关节损伤康复培训课件
- 商业道德管理办法
- 会理县小黑箐乡马鞍山铁矿5万吨-年(采矿)扩能工程环评报告
- 辽宁省葫芦岛市2007年数学中考真题【含答案、解析】
- 2020年全国中心血站上岗考试题库688题含答案
- 2024-2030年版中国尿素行业市场容量预测及投资风险分析报告
评论
0/150
提交评论