Tải bản đầy đủ (.docx) (38 trang)

Các chương trình lập trình keil c cơ bản phục vụ cho thực tập vi xử lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (107.93 KB, 38 trang )

Các chương trình lập trình Keil C cơ bản
phục vụ cho thực tập vi xử lý
1. Hiệu ứng 8 Led đơn
#include <REGX51.H>
char mangTraiPhai[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char mangGiuaRa[]={0xe7,0xdb,0xbd,0x7e};
char mangSangDanRaVao[]={0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7};
char mangSangTatBonLed[]={0xee,0xcc,0x88,0x00,0x11,0x33,0x77,0xff};
char
mangNhayDuoiXuoi[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc1,0x83,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
char mangDuoiXuoi2[]={0x11,0x22,0x44,0x88};
char mangZicZac[]={0x55,0xaa,0xcc,0x33};
char mangDonQuaPhai[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
//============================
void delay(int time){
while(time );
}
//==============================================
void traiPhai(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<8;j++){
P2=mangTraiPhai[j];
delay(10000);
}
}
}
//============================================================
void phaiTrai(unsigned char soLan){
unsigned char i;


for(i=0;i<soLan;i++){
int j;
for(j=7;j>=0;j ){
P2=mangTraiPhai[j];
delay(10000);
}
}
}
//==========================================================
void ngoaiVao(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=3;j>=0;j ){
P2=mangGiuaRa[j];
delay(10000);
}
}
}
//==========================================================
void giuaRa(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<4;j++){
P2=mangGiuaRa[j];
delay(10000);
}
}
}

//==========================================================
void sangDonQuaPhai(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<9;j++){
P2=mangDonQuaPhai[j];
delay(10000);
}
for(j=8;j>=0;j ){
P2=mangDonQuaPhai[j];
delay(10000);
}
}

}
//==========================================================
void sangDanRaVao(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<8;j++){
P2=mangSangDanRaVao[j];
delay(10000);
}
}
}
//==========================================================
void sangBonLed(unsigned char soLan){
unsigned char i;

for(i=0;i<soLan;i++){
int j;
for(j=0;j<8;j++){
P2=mangSangTatBonLed[j];
delay(10000);
}
}
}
//==========================================================
void tatBonLed(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=7;j>=0;j ){
P2=mangSangTatBonLed[j];
delay(10000);
}
}
}
//==========================================================
void nhayLed(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
P2=0x00; delay(10000);
P2=0xff; delay(10000);
}
}
//==========================================================
void nhayDuoiXuoi(unsigned char soLan){
unsigned char i;

for(i=0;i<soLan;i++){
int j;
for(j=0;j<13;j++){
P2=mangNhayDuoiXuoi[j];
delay(10000);
}
}
}
//=========================================================
void nhayDuoiNguoc(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=12;j>=0;j ){
P2=mangNhayDuoiXuoi[j];
delay(10000);
}
}
}
//==========================================================
void nhayZicZac(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
P2=0x55;
delay(20000);
P2=0xaa;
delay(20000);
}
}
//==========================================================

void nhayZicZac2(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
P2=0x33;
delay(20000);
P2=0xcc;
delay(20000);
}
}
//==========================================================
void nhayDuoiXuoi2(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<4;j++){
P2=mangDuoiXuoi2[j];
delay(15000);
}
}
}
//==========================================================
void nhayDuoiNguoc2(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=3;j>=0;j ){
P2=mangDuoiXuoi2[j];
delay(15000);
}
}

}
//=========================================================
void main(){
while(1){
nhayLed(10);delay(10000);
traiPhai(3);delay(10000);
phaiTrai(3);delay(10000);
giuaRa(3);delay(10000);
ngoaiVao(3);delay(10000);
sangDanRaVao(3);delay(10000);
sangDonQuaPhai(3);delay(10000);
sangBonLed(3);delay(10000);
tatBonLed(3);delay(10000);
nhayDuoiNguoc(3);delay(10000);
nhayDuoiXuoi(3);delay(10000);
nhayZicZac(8);delay(10000);
nhayZicZac2(6);delay(10000);
nhayDuoiXuoi2(10);delay(10000);
nhayDuoiNguoc2(10);delay(10000);
}
}
2. Nháy 1 led đơn
#include <REGX51.H>
void delay(int time)
{
while(time );
}
void main(){
while(1){
P2_0=0; //bat led

delay(1000);
P2_0=1; //tat led
delay(1000);
}
}
3. Đếm 00 đến 99
#include <REGX51.H>
#define led1 P1_0
#define led2 P1_1
#define sang 0
#define tat 1
char so[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
char i;
int dem;
unsigned char chuc; donVi;
void delay(int time)
{
while(time );
}
void main(){
led1 = led2 = tat;
while(1){
for (dem = 0; dem <100; dem++){
// tach chu so
chuc = dem/10;
donVi = dem%10;
for(i=0;i<=40;i++){ // lam cham bang cach thay doi i<=10,20, cang
tang cang cham lai
led1 = sang;
P0 = so[chuc];

delay(1000); // co the lam cham lai khi tang tre len
led1 = tat;
led2 = sang;
P0 = so[donVi];
delay(1000); // co the lam cham lai khi tang tre len
led2 = tat;
}
}
}
}
4. Đếm n Led 7 thanh
#include <REGX51.H>
char so[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
char maQuet[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0x7e};
char i;
unsigned char chuSo[8];
unsigned long dem, temp;
//===============================
void delay(int time)
{
while(time );
}
//===============================
void tachChuSo(unsigned long temp, int soLed){
for(i=0;i<soLed;i++){
chuSo[i]=temp%10;
temp=temp/10;
}
}
//===============================

void quetLed(int soLed){
int i,j;
for(i=0;i<25;i++){ // toc do nhay so
for(j=0;j<soLed;j++){
P2=maQuet[j];
P0=so[chuSo[j]];
delay(1200); // toc do nhay so
P2=0xff;
}
}
}
//===============================
void main(){
while(1){
for (dem = 0; dem <=99; dem++){
// tach chu so
tachChuSo(dem,2);
quetLed(2);
}
}
}
5. Điều khiển Led 7 đoạn
#include <REGX51.H>
char so[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
char i;
void Delay(int time)
{
while(time );
}
void main(){

while(1){
for(i=0;i<10;i++){
P0 = so[i];
Delay(50000);
}
}
}
6. Đồng hồ số hiển thị giờ phút giây.
#include <REGX51.H>
#define led1 P3_0
#define led2 P3_1
#define led3 P3_2
#define led4 P3_3
#define led5 P3_4
#define led6 P3_5
#define led_giay P3_6
#define set P0_0
#define up P0_1
#define down P0_2
unsigned char M[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xff};
unsigned char hour, minute, second;
unsigned char i,kt;
bit set0=1,set1=1,up1=1,up0=1,down0=1,down1=1;
//=================================================================
==============
void delay(unsigned int t){
unsigned int i;
for(i=1;i<t;i++);
}
//=================================================================

==============
void hien_thi(char gio,char phut,char giay){
led1=1;
P2=M[gio/10];
delay(100);
led1=0;
P2=0xff;
led2=1;
P2=M[gio%10];
delay(100);
led2=0;
P2=0xff;
led3=1;
P2=M[phut/10];
delay(100);
led3=0;
P2=0xff;
led4=1;
P2=M[phut%10];
delay(100);
led4=0;
P2=0xff;
led5=1;
P2=M[giay/10];
delay(100);
led5=0;
P2=0xff;
led6=1;
P2=M[giay%10];
delay(100);

led6=0;
P2=0xff;
}
//=================================================================
=============
void ktphim(){
set0=set1; //neu nut set duoc nhan
set1=set;
if((set0==1)&&(set1==0)){
kt++;
if(kt>3) kt=0;
}
switch(kt){
case 0: break;
case 1: // chinh gio
{
up0=up1;
up1=up;
if((up0==1)&&(up1==0)){ // neu nut up
duoc bam
hour++;
if(hour>23) hour=0;
}
down0=down1;
down1=down;
if((down0==1)&&(down1==0)){ // neu
nut down duoc bam
hour ;
if(hour==-1) hour=23;
}

break;
}
case 2: // chinh phut
{
up0=up1;
up1=up;
if((up0==1)&&(up1==0)){ // neu nut up
duoc bam
minute++;
if(minute>59) minute=0;
}
down0=down1;
down1=down;
if((down0==1)&&(down1==0)){ // neu
nut down duoc bam
minute ;
if(minute==-1) minute=59;
}
break;
}
case 3: // chinh phut
{
up0=up1;
up1=up;
if((up0==1)&&(up1==0)){ // neu nut up
duoc bam
second++;
if(second>59) second=0;
}
down0=down1;

down1=down;
if((down0==1)&&(down1==0)){ // neu
nut down duoc bam
second ;
if(second==-1) second=59;
}
break;
}
}
}
//=================================================================
==========
void main(){
while(1){
second++;
led_giay =! led_giay;
if(second==59){
second=0;
minute++;
if(minute==59){
minute=0;
hour++;
if(hour==23){
hour=0;
}
}
}
for(i=0;i<100;i++)
hien_thi(hour,minute,second);
ktphim();

}
}
7. Led 7 đoạn nút bấm
#include <REGX51.H>
int dem;
char so[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void delay(int time)
{
while(time );
}
void main(){
while(1){
if(P3_0 == 0){
delay(100000);
if(P3_0 == 0);
dem++;
if(dem>9) dem =0;
}
if(dem==0) P2=so[0];
if(dem==1) P2=so[1];
if(dem==2) P2=so[2];
if(dem==3) P2=so[3];
if(dem==4) P2=so[4];
if(dem==5) P2=so[5];
if(dem==6) P2=so[6];
if(dem==7) P2=so[7];
if(dem==8) P2=so[8];
if(dem==8) P2=so[9];
}
}

8. Led trái tim
#include <REGX51.H>
char hieuUngSangNguoc[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
char mangTraiPhai[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char mangGiuaRa[]={0xe7,0xdb,0xbd,0x7e};
char mangSangDanRaVao[]={0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7};
char mangSangTatBonLed[]={0xee,0xcc,0x88,0x00,0x11,0x33,0x77,0xff};
char
mangNhayDuoiXuoi[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc1,0x83,0x07,0x0f,0x1f,0x3f,0x7f,0xff
};
char mangDuoiXuoi2[]={0x11,0x22,0x44,0x88};
char mangZicZac[]={0x55,0xaa,0xcc,0x33};
char mangDonQuaPhai[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
//============================
void delay(int time){
while(time );
}
void hinhTraiTim(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
P3_7=P0_0=0; delay(10000);
P3_6=P0_1=0; delay(10000);
P3_5=P0_2=0; delay(10000);
P3_4=P0_3=0; delay(10000);
P3_3=P0_4=0; delay(10000);
P3_2=P0_5=0; delay(10000);
P3_1=P0_6=0; delay(10000);
P3_0=P0_7=0; delay(10000);
P2_7=P1_0=0; delay(10000);
P2_6=P1_1=0; delay(10000);

P2_5=P1_2=0; delay(10000);
P2_4=P1_3=0; delay(10000);
P2_3=P1_4=0; delay(10000);
P2_2=P1_5=0; delay(10000);
P2_1=P1_6=0; delay(10000);
P2_0=P1_7=0; delay(10000);
P3_7=P0_0=1; delay(10000);
P3_6=P0_1=1; delay(10000);
P3_5=P0_2=1; delay(10000);
P3_4=P0_3=1; delay(10000);
P3_3=P0_4=1; delay(10000);
P3_2=P0_5=1; delay(10000);
P3_1=P0_6=1; delay(10000);
P3_0=P0_7=1; delay(10000);
P2_7=P1_0=1; delay(10000);
P2_6=P1_1=1; delay(10000);
P2_5=P1_2=1; delay(10000);
P2_4=P1_3=1; delay(10000);
P2_3=P1_4=1; delay(10000);
P2_2=P1_5=1; delay(10000);
P2_1=P1_6=1; delay(10000);
P2_0=P1_7=1; delay(10000);
P2_0=P1_7=0; delay(10000);
P2_1=P1_6=0; delay(10000);
P2_2=P1_5=0; delay(10000);
P2_3=P1_4=0; delay(10000);
P2_4=P1_3=0; delay(10000);
P2_5=P1_2=0; delay(10000);
P2_6=P1_1=0; delay(10000);
P2_7=P1_0=0; delay(10000);

P3_0=P0_7=0; delay(10000);
P3_1=P0_6=0; delay(10000);
P3_2=P0_5=0; delay(10000);
P3_3=P0_4=0; delay(10000);
P3_4=P0_3=0; delay(10000);
P3_5=P0_2=0; delay(10000);
P3_6=P0_1=0; delay(10000);
P3_7=P0_0=0; delay(10000);
P2_0=P1_7=1; delay(10000);
P2_1=P1_6=1; delay(10000);
P2_2=P1_5=1; delay(10000);
P2_3=P1_4=1; delay(10000);
P2_4=P1_3=1; delay(10000);
P2_5=P1_2=1; delay(10000);
P2_6=P1_1=1; delay(10000);
P2_7=P1_0=1; delay(10000);
P3_0=P0_7=1; delay(10000);
P3_1=P0_6=1; delay(10000);
P3_2=P0_5=1; delay(10000);
P3_3=P0_4=1; delay(10000);
P3_4=P0_3=1; delay(10000);
P3_5=P0_2=1; delay(10000);
P3_6=P0_1=1; delay(10000);
P3_7=P0_0=1; delay(10000);
}
}
//==============================================
void traiPhai(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){

int j;
for(j=0;j<8;j++){
P2=P0=P1=P3=mangTraiPhai[j];
delay(10000);
}
}
}
//=================================================
void kimDongHo(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j,k,l,m;
for(j=0;j<9;j++){
P0=mangDonQuaPhai[j];
delay(10000);
}
for(k=0;k<9;k++){
P1=mangDonQuaPhai[k];
delay(10000);
}
for(l=0;l<9;l++){
P2=mangDonQuaPhai[l];
delay(10000);
}
for(m=0;m<9;m++){
P3=mangDonQuaPhai[m];
delay(10000);
}
for(m=8;m>=0;m ){
P3=mangDonQuaPhai[m];

delay(10000);
}
for(l=8;l>=0;l ){
P2=mangDonQuaPhai[l];
delay(10000);
}
for(k=8;k>=0;k ){
P1=mangDonQuaPhai[k];
delay(10000);
}
for(j=8;j>=0;j ){
P0=mangDonQuaPhai[j];
delay(10000);
}
}
}
//============================================================
void phaiTrai(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=7;j>=0;j ){
P2=P0=P1=P3=mangTraiPhai[j];
delay(10000);
}
}
}
//============================================================
void ngoaiVao(unsigned char soLan){
unsigned char i;

for(i=0;i<soLan;i++){
int j;
for(j=3;j>=0;j ){
P2=P0=P1=P3=mangGiuaRa[j];
delay(10000);
}
}
}
//============================================================
void giuaRa(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<4;j++){
P2=P0=P1=P3=mangGiuaRa[j];
delay(10000);
}
}
}
//============================================================
void sangDonQuaPhai(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<9;j++){
P2=P0=P1=P3=mangDonQuaPhai[j];
delay(10000);
}
for(j=8;j>=0;j ){
P2=P0=P1=P3=mangDonQuaPhai[j];

delay(10000);
}
}

}
//=============================================================
void sangDanRaVao(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<8;j++){
P2=P0=P1=P3=mangSangDanRaVao[j];
delay(10000);
}
}
}
//=============================================================
void sangBonLed(unsigned char soLan){
unsigned char i;
for(i=0;i<soLan;i++){
int j;
for(j=0;j<8;j++){
P2=P0=P1=P3=mangSangTatBonLed[j];
delay(10000);
}
}
}
//=============================================================
void tatBonLed(unsigned char soLan){
unsigned char i;

for(i=0;i<soLan;i++){
int j;
for(j=7;j>=0;j ){
P2=P0=P1=P3=mangSangTatBonLed[j];

×