1. 程式人生 > >微控制器按鍵與數碼管試驗程式 Proteus模擬

微控制器按鍵與數碼管試驗程式 Proteus模擬

最近溫習一下微控制器,通過proteus 7.8模擬了一下,感覺效果不錯。

微控制器程式如下:

/*
51微控制器 按鍵與數碼管實驗,用proteus 7.8模擬通過。
通過點按鍵,
K1:數碼管數字加一,0~F,加上F後再從0開始。
K2:數碼管數字減一,F~0,減到0後再從F開始減
K3:復位這零.
*/

#include <reg52.h>
//#include <stdio.h>
unsigned char RunMode;
unsigned char code SegCode[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, //共陽
                             0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF}; //0~F
#define SegDataPort P3


/********************************/
void delay_1ms(unsigned int i)   //最小延時1ms
{
 unsigned char j;
 while(i--)
 for(j=0;j<125; j++);
}

void Display_Seg(unsigned char Value)
{
 SegDataPort = SegCode[Value];
}

unsigned char GetKey(void)
{
 unsigned char KeyTemp,CheckValue,Key=0x00;
 CheckValue = P2&0x32;
 if(CheckValue==0x32)
 return 0x00;
 delay_1ms(10);
 KeyTemp = P2&0x32;
 if(KeyTemp == CheckValue)
 return 0x00;
 if(!(CheckValue&0x02))
  Key|=0x01;
 if(!(CheckValue&0x10))
  Key|=0x02;
 if(!(CheckValue&0x20))
  Key|=0x04;
 return Key;
}


void KeyDispose(unsigned char Key)
{
 if(Key&0x01)
 {
 RunMode = (RunMode+1)%16;
 Display_Seg(RunMode);
 }

 if(Key&0x02)
 {
 RunMode = (RunMode-1)%16;
 Display_Seg(RunMode);
 }

   if(Key&0x04)
 {
 RunMode = 0x00;
 Display_Seg(RunMode);
 }

}

void main(void)
{
 unsigned char Key;
 P2=0xff;
 Display_Seg(0);

 while(1)
 {
  Key = GetKey();
  KeyDispose(Key);
   }
}

相關推薦

微控制器按鍵數碼試驗程式 Proteus模擬

最近溫習一下微控制器,通過proteus 7.8模擬了一下,感覺效果不錯。 微控制器程式如下: /* 51微控制器 按鍵與數碼管實驗,用proteus 7.8模擬通過。 通過點按鍵, K1:數碼管數字加一,0~F,加上F後再從0開始。 K2:數碼管數字減一,F~0,

51微控制器按鍵控制數碼加減和秒錶

#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit k1=P3^4; sbit k2=P3^5; sbit k3=P3^6; sbit k4=P3^7; sbit du=P

51微控制器:獨立按鍵矩陣按鍵控制數碼

一,獨立按鍵注意一下幾點 >按下的時候,電壓被拉低,所以IO口要傳低電平( 0x0 ) >按下的時候要消除抖動 ( 延時10ms ),在判斷,是否還是低電平,再做業務處理 下面這段程式,就是通過一個獨立按鍵連線到p1口,控制靜態數碼管的 一段 進行亮和滅的切換。 #include &l

51單片機:獨立按鍵矩陣按鍵控制數碼

#define clas 4行 ++ 浪費 down 技術分享 sig .com 一,獨立按鍵註意一下幾點 >按下的時候,電壓被拉低,所以IO口要傳低電平( 0x0 ) >按下的時候要消除抖動 ( 延時10ms ),在判斷,是否還是低電平,再做業務處理 下

(學習筆記)手把手教你學51微控制器:中斷數碼動態顯示

一、c語言的陣列 1.1陣列的基本概念 陣列是具有相同資料型別的有序資料的組合,一般來講陣列定義後滿足以下三個條件: (1)具有相同的資料型別 (2)具有相同的名字 (3)在儲存器中是被連續存放的 1.2陣列的宣告 資料型別 陣列名【陣列長度】; (1)同一個

微控制器之動態數碼的顯示數字1-8

C51微控制器中的三種方法解決數碼管的動態顯示,使數碼管顯示1-8數字。三種方法的程式碼如下,此時讀者需要十分注意你程式碼中引腳的先後順序,否則可能達不到預期的效果.  #include<reg51.h> #define uchar unsigned char

pd32組合語言 數碼拆字程式數字大於255

pd32實驗箱,微機原理實驗 多加熱爐爐溫檢測系統的設計,兩個0809通道地址分別為3DCH,3D8H,分別讀取A/D轉換後的資料儲存在4000H和4001H,將AD轉後的資料(0-255)再轉換成50-350之間的資料,再進行拆字 要顯示的資料儲存在4002H-4004H,和4008H-400

STC89C52RC數碼秒錶程式編寫

數碼管顯示秒錶,晶片STC89C52RC。具體要求,採用動態掃描的方式讓,6個數碼管前三個顯示秒數,後兩個顯示毫秒。第四個不用。秒數精確到1%。 #include <reg52.h> #define uint unsigned int #define uch

按鍵控制數碼顯示

/*  * ====================================================  * Filename: main.c  * Description:   * Version:  * Created:  * Revision: none  * Compiler: Nios

單片機-4x4個矩陣按鍵控制數碼顯示數字程序

() 給他 == 。。 for 選擇 clu typedef 測試 1 #include "8051.h" 2 typedef unsigned char u8; 3 typedef unsigned int u16; 4 u8 smgduan[]

在Mac上使用DronekitSITL做飛行程式模擬除錯

背景 無人機的專案快要中期答辯了,為了在地面站(電腦)控制無人機,我們選擇DroneKit來進行程式碼的書寫。DroneKit是一個專門用於控制無人機的Python庫,使用這個API我們可以更方便的使用MAVLink來給無人機發送指令。 在我的Mac上面

利用51微控制器,矩陣鍵盤按鍵顯示0--F在數碼

程式碼如下:       #include <reg52.h> #define uchar unsigned char #define uint  unsigned int sbit we = P2^7; sbit du = P2^

基於proteus的51微控制器模擬例項六十、8位數碼顯示例項

1、本例實現在8位數碼管上同時顯示多個不同字元。 2、本例使用了8只整合式7段共陽數碼管(pruteus中元件標識為7seg-mpx8-ca-blu,共陽為ca,共陰為cc),所有8個數碼管的段碼引腳a,b,c,d,e,f,g,dp都是分別並聯在一起,任何時候傳送的段碼

基於proteus的51微控制器模擬例項七十九、8位數碼驅動晶片max7221應用例項

1、MAX7221是整合式共陰極數碼管驅動晶片。可以用來驅動8位7段式數碼管,也可以驅動條形LED或者8*8LED點陣 微控制器僅僅需要3個IO口就可以控制MAX7221驅動8位數碼管。注意這裡的

基於proteus的51微控制器模擬例項五十九、1位數碼顯示例項

1、數碼管實際上是由7個發光二極體組成一個8字形,另外一個發光二極體做成圓點型,這樣就構成了一個數碼管。所有的8個二級管的正極或者負極都連到一個公共端點上,對於公共端連在正極的數碼管,稱為共陽極數碼管,反之稱為共陰極數碼管。 根據數碼管的內部結構原理,可以很清楚的知道數

proteus模擬之8位數碼動態掃描顯示試驗

/*Proteus 模擬之8位共陰數碼管動態掃描實驗*/ 程式: /*Proteus 模擬之8位共陰數碼管動態掃描實驗*/ #include<reg52.h> #define SegPort P0   //定義數碼管連線埠 sbit LE_Duan = P

關於獨立按鍵矩陣按鍵程式(51微控制器)

發一個51微控制器的鍵盤掃描程式,演算法簡單有效                                       再給大家分享一個不錯按鍵程式(來自ourdev)/**************************************** 鍵盤_不採用定時

數碼按鍵加減一

int 參數 image spa pre log -- main 等於 //按鍵加一或減一 #include <reg51.h> #include <stdio.h> int duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6

數碼的動態掃描驅動

fin 文件 芯片 組成 == test 關於 實現 沒有 數碼管的基本原理     關於數碼管,一個單個的數碼管可以看做是多個led燈的集合,如下圖所示 其中的8和。都是LED組成的,通過引腳上電即可點亮不同的LED然後組成不同的數字,這個過程在數碼管的設計中叫做段選。

微信小程式 Canvas 自定義時間顯示器 數碼顯示

微信小程式自定義時間顯示器Demo 廢話不多話,還是依舊上圖再說,哈哈 怎麼樣,效果還是不錯的吧,因專案要求,要畫出類似於數碼管顯示的時間樣式,沒辦法,雖然不咋過好弄,但工作畢竟得做,於是乎,樓主,花了3個小時在那裡硬生生的算座標,差不多還是給擼出來,樓主寫成了一個外掛,方便大