AVR单片机出租车计价器Proteus仿真及程序

发布者:骄阳少年最新更新时间:2020-07-13 来源: 51hei关键字:AVR单片机  出租车计价器  Proteus仿真 手机看文章 扫描二维码
随时随地手机看文章

单片机源程序如下:

#include

#include

#include "stdio.h"

#include "delay.h"

#define  uchar   unsigned char

#define  uint   unsigned int

char smg_zx[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x76,0X38};//

char smg_wx[]={0B00000001,0B00000010,0B00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};

char buff[]={1,2,3,4,5,6,7,8};


uint cnt0=0,lc=0,dj=0,KS=11,ZJ=0;

uchar mode=0;


void delay_ms(unsigned int k)                //8M MS级函数        

{

    unsigned int i,j;

    for(i=0;i    {

      for(j=0;j<570;j++);

    }

}

////多位数拆分函数///////*/


void xs_buff()

{

  buff[0]=lc/10;

  buff[1]=lc%10;

  buff[2]=dj/10;

  buff[3]=dj%10;

  buff[4]=ZJ/100;

  buff[5]=ZJ/10%10;

  buff[6]=ZJ%10;

  buff[7]=KS;

}




void xs_smg()

{

  static unsigned char  posit=0;

    PORTA |= 0XFF; // turn off

        PORTA = ~ smg_wx[posit];//selecting led 7-segment

        PORTB = smg_zx[buff[posit]];  //

        delay_ms(2);

   if(posit++>=7)posit=0;

        

         }


         

void keyscan()

{

  


        if((PIND&0xf0)!=0xf0)

        {

          delaynms(20);

          if((PIND&0xf0)!=0xf0)

          {

            if((PIND&0x10)==0)         //第一个按键        

              {

                          if(dj++>=10)dj=0;

                           KS=11; //L                                      //++cnt_1; //00-FF

                          }                          

            if((PIND&0x20)==0)                //第二个按键

               {

                        mode=0;                                        //--cnt_1;//00-FF

                        SEI();

            KS=10; //H   

                                

                          }         

                        if((PIND&0x40)==0)                //第三个按键

               {

                                                                 //--cnt_1;//00-FF

                        CLI();

            KS=11; //L   

                                

                          }        

                          if((PIND&0x80)==0)                //第四个按键

               {

                         if(mode++>=2)mode=0;//第一次按下时结束计价,第二次时清零,

                        

                         KS=11; //L                                      //--cnt_1;//00-FF

                         CLI();

            

                         if(mode==2)

                         {ZJ=0;  lc=0;}

                                

                          }         

          }

                  while((PIND&0xf0)!=0xf0);

      }     

}






void init_devices(void)//设备初始化函数

{


PORTA = 0XFF;//内部上拉

DDRA  = 0xFF;//输出

PORTB = 0XFF;//内部上拉

DDRB  = 0xFF;//输出

PORTD = BIT(4)|BIT(5)|BIT(6)|BIT(7);//内部上拉

PORTD &= (~BIT(3));

DDRD  = ~(BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7));//输入

/****外部事件计数*******/

MCUCR = 0x02;

GICR  = 0x80;

SREG  =        0x80;

CLI(); //关中断

//SEI(); //开中断

}

void main(void)

{

init_devices();//设备初始化

delaynms(300);     //延时待系统稳定;

while(1)

{

keyscan();

xs_buff();

xs_smg();

ZJ=lc*dj;

}

}


/****外部事件计数*******/

#pragma interrupt_handler int1_isr:3

void int1_isr()

{

  if(++cnt0>500){cnt0=0;if(lc++>=99)lc=0;}

}


关键字:AVR单片机  出租车计价器  Proteus仿真 引用地址:AVR单片机出租车计价器Proteus仿真及程序

上一篇:AVR单片机串口红外线传输试验程序
下一篇:AVR 8515单片机遥控器 解码程序

推荐阅读最新更新时间:2024-11-17 20:14

