搜索
您的当前位置:首页正文

AVR单片机教程11—第十一课数码管受控显示实验

来源:爱够旅游网
上海周兴华单片机培训中心

Http://www.zxmcu.com ——————————————————————————

第十一课 数码管受控显示实验

本教程节选自周兴华老师《手把手教你学AVR单片机C程序设计》教程,如需转载,请注明出处!读者可通过当当网、淘宝网等网站购买本教程,如需购买配书实验器材,可登陆周兴华单片机培训中心网购部自助购买!

按S1键,数码管的个位、十位输出00~99的加法;按S2键,数码管的个位、十位输出00~99的减法。实验的单片机培训电路原理见图7-3。

周兴华单片机培训中心2010年6月制

上海周兴华单片机培训中心

Http://www.zxmcu.com ——————————————————————————

在我的文档中新建一个ac7-4的文件夹。建立一个ac7-4.prj的工程FPGA培训项目,最后建立源程序文件ac7-4.c。输入下面的程序: #include //包含头文件

#define uchar unsigned char //变量类型的宏定义 #define uint unsigned int

周兴华单片机培训中心2010年6月制

上海周兴华单片机培训中心

Http://www.zxmcu.com ——————————————————————————

uchar const SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66, //共阴极数码管0~9的字形码

0x6d,0x7d,0x07,0x7f,0x6f};

uchar const ACT[2]={0xfe,0xfd}; //数码管的个、十位位选码 //=============================

void delay_ms(uint k) //定义毫秒级的延时子函数 {

uint i,j;

for(i=0;i< span=\"\"> {

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

//============================= void main(void) //定义主函数 { //主函数开始

uchar i,counter=0; //定义无符号字符型变量i、counter DDRA=0xff; //将PA端口设为输出 DDRC=0xff; //将PC端口设为输出 DDRD=0x00; //将PD端口设为输入

PORTA=0x00; //PA端口初始化输出00000000 PORTC=0xff; //PC端口初始化输出11111111 PORTD=0xff; //PD端口初始化输出11111111 while(1) //无限循环 { //无限循环语句开始

if((PIND&0x10)==0) //如果S1键按下

{if(counter<99)counter++;} //计数值递增,计数值范围00~99 if((PIND&0x20)==0) //如果S2键按下

{if(counter>0)counter--;} //计数值递减,计数值范围00~99 for(i=0;i<100;i++) //for循环语句,循环100次(约0.2s) { //for循环语句开始

PORTA=SEG7[counter%10]; //输出计数值的个位字形码 PORTC=ACT[0]; //点亮个位数码管 delay_ms(1); //维持点亮1ms

PORTA=SEG7[counter/10]; //输出计数值的十位字形码 PORTC=ACT[1]; //点亮十位数码管 delay_ms(1); //维持点亮1ms } //for循环语句结束 } //无限循环语句结束 } //主函数结束

编译通过后,将ac7-4.hex文件下载到AVR单片机开发板上进行实验。我们看到,按S1键,数

周兴华单片机培训中心2010年6月制

上海周兴华单片机培训中心

Http://www.zxmcu.com ——————————————————————————

码管的个位、十位从00加到99;按S2键,数码管的个位、十位从99减到00。

本文地址:http://www.zxhmcu.com/article-61-1.html

周兴华单片机培训中心2010年6月制

因篇幅问题不能全部显示,请点此查看更多更全内容

Top