Proteus通过虚拟串口程序仿真51单片机串口的实现
1.参考文章下载地址: http://download.csdn.net/source/1927624 2. 虚拟串口 3. 串口调试助手 4. Proteus 7.5 sp3 实现方法 1.参考文章(参考文章是从CSDN下载的一篇PDF文件)已经很详细的说明了怎么实现,我就不想啰嗦了,我只提供几个关键的截图和串口调试程序代码 如果参考文章打不开我提供参考文章的下载连接 2.提供Proteus的连线图如下:(值得注意的是单片机的RXD和TXD分别和串口的RXD和TXD一一对应相连,这和用Proteus的虚拟终端给串口输入信号时,单片机和串口的连接方式是不一样的,用Proteus的虚拟终端作为串口输入信号的时候单片机的RX
[单片机]
<font color='red'>Proteus</font>通过虚拟串口程序<font color='red'>仿真</font>51<font color='red'>单片机</font>串口的实现
基于AVR单片机设计的加热控制系统
1 引言 温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于冶金、化工、机械、食品等领域。文中介绍的文化测量及加热控制系统以 ATmega8型AVR系列单片机为核心部件,通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。实验证明该温控系统具有很高的可靠性和稳定性。 2 系统结构及控制算法 2.1系统总体结构 温度测量及加热系统控制的总体结构如图1所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、加热电路控制输出、与上位机串行通信和系统核心ATmega8型单片机等。 温度采集电路以模拟电压形式将现场温度传至单片机。
[单片机]
基于<font color='red'>AVR</font><font color='red'>单片机</font>设计的加热控制系统
AVR单片机开发环境搭建
一、开发环境搭建 CodeVisionAVR C Compiler用于程序的编辑以及编译.AVR Studio 4与USB AVR JTAGICE mkll-CN 用于在线调试和程序烧写。 二、AVR Studio 4中熔丝位的设置(在Fuses标签中,相应位打钩表示program即写0;不选中表示未编程即1) M161C: 工作于162模式还是161模式; BODLEVEL:掉电检测设置; OCDEN:片上调试使能; JTAGEN:JTAGE口下载使能; SPIEN:SPI使能位; WDTON:看门狗使能级别设置; EESAVE: EEPROM中内容是否要保留; BOOTSZ:用于设置程序块和启动块
[单片机]
<font color='red'>AVR</font><font color='red'>单片机</font>开发环境搭建
基于AVR单片机的数字滤波器滤除工频干扰的快速算法
工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求。 AVR 单片机是Atmel 公司生产的8位精简指令集(RISC)单片机。与同类单片机相比,在运算速度、外设资源、灵活性等方面性能均衡,性价比较高。 AVR 单片机适合C语言开发,Mega 系列AVR 单片机还有一个内部硬件乘法器单元。这些特点都为软件滤波器的实现提供了极大的便利。 1
[单片机]
基于<font color='red'>AVR</font><font color='red'>单片机</font>的数字滤波器滤除工频干扰的快速算法
ucosii在AVR系列单片机移植中出现的一个BT的问题
今天想把ucosii移植到手头的一块AVR128芯片上。 只要有移植经验,其它的问题都比较好解决。但是ICC编译器对于函数指针的处理方式特别怪异,让我大吃苦头,纠结调试了半天!!! 症状:编译通过后,运行时卡死。 经在AVR Studio中JTAG硬仿真,发现任务调度不了。最终目光聚焦在移植代码里函数中的一行: tmp = *(INT16U const *)task; /* (1) ICC compiler handles function pointers indirectly! */ 这是取得函数指针指向的函数地址。 一般编译器下直接写成 tmp = task 就可以了,但是“ICC compile
[单片机]
ucosii在<font color='red'>AVR</font>系列<font color='red'>单片机</font>移植中出现的一个BT的问题
基于at89c51单片机的最基础流水灯Proteus仿真图含代码
#include reg51.h #include stdio.h void delay(void) { unsigned int i,j; for(i=500;i 0;i--) for(j=115;j 0;j--); } void main(void) { // Write your code here unsigned char led ,a ,b ;//定义三个变量 led=0xfe; //led=1111 1110,P0。0亮 while (1) { P0=led; //将led的状态赋给P0寄存器 a=led 7; //将led最高位赋给a最低位,其
[单片机]
基于at89c51<font color='red'>单片机</font>的最基础流水灯<font color='red'>Proteus</font><font color='red'>仿真</font>图含代码
爱特梅尔扩展广受欢迎的AVR MCU系列
微控制器及触摸技术解决方案的领导厂商爱特梅尔公司 (Atmel® Corporation) 宣布,其获广泛采用的爱特梅尔 AVR® 微控制器(MCU) 系列新增14款器件,提供更多的选项以满足独特的设计要求。在世界各地有超过10万名工程师使用AVR微控制器,这类微控制器的性能、功效及灵活性在众多应用领域获得青睐。最新器件增添了更多的存储器、连接外设和系统集成,进一步拓展了AVR系列的优势,同时支持包括消费电子、电容式触摸、抄表计量、家庭自动化和医疗的更广泛应用领域。 这些AVR MCU满足多个应用领域对低功耗的共同要求,产品系列中的所有器件均采用爱特梅尔picoPower®技术,能够在低至1.62V的电压下运行,同时保持所有的
[单片机]
avr单片机按键程序
  什么是avr单片机   AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced InstrucTIon Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。AVR单片机是 Atmel 公司 1997 年推出的 RISC 单片机。RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过使计算机的结构更加简单合理而提高运算速度的。   RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周
[单片机]
<font color='red'>avr</font><font color='red'>单片机</font>按键程序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